单次轨迹异步优化:智谱这篇论文,把 GRPO 的组采样彻底拆了

你有没有碰到过这种场景:训练一个写代码的智能体,一批 8 条轨迹已经采完 7 条,剩 1 条死活没结束。GPU 集群 80% 的卡空转干等,浪费多少电和算力不说,关键问题是——你这一晚上到底训了几步?

这就是同步 RL 的痛。传统的 GRPO 训练,要求每个 prompt 采一组(通常是 8 条)轨迹,必须等组里最慢的那条完成,才能开始训练。长尾效应在智能体任务里被放到最大——同 batch 里,写一段话和改一个 PR 的轨迹长度可能差 100 倍。

异步 RL 是公认的出路:轨迹一条到了就训一条,GPU 几乎不空转。但这事说起来容易,做起来全是坑。最大的两个坑:

  1. off-policy 漂移:rollout 引擎用的可能是 3 个版本之前的策略,重要性比直接拿来用会爆炸
  2. GRPO 的组采样天然不兼容异步:异步场景下你根本等不到一个完整的"组"

智谱 AI 这次的论文 2607.07508 干了一件挺狠的事:把 GRPO 砍剩"单次轨迹",再用一套叫 SAO(Single-rollout Asynchronous Optimization) 的设计把稳定性和效果都补回来。最后这套方案直接用在他们开源的 GLM-5.2(750B-A40B)上跑通生产训练。

核心摘要

SAO 提出了一个反直觉的设计:用每个 prompt 采一条轨迹替代 GRPO 的 8 条组采样,配合三招——直接双侧 token 级重要性采样 (DIS) 稳定训练Skip-Observation GAE 处理多轮智能体轨迹冻结注意力 + 更快 critic 更新支撑单 rollout 训练。在 SWE-Bench Verified(29.8 vs 27.0)、AIME 2025(97.3 vs 84.2)、BeyondAIME(74.8 vs 54.8)等 5 个智能体推理/编码 benchmark 上大幅超越 GRPO,能稳定训 1000 步不崩。这是一篇工程上相当扎实的论文——核心创新不是某个数学定理,而是把异步 RL 的"组采样"这个隐式同步障碍连根拔起,用单 rollout + critic 把训练效率和稳定性两个目标同时拧过来。


论文信息

  • 标题:Single-Rollout Asynchronous Optimization for Agentic Reinforcement Learning
  • 作者:Zhenyu Hou, Yujiang Li, Jie Tang, Yuxiao Dong
  • 机构:智谱 AI(Zhipu AI)/ 清华大学
  • arXiv ID2607.07508
  • 提交日期:2026 年 7 月 8 日

问题:异步 RL 的两个"房间里的大象"

说句实话,做 LLM 后训练的人,最近两年都被 GRPO 喂得有点"路径依赖"了。GRPO 的好处很明确:干掉 critic,内存减半,训练也更稳。但它有个结构性的硬伤——组采样

GRPO 的优势估计是这么算的:给一个 prompt 采 8 条响应,用这 8 条的奖励做 z-score 归一化,得到每条的优势。

\[A_i = \frac{r_i - \text{mean}(r_1, ..., r_G)}{\text{std}(r_1, ..., r_G)}\]

这在同步训练里完全 OK,反正 8 条同时出。但异步训练下,轨迹是一条一条地来的。你要等齐 8 条才能算优势,那前 7 条就只能在 buffer 里干瞪眼。所谓的"异步",其实在组内又退化成同步了

更深的问题在于,组采样在智能体任务里根本不适合

  • 环境反馈天然是单条的:代码执行只跑一次返回结果,PR review 也只给一个判定
  • 组内长度方差极大:同一个 prompt 下,简单题 200 tokens 收工,难题 100k tokens 还没写完
  • 在线学习场景下根本没有"组"这个东西:用户反馈一个个来,凑组就是在浪费时间

第二个问题是训练稳定性。同步 GRPO 里,rollout 策略和训练策略的版本差是受控的(同一批采完才更新)。但异步 RL 里,rollout worker 用的模型可能比 trainer 落后好几个版本,重要性比 \(\pi_\theta / \pi_{\text{rollout}}\) 直接拿来用,分分钟爆炸。

