From GRPO to DAPO and GSPO — Structured Notes
建议阅读 原文
背景
- PPO 依赖 value model,长文本与复杂任 务表现受限;GRPO 去掉 value model,仍有效率/稳定性问题;DAPO 在 GRPO 内微调;GSPO 升级为序列级优化,适配长序列和 MoE。
PPO(对比基线)
-
目标(需价值函数估计 A_t):
-
关键特征: 依赖价值函数/GAE 估计优势;剪切控制新旧策略偏移;长序列时价值估计漂移、计算昂贵。
GRPO 核心
-
目标(token 级比率+剪切):
-
重要性比率与优势:
-
重要性采样作用: 用旧策略的数据估计新策略期望,控制新旧分布漂移。
-
符号影响: 仅当 与 同号时更新方向正确;剪切决定哪些 token 产生梯度。
-
剪切影响: 当
r_t超出区间,梯度置零;长序列中有效梯度 token 会被大量丢弃。
DAPO 的四项改进
- Clip-Higher: 提高上界
1+ε_high,下界1-ε_low固定,避免低概率但好 token 提升被过早截断(“马太效应”)。 - Dynamic Sampling: 单个 query 的采样集不能全是全对或全错;否则继续采样,保证 reward 有多样性,降低无效样本浪费。
- Token-Level Gradient Loss: 梯度按总 token 数均分(1/∑|o_i|),避免长回答信号被稀释,提升长序列训练效率与稳定性。
- 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 不全对也不全错,否则继续采样(在采样器侧循环补样)。