1.9 GSPO — 序列级策略优化¶
论文:GSPO
Group Sequence Policy Optimization (Alibaba / Qwen Team, 2025) arXiv: 2507.18071 地位: 将优化粒度从 Token-Level 提升到 Sequence-Level,应用于 Qwen3
核心问题¶
GRPO 的 Token-Level IS 存在理论缺陷:奖励是 sequence-level 的,但 IS 矫正是 token-level 的——优化单元与奖励单元不匹配。更关键的是,token-level IS 权重对"分岔词"造成剧烈波动,在 MoE 模型中尤其不稳定(专家路由切换导致个别 token 的 \(r_{i,t}\) 突变)。
核心公式¶
序列级 IS 比率(逐 token 比率的几何平均):
GRPO vs GSPO 梯度对比¶
- GRPO: 同一序列内的不同 token 有不同权重 \(w_{i,t}\)
- GSPO: 同一序列内的所有 token 有相同权重 \(s_i\)
这消除了 token 间的不一致性,也使得 MoE 模型不受个别 token 专家切换的影响(GRPO 需要 Routing Replay 来解决此问题,GSPO 不需要)。
极小裁剪范围¶
由于 \(s_i(\theta)\) 经过了 \(1/|y_i|\) 归一化,数值范围远比 token-level 紧凑:
(对比 GRPO 的 \(\varepsilon = 0.2 \sim 0.28\),差了三个数量级)
深入:MoE 训练为什么难¶
三个相互放大的不稳定来源
MoE 在 RL 训练中叠加了 dense 模型不存在的失稳因子。下面三点是 GSPO 论文(§5)以及后续工程实践(AReaL / ROLL / TRL ≥ 0.20)反复确认的根因。
① 路由波动(Routing Volatility)¶
MoE 每层都有一个 gating network 选 top-k 专家(Qwen3 MoE / Mixtral 量级约 ~10% 激活率)。参数更新后,gating logits 微小的变化就足以让 top-k 离散选择整体翻盘:
后果:同一条响应在 \(\pi_{\theta_{\text{old}}}\) 和 \(\pi_\theta\) 下,前向走的物理子网络都不一样——相当于在拿"两个不同模型"算 importance ratio。
② Token-Level IS Ratio 在 MoE 下被噪声污染¶
GRPO 的 token-level ratio:
在 MoE 上,这个比值的分子分母走了不同的专家组合——\(r_{i,t}\) 的波动里绝大部分是路由噪声,而非策略偏移。Importance sampling 的数学前提("两个分布在同一支撑集上的相对概率")在 token-level + MoE 下根本不成立。
③ Clip 在 token level 形同虚设¶
成千上万个 token-level ratio 各自独立在 \([1-\varepsilon, 1+\varepsilon]\) 边界上抖动:
- Clip 不再是"trust region 围栏",而是在噪声场里随机过滤
- 噪声沿响应长度积累,长 CoT / 长 trajectory 上越长越爆
- 最终 entropy 坍塌或 reward 反向,模型 catastrophic & irreversible collapse
GSPO 论文原话(§3)
"the instability of GRPO stems from the fundamental misapplication and invalidation of importance sampling weights ... high-variance training noise that progressively accumulates with increased response length and is further amplified by the clipping mechanism."
对照:旧时代的工程补丁——Routing Replay¶
在 GSPO 出现之前,业界主流的 MoE RL 稳定化方案是 Routing Replay(HF transformers PR #44925、AReaL、早期 Qwen 内部实现都有):
| 步骤 | 做法 |
|---|---|
| Rollout 时 | 录下每个 token 在每层选了哪些专家(output_moe_routing=True) |
| 反向训练时 | 强行重放同一套路由(moe_routing=… 覆盖 gate 决策),让 \(\pi_\theta\) 和 \(\pi_{\theta_{\text{old}}}\) 走相同物理路径 |
代价:
- 跨 EP(expert parallelism)同步 routing 索引,通信 / 内存开销显著
- Gating network 自己的梯度被冻住一部分,牺牲学习信号
- vLLM / DeepSpeed / HF 多后端 routing 一致性脆弱,infra 复杂度爆炸
- 只是"压住"问题,没消除 token-level IS 的数学根因
R2 vs R3:Routing Replay 自身的演进¶
Routing Replay 的关键工程问题是:到底在 RL pipeline 的哪个阶段录制路由? 业界(NVIDIA Megatron-LM / verl / ms-swift / 论文 arXiv:2510.11370)分化出两个版本:
R2 录制点 ↓ R3 录制点 ↓
│ │
时间轴 → ① Rollout (vLLM) ② Recompute (Megatron) ③ Update (Megatron)
│ │ │
生成 response 重算 old logprobs forward + backward
[ 路由 A ] [ 路由 B ] [ 路由 C ]
R2: 录 B → 强制 C 用 B (① 阶段路由 A 被丢弃)
R3: 录 A → 强制 B、C 都用 A (整条 pipeline 锁定到 A)
| 维度 | R2 Recompute Replay | R3 Rollout Replay |
|---|---|---|
| 录制位置 | 阶段 ②(训练引擎内部) | 阶段 ①(推理引擎里) |
| 录制内容 | training engine 重算时的 expert indices | inference engine 实际生成时的 expert indices |
| 路由真相源 | Megatron 第二次 forward | vLLM / SGLang 真实采样路径 |
| 解决的不一致 | 训练引擎内部前后两次 forward 的路由抖动 | 跨引擎(rollout vs trainer)的路由抖动 |
| 改推理后端 | ❌ 不需要 | ✅ 需要(如 vLLM PR #28284 返回 routed_experts) |
| 工程复杂度 | 低 | 高 |
| 训推不一致 | 仍存在 | 真正消除 |
实测:Qwen3-30B-A3B + GRPO(Megatron-LM Issue #4168)
无 replay → 62.23 | R3 → 71.83 (KL 降约 2×,完全消除 collapse)。R3 比 R2 多拿到的那部分,正是阶段 ① ↔ ② 的跨引擎差距——这也是为什么 R3 是真正的"完整方案"。
和 GSPO 是互补,不是替代
GSPO 在算法层让路由噪声不再致命(sequence-level IS 把噪声平均掉);R3 在 infra 层把路由噪声直接锁死(强制三阶段路由一致)。两者可以叠用,verl / ms-swift 最新代码已支持 GSPO + R3 组合。
深入:GSPO 凭什么能根治 MoE¶
GSPO 不是"再加一个稳定化技巧",而是让 IS 框架在 MoE 上重新变 well-defined。四个机理对应解决上一节的三个根因:
机理 ①:路由噪声被几何均值"摊平"¶
序列级 ratio \(s_i(\theta)\) 是 \(|y_i|\) 个 token-level log-ratio 的算术平均(即几何均值):
每个 token 的路由噪声近似零均值独立,按中心极限定理,平均后噪声以 \(O(1/\sqrt{|y_i|})\) 速度衰减——长序列反而更稳(与 token-level 完全相反)。
机理 ②:IS 粒度终于和 Reward 粒度对齐¶
| 维度 | Token-Level IS(GRPO) | Sequence-Level IS(GSPO) |
|---|---|---|
| Reward 粒度 | trajectory-level(1 个标量 / 序列) | trajectory-level |
| IS 粒度 | 每 token 一个 ratio | 每序列一个 ratio |
| 对齐情况 | 错配:1 个信号摊到 N token | 匹配:1 reward ↔ 1 ratio |
| 结果 | 信号不变、噪声 ×N | IS 数学前提重新成立 |
这一点和 1.6 (DAPO) / 1.8 (CISPO) 强调的"token-level 细粒度"是相反方向的设计选择——只在 reward 也是 token-level 时,token-level IS 才是"细粒度优势",否则就是"伪优势"。
机理 ③:Clip 重新变成有意义的 Trust Region¶
- Token-level:clip 边界被噪声打满,clip fraction 飙升、但限制的全是噪声
- Sequence-level:单个 ratio 描述的是"整条响应的策略偏移",clip 真的在框 trust region
- 这也解释了为什么 GSPO 能用 \(\varepsilon \sim 10^{-4}\) 这种比 GRPO 紧三个数量级的 clip 范围——因为 \(s_i\) 本身的方差小了 \(\sqrt{N}\) 倍
机理 ④:Routing Replay 这个 Hack 直接退役¶
既然 ratio 是几何均值后的整体量,两次前向走不走同一组专家已经不重要——只要整条序列的概率比合理,路由的 token 级差异在平均里就被抵消了。
GSPO 顺带送的 infra 红利
AReaL / ROLL 官方说法:GSPO "absorb MoE routing noise between different inference backends (vLLM and HF/DeepSpeed)"。
工程上:
- 不再需要跨 EP 同步 routing 索引
- 不再需要锁定 inference / training backend 的 routing 一致性
- 对训练-推理混合精度差异的容忍度大幅提升
- TRL ≥ 0.20 的实现就是一行配置:
importance_sampling_level="sequence"
GRPO vs GSPO on MoE:一图总结¶
| 维度 | GRPO(Token-Level) | GSPO(Sequence-Level) |
|---|---|---|
| IS Ratio | 每 token 一个 | 每序列一个(几何均值) |
| Clip 行为 | Token-wise,高方差,被噪声主导 | Sequence-wise,稳定,trust-region 有效 |
| MoE 路由噪声 | 直接灌进梯度 | \(O(1/\sqrt{N})\) 衰减后基本消失 |
| Routing Replay | 必需的脆弱 hack | 被淘汰 |
| Inference Backend 容忍度 | 严格对齐 | vLLM ↔ HF/DeepSpeed 数值差可吸收 |
| Dense 模型增益 | — | 边际,不显著 |
| MoE 模型增益 | 易 collapse | 质变,Qwen3-Instruct/Coder/Thinking 全线落地 |
一句话面试答法
"GSPO 把 importance ratio 从 token-level 抬到序列几何均值。MoE 的根本痛点是路由波动让 token-level ratio 失去物理意义——分子分母走的甚至不是同一个子网络。Sequence-level ratio 用 \(\sqrt{N}\) 级的噪声平均把路由抖动压下去,让 IS 重新满足同分布相对概率的数学前提,clip 也回到真正的 trust-region 角色。它不是调好了一个超参,而是让 IS 框架在 MoE 上重新变 well-defined——所以才能顺带把 Routing Replay 这种工程 hack 送走。"
参考资料¶
- 原始论文:GSPO — Group Sequence Policy Optimization (arXiv:2507.18071)
- 官方博客:Qwen Team — GSPO: Towards Scalable RL for Language Models
- 工程实现:AReaL GSPO docs · Alibaba ROLL GSPO · TRL ≥ 0.20
importance_sampling_level - Routing Replay 演进:transformers PR #44925 · Issue #42638
- 实践对照:ZeroShot — GSPO vs GRPO on MoE with Unsloth + TRL