现有的异步 RL 系统(AReaL、ROLL Flash 等)多在系统层面做文章(解耦 rollout 和 train、可中断生成等),但算法层面的稳定性方案一直是个空白。这就是 SAO 要填的坑。


方法核心:把组采样拆掉,再用三招稳住

第一招:单 rollout 采样

最反直觉的设计:每个 prompt 只采一条轨迹。

这当然有代价——梯度估计方差会变大,没有组内归一化做 baseline 了。但好处是:

  • 真正的异步:轨迹完成即可训练,没有"凑组"的等待
  • 更符合智能体环境:本来每条轨迹就是独立的环境反馈
  • 配合好的 critic 反而更稳:状态相关的价值 baseline 比组内归一化更灵活

你可能会问:方差大到炸了怎么办?作者的解法是把方差问题转移到价值模型上——训一个足够好的 critic,让它给出精确的 baseline。

第二招:直接双侧 token 级重要性采样 (DIS)

异步 RL 里有个绕不开的麻烦:在轨迹生成过程中,rollout 引擎可能已经更新了 N 次权重。一条长轨迹里前半段和后半段可能是不同策略采的。

传统 PPO 的解法是维护 \(\pi_{\text{old}}\),重要性比算 \(\pi_\theta / \pi_{\text{old}}\)。但异步下 \(\pi_{\text{old}}\) 根本不可追踪。

SAO 的处理极其暴力——直接用 \(\pi_{\text{rollout}}\) 做行为策略

\[r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\text{rollout}}(a_t|s_t)}\]

这个比值直接通过 rollout 引擎保存的 token 级 log 概率算出来。简单粗暴,但带来的偏差怎么办?

作者设计了一个严格的双侧裁剪 + 掩码

\[f(x; \epsilon_\ell, \epsilon_h) = \begin{cases} x & \text{if } 1-\epsilon_\ell < x < 1+\epsilon_h \\ 0 & \text{otherwise} \end{cases}\]

落在信任域外的 token 直接从梯度里抹掉(mask 掉,不参与反向传播)。注意作者用了非对称的 \(\epsilon_\ell = 0.3\)\(\epsilon_h = 5.0\)——下界卡得紧(防止 \(\pi_\theta\) 跑太远),上界放得宽(允许 rollout 落后更多)。这个设计其实在表达一个工程取舍:异步 RL 注定有偏差,与其纠结精确的 \(\pi_{\text{old}}\),不如把"离谱的更新"用裁剪干死。

第三招:Skip-Observation Token-level GAE

智能体轨迹是这么个结构:

\[T = [a_0, o_0, a_1, o_1, a_2, o_2, ...]\]

\(a_i\) 是模型自己生成的 token,\(o_i\) 是环境反馈(比如工具返回结果、编译错误信息)。\(o_i\) 不是模型生成的,如果按标准 GAE 算,优势信号会通过 observation token 传播——而这些 token 的 log prob 完全跟当前策略无关,引入大量噪声。

SAO 的解法是跳过 observation,直接连接相邻 action:

\[\hat{A}(a_{i, N}) = \delta + \gamma \lambda \hat{A}(a_{i+1, 0})\]
\[\delta = r_t + \gamma V(a_{i+1, 0}) - V(a_{i, N})\]

时序差分残差直接跨过 observation 间隙,优势估计只依赖模型自己的 token。这个设计看起来不复杂,但解决了异步 RL 在 agent 场景下一个特别脏的问题。

价值模型:三件套保证 critic 不拖后腿

单 rollout 训练没有组内 baseline 了,critic 必须顶上去。作者发现 critic 不训练会拖垮整个系统,于是做了三个设计:

1. 更频繁更新 critic:每步策略更新对应 \(K=2\) 步 critic 更新。critic 跟得快,baseline 才准。

2. 冻结 critic 的注意力层:实验发现 critic 训练不稳定主要来自 attention 层。冻结 attention、只训 MoE 投影,正则化效果拔群,critic 梯度范数从 ~10 降到 ~5。

