VERL(Volcano Engine Reinforcement Learning for LLMs)作为字节跳动Seed团队开源的RLHF框架,提供完整的离线RLHF pipeline,专为生产级LLM对齐设计。通过HybridFlow编程模型,它将控制流与计算流解耦,支持从数据准备到PPO优化的端到端工程化流程,确保高吞吐与稳定性。
VERL离线RLHF Pipeline核心数据流
VERL pipeline的核心是on-policy RL循环:Rollout生成轨迹 → Reward计算得分 → PPO更新Actor/Critic。数据以Parquet格式输入,包含prompt、ground_truth等字段。首先预处理数据集,如GSM8K数学题,使用examples/data_preprocess/gsm8k.py转换为RLHF格式,支持HDFS路径加载。
Rollout阶段使用vLLM或SGLang引擎生成多条响应轨迹。配置actor_rollout_ref.rollout.name=vllm,设置gpu_memory_utilization=0.6、max_num_batched_tokens=8192,实现动态批处理。启用use_dynamic_bsz=True,根据序列长度自动调整批次,最大化GPU利用率,避免填充浪费。
Reward计算是pipeline关键,支持规则函数或模型基奖励。对于离线RLHF,优先规则奖励如GSM8K答案提取匹配。“VERL支持函数式奖励(verifiable reward),用于数学和编码任务。”典型实现:compute_gsm8k_reward提取####后答案,若匹配返回1.0,否则0.0。生产中集成自定义manager,如verl.workers.reward_manager,支持批量并行计算。
训练循环由RayPPOTrainer驱动,每步采集data.train_batch_size=1024样本,分ppo_mini_batch_size=256更新。Actor(策略模型)与Critic(价值模型)并行训练,支持FSDP2后端:actor.strategy=fsdp2,减少7%内存,提升1.5%吞吐。
奖励模型训练工程实践
奖励模型(RM)训练是RLHF上游,通常先SFT后DPO/GRPO对齐偏好数据。VERL集成SFT trainer:python -m verl.trainer.main_sft,配置model.path=Qwen/Qwen2.5-7B,optim.lr=1e-6。为离线pipeline,RM从HF加载或从头训练,使用规则+模型混合。
生产参数:
- RM路径:
reward_model.path=your_rm_model
- 批次:
reward_micro_batch_size_per_gpu=4
- 优化:启用
param_offload=True,支持梯度累积。
稳定性保障:监控critic/score/mean,阈值<0.1时暂停;KL>0.1触发早停。
PPO Actor-Critic优化与生产参数
PPO核心:Actor生成响应,Critic估计价值,Reference提供KL正则。配置:
algorithm:
adv_estimator: gae # 或grpo
kl_ctrl:
type: fixed
kl_coef: 0.001 # 初始0.001,动态调整target_kl=0.1
actor_rollout_ref:
actor:
clip_ratio: 0.2
ppo_epochs: 4
entropy_coeff: 0.01 # 探索平衡
critic:
vf_coef: 0.5 # 价值损失权重
Actor-Critic优化清单:
- 超参调优:Actor lr=1e-6,Critic lr=1e-5;gamma=0.99,lam=0.95。
- 内存优化:LoRA rank=32,
enable_gradient_checkpointing=True;Ulysses序列并行ulysses_sequence_parallel_size=2(长上下文)。
- 分布式:8GPU示例,TP=2,DP=4;
n_gpus_per_node=8。
- 监控点:
| 指标 |
阈值 |
异常处理 |
| KL_mean |
0.01-0.1 |
减小kl_coef |
| reward_mean |
>0.3 |
正常 |
| pg_loss |
<1.0 |
收敛 |
| OOM |
- |
降micro_batch=2 |
回滚策略:trainer.resume=True,从global_step_XXX续训;wandb/mlflow日志回溯。
性能落地:FSDP2+动态批,GSM8K上Qwen2.5-7B达50%准确率提升。VERL的3D-HybridEngine消除训练-生成切换冗余,支持671B MoE模型。
生产级稳定性保障
- 容错:Ray自动重启worker;
save_freq=10检查点。
- 监控:集成wandb,追踪
timing/gen、mfu(模型FLOPS利用率>50%)。
- 风险:KL爆炸→clip_kl=True;过拟合→val_freq=5,早停delta=0.01。
通过以上参数,VERL确保pipeline在百GPU集群稳定运行,吞吐提升1.4x。
资料来源:
(正文约1250字)