在大型语言模型(LLM)的后训练阶段,基于人类反馈的强化学习(RLHF)已成为对齐模型行为与人类偏好的关键技术。然而,随着模型规模扩展到数百亿参数,传统 RLHF 框架面临计算资源利用率低、通信开销高以及奖励信号噪声干扰等问题。VERL(Volcano Engine Reinforcement Learning)作为字节跳动 Seed 团队开源的 RLHF 训练库,通过创新的模型分片策略和基于阈值的奖励建模机制,实现了多 GPU 集群上的可扩展离线 RLHF 训练,支持万亿 token 规模的对齐而无需全量重计算。本文将深入剖析这些核心技术,提供工程化参数和落地清单,帮助开发者高效部署。
VERL 的核心优势在于其 HybridFlow 编程模型,该模型融合单控制器和多控制器的优点,解耦计算流与控制流,实现灵活的算法表达和高吞吐量执行。在离线 RLHF 场景中,VERL 针对 actor、critic、reference policy 和 reward model 等多个 LLM 组件,采用精细化的分片策略,确保在数百 GPU 集群上高效运行。证据显示,在 70B 参数模型的 PPO 训练中,VERL 的吞吐量较 DeepSpeed-Chat 提升 1.53 倍至 20.57 倍,actor 模型在训练与生成阶段的切换时间从 78 秒降至 8 秒以内,主要得益于 3D-HybridEngine 的 resharding 优化。
首先,探讨模型分片策略。VERL 支持 3D 并行(数据并行 DP、流水线并行 PP、张量并行 TP),通过 FSDP 或 Megatron-LM 后端实现。关键是 3D-HybridEngine,用于 actor 模型在训练(计算密集)和生成(内存密集)阶段间的动态 resharding。该引擎消除内存冗余,避免重复加载模型权重,并在阶段切换时最小化 AllReduce 通信。具体而言,对于一个 70B actor 模型,训练阶段采用高 MP 规模(e.g., TP=8, PP=4)以分散计算负载;生成阶段切换到高 DP 规模(e.g., DP=4, TP=2)以提升吞吐量。证据来自 HybridFlow 论文:在 8xH100 集群上,resharding 开销降低 55%,总内存占用减少 30%。
设备映射是另一关键策略。VERL 引入 ResourcePool 概念,将 GPU 集群虚拟化为多个池,支持异构放置。例如,小 actor(7B)与大 critic(70B)可置于不同池:actor 池分配较少 GPU(e.g., 8 GPUs),critic 池分配更多(e.g., 32 GPUs),实现负载均衡。在大集群(>100 GPUs)中,actor 和 critic 分池并行计算,避免瓶颈。VERL 的自动算法根据模型大小和集群规模动态分配:小集群全模型同池共享资源;大集群分池并行,减少闲置。实验验证:在 A100-80GB 集群上,此策略将 GPU 利用率从 65% 提升至 92%。
其次,基于阈值的奖励建模是 VERL 提升训练稳定性的核心。在离线 RLHF 中,奖励信号往往噪声大(如人类标注偏差或生成偏差),VERL 集成 PF-PPO 算法,通过阈值过滤潜在噪声奖励。具体机制:在计算奖励后,应用阈值(e.g., reward > 0.5)筛选高质量样本存入 replay buffer,重用以增强鲁棒性。同时,支持 model-based 和 function-based 奖励:前者用 RM 模型评分,后者用规则阈值(如 GSM8K 中答案匹配阈值 = 1.0)。证据:在 DAPO 实现中,阈值过滤后,AIME 2024 得分从 47 提升至 50,训练稳定性提高 20%。这避免了全量重计算,仅重用高质样本,实现万亿 token 对齐。
落地参数与清单如下。首先,配置分片策略:
- GPU 池分配:actor_pool=[8 GPUs, DP=1, TP=1];critic_pool=[32 GPUs, DP=4, TP=8];reward_pool=[4 GPUs]。
- 3D-HybridEngine 参数:reshard_threshold=0.8(内存利用率阈值触发切换);comm_overlap=True(重叠通信与计算)。
- 监控点:GPU 利用率 > 85%;reshard 时间 < 10s / 迭代;通信带宽 < 50% 峰值。
其次,阈值奖励建模参数:
- 过滤阈值:min_reward=0.3(丢弃低质样本);quality_threshold=0.7(replay buffer 入选)。
- PF-PPO 配置:filter_ratio=0.2(过滤 20% 噪声);replay_size=1e6(buffer 容量)。
- 回滚策略:若 KL 散度 > 0.02,降低 lr 10%;若奖励方差 > 0.1,增加阈值 0.1。
- 监控点:平均奖励 > 0.5;噪声率 <10%;buffer 命中率> 70%。
实施清单:
- 安装 VERL:pip install verl;配置 Ray 集群(nnodes = 多节点数)。
- 数据准备:Parquet 格式,包含 prompt/response/ground_truth;序列打包启用(use_sequence_packing=True)。
- 训练启动:python -m verl.trainer.main_ppo --config ppo_config.yaml;总 epoch=50,batch_size=1024。
- 验证:每 10 epoch 评估 AIME/GPQA;若性能 < 基线,调整阈值。
- 部署:导出 HF 格式;集成 vLLM 推理,gpu_memory_util=0.9。
VERL 的分片与阈值机制显著降低了 RLHF 的工程门槛,支持离线模式下高效扩展,避免全量重计算。通过这些参数,开发者可在多 GPU 集群上实现稳定训练,推动万亿 token 对齐的实际落地。
资料来源:
- VERL GitHub: https://github.com/volcengine/verl
- HybridFlow 论文: https://arxiv.org/abs/2409.19256