Petals 是一个以 BitTorrent 风格运行大型语言模型的分布式平台,目标是在家用设备上运行 LLM。其核心思路是:用户加载模型的一小部分,然后加入一个由多人共同服务其他部分的网络,从而协作完成微调与推理。
主要能力
- 支持生成文本的模型包括:Llama 3.1(最高 405B)、Mixtral(8x22B)、Falcon(40B+)和 BLOOM(176B),并支持针对用户自有任务进行微调。
- 微调与推理速度比 offloading 快最多 10 倍。
- 单批次推理性能:Llama 2(70B)最高每秒 6 个 token,Falcon(180B)最高每秒 4 个 token,足以支撑聊天机器人和交互式应用。
- 用户可使用任意微调和采样方法、执行自定义的模型路径,或查看隐藏状态;兼具 API 的便利与 PyTorch 和 Hugging Face Transformers 的灵活性。
使用方式
- 可在桌面电脑或 Google Colab 中试用,官方提供 Colab 入口。
- 若运行 Llama,需先申请其权重访问权限,然后在终端运行 huggingface-cli login 再加载模型,或直接使用其聊天机器人应用。
- 连接自己的 GPU 可增加 Petals 容量:可协助服务已有模型,或托管来自 Hugging Face Model Hub 的新模型。官方给出了托管 Llama 3.1(405B)Instruct 一部分的示例。
- 托管环境方面,官方提供:Linux + Anaconda 下针对 NVIDIA GPU 的命令(AMD 另有指引);Windows + WSL 的 Wiki 指南;面向 NVIDIA GPU 的 Docker 镜像(AMD 另有指引);macOS + Apple M1/M2 GPU 需先安装 Homebrew 再执行相应命令。更多内容(如多 GPU 使用、开机启动服务器等)见官方文档。
- 参与托管时,加载并托管 10 个以上 block 后,可通过 --public_name YOUR_NAME 指定名称或链接,展示在 swarm 监控上。
适用场景
- 在个人电脑或 Colab 上运行和微调超大规模语言模型。
- 构建聊天机器人和交互式应用(官方提供聊天机器人 Web 应用源码,通过 HTTP/WebSocket 端点连接 Petals)。
- 开展提示微调等实验,例如对 Llama-65B 做文本语义分类、对 BLOOM 做人物化聊天机器人。
- 需要查看模型隐藏状态或自定义执行路径的研究与开发。
- 通过公开 swarm 监控查看公共网络状态。
限制与注意事项
- 隐私方面:数据会借助公共 swarm 中的其他人进行处理;对于敏感数据,可在一群信任的人之间建立私有 swarm。
- 安全方面:托管服务器不允许他人在你的计算机上运行自定义代码。
- 运行 Llama 需要先获得其权重访问权限。
- 性能数据为官方所述的单批次推理速度,实际表现可能因环境而异。
其他信息
- 官方提供基础教程(入门、提示微调 Llama-65B 做文本语义分类、提示微调 BLOOM 创建人物化聊天机器人)、聊天机器人 Web 应用源码、公开 swarm 监控源码,以及私有 swarm 和运行自定义模型的高级指南。
- 相关论文发表于 ACL 2023(系统演示)与 NeurIPS 2023,项目属于 BigScience 研究工坊的一部分。