Petals:BigScience推出的去中心化分布式大模型推理微调框架
Petals是什么
Petals 是由 BigScience‑workshop 团队开源的P2P分布式大语言模型运行框架,借鉴BT下载的分片思想,把超大参数量大模型拆分成为多个Transformer块,分散运行在全球志愿者的GPU设备之上。
普通用户作为客户端,不需要本地具备高端大显存显卡,即可调用网络内的分布式算力,完成千亿级别大模型的推理、参数高效微调任务;拥有闲置GPU的用户可以作为服务端节点,贡献本机算力加入算力网络。项目基于PyTorch与Hugging Face生态开发,支持公共开放网络,同时支持搭建完全隔离的私有分布式集群,是面向超大规模LLM的去中心化算力协作工具。

功能特色
低门槛运行千亿参数大模型:客户端设备仅需很小显存开销,就可以运行Llama3.1‑405B、BLOOM‑176B这类超大模型,不必本地完整加载模型权重。
P2P分布式推理与微调双支持:不仅可以做文本生成推理,原生支持Prompt‑tuning等参数高效微调,能够读取模型中间隐藏层状态。
公共/私有双组网模式:既可接入全球公共志愿者算力网络,也可以搭建隔离私有集群,敏感数据不会流出内网环境。
跨平台节点部署:支持Linux、macOS M系列芯片、Windows WSL,也支持Docker容器一键部署算力节点。
原生兼容HuggingFace生态:和Transformers库接口风格对齐,原有HuggingFace相关代码少量修改即可迁移到Petals。
节点安全隔离:外部请求仅执行模型前向、反向计算,不会在贡献算力的主机执行任意第三方代码。
技术细节
分片流水线架构
Petals将完整LLM拆解为独立Transformer块(blocks)。服务端节点各自托管一部分模型块,客户端将推理请求分发到网络中不同节点,以流水线方式依次完成各层计算,拼接各节点输出,得到完整模型结果。
客户端:不存储完整模型,负责token编码、调度网络节点、拼接各块输出、采样生成文本。
服务端:加载部分模型权重,只负责执行分配给自己的Transformer块运算。
调度与网络
客户端会自动探测网络内节点延迟、负载情况,自动选择最优节点链路。网络层基于P2P组网,节点之间直接通信,不依赖单一中心化算力服务器。
模型适配范围
原生支持BLOOM、Falcon、Llama2、Llama3、Mixtral系列主流开源大模型。非标准架构模型需要修改源码做适配。
性能边界
公共网络环境下,Llama2‑70B可达约6token/s,Falcon‑180B可达约4token/s;性能受志愿者节点数量、带宽、GPU性能影响。私有集群可通过可控硬件获得稳定输出速度。
开发基础
项目主要语言为Python,MIT开源协议,底层依赖PyTorch、Transformers、FastAPI,配套监控面板可查看全网节点状态。
应用场景
个人研究体验超大模型:普通PC、Colab环境,无高端显卡,体验405B级别的开源大模型,用于学习、实验、小批量文本生成。
科研参数高效微调实验:做Prompt Tuning类微调研究,不需要购置多卡高端服务器,利用分布式网络完成微调实验。
私有内网大模型部署:企业、实验室搭建私有Petals集群,多台普通显卡机器分工承载超大模型,数据保留在内网,满足数据保密要求。
算力共享社区:个人将闲置家用显卡作为节点贡献,参与开源社区大模型算力网络。
大模型算法原型验证:读取模型隐藏层输出,开展模型可解释性、激活分析相关实验。

使用方法
客户端模式(调用分布式大模型,普通使用者)
安装依赖
pip install petals
Python简单调用示例
from petals import AutoDistributedModelForCausalLM
from transformers import AutoTokenizer
model_name = "meta-llama/Llama-3.1-405B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoDistributedModelForCausalLM.from_pretrained(model_name)
inputs = tokenizer("Hello, introduce yourself", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0]))Llama系列模型需要提前在HuggingFace获取权重访问权限,本地完成登录。
服务端模式(贡献GPU算力,加入网络)
安装petals,执行启动命令,托管指定模型的部分网络层:
python -m petals.cli.run_server meta-llama/Llama-3.1-405B-Instruct
Docker部署方式
docker run --gpus all --rm petals/server meta-llama/Llama-3.1-405B-Instruct
私有集群:指定自定义bootstrap节点地址,所有节点接入同一个私有组网,脱离公共网络。
竞品对比
| 项目 | 核心定位 | 组网方式 | 微调支持 | 运行门槛 |
|---|---|---|---|---|
| Petals | 去中心化P2P分片运行超大LLM | P2P志愿者节点组网,公共/私有集群双模式 | 支持Prompt‑tuning参数高效微调 | 客户端几乎无显存压力;服务端单卡托管部分模型块 |
| vLLM | 单机高性能推理加速引擎 | 单机/多机中心化部署,依赖自有硬件 | 支持LoRA微调推理 | 需要完整部署模型,硬件需匹配模型参数量显存需求 |
| DeepSpeed‑Inference | 微软开源大模型推理库,支持模型分片 | 中心化多机多卡,由用户管理全部节点 | 完整支持全量、LoRA微调推理 | 需要用户拥有全部硬件,手动配置多机集群环境 |
常见问题解答
Q:使用Petals,客户端电脑需要多大显存?
A:客户端仅存放tokenizer、少量模型元数据,运行千亿模型也仅需要几百MB显存,不需要加载完整模型权重;算力计算主要由网络中的服务端节点承担。
Q:公共网络处理我的输入数据,数据会被其他人获取吗?
A:公共swarm模式中,输入会被网络内志愿者节点处理,不适合商业敏感、隐私数据。处理敏感信息请搭建私有swarm,全部节点由自己管控。
Q:我贡献GPU作为服务端,其他用户能在我的机器运行任意代码吗?
A:不能。Petals节点仅执行预定义Transformer块运算,会隔离外部代码执行,第三方无法下发自定义脚本在本机运行。
Q:为什么公共网络生成token速度不稳定?
A:公共网络节点来自全球志愿者,节点在线状态、网络带宽、GPU性能都存在差异,会造成速度波动,追求稳定性能建议搭建私有集群。
Q:可以运行任意HuggingFace上的模型吗?
A:仅支持原生适配的模型架构,如Llama、BLOOM、Falcon、Mixtral;小众模型架构需要修改源码做适配。
Q:Llama系列模型加载报错是什么原因?
A:Llama权重受许可限制,需要先在HuggingFace申请访问权限,本机执行huggingface‑cli login完成身份校验后才可以正常加载。
相关链接
官网网站:https://petals.dev
总结
Petals借助P2P分片分布式思路,打破了千亿参数大模型对单设备硬件的硬性要求,让普通用户可以低成本体验超大开源大语言模型,同时兼顾科研微调能力与私有部署能力,为算力有限的个人、实验室提供了一套可行的超大模型运行方案,项目依托开源社区志愿者共同维护算力网络,完整兼容主流大模型生态,在科研实验与内网部署场景都具备实际使用价值。
版权及免责申明:本文由@AI工具箱原创发布。该文章观点仅代表作者本人,不代表本站立场。本站不承担任何相关法律责任。
如若转载,请注明出处:https://www.aipuzi.cn/ai-news/petals.html

