ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

一条命令训出 ChatGPT 风格模型:DeepSpeed-Chat 的 RLHF 训练完全指南

2026/9/6 16:06:02 拓冰建站 浏览量
一条命令训出 ChatGPT 风格模型:DeepSpeed-Chat 的 RLHF 训练完全指南 一条命令训出 ChatGPT 风格模型DeepSpeed-Chat 的 RLHF 训练完全指南【免费下载链接】DeepSpeedDeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSpeed如果你想在本地或云上完整跑通一次 RLHF 训练、得到自己的 ChatGPT 风格对话模型DeepSpeed-Chat 是目前少有的能开箱即用的方案。它是 DeepSpeed 生态里专为 RLHF 大模型微调打造的端到端工具一个脚本走完 InstructGPT 论文的三个阶段SFT 监督微调、奖励模型微调、PPO 强化学习底层由 Hybrid Engine 统一调度训练与推理两套引擎让最耗时的经验生成阶段不再拖后腿。单张 A100-80GB 上 9 小时、不到 300 美元就能训完 OPT-13B。本文换一种问法来组织全文先回答怎么跑起来再回答为什么它又快又省、怎么选卡最划算。先跑起来三步训练就是一条命令不用自己拼三套训练脚本。以 OPT-13B 做对话模型actor、OPT-350M 做奖励模型为例整个流程只有四步命令pip install deepspeed0.9.0 pip install -r requirements.txt # 在 DeepSpeed-Chat 示例目录下执行 python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --deployment-type single_nodetrain.py内部会自动依次执行 Step 1 的 SFT、Step 2 的奖励模型微调、Step 3 的 PPO 强化学习约半天后所有阶段的 checkpoint 就位。训练好的模型还可以直接接上 DeepSpeed-Chat 的推理 API 进行多轮对话测试博客里给过一段示例问知道微软吗模型能接着解释给 6 岁小孩讲微软是什么。换模型规模时只需要改--actor-model和--deployment-type两个参数同一脚本即可覆盖消费级单卡到 8 节点集群# 66B 大模型64 卡8 个 DGX 节点每节点 8× A100-80G python train.py --actor-model facebook/opt-66b --reward-model facebook/opt-350m --deployment-type multi_node # 1.3B 小模型消费级单卡试跑 python train.py --actor-model facebook/opt-1.3b --reward-model facebook/opt-350m --deployment-type single_gpu想换 PPO 之外的算法或自定义数据流也可以绕过脚本直接用它的 API先用DeepSpeedRLHFEngine构建 actor/critic 双模型引擎再创建DeepSpeedPPOTrainer然后每个迭代先trainer.generate_experience(prompt_batch)生成经验、再trainer.train_rlhf(out)用 PPO 目标更新两个模型——推理和训练被清晰地拆成了两个可自由组合的调用。训练时间都花在哪了三阶段耗时拆解三阶段的耗时分布很能说明问题。以 8× A100-40G 单节点训 OPT-13B 为例时间几乎全砸在 Step 3部署Step 1 (SFT)Step 2 (奖励模型)Step 3 (PPO/RLHF)总计OPT-13B8× A100-40G2.5 小时0.25 小时10.8 小时13.6 小时OPT-66B64× A100-80G82 分钟5 分钟7.5 小时约 9 小时OPT-1.3B单张 A6000 48G2900 秒670 秒约 1.2 小时约 2.2 小时换句话说一张 48GB 的卡一顿午餐的时间就能得到一个能玩的 1.3B checkpoint而 13B 到 66B 的差距主要只体现在 Step 3 上——这也正是 DeepSpeed-Chat 系统设计重点投入的地方。三阶段各自在做什么用大白话说Step 1 拿人工精选的问答对教模型怎么好好说话Step 2 训一个更小的裁判模型学的是同一个问题下人类给多个回答的排序偏好Step 3 则让裁判给 Step 1 模型的生成结果打分再用 PPOProximal Policy Optimization一种让策略更新幅度受限的强化学习算法把对话模型往高分回答方向推。除了这三步DeepSpeed-Chat 还内置了两个 InstructGPT 原文推荐、但常被其他开源方案省略的选项EMA指数移动平均checkpoint即把训练过程中的权重滑动平均存下来作为最终交付模型回答质量通常更好Mixture Training混合训练把预训练的预测下一个词目标掺进 PPO 目标防止模型在 SQuAD2.0 这类公开基准上退化。它还提供数据抽象层和混合切分能力可以把多个数据集统一格式后按比例混进三个训练阶段。为什么 Step 3 最贵同一个模型要当两种身份Step 1 和 Step 2 本质就是常规大模型微调ZeRO 分片加并行策略就能搞定。Step 3 难在一个迭代的每一圈里模型都要切换两种身份推理身份拿着 256 token 的提示逐 token 生成 256 个回答 token产出的经验是训练的原料训练身份用奖励模型打分的反馈通过 PPO 更新 actor 和裁判模型的权重。这带来两笔账单显存上SFT 模型和奖励模型的多个副本要同时驻留EMA 和混合训练还要再加码时间上生成阶段是内存带宽受限的慢活不加速的话整条流水线被它拖死。官方对 1.3B 模型的耗时分解显示一次 RLHF 迭代的大头就耗在生成阶段。DeepSpeed 的解法是 Hybrid Engine把训练引擎和推理引擎焊在同一个模型上。模型平时走train()入口时由 DeepSpeed 训练引擎处理进入eval()生成经验时则无缝切到推理引擎切分方式随之从 ZeRO 分片切换成张量并行TP显存系统也在两种模式下各自重新配置以榨干每一 GB。官方测试配置可以直接翻 tests/hybrid_engine/hybrid_engine_config.jsontrain_batch_size: 32、train_micro_batch_size_per_gpu: 2、ZeRO stage 0 配offload_param.device: cpu、fp16.enabled: true、gradient_clipping: 1.0。落到实现上deepspeed/runtime/hybrid_engine.py 里的DeepSpeedHybridEngine继承自标准DeepSpeedEngine核心手法可以概括为三句进入生成前把 LoRA 权重临时融合进推理容器fuse_lora_weight、生成完再还原unfuse_lora_weight开启release_inference_cache时生成后主动归还推理 workspace 显存、训练前再重新申请ZeRO-3 场景下用GatheredParameters按每 8 层一组分层 gather 非驻留参数配合 TP 完成生成。找不到匹配推理策略的模型层则会降级回模型原生generate()保证不会跑不通。又快又省的底气配置项背后的取舍Hybrid Engine 的行为由配置块hybrid_engine控制字段定义见 deepspeed/runtime/config.py 中的HybridEngineConfig配置项默认值人话解读enabledFalse总开关不开就退化为普通训练引擎max_out_tokens512生成回答的最大长度决定推理容器的 token 上限inference_tp_size1推理侧张量并行卡数大于 1 时按模型并行组切分ZeRO-3 下启用分层 gatherrelease_inference_cacheFalse生成完把 KV-Cache 工作区还回去给训练腾显存压峰值pin_parametersTrueZeRO-3 下生成前把全部非 TP层参数一次性 gather 驻留避免逐层等待tp_gather_partition_size8ZeRO-3TP 推理时每 8 层一组做 gather 的步长enable_cuda_graphFalsedecode 阶段启用 CUDA Graph 缓存降低内核启动开销会自动校验 ZeRO 阶段兼容性这些机制的收益有实测支撑单张 A100-40G 上 Step 3 吞吐比 Colossal-AI、HuggingFace DDP 等系统高 10 倍以上无图标的配置代表直接 OOM8 卡 DGX 节点上对 Colossal-AI 有 6~19 倍、对 HuggingFace DDP 有 1.4~10.5 倍加速模型规模上限也从对手的单卡 1.3B/单节点 6.7B 拉到 6.5B/50B大了 7.5 倍。生成阶段单独算DeepSpeed 高性能推理内核相对 HuggingFace 最高 9 倍、相对 Colossal-AI 达 15 倍——整条流水线的加速基本都来自这里。选多少卡最划算先记住这两张成本表所有耗时和成本数字都基于同一份基准135M tokens 训一个 epoch67.5M query token131.9k 条 256 长的 query67.5M 生成 token每步全局 batch 上限 0.5M tokens1024 组问答对且仅指 Step 3 的实测吞吐。对比其他系统前务必先对齐这套口径。单节点 8 卡Azure 近似成本显卡OPT-6.7BOPT-13BOPT-30BOPT-66B8× A100-40GB5.7 小时10.8 小时1.85 天不支持8× A100-80GB4.1 小时$1329 小时$29018 小时$5802.1 天$162064 卡集群8 节点 × 8× A100-80G显卡OPT-13BOPT-30BOPT-66BOPT-175B64× A100-80G1.25 小时$3204 小时$10247.5 小时$192020 小时$5120选卡数的诀窍藏在扩展曲线里小规模时扩卡是超线性的——ZeRO 把模型状态摊到更多卡上单卡显存释放后能塞进更大的单卡 batch吞吐涨得比卡数还快但到大规模后最大全局 batch本例 1024 组、序列长 512封顶了单卡 batch 上限曲线转为近线性甚至次线性。所以最划算的点就在超线性与次线性的交界处它由当前显存下单卡能跑的最大 batch决定——先按模型规模估出这个 batch再反推卡数而不是盲目堆卡。另一条边界是单卡能训多大的模型官方给出的上限V100 32G 最大 OPT-2.7BA6000 48G 和 A100 40G 最大 OPT-6.7BA100 80G 最大 OPT-13B。没有多卡资源的用户单卡 13B 级别的模型也是够得着的。读完能带走什么跑通一条train.py命令覆盖 SFT、奖励模型、PPO 三阶段--deployment-type从single_gpu到multi_node全兼容1.3B 单卡约 2.2 小时、13B 单节点约 13.6 小时、66B 64 卡约 9 小时。原理Step 3 贵在同一模型交替当推理引擎和训练引擎Hybrid Engine 通过生成时融合 LoRA、KV-Cache 工作区回收/重取、ZeRO-3 分层 gather TP 切分来抹平切换成本配置集中在hybrid_engine配置块字段与默认值都在HybridEngineConfig中可直接查。选型成本表只在其 135M tokens、全局 batch 0.5M 的基准口径下可比选卡数找超线性/次线性交界点而不是越多越好。延伸仓库中 blogs/deepspeed-chat/README.md 有完整官方博客含推理 API 示例对话deepspeed/runtime/hybrid_engine_graph.py 可查 CUDA Graph 细节tests/hybrid_engine/hybrid_engine_test.py 演示了训练—生成切换的端到端测试。【免费下载链接】DeepSpeedDeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSpeed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考