petals
通过P2P分布式网络,让普通用户在消费级GPU上跑千亿参数大模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通过P2P分布式网络,让普通用户在消费级GPU上跑千亿参数大模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一名独立开发者或 AI 爱好者,想尝试用 GPT-4 级别的大语言模型做自己的产品原型,但翻遍钱包也凑不出买 A100 显卡的钱。Petals 这个项目告诉你:不用买卡,也能跑大模型。
Petals 的核心理念就像一个「分布式计算界的滴滴打车」:你只需要加载模型的一部分(比如几层 transformer),剩下的层由全球志愿者的算力来补全。单卡推理速度最高可达 6 tokens/秒(Llama 2 70B),足够跑一个像样的聊天机器人。

图1:Petals 分布式推理架构图
Petals 诞生于 BigScience 研究 workshop——一个由 HuggingFace 发起、超过 1000 名研究人员参与的开放科学协作项目。该项目的核心成果之一是训练出了 BLOOM(1760亿参数),人类历史上最大的开源多语言语言模型。
但 BLOOM 太大了,即便用 8 张 A100 也塞不进单卡显存。于是 BigScience 的工程师们开始思考:能否让全球志愿者「众包」算力?Petals 应运而生,最初就是为了服务 BLOOM,如今已扩展支持 Llama 3.1 (405B)、Mixtral (8x22B)、Falcon (40B+)、Starcoder2 等主流大模型。
Petals 的底层依赖是 HiveMind——一个专为去中心化机器学习设计的 P2P 网络协议。每个节点(server)负责加载并服务模型的若干连续层(block),客户端(client)则通过 DHT(分布式哈希表)动态发现可用的服务端节点,构建完整的推理路径。
当你运行以下代码:
from petals import AutoDistributedModelForCausalLM
model = AutoDistributedModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3.1-405B-Instruct")
Petals 会在后台完成三件事:
下载本节点负责的部分层(通常 1-4 层,约占总参数的 1-5%)
通过 DHT 查找全球网络中提供剩余层的节点
构建流水线并行(Pipeline Parallelism)执行路径,将你的请求路由到各个节点并汇总结果
这种设计的好处是:你不需要下载整个模型,也不用承担全部计算量。对于 Llama 3.1 405B 这样的庞然大物,如果每层约 1GB,你只需要在本地保留约 4-20GB 的层,其余全部通过互联网「租借」。
项目源码位于 src/petals/,核心模块包括:
client/:客户端推理逻辑。sequential_autograd.py 实现流水线并行的反向传播,remote_generation.py 处理远程前向传播,routing/ 子目录实现节点路由与选择策略。
server/:服务端逻辑。server.py 是核心服务入口,block_functions.py 实现了分布式层的 forward/backward 函数,task_prioritizer.py 对请求任务进行优先级排序。
models/:针对不同模型架构(Bloom、Falcon、LLaMA、Mixtral)的适配层,每种架构有独立的模型定义和权重转换逻辑。
cli/:命令行工具,run_server.py 启动服务端节点,run_dht.py 启动 DHT 网络。
utils/:通用工具,包含 CUDA 图优化(cuda_graphs.py)、PEFT 微调支持(peft.py)、HuggingFace 认证(hf_auth.py)等。
整体架构采用 客户端-服务端(client-server)双进程模型,客户端模拟 transformers 的标准接口,对用户代码透明;服务端则像 BitTorrent 的 seed 节点,持续对外提供服务。
流水线并行(Pipeline Parallelism):Petals 将模型层分片到不同节点,通过微批处理(micro-batching)掩盖通信延迟,在有限带宽下实现高效的并行推理。
自适应块选择(Adaptive Block Selection):客户端根据节点可用性、延迟和带宽动态选择最优的服务端组合,在吞吐量和延迟之间做权衡。
Prompt Tuning 支持:除了标准推理,Petals 还支持 Prompt Tuning——一种参数高效微调方法,只需训练少量「软提示」向量,即可将大模型适配到下游任务。项目中包含 SST-2 情感分类和 PersonaChat 对话适配两个 Jupyter Notebook 示例。
推测解码(Speculative Decoding):通过小模型快速生成候选 token,再由大模型验证,可显著加速生成速度。
Petals 支持四种部署方式:
服务器节点部署(Linux):需要 NVIDIA GPU(CUDA 11.0+),官方推荐至少 8GB 显存。通过 pip 安装后,一条命令即可加入公共 swarm:
pip install petals
python -m petals.cli.run_server meta-llama/Meta-Llama-3.1-405B-Instruct
Docker 容器部署:提供官方镜像,支持 --gpus all 直接映射本机 GPU:
sudo docker run -p 31330:31330 --ipc host --gpus all \
--volume petals-cache:/cache learningathome/petals:main \
python -m petals.cli.run_server --port 31330 meta-llama/Meta-Llama-3.1-405B-Instruct
Google Colab 客户端体验:没有 GPU 也可以——直接用 Colab 作为客户端,通过 API 连接公共 swarm 的算力,零配置体验大模型推理。
私有 swarm:如果数据敏感,可以搭建完全私有的 P2P 网络,只在可信节点间共享算力。
需要注意的限制:Llama、Mistral 等模型权重受许可证或商业限制,需要额外向 HuggingFace 申请访问权限。BLOOM 和 Falcon 等完全开源模型则无需申请。
延迟不稳定:由于依赖全球 P2P 网络,推理延迟取决于网络状况,高峰期可能出现明显卡顿。相比单卡推理,吞吐量也不如专业推理引擎(如 vLLM)。
隐私风险:默认公共 swarm 会将你的 prompts 路由到陌生人节点,可能涉及数据泄露风险。项目提供了私有 swarm 方案,但这增加了运维复杂度。
维护状态:GitHub 最后一次提交为 2024 年 9 月(近 2 年前),项目处于维护而非活跃开发状态,新模型适配可能滞后。
Petals 证明了 「去中心化算力共享」在 AI 推理领域的可行性。它不仅是技术实验,更代表了一种民主化思路——让没有数万预算的普通开发者也能接触前沿大模型。
从增长曲线看,该项目在 GitHub 获得 10k+ stars、608 forks,在 HuggingFace 社区有大量引用。Petals 论文(ACL 2023)和后续工作(NeurIPS 2023)均发表在顶会,技术方案获得了学术认可。
同时,它也催生了 petals-infra 项目生态(chat.petals.dev、health.petals.dev),形成了完整的「推理网络 + 监控 + UI」闭环,是去中心化 AI 基础设施的标杆案例。
本报告基于 GitHub 公开信息生成,图片均已验证可访问。