3. 大规模价值预训练:价值估计的"冷启动"是大瓶颈,所以大幅扩展了 critic 预训练数据规模。


方法概览图

Figure 2:SAO 与 GRPO 的执行流对比。GRPO 必须等一组 8 条轨迹全部完成才能训练;SAO 单 rollout 完成后立即可训练。右侧是 DIS 裁剪的信任域示意图

图 1:SAO 与 GRPO 的执行流对比——GRPO 的"组等待"被彻底拆掉;右侧是双侧 token 级裁剪的信任域

上图中,GRPO 必须等 1-8 号轨迹全部到齐才能开始训练,而 SAO 是 9、8、7... 倒序——每条到了就训。配图右半部分把 DIS 的裁剪区间画得很清楚:\(\pi_\theta / \pi_{\text{rollout}}\) 落在 \([1-\epsilon_l, 1+\epsilon_h]\) 之外的 token 直接被 mask 掉。注意 SAO 的信任域是非对称的——这是工程上"知道异步 RL 偏差难免"之后的务实选择。


实验结果:5 个 benchmark 全面碾压

主实验:5 个 benchmark 对比

Model AIME2025 BeyondAIME HMMT Nov 2025 IMOAnswerBench SWE-Bench Verified
Qwen3-30B-A3B SFT (baseline) 80.4 53.3 75.2 53.3 23.0
+ GRPO 84.2 54.8 76.0 55.8 27.0
SAO(本文) 97.3 74.8 88.2 74.0 29.8
- SAO(仅 DIS) 94.2 71.5 86.7 71.3
- GRPO(加 DIS) 93.5 70.8 84.0 70.0

数值很能打。AIME 2025 上从 84.2 提到 97.3,涨了 13.1 个点;BeyondAIME 从 54.8 提到 74.8,涨了 20 个点;IMOAnswerBench 从 55.8 提到 74.0。SWE-Bench Verified 这种编码任务上也从 27.0 提到 29.8(+2.8)。

注意表里有个细节——SAO(仅 DIS)GRPO(加 DIS) 还稍好一点(94.2 vs 93.5 on AIME2025)。这说明单 rollout + DIS 这个最小化版本就已经比"保留组采样 + DIS"更强。SAO 完整的价值模型三件套则把单 rollout 的方差问题彻底压住。

Figure 1:SAO、GRPO、Baseline 在 5 个 benchmark 上的对比柱状图

图 2:5 个 benchmark 全面对比——SAO 在每个任务上都显著超过 GRPO 和 Baseline

跟同期最强的闭源模型比,SAO 训出来的 30B-A3B 模型在 AIME 2025 上 97.3 已经超过 Claude-Sonnet-4.5(87.0),逼近 GPT-5 High(94.6);在 BeyondAIME 上 74.8 直接超过了 GPT-5 High(74.0)。这个 30B-A3B 激活参数量的模型能打平或超过旗舰闭源模型,说明异步 RL 的训练效率红利是实打实的。

训练稳定性:GRPO 训着训着就崩了

这张图是我觉得最有说服力的:

Figure 3a:AIME 2025 训练曲线

图 3:Vanilla GRPO 在 ~150 步直接崩到 0;GRPO (+ DIS) 稳住但停在 85% 左右;SAO 一路爬到 97%

Vanilla GRPO 在 ~150 步就崩成 0 了。这个崩溃在同步训练里不容易出现,但在异步场景下,因为策略版本差持续累积,重要性比的方差被放大到让梯度完全发散。

加上 DIS 之后,GRPO 能稳定下来,但停在 85% 附近就上不去了——组采样本身的 off-policy 偏差在拖后腿。

SAO 从一开始就稳定上升,到 1000 步还没见拐点。这个稳定性才是异步 RL 能上生产的核心前提。

HMMT Nov 2025 上的曲线同样说明问题:

Figure 3c:HMMT Nov 2025 训练曲线

图 4:HMMT Nov 2025 上同样的崩溃模式——Vanilla GRPO 早期就崩,SAO 稳定爬升

价值模型消融:三件套各自有用

