跳转至

十七:强化学习:DAPO、GSPO 与 SAPO

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484107&idx=1&sn=7ad059a70551ef1e8e965d283d9267bb&chksm=f01eb1b2c76938a4dd7dce60131887ae70af758c7953f25b2021b6883fa610a32f57f2514ff2#rd

1. 学习定位

第十五天已经学习了 RLHF-PPO 和 GRPO。第十七天继续看 GRPO 之后的大模型强化学习改进方法:DAPO、GSPO、SAPO。 这三类方法都围绕同一个问题展开:

如何在大语言模型推理任务中稳定、高效地做 policy optimization。
核心背景: - PPO/RLHF-PPO 需要 critic/value head,工程复杂。

  • GRPO 去掉 critic,用同一 prompt 的多回答组内相对奖励构造 advantage。

  • 但 GRPO 仍有 token-level ratio 高方差、无效样本、熵坍塌、长输出惩罚、MoE 训练不稳定等问题。

本日知识链路:

GRPO baseline
-> DAPO: decoupled clip + dynamic sampling + token-level loss + overlong shaping
-> GSPO: sequence-level importance ratio and sequence-level clipping
-> SAPO: soft adaptive gate instead of hard clipping
-> compare stability, sample efficiency, compute cost, use cases

2. GRPO 回顾

GRPO(Group Relative Policy Optimization)的基本思路:

for each prompt x:
  sample G responses y_1,...,y_G
  compute rewards r_1,...,r_G
  normalize rewards within group
  use group-relative advantage to update policy
组内 advantage:

A_i = (r_i - mean(r_1,...,r_G)) / std(r_1,...,r_G) + eps

img

然后使用 PPO-style ratio clipping:

ratio_{i,t}
= pi_theta(y_{i,t}|context_{i,t}) / pi_old(y_{i,t}|context_{i,t})

img

GRPO 的优势是省掉 value model,适合数学、代码、推理等可验证任务。它的风险是:如果一组回答全对或全错,组内 reward 方差为 0,advantage 近似无效;token-level ratio 波动大,训练可能不稳定。

3. DAPO 的定位

DAPO 是 Decoupled Clip and Dynamic sAmpling Policy Optimization。论文标题是 DAPO: An Open-Source LLM Reinforcement Learning System at Scale。 DAPO 的目标不是只提出一个小公式,而是公开一套大规模 LLM RL 训练系统,并解释使推理 RL 有效的关键细节。 DAPO 论文强调四个关键技术:

1. Clip-Higher
2. Dynamic Sampling
3. Token-Level Policy Gradient Loss
4. Overlong Reward Shaping
这些改动都围绕一个目标:让基于 GRPO 的大规模推理 RL 更稳定、更高效、更可复现。

4. DAPO 的 Clip-Higher

PPO/GRPO 中常见 ratio clipping:

clip(r, 1-epsilon, 1+epsilon)
传统裁剪上下界通常对称。DAPO 的 Clip-Higher 采用解耦的上下裁剪范围,尤其提高上界:

lower bound: 1 - epsilon_low
upper bound: 1 + epsilon_high
epsilon_high > epsilon_low
直觉: - 对正 advantage 的 token,允许 policy 更充分地提高好动作概率。

  • 上界更高可以缓解训练中过早抑制有效正向更新的问题。

  • 有助于避免 entropy collapse,让模型保持一定探索和生成多样性。

Clip-Higher 不是取消 clipping,而是让 clipping 对正向学习信号更宽松。 感觉有点像腾讯的Dual Clip PPO。

5. DAPO 的 Dynamic Sampling

GRPO 对同一 prompt 采样一组回答。如果一组回答奖励完全相同,例如全对或全错:

std(rewards) = 0
A_i = 0 或无有效区分
这样的 prompt 对策略更新几乎没有贡献。Dynamic Sampling 的思想是动态过滤或重采样,使 batch 中保留有有效组内差异的 prompts。 直觉:

保留有区分度的样本
减少 zero-advantage batch
提高每次训练 step 的有效梯度密度
在数学推理任务中,这很重要。太简单的问题一组全对,太难的问题一组全错,都会产生弱学习信号。Dynamic Sampling 让训练更集中在模型“会一部分但不稳定”的区域。

6. DAPO 的 Token-Level Policy Gradient Loss

GRPO/PPO 在 LLM 中需要把 token-level log probability 汇总成 policy loss。不同归一化方式会影响长度权重和梯度分配。

img

DAPO 强调 token-level policy gradient loss。可以理解为:在所有有效 response tokens 上聚合策略梯度,而不是让每条 response 先内部平均后再等权平均。 抽象形式:

loss = - sum_{i,t} mask_{i,t} objective_{i,t}
       / sum_{i,t} mask_{i,t}

img

这样每个有效 token 都以一致方式进入优化。它有助于减少 response 长度带来的不合理权重差异,也更适合长链式推理输出。

7. DAPO 的 Overlong Reward Shaping

推理模型容易生成很长的 chain-of-thought。如果只用最大长度截断或硬惩罚,训练信号会很粗糙。 Overlong Reward Shaping 的思想是对过长回答设计更平滑的惩罚,而不是只在超过上限时给一个突兀的坏奖励。 直觉:

正常长度: 不惩罚
接近长度上限: 逐步惩罚
超过或被截断: 明确惩罚
这能减少模型为了拿奖励而无限延长推理的倾向,同时保留有效长推理所需的空间。

8. DAPO 的训练流程

基于 GRPO/DAPO 的推理 RL 流程可以概括为:

1. sample prompts
2. for each prompt, generate multiple responses
3. compute rule-based or model-based rewards
4. dynamically keep prompts with useful reward variance
5. compute group-relative advantages
6. compute token-level ratios
7. apply decoupled clipping
8. aggregate token-level policy gradient loss
9. add KL or other regularization if needed
10. update policy
DAPO 适合可验证推理任务,例如数学答案、代码测试、格式检查等。

9. GSPO 的定位

GSPO 是 Group Sequence Policy Optimization。它由 Qwen 团队提出,目标是解决 GRPO/token-level policy optimization 在大模型,尤其 MoE 模型训练中的不稳定问题。从 Token 视角的“局部微观”提升到 Sequence 视角的“全局宏观”,并以此作为稳定 MoE 模型强化学习训练的关键利器。 GSPO 的核心变化:

GRPO:
  token-level importance ratio
  token-level clipping

GSPO:
  sequence-level importance ratio
  sequence-level clipping, rewarding, optimization
它把一整条 response 看作一个更一致的优化单元,而不是让每个 token 独立触发 clipping。

10. GSPO 的 Sequence-Level Ratio

token-level ratio:

r_t = exp(logp_new_t - logp_old_t)

img

sequence-level ratio 可以理解为整条 response 概率变化的度量。常见稳定写法会使用长度归一化 log ratio:

r_seq = exp(
  1/|y| * sum_t [logp_new_t - logp_old_t]
)

img

如果不做长度归一化,完整序列概率乘积会随长度快速变得极小或极大,不利于稳定训练。 GSPO 对 r_seq 做 clipping,并将序列级别的信号用于整条回答的优化。

11. GSPO 为什么强调 Sequence-Level

LLM 的回答质量通常是 sequence-level 的: - 数学题答案是否正确取决于完整推理。

  • 代码是否通过测试取决于完整程序。

  • 对话是否有帮助取决于完整回复。

token-level clipping 可能出现一个问题:同一条回答中有些 token 被裁剪,有些 token 没有被裁剪,优化信号不一致。GSPO 用 sequence-level ratio 让整条回答作为一个整体被约束,更符合序列生成任务。

12. GSPO 与 MoE 稳定性

GSPO 论文特别强调它能稳定 MoE 模型 RL 训练。MoE 模型中,不同 token 可能路由到不同专家,token-level ratio 和梯度波动更明显(专家抖动)。 sequence-level ratio 的直觉优势:

减少 token-level ratio 高方差
保持整条序列更新一致性
降低 MoE token 路由变化带来的训练震荡
GSPO 论文报告它相比 GRPO 有更好的训练效率和性能,并对 Qwen3 系列模型改进有贡献。

13. SAPO 的定位

SAPO 是 Soft Adaptive Policy Optimization。它针对 hard clipping 的问题提出 soft adaptive gate。 背景: - GRPO 使用 token-level hard clipping。

  • GSPO 使用 sequence-level hard clipping。

  • hard clipping 的问题是边界不连续,超过裁剪范围后可能直接抑制有效梯度。

如果说 GSPO 是为了解决 MoE 专家抖动而发明的“全局减震器”,那么 SAPO 就是为了解决 GSPO 带来的“连坐惩罚”而设计的“智能独立悬挂系统”。 SAPO 的核心思想:

用平滑、温度控制的 gate 替代硬裁剪。
对 off-policy 更新做自适应衰减,而不是粗暴截断。

14. SAPO 的 Soft Adaptive Gate

在 PPO、GRPO 和 GSPO 中使用的 clip 操作,在数学上存在一个致命的缺陷:导数为 0(梯度消失)。 当一个 Token 的比率 r_t 越过了 1+epsilon 的边界(意味着这个 Token 偏离原策略比较远了),它的目标函数值就被死死卡在了 (1+epsilon)A。 这时候你对它求导,结果是 0! 这意味着,只要 Token 越界,网络在这个 Token 上就彻底停止学习了。这就好比一个学生某次考试超常发挥考了满分,老师直接把他的试卷收走,不再给他任何反馈。 SAPO 不再只用:

clip(r, 1-eps, 1+eps)
而是引入一个平滑 gate:

w_t = g_tau(log_ratio_t)
其中: - w_t 在 0 到 1 之间。

  • tau 是温度参数,控制衰减的平滑程度。

  • ratio 越偏离可信区域,权重越小。

  • 接近 on-policy 的 token 保留较多学习信号。

具体实现可以使用 sigmoid 类函数。面试中重点不是背某个实现细节,而是理解:SAPO 用连续权重衰减替代硬裁剪。

15. SAPO 的 Sequence-Coherent 与 Token-Adaptive

SAPO 论文强调两个特性:

sequence-coherent:
  像 GSPO 一样保持序列级一致性。

token-adaptive:
  对序列中的不同 token 自适应调节更新权重。
当一条序列只有少数 token 高度 off-policy 时: - GSPO 可能因为 sequence-level hard clipping 抑制整条序列梯度。

  • SAPO 可以只降低异常 token 的权重,同时保留其他 near-on-policy token 的学习信号。

因此 SAPO 试图在稳定性和样本效率之间取得更细粒度的平衡。 通俗解释就是: GSPO 因为把整条序列捆绑,会导致“一行错代码毁掉 499 行好代码”的连坐问题。 SAPO 完美破解了这个困局: - 它保留了序列级别的一致性(Sequence-Coherent),让整条逻辑链的方向保持大体一致。

  • 但通过加入 Token 级别的软门控(Token-Adaptive),当序列中出现极个别极其夸张的 off-policy Token(比如产生幻觉的词汇)时,SAPO 的机制会自动让这几个坏 Token 的 w_t 趋近于 0,从而在计算梯度时把它们“软屏蔽”掉。

  • 结果就是:那 499 行好代码继续开心地上分,而那 1 行离谱的错误代码被悄悄孤立,不会拖垮整个队伍的优化步伐。

16. GRPO、DAPO、GSPO、SAPO 对比

