引言
强化学习(RL)已成为拓展语言模型能力、增强其深度推理与问题求解能力的关键技术范式。通过大规模强化学习,语言模型能够发展出解决竞赛级数学和编程等复杂问题的能力。然而,要成功实现RL的规模化扩展,首要前提是维持稳定且鲁棒的训练过程。
当前主流的RL算法,如GRPO(Group Relative Policy Optimization),在长期训练中会暴露出严重的不稳定性问题,甚至导致不可逆转的模型崩溃。这种不稳定性阻碍了通过增加计算投入来进一步推动模型性能提升的努力。
为了从根本上解决这一问题,Qwen团队提出了Group Sequence Policy Optimization(GSPO) 算法。GSPO的核心创新在于:将优化粒度从token级别提升到序列级别,使重要性比率计算、奖励分配和优化三者保持一致的粒度。这一看似简单的改变,带来了训练稳定性、效率和性能的全面提升,并最终促成了最新Qwen3系列模型(Instruct、Coder、Thinking)的卓越表现。
背景:从PPO到GRPO
PPO及其挑战
PPO(Proximal Policy Optimization)通过裁剪机制将策略更新限制在旧策略的近端区域内。其优化目标如下:
JPPO(θ)=Ex∼D,y∼πθold(⋅∣x)1∣y∣∑t=1∣y∣min(wt(θ)A\^t,clip(wt(θ),1−ϵ,1+ϵ)A\^t)\mathcal{J}{\mathrm{PPO}}(\theta) = \mathbb{E}{x\sim \mathcal{D},y\sim \pi_{\theta_{\mathrm{old}}}(\cdot |x)}\left\\frac{1}{\|y\|}\\sum_{t = 1}\^{\|y\|}\\min \\left(w_{t}(\\theta)\\hat{A}_{t},\\mathrm{clip}\\left(w_{t}(\\theta),1 - \\epsilon ,1 + \\epsilon\\right)\\hat{A}_{t}\\right)\\rightJPPO(θ)=Ex∼D,y∼πθold(⋅∣x) ∣y∣1t=1∑∣y∣min(wt(θ)A^t,clip(wt(θ),1−ϵ,1+ϵ)A^t)
其中token级重要性比率为 wt(θ)=πθ(yt∣x,y<t)πθold(yt∣x,y<t)w_{t}(\theta) = \frac{\pi_{\theta}(y_{t}|x,y_{< t})}{\pi_{\theta_{\mathrm{old}}}(y_{t}|x,y_{< t})}wt(θ)=πθold(yt∣x,y<t)πθ(yt∣x,y<t)。
PPO在实际应用中的核心挑战在于对价值模型(value model)的严重依赖。价值模型通常需要与策略模型相当的参数量,带来巨大的内存和计算负担。更关键的是,获得可靠的价值估计本身就是一项极具挑战性的任务。
GRPO及其局限性
GRPO(Group Relative Policy Optimization)通过在同一查询的多条回复之间计算相对优势,绕过了对价值模型的需求。这一设计显著降低了内存开销。
然而,GRPO在训练大规模语言模型时暴露出了严重的不稳定性问题。论文作者将其根源归结为GRPO算法设计中重要性采样权重的根本性误用和失效。
具体而言,GRPO在每个token位置 应用重要性权重 πθ(yi,t∣x,yi,<t)πθold(yi,t∣x,yi,<t)\frac{\pi_{\theta}(y_{i,t}|x,y_{i,< t})}{\pi_{\theta_{\mathrm{old}}}(y_{i,t}|x,y_{i,< t})}πθold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t)。问题在于,这个权重基于单个样本 yi,ty_{i,t}yi,t 计算,无法有效发挥分布校正的作用。相反,它引入了高方差的训练噪声,这种噪声会随着回复长度的增加而累积,并被裁剪机制进一步放大,最终导致模型崩溃。
GSPO的核心创新
序列级优化目标
GSPO的核心洞察是:奖励是针对整个序列授予的,因此优化的单位应当与奖励的单位相匹配。基于这一原则,GSPO采用以下序列级优化目标:
JGSPO(θ)=Ex∼D,(yi)i=1G∼πθold(⋅∣x)1G∑i=1Gmin(si(θ)A\^i,clip(si(θ),1−ϵ,1+ϵ)A\^i)\mathcal{J}{\mathrm{GSPO}}(\theta) = \mathbb{E}{x\sim \mathcal{D},(y_i){i = 1}^G\sim \pi{\theta_{\mathrm{old}}}(\cdot |x)}\left\\frac{1}{G}\\sum_{i = 1}\^G\\min \\left(s_i(\\theta)\\widehat{A}_i,\\mathrm{clip}(s_i(\\theta),1 - \\epsilon ,1 + \\epsilon)\\widehat{A}_i\\right)\\rightJGSPO(θ)=Ex∼D,(yi)i=1G∼πθold(⋅∣x)G1i=1∑Gmin(si(θ)A i,clip(si(θ),1−ϵ,1+ϵ)A i)
其中,组内优势估计为:
A^i=r(x,yi)−mean({r(x,yi)}i=1G)std({r(x,yi)}i=1G)\widehat{A}i = \frac{r(x,y_i) - \mathrm{mean}(\{r(x,y_i)\}{i = 1}^G)}{\mathrm{std}(\{r(x,y_i)\}_{i = 1}^G)}A i=std({r(x,yi)}i=1G)r(x,yi)−mean({r(x,yi)}i=1G)
序列级重要性比率
GSPO基于序列似然定义重要性比率:
si(θ)=(πθ(yi∣x)πθold(yi∣x))1∣yi∣=exp(1∣yi∣∑t=1∣yi∣logπθ(yi,t∣x,yi,<t)πθold(yi,t∣x,yi,<t))s_i(\theta) = \left(\frac{\pi_{\theta}(y_i|x)}{\pi_{\theta_{\mathrm{old}}}(y_i|x)}\right)^{\frac{1}{|y_i|}} = \exp \left(\frac{1}{|y_i|}\sum_{t = 1}^{|y_i|}\log \frac{\pi_{\theta}(y_{i,t}|x,y_{i,< t})}{\pi_{\theta_{\mathrm{old}}}(y_{i,t}|x,y_{i,< t})}\right)si(θ)=(πθold(yi∣x)πθ(yi∣x))∣yi∣1=exp ∣yi∣1t=1∑∣yi∣logπθold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t)
这里进行了长度归一化处理:
- 降低方差:避免少数token的似然变化导致序列级重要性比率剧烈波动
- 统一数值范围:使不同长度回复的重要性比率可直接比较
- 简化裁剪范围设置:不同长度的回复可使用相同的裁剪范围
梯度分析:GSPO与GRPO的本质区别
通过对比两者的梯度形式,可以清晰看出GSPO与GRPO的根本差异。
GRPO的梯度(省略裁剪):
∇θJGRPO(θ)=E1G∑i=1GA\^i⋅1∣yi∣∑t=1∣yi∣πθ(yi,t∣x,yi,\
GSPO的梯度(省略裁剪):
∇θJGSPO(θ)=E1G∑i=1G(πθ(yi∣x)πθold(yi∣x))1∣yi∣A\^i⋅1∣yi∣∑t=1∣yi∣∇θlogπθ(yi,t∣x,yi,\
核心区别在于:
| 维度 | GRPO | GSPO |
|---|---|---|
| 优化粒度 | Token级别 | 序列级别 |
| 重要性比率 | 逐token独立计算 | 序列级联合概率比,几何平均平滑 |
| token梯度权重 | 各token权重不相等 | 所有token等权重 |
| 裁剪机制 | Token级别裁剪 | 序列级别裁剪 |
GRPO中各个token的权重 πθ(yi,t∣x,yi,<t)πθold(yi,t∣x,yi,<t)\frac{\pi_{\theta}(y_{i,t}|x,y_{i,< t})}{\pi_{\theta_{\mathrm{old}}}(y_{i,t}|x,y_{i,< t})}πθold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t) 互不相同且不可忽略,其影响会随训练推进而累积,导致不可预测的后果。而GSPO对同一回复中的所有token给予均等权重,从根本上消除了这一不稳定因素。
GSPO-token:灵活的Token级变体
在需要更细粒度优势调整的场景(如多轮RL)中,GSPO还提供了token级变体GSPO-token:
JGSPO−token(θ)=E1G∑i=1G1∣yi∣∑t=1∣yi∣min(si,t(θ)A\^i,t,clip(si,t(θ),1−ϵ,1+ϵ)A\^i,t)\mathcal{J}_{\mathrm{GSPO-token}}(\theta) = \mathbb{E}\left\\frac{1}{G}\\sum_{i = 1}\^G\\frac{1}{\|y_i\|}\\sum_{t = 1}\^{\|y_i\|}\\min \\left(s_{i,t}(\\theta)\\hat{A}_{i,t},\\mathrm{clip}\\left(s_{i,t}(\\theta),1 - \\epsilon ,1 + \\epsilon\\right)\\hat{A}_{i,t}\\right)\\rightJGSPO−token(θ)=E G1i=1∑G∣yi∣1t=1∑∣yi∣min(si,t(θ)A^i,t,clip(si,t(θ),1−ϵ,1+ϵ)A^i,t)
其中 si,t(θ)=sgsi(θ)⋅πθ(yi,t∣x,yi,<t)sgπθ(yi,t∣x,yi,\sg表示停止梯度传播。
GSPO-token在数值上与GSPO等价(当所有token的优势值相同时),但提供了按token调整优势的灵活性。
实验验证
训练效率与性能
研究团队使用基于Qwen3-30B-A3B-Base微调得到的冷启动模型进行实验,在AIME'24、LiveCodeBench和CodeForces等基准上对比GSPO与GRPO。
实验结果表明:
- GSPO具有显著更高的训练效率,在同等计算开销下取得更优性能
- GSPO可通过增加算力获得持续的性能提升------这正是算法可扩展性的体现
- 最终成功将GSPO应用于最新Qwen3模型的大规模RL训练,进一步释放了RL scaling的潜能
反直觉的观察:裁剪比例与训练效率
一个有趣的发现是:GSPO裁剪的token比例比GRPO高出两个数量级,却拥有更高的训练效率。
这一反直觉的现象进一步表明:GRPO采用的token级优化目标是有噪和低效的,而GSPO的序列级优化目标提供了更可靠、有效的学习信号。
GSPO对MoE训练的突破性贡献
MoE训练的独特挑战
混合专家(MoE)模型的稀疏激活特性带来了独特的稳定性挑战。研究发现,采用GRPO算法时,MoE模型的专家激活波动性会使得RL训练无法正常收敛。
具体而言,在48层的Qwen3-30B-A3B-Base模型中,每次RL梯度更新后,约有10%的激活专家会发生变化。这种波动使得token级重要性比率剧烈波动,阻碍RL训练的正常收敛。
从Routing Replay到原生稳定
为解决这一挑战,研究团队此前采用了路由回放(Routing Replay) 训练策略------缓存旧策略中激活的专家,在计算重要性比率时"回放"这些路由模式。这一策略对GRPO训练MoE模型的正常收敛至关重要。
然而,Routing Replay存在明显缺陷:
- 产生额外的内存和通信开销
- 可能限制MoE模型的实际可用容量
GSPO彻底消除了对Routing Replay的依赖 。其核心洞见在于:GSPO仅关注序列级别的似然 (πθ(yi∣x)\pi_{\theta}(y_i|x)πθ(yi∣x)),而对个别token的似然 (πθ(yi,t∣x,yi,<t)\pi_{\theta}(y_{i,t}|x,y_{i,<t})πθ(yi,t∣x,yi,<t))不敏感。由于MoE模型始终保持着语言建模能力,序列似然不会剧烈波动。
这一突破不仅简化和稳定了训练过程 ,还使模型能够最大化地发挥容量与潜能。
GSPO对RL基础设施的简化潜力
训练引擎(如Megatron)和推理引擎(如SGLang、vLLM)之间存在精度差异。实践中通常需要使用训练引擎重新计算采样回复在旧策略下的似然。
GSPO仅使用序列级似然 进行优化,对精度差异的容忍度远高于token级似然。这使得直接使用推理引擎返回的似然进行优化成为可能,从而避免了训练引擎的重计算开销。
这一特性在部分rollout、多轮RL以及训练-推理分离框架等场景中尤其有价值。
总结
GSPO的核心贡献可以归纳为以下几点:
-
理论根基:遵循重要性采样的基本原理,在序列层面定义重要性比率,使优化粒度与奖励粒度保持一致
-
稳定高效:相比GRPO具有显著更高的训练效率和稳定性,可通过增加计算获得持续性能提升
-
MoE原生支持:从根本上解决了MoE模型RL训练的稳定性问题,无需Routing Replay等复杂策略
-
基础设施友好:对精度差异的容忍度更高,具有简化RL基础设施的潜力