Petals:BigScience推出的去中心化分布式大模型推理微调框架

AI新闻 AI工具箱
65

Petals是什么

Petals 是由 BigScience‑workshop 团队开源的P2P分布式大语言模型运行框架,借鉴BT下载的分片思想,把超大参数量大模型拆分成为多个Transformer块,分散运行在全球志愿者的GPU设备之上。

普通用户作为客户端,不需要本地具备高端大显存显卡,即可调用网络内的分布式算力,完成千亿级别大模型的推理、参数高效微调任务;拥有闲置GPU的用户可以作为服务端节点,贡献本机算力加入算力网络。项目基于PyTorch与Hugging Face生态开发,支持公共开放网络,同时支持搭建完全隔离的私有分布式集群,是面向超大规模LLM的去中心化算力协作工具。

Petals(图1)

功能特色

  1. 低门槛运行千亿参数大模型:客户端设备仅需很小显存开销,就可以运行Llama3.1‑405B、BLOOM‑176B这类超大模型,不必本地完整加载模型权重。

  2. P2P分布式推理与微调双支持:不仅可以做文本生成推理,原生支持Prompt‑tuning等参数高效微调,能够读取模型中间隐藏层状态。

  3. 公共/私有双组网模式:既可接入全球公共志愿者算力网络,也可以搭建隔离私有集群,敏感数据不会流出内网环境。

  4. 跨平台节点部署:支持Linux、macOS M系列芯片、Windows WSL,也支持Docker容器一键部署算力节点。

  5. 原生兼容HuggingFace生态:和Transformers库接口风格对齐,原有HuggingFace相关代码少量修改即可迁移到Petals。

  6. 节点安全隔离:外部请求仅执行模型前向、反向计算,不会在贡献算力的主机执行任意第三方代码。

技术细节

分片流水线架构

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,配套监控面板可查看全网节点状态。

应用场景

  1. 个人研究体验超大模型:普通PC、Colab环境,无高端显卡,体验405B级别的开源大模型,用于学习、实验、小批量文本生成。

  2. 科研参数高效微调实验:做Prompt Tuning类微调研究,不需要购置多卡高端服务器,利用分布式网络完成微调实验。

  3. 私有内网大模型部署:企业、实验室搭建私有Petals集群,多台普通显卡机器分工承载超大模型,数据保留在内网,满足数据保密要求。

  4. 算力共享社区:个人将闲置家用显卡作为节点贡献,参与开源社区大模型算力网络。

  5. 大模型算法原型验证:读取模型隐藏层输出,开展模型可解释性、激活分析相关实验。

Petals(图2)

使用方法

客户端模式(调用分布式大模型,普通使用者)

  1. 安装依赖

pip install petals
  1. 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算力,加入网络)

  1. 安装petals,执行启动命令,托管指定模型的部分网络层:

python -m petals.cli.run_server meta-llama/Llama-3.1-405B-Instruct
  1. Docker部署方式

docker run --gpus all --rm petals/server meta-llama/Llama-3.1-405B-Instruct
  1. 私有集群:指定自定义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完成身份校验后才可以正常加载。

相关链接

总结

Petals借助P2P分片分布式思路,打破了千亿参数大模型对单设备硬件的硬性要求,让普通用户可以低成本体验超大开源大语言模型,同时兼顾科研微调能力与私有部署能力,为算力有限的个人、实验室提供了一套可行的超大模型运行方案,项目依托开源社区志愿者共同维护算力网络,完整兼容主流大模型生态,在科研实验与内网部署场景都具备实际使用价值。

打赏
THE END
作者头像
AI工具箱
一个喜欢收集AI工具的小萌新