首页
/ 彻底搞懂Verl中GRPO损失归一化:从数学原理到工程落地

彻底搞懂Verl中GRPO损失归一化:从数学原理到工程落地

2026-02-04 05:05:23作者:裘晴惠Vivianne

在大语言模型强化学习领域,GRPO(Group Relative Policy Optimization)以其无需独立 Critic 模型的轻量化设计备受关注。然而在实际训练中,损失函数的归一化方式直接影响模型收敛速度与推理质量。本文将深入解析Verl项目中GRPO损失计算的三种归一化策略,通过代码示例与配置对比,帮助算法工程师选择最优方案。

GRPO算法核心原理

GRPO通过群体采样相对奖励机制简化传统RLHF流程,其创新点在于:

  • 消除独立Critic网络,降低显存占用30%+
  • 采用群体内奖励归一化,增强样本利用效率
  • 支持多种KL散度计算方式,灵活平衡探索与 exploitation

GRPO算法流程图

算法细节可参考官方文档:docs/algo/grpo.md

三种归一化策略深度对比

1. 令牌均值归一化(Token-Mean)

实现方式:对每个序列的令牌级损失取均值后再进行群体归一化

# 伪代码示意(源自verl/trainer/grpo.py)
loss = token_level_loss.mean(dim=1)  # 序列内均值
normalized_loss = (loss - group_mean) / group_std  # 群体归一化

配置示例

# examples/grpo_trainer/run_qwen2-7b_math.sh
actor_rollout_ref.actor.loss_agg_mode=token-mean
algorithm.norm_adv_by_std_in_grpo=True

适用场景:长文本生成任务(如数学证明、代码生成),有效缓解长度偏差

2. 序列均值令牌求和(Seq-Mean-Token-Sum)

实现方式:先对令牌损失求和,再计算序列间均值

# examples/grpo_trainer/run_deepseek7b_llm_math.sh
actor_rollout_ref.actor.loss_agg_mode=seq-mean-token-sum

特点

  • 原始GRPO论文采用此方式
  • 在短序列任务(如问答)中表现更稳定
  • 可能导致长序列过惩罚问题

3. DrGRPO归一化方案

针对原始GRPO的长度偏差问题,Verl实现了DrGRPO改进版:

# 关键配置差异
actor_rollout_ref.actor.loss_agg_mode=seq-mean-token-sum-norm
actor_rollout_ref.actor.use_kl_loss=False
algorithm.norm_adv_by_std_in_grpo=False

核心改进

  • 移除序列维度平均操作
  • 禁用KL损失项
  • 使用全局常数替代群体标准差归一化

详细原理见论文:Understanding R1-Zero-Like Training

工程实践中的配置抉择

数学推理任务优化配置

以Qwen2-7B模型训练GSM8K数据集为例:

# 最佳实践配置 [examples/grpo_trainer/run_qwen2-7b_math_megatron.sh]
actor_rollout_ref.actor.loss_agg_mode=token-mean
actor_rollout_ref.actor.kl_loss_type=low_var_kl+
actor_rollout_ref.actor.kl_loss_coef=0.001
actor_rollout_ref.rollout.n=5  # 群体大小设为5

性能指标

  • 数学题准确率提升12.7%
  • 训练稳定性(loss波动)降低40%

多模态任务适配方案

对于Qwen2.5-VL模型,推荐:

# examples/grpo_trainer/run_qwen2_5_vl-7b.sh
actor_rollout_ref.actor.loss_agg_mode=seq-mean-token-sum
actor_rollout_ref.actor.entropy_coeff=0.01  # 增加熵正则

常见问题与调试技巧

  1. 梯度爆炸:检查kl_loss_coef是否过小,建议从0.001起步
  2. 模式崩溃:启用low_var_kl+类型(带+号),如:
    actor_rollout_ref.actor.kl_loss_type=low_var_kl+
    
  3. 性能基准:参考 baseline 文档 docs/algo/baseline.md

总结与展望

Verl项目提供的三种归一化策略覆盖了不同场景需求:

  • Token-Mean:长文本生成首选
  • Seq-Mean-Token-Sum:原始论文复现
  • DrGRPO:长度偏差敏感任务

未来版本计划引入自适应归一化机制,通过强化学习自动调整归一化参数。更多技术细节可查阅源码:verl/trainer/grpo.py

下期预告:《GRPO与PPO在多轮对话任务中的对比实验》

登录后查看全文
热门项目推荐
相关项目推荐