配置 AIME2025 BeyondAIME
SAO 完整 97.3 74.8
SAO w/o Faster value (K=1) 95.0 69.8
SAO w/o Frozen attention (full param) 90.6 74.5
Vanilla VAPO (w/o DIS) 91.3 69.0
Running mean baseline 79.8 55.3

几个有意思的发现

  • 去掉 frozen attention,AIME 掉 6.7 个点——这印证了作者的诊断:critic 训练不稳定主要来自 attention 层
  • 去掉 faster value,BeyondAIME 掉 5 个点——critic 跟不上策略变化,baseline 估计就失真
  • Running mean baseline(用最近 128 个奖励的均值做 baseline)只到 79.8——比 SAO 差 17.5 个点。这说明训得好的 critic 远比简单的 running mean 强,单 rollout 也能做出好效果

训练动态分析

Figure 4b:Critic 梯度范数对比

图 5:冻结注意力(SAO)让 critic 梯度范数保持在 4-5,全参数更新(SAO w/o Frozen attention)飙到 10+

冻结注意力是稳定性最关键的一招——梯度范数从 ~10 降到 ~5,几乎打了个对折。

Figure 4a:Explained Variance

图 6:Faster value update 让 explained variance 持续走高,critic 对回报的解释力更强

Explained Variance 这个指标很关键——它衡量 critic 对真实回报的解释能力。SAO 完整版在 800 步时达到 0.6+,而 K=1 版本停在 0.5 附近。critic 越准,单 rollout 训练的 baseline 越稳

Figure 4c:Token 裁剪比例

图 7:SAO 的裁剪比例在 200 步后开始上升(~0.6%),vanilla VAPO 几乎不裁剪,~90 步就崩了

这张图是 DIS 设计合理性的硬证据——SAO 真的在裁剪那些离谱的 token,而 vanilla VAPO(不加 DIS)的裁剪比例接近 0,根本拦不住发散的 off-policy 更新。

Token-level vs Step-level:把 action 粒度做细

粒度方案 AIME2025 BeyondAIME
Token-level(SAO 默认) 89.8 66.8
Step-level (Average) 85.8 60.5
Step-level (Last-Token) 87.3 62.8

(在 400 步的对比实验设置下)

智能体轨迹天然是 step 级的(一次工具调用 = 一个 step),但用 token 级粒度算 advantage 比 step 级好。原因不难理解:长 step 内的 token 之间的 advantage 应该不同(中间 token 和结尾 token 对最终结果的贡献不一样),用 step 级的均值会平滑掉这些信息。

Figure 6:Token-level vs Step-level 训练奖励

图 8:Token-level 训练奖励稳定上升,step-level 两个变体卡在 0.49 附近

在线学习模拟:当奖励信号会变

最让我眼前一亮的实验是 4.5 节的在线学习模拟。任务设计很有意思:让模型写一段文字,奖励函数依次切换风格偏好(cute → chuunibyou → classical),看模型能不能快速适应

Figure 5a:写作风格准确率随偏好切换的变化

图 9:4 种写作风格的准确率变化曲线,阴影区域表示风格切换的时间点。每次切换后,被偏好的风格会迅速从低位爬上来——这正是单 rollout 异步 RL 想要验证的能力:非平稳环境下能不能快适应

Figure 5b:SAO vs Running Mean 的训练奖励

图 9:风格切换时(阴影区域),SAO 快速恢复,Running Mean 适应明显滞后

跟 Running Mean baseline 对比,Running Mean 在每次风格切换后都要花 100+ 步才追上来——因为它依赖历史窗口的均值,窗口里有大量旧风格的样本。SAO 的 critic 是状态依赖的,能精确估计"当前状态下新风格的价值",所以适应快得多。

这个实验是 SAO 真正想强调的能力:异步单 rollout RL 在非平稳环境下的快速适应能力。在真实生产环境里,用户的偏好、数据分布都会随时间漂移,这种适应性是同步 GRPO 做不到的。


我的判断:这是一份诚实的工程报告,不是学术炫技

先说优点

