GSPO & Routing Replay

强化学习(RL)中用于大模型(尤其是MoE架构)的策略优化算法演进:GRPO → Routing Replay → GSPO。我们来系统梳理一下:


🧩 背景:GRPO 在 MoE 下的问题

什么是 GRPO?

GRPO(Generalized Reward Policy Optimization) 是一种广义的策略优化方法,旨在通过广义优势估计和策略梯度提升训练稳定性与样本效率,常用于语言模型的 RLHF(Reinforcement Learning from Human Feedback)阶段。

什么是 MoE?

MoE(Mixture of Experts) 是一种模型架构,通过“路由机制”动态选择部分专家(子网络)处理每个 token,从而在不显著增加计算量的前提下扩展模型容量。

GRPO 在 MoE 下的问题:

  1. 新旧策略的差异

    新旧策略可能会激活不同的专家,产生结构性偏差,带来噪声。

    当从 πθold 更新到 πθ 时,很有可能出现 Router 发生变化,导致新旧策略激活了不同的专家。

    例如:

    • 在 πθold 下,Router 激活了【专家 A】和【专家 B】
    • 在 πθ 下,Router 激活了【专家 C】和【专家 D】

    虽然模型参数只更新了一步,但实际参与计算的专家组合完全不同。所以这两个概率根本不是在同一个“结构”下产生的。

    理想中的重要性比率应该反映同一个模型结构下,参数变化导致的输出概率变化。但现在它还包含了完全不同的专家组合导致输出的变化。

    这不是策略变化的真实反映,这种波动具有高方差、不可预测、与优化方向无关的噪声。

  2. Clip 也无法完全控制这种结构性偏差

    πθ 和 πθold 实际上像是两个不同的模型,重要性比率的方差急剧上升,甚至趋于无穷。

    不同的路由可能会导致 πθ 骤变,导致 clip 没有任何更新。梯度估计严重失真,训练不稳定甚至崩溃。


✅ Routing Replay:缓解专家冷启动 & 梯度稀疏

核心思想:

“重放”历史中激活较少的专家的路由决策,强制其参与训练,即使当前 batch 中未被选中。

实现方式:

  • 在训练过程中,维护一个“路由历史缓冲区”,记录每个 token 被分配到哪些专家。
  • 对于低频专家,从历史 buffer 中采样其曾被激活的样本,在当前 batch 中“重放”这些样本,强制计算其梯度并更新。
  • 可配合重要性采样(Importance Sampling)修正策略偏移。

解决的问题:

  • 缓解专家冷启动 → 所有专家都能持续更新。
  • 降低梯度稀疏性 → 提高策略梯度估计的稳定性。
  • 改善负载均衡 → 避免某些专家“饿死”。

局限性:

  • 历史样本可能与当前策略不匹配 → 需要重要性加权,否则引入偏差。
  • 增加内存和计算开销(需维护和采样历史 buffer)。
  • 未从根本上解决“优势分配不公”的问题。

✅ GSPO(Generalized Sparse Policy Optimization):系统性解决 MoE-RL 问题

GSPO 是在 GRPO 基础上,专门为稀疏架构(如 MoE)设计的策略优化框架,从策略梯度公式、优势分配、路由正则化三个层面重构优化目标

核心创新点:

1. 稀疏感知的优势分配(Sparse-Aware Advantage Redistribution)

  • 不再将优势值(A_t)直接作用于所有专家,而是仅分配给当前激活的专家
  • 对未激活专家,使用“虚拟优势”或“路由置信度加权优势”,避免错误更新。

例如:
A_expert = A_t * routing_prob(expert | token)
即使 expert 未被选中,若其路由概率 > 0,仍获得部分优势信号。

2. 路由正则化(Routing Regularization)

  • 引入路由熵最大化或负载均衡损失,鼓励路由策略探索不同专家。
  • 防止路由“坍缩”到少数专家,提高专家利用率。

3. 专家级策略梯度裁剪与归一化

  • 对每个专家单独进行梯度裁剪和优势归一化,避免因激活频率不同导致的梯度尺度差异。
  • 例如:每个专家维护自己的 advantage running mean/std。

4. 结合 Routing Replay(可选增强)

  • GSPO 可内嵌 Routing Replay 作为子模块,进一步缓解冷启动。

解决的问题:

✅ 梯度稀疏 → 通过稀疏感知优势分配 + 专家独立归一化
✅ 负载不均衡 → 路由正则化 + 路由熵鼓励探索
✅ 优势分配不公 → 仅更新激活专家 + 概率加权
✅ 策略偏移 → 专家级归一化 + 重要性采样(如使用)


📊 对比总结:

方法 核心机制 解决 GRPO 在 MoE 的哪些问题 局限性
GRPO 通用策略梯度 + 优势估计 无,原生不兼容 MoE 梯度稀疏、负载不均、优势误分配
Routing Replay 重放冷门专家历史样本 缓解梯度稀疏、冷启动 历史偏差、额外开销
GSPO 稀疏感知优势 + 路由正则 + 专家归一化 系统性解决稀疏、负载、优势分配问题 实现复杂,需专家级统计

🚀 实际应用建议:

  • 如果你正在 MoE + RLHF 场景下训练大模型(如 Mixtral + DPO/RLHF),优先考虑 GSPO
  • 若实现复杂,可先用 Routing Replay 作为轻量级补丁 缓解冷启动。
  • 结合 路由负载均衡损失(如 Switch Transformer 中的 auxiliary loss)进一步稳定训练。

📚 参考文献/来源(部分为前沿工作,尚未完全公开):

  • DeepSeek-V2 / Mixtral RLHF 技术报告(提及 GSPO)
  • Google “Sparse RL” 内部技术分享(2024)
  • OpenAI “MoE for RL” 非正式讨论(社区流传)
  • 相关论文:“Efficient RL for Sparse Models” (ICLR Workshop 2024)

✅ 总结一句话:

Routing Replay 通过“重放”缓解专家冷启动,GSPO 通过“稀疏感知策略优化 + 路由正则”系统性重构 RL 目标,二者协同解决 GRPO 在 MoE 架构下的梯度稀疏、负载不均与优势误分配问题。

如果你有具体实现细节或想看伪代码,我也可以进一步展开 👍