方法 核心改动 优势 风险 / 不足 GRPO组内奖励标准化构造优势,移除价值网络 (critic);Token 级硬裁剪 架构极简、参量少、训练 / 部署成本低,适配数学 / 代码等可验证任务 组内奖励方差为 0 时优势失效;Token 级 ratio 波动大,训练易不稳 DAPO动态采样、Clip-Higher 策略、Token 级损失、超长序列优化约束 扩充有效样本,大幅提升推理类任务 RL 训练稳定性 工程实现繁琐,效果高度依赖任务奖励设计,调参成本高 GSPO将裁剪与概率比值从Token 级改为序列级,沿用硬裁剪 保障整条输出序列的语义一致性,适配 MoE 模型训练,稳定性优于 GRPO 粒度过粗:单个 Token 异常会导致整条序列梯度被抑制,浪费样本 SAPO用平滑自适应门控 (Soft Gate) 替代传统硬裁剪,结合序列一致性 + Token 自适应 梯度平滑衰减而非粗暴截断;仅削弱异常 Token 权重,保留正常学习信号,兼顾稳定性与样本效率 新增温度等超参数,调参难度上升;函数逻辑更复杂,实现成本更高

17. 方法选型

DAPO 更适合: - 可验证推理任务。

  • 需要复现大规模 LLM RL 系统。

  • 存在大量全对/全错样本。

  • 需要处理过长推理输出。

GSPO 更适合: - 序列级质量更重要。

  • token-level ratio 方差大。

  • MoE 模型 RL 训练不稳定。

  • 希望简化 sequence-level RL 基础设施。

SAPO 更适合: - hard clipping 导致样本效率损失。

  • 一条序列中只有局部 token off-policy。

  • 希望兼顾 sequence coherence 和 token adaptivity。

18. 工程监控指标

训练 DAPO/GSPO/SAPO 时常关注: - reward / pass@k / pass@1。

  • response length。

  • group reward std。

  • zero-advantage prompt 比例。

  • policy entropy。

  • KL to reference。

  • ratio 分布。

  • clip fraction 或 soft gate 权重分布。

  • overlong response 比例。

  • valid format rate。

  • batch token 数和有效 token 数。

这些指标能帮助判断是奖励问题、采样问题、长度问题、KL 问题还是 clipping 问题。

19. 常见误区

误区一:DAPO、GSPO、SAPO 是完全替代 PPO 的无关算法。 它们仍然继承 policy gradient、importance ratio、clipping/KL 的思想,只是在 LLM RL 场景做结构化改造。 误区二:Dynamic Sampling 只是为了加速数据加载。 它的关键是提高 batch 中有有效 advantage 的样本比例。 误区三:GSPO 只是把 token ratio 平均一下。 GSPO 的重点是 sequence-level optimization,把整条回答作为更一致的优化单元。 误区四:SAPO 只是把 clip 换成 sigmoid。 SAPO 的意义是用平滑 gate 保留 near-on-policy 学习信号,避免 hard clipping 的粗糙截断。 误区五:这些算法只看 reward 越高越好。 大模型 RL 必须同时看 reward、KL、长度、格式、人工评估和安全性。

20. 核心总结

第十七天需要掌握的最小闭环:

GRPO:
  group relative advantage, no critic

DAPO:
  Clip-Higher
  Dynamic Sampling
  Token-Level Policy Gradient Loss
  Overlong Reward Shaping

GSPO:
  sequence-level importance ratio
  sequence-level clipping and optimization
  better stability for LLM/MoE RL

SAPO:
  soft adaptive gate
  smooth trust region
  sequence-coherent and token-adaptive

Shared goal:
  make LLM reasoning RL more stable, efficient, and scalable

21. 参考资料

  • DAPO 原论文:https://arxiv.org/abs/2503.14476

  • DAPO 快速了解:https://yam.gift/2025/03/19/NLP/LLM-Training/2025-03-19-LLM-PostTrain-DAPO/

  • GSPO 原论文:https://arxiv.org/abs/2507.18071

  • 通俗解释 GSPO 原理:https://blog.csdn.net/weixin_41544125/article/details/149977267

  • SAPO 原论文:https://arxiv.org/abs/2511.20347

  • 从 PPO 到 SAPO 的演进:https://zhuanlan.zhihu.com/p/1978480903136245222

  • SkyRL DAPO 文档:https://skyrl.readthedocs.io/en/latest/algorithms/dapo.html

  • RLinf DAPO 文档:https://rlinf.readthedocs.io/en/latest/rst_source/tutorials/rlalg/dapo.html

            预览时标签不可点
    

    <div class="