Skip to main content

From GRPO to DAPO and GSPO — Structured Notes

建议阅读原文

背景

  • PPO 依赖 value model,长文本与复杂任务表现受限;GRPO 去掉 value model,仍有效率/稳定性问题;DAPO 在 GRPO 内微调;GSPO 升级为序列级优化,适配长序列和 MoE。

PPO(对比基线)

  • 目标(需价值函数估计 A_t):
  • 关键特征: 依赖价值函数/GAE 估计优势;剪切控制新旧策略偏移;长序列时价值估计漂移、计算昂贵。

GRPO 核心

  • 目标(token 级比率+剪切):
  • 重要性比率与优势:
  • 重要性采样作用: 用旧策略的数据估计新策略期望,控制新旧分布漂移。
  • 符号影响: 仅当 A_t 与 r_t 同号时更新方向正确;剪切决定哪些 token 产生梯度。
  • 剪切影响: 当 r_t 超出区间,梯度置零;长序列中有效梯度 token 会被大量丢弃。

DAPO 的四项改进

  1. Clip-Higher: 提高上界 1+ε_high,下界 1-ε_low 固定,避免低概率但好 token 提升被过早截断(“马太效应”)。
  2. Dynamic Sampling: 单个 query 的采样集不能全是全对或全错;否则继续采样,保证 reward 有多样性,降低无效样本浪费。
  3. Token-Level Gradient Loss: 梯度按总 token 数均分(1/∑|o_i|),避免长回答信号被稀释,提升长序列训练效率与稳定性。
  4. Overlong Reward Shaping: 序列超过阈值开始线性惩罚,第二阈值后惩罚抵消原始奖励,抑制过长回答。
  • 目标(提升上界、全局按 token 归一): 采样约束:每个 query 的样本集中既有正确也有错误答案(非全 0 或全 1)。

GSPO(序列级优化)

  • 症结: GRPO 在 MoE 中 token 级重要性比率高方差;路由变化造成结构噪声,常需 Routing Replay。
  • 设计: 将 token 比率换成序列级、长度归一的比率并再做剪切。
  • 梯度: 同一序列全部 token 共享权重 s_i A_i / |o_i|,序列被整体剪切,降低序列内方差。
  • 效果: 提升稳定性与效率,MoE 训练无需 Routing Replay,减少结构噪声和突然崩溃风险。

实验/现象

  • GRPO 在长程或 MoE 训练中可能突然崩溃,恢复训练或调参往往无效。
  • GSPO 在有效 token 更少(序列级剪切更激进)的情况下,训练效率和稳定性更高。
  • DAPO 的 token 级损失与 Clip-Higher 有助于避免熵过高/过低导致的探索崩塌。

MoE 崩溃与 Routing Replay

  • 问题: 新旧策略路由差异带来结构噪声,重要性比率高方差,触发大量剪切,梯度稀疏且含噪。
  • 传统缓解: Routing Replay 记录旧路由并强制复用,工程成本高且压制潜在更优路由。
  • GSPO 作用: 序列级比率降低结构噪声,无需 Routing Replay 也能稳定训练。

超参与实现提示

  • 剪切区间: PPO/GRPO 常用 ε≈0.1–0.2;DAPO 提高上界 ε_high>ε,保留下界 ε_low≈0.1–0.2;GSPO 仍用对称区间但作用于序列级比率。
  • 过长惩罚: 第一阈值触发线性惩罚,第二阈值惩罚≈原奖励幅度以模拟判错,具体长度按任务调整。
  • 采样规则: 动态采样需保证同一 query 不全对也不全错,否则继续采样(在采样器侧循环补样)。