Hotdry.
ai-engineering

VERL开源框架工程化LLM离线RLHF Pipeline:奖励模型训练与PPO Actor-Critic优化

VERL离线RLHF工程实践:奖励模型训练、PPO实现、Actor-Critic参数调优,确保生产稳定性。

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.6max_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-7Boptim.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 优化清单:

  1. 超参调优:Actor lr=1e-6,Critic lr=1e-5;gamma=0.99,lam=0.95。
  2. 内存优化:LoRA rank=32,enable_gradient_checkpointing=True;Ulysses 序列并行ulysses_sequence_parallel_size=2(长上下文)。
  3. 分布式:8GPU 示例,TP=2,DP=4;n_gpus_per_node=8
  4. 监控点
    指标 阈值 异常处理
    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/genmfu(模型 FLOPS 利用率 > 50%)。
  • 风险:KL 爆炸→clip_kl=True;过拟合→val_freq=5,早停 delta=0.01。

通过以上参数,VERL 确保 pipeline 在百 GPU 集群稳定运行,吞吐提升 1.4x。

资料来源

(正文约 1250 字)

查看归档