type
status
date
slug
summary
tags
category
icon
password
✅TLDR:使用token-level重要性采样的GRPO并不稳定,GRPO的奖励是基于整个序列的,而优化却在token级别,这种不一致是其不稳定的根本原因。

1.针对什么问题?

名声大噪的GRPO在模型训练时在训练大模型(尤其是 MoE 和长序列任务)时出现训练不稳定甚至模型崩溃(model collapse)的现象,为什么呢?作者指出根源于其错误地将序列级奖励与 token-level 的重要性采样权重结合,导致梯度噪声在长序列中累积,最终被裁剪机制放大。
其数学推导过程可以概括为:

忽略clip函数(硬约束,对接下来的推导无帮助),GRPO 的目标函数如下:
其中:
😺这里可以看到:响应中的所有token共享同一优势
“由于该权重仅基于单个样本,无法起到应有的分布修正作用,反而引入了高方差的梯度噪声。这种噪声会随着序列长度增加而累积,并被clip机制进一步放大。我们实证发现,这可能导致不可逆的模型崩溃。一旦发生崩溃,即使回退到之前的检查点并精心调整超参数(如clip范围)、延长生成长度或更换 RL 查询,训练也无法恢复。”
基于以上公式对 θ 求梯度可得:

2.做了什么?

在GSPO中,将采样过程改为了序列级重要性权重:
其中:
🐱这里的权重是sequence-level的,它反映了从采样得到的响应之间的偏离程度,天然地与序列级奖励对齐,并可作为clip机制的有效依据。这种level的重要性权重可以更好地将过度“离策略”的完整样本排除在梯度估计之外。与GRPO相比,这个算法把序列级奖励和优化完全匹配了起来。
这里利用对数导数技巧对 θ 求梯度:

两者的区别在于:
维度
GRPO
GSPO
权重粒度
token-level ,高方差
sequence-level ,低方差
token 权重
每 token 权重不同
每 token 权重相同
MoE 稳定性
需 Routing Replay
无需额外机制
梯度简洁性
必须逐 token 校正
只需序列级校正

3.达到了什么效果?

主要实验结果:

实验从一个Qwen3-30B-A3B-Base 冷启动模型开始微调,其训练奖励曲线与模型性能曲线如下:
可以看到:
  • 随着训练算力增加、查询集定期更新、生成长度逐步扩展,GSPO 可持续带来性能提升。
  • 相同训练算力与查询消耗下,GSPO 的训练准确率与基准性能均显著优于 GRPO。

额外的有趣发现

尽管 GSPO 裁剪了更多 token,实际用于训练的 token 更少,但训练效率仍然更高。这一反直觉现象进一步表明:GRPO 的 token 级梯度估计本身噪声大、样本利用率低;而 GSPO 的序列级方法提供了更可靠、更高效的学习信号

对MOE有什么帮助?

为什么要把MOE单独拿出来讲?
理由是比起稠密模型的RL训练,MoE 模型的稀疏激活特性对稳定性的挑战更大。
“我们发现,当使用 GRPO 时,MoE 模型的 *专家激活波动* 会导致训练无法收敛。具体而言,以 48 层的 Qwen3-30B-A3B-Base 为例,每次 RL 梯度更新后,对同一条 rollout 样本,新策略 πθ 与旧策略 πθold 激活的专家约有 *10% 的差异*。这一现象在更深的 MoE 模型中更为突出,使得 token 级重要性比率 w{i,t}(θ) 剧烈波动,进一步失效,阻碍训练收敛。”
针对于MOE的稀疏激活特性,的确有一些解决办法,该文章的作者也称“尝试过使用Routing Replay为缓解该问题”
🧠:*Routing Replay*可简单概括为:
  • 缓存激活的专家
  • 在计算时,“重放”这些路由模式
  • 这样,token下使用相同的激活网络,从而稳定 token级重要性比率,确保跨梯度更新优化的是相同的激活子网络
但这样的方式虽然可以一定程度上缓解RL在MOE模型上的稳定性难题,但这样的方法本质上需要缓存并重用路由模式,这就势必会带来额外的显存与通信开销,同时这本身也限制了MoE模型的实际容量。
那回到文章本身,GSPO可以直接按常规方式计算序列级重要性比率,训练稳定收敛,其原因在于GSPO只关注序列似然,而非单个 token似然,因此只要MoE模型保持整体语言建模能力,序列似然就不会剧烈波动,这就从根本上解决了 MoE 模型的专家激活波动问题。