第一,问题选得很准。异步 RL 在 2025 年下半年突然成了热门话题(AReaL、ROLL Flash、MobileRL 等),但大家都在系统层面卷——怎么解耦、怎么中断、怎么调度。SAO 直接点破了算法层面的卡点:组采样在异步下是结构性障碍。这个洞察本身比具体方法更值钱。

第二,工程细节给得足\(\epsilon_l\)\(\epsilon_h\) 的非对称设计、critic 注意力冻结的诊断过程、token-level vs step-level 的对比——这些不是"理论分析"能告诉你的,是真跑出来才发现的。这种"踩过的坑"是工程论文最值钱的资产

第三,对比公平。论文明确把"GRPO + DIS"作为对比项,剥离了 SAO 中"加 DIS"和"用单 rollout"两个独立贡献的边际效应。Table 1 里 SAO w/ DIS only 跟 GRPO + DIS 的对比很说明问题——单 rollout 本身不输

第四,直接上生产。SAO 已经被用在 GLM-5.2(750B-A40B)这种规模的模型上训练,这比任何 benchmark 数字都有说服力。一个能稳定训 1000 步不崩的方法,跟一个在 30B-A3B 上跑 1000 步就崩的方法,工程价值天差地别。

但也有几个想吐槽的点

第一,论文没有 ablation 的反例——比如 frozen attention 看起来很有用,但为什么不试试冻结其他层(MLP)?是实验过不行还是没尝试?这个 ablation 不完整。

第二,token-level 的优势可能跟 critic 能力耦合。作者发现 token-level > step-level,但没有讨论"如果 critic 不够好,token-level 的方差会不会反而爆炸"。直觉上 token 级 advantage 的方差比 step 级大很多,对 critic 质量要求更高。

第三,跟 AReaL 的对比不够直接。AReaL 也是异步 RL 框架,但保留 PPO 的 critic 设计。SAO 在异步场景下能否复现 AReaL 在数学推理上的 2.77x 加速?这个跨工作对比在论文里没看到。

第四,对 critic 预训练数据的依赖性没量化。作者提到"扩展价值模型预训练数据规模"是关键,但没说是怎么扩展、扩展到什么规模、少了多少会崩。这个信息对想复现的团队很关键。


工程启发:如果你也在做异步 RL

如果你的团队正在做异步 RL 训练,这篇论文有几点可以借鉴:

  1. 组采样不是异步 RL 的必选。如果你的环境是单条反馈(编码、工具调用、对话),直接上单 rollout + critic,训练效率会高很多。
  2. DIS 的非对称裁剪是务实选择。下界卡紧(防跑太远)、上界放宽(容忍 stale rollout),这个 trade-off 在异步场景下大概率是对的。
  3. critic 的注意力层要冻。这是个挺反直觉的发现——attention 层的梯度不稳定。如果你的 critic 训崩了,先试冻结 attention。
  4. token-level GAE 比 step-level 更适合长轨迹。前提是 critic 要训得够好。
  5. Skip-Observation 是 agent 任务的标配。把 observation token 排除在 advantage 计算之外,这个 trick 简单但很有效。

写在最后

读完整篇论文,我最大的感受是:智谱这次没有在"刷榜"上花太多笔墨。5 个 benchmark 数字确实亮眼,但论文更想传达的是一个工程判断——异步 RL 的瓶颈不在系统,在算法。SAO 的价值在于把"组采样"这个被 GRPO 锁死的设计连根拔起,证明了"单 rollout + 好 critic"在异步场景下完全可行。

这种论文对一线工程师的参考价值,比单纯的 SOTA benchmark 高得多。它告诉你为什么 GRPO 在异步下会崩什么设计能补上这个洞哪些 trade-off 是值得做的——这些信息是从 paper 的实验细节里一个字一个字抠出来的,不是 abstract 里能看出来的。

GLM-5.2 已经被放在 Hugging Face 上开源了(MIT 协议),用的就是这套训练框架。想复现异步 RL 训练的团队,可以从 SAO + AReaL 入手——前者解决算法稳定性,后者解决系统效率。两者结合,应该就是当前异步 LLM RL 训练的最优解之一了。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我。