GLM-5.3 · SAO
Post-training · GLM-5.3 / SAO · 2026

GLM-5.3:基座不动,
把后训练 stack 再放大一轮

官方博客的原话是「Scaling post-training is all we did for GLM-5.3」:GLM-5.3 与 GLM-5.2 同基座,增益来自后训练; 算法侧沿用 SAO with compaction。SAO 的原始论文(arXiv 2607.07508v1)给出单轨迹异步 RL、DIS 与更强 value model 的完整设计, 但论文的部署对象是 GLM-5.2 750B-A40B,不是 GLM-5.3。这两条来源必须分开读。

Z.ai 官方博客 · SAO 论文 GLM-5.3 Blog ↗ SAO arXiv ↗ HF Model Card ↗ slime ↗
TL;DR · 30 秒抓住核心

GLM-5.3 的官方材料是一篇 2026-08-14 的博客和 HF 模型卡;未找到 GLM-5.3 专门技术报告。博客明确写 same base model as GLM-5.2、every gain comes from post-training;SAO 是另一条线: 它解决异步长程 RL 的稳定性,训练对象是 Qwen3-30B-A3B,部署对象是 GLM-5.2。

SAO 把 GRPO 的 group-wise sampling 换成每个 prompt 一条轨迹。DIS 直接用 rollout logprob 算 rt = πθ / πrollout,落在 [1−εl, 1+εh] 之外的 token 整个从梯度中置零;critic 每次策略更新配 K=2 次更新, 冻结 attention、只训 MoE 投影,并用 skip-observation GAE 跳过环境观测。

结果分两套:SAO 在 Qwen3-30B-A3B 上把 AIME2025 从 GRPO 的 84.2 拉到 97.3,SWE-Bench Verified 从 23.0 拉到 29.8,稳定训练到 1000 步; GLM-5.3 博客报告 Terminal-Bench 3.0 从 4.6 到 28.3,DeepSWE v1.1 从 46.2 到 66.9。两套数字不能相加。

4.6 → 28.3
Terminal-Bench 3.0,GLM-5.2 → GLM-5.3
官方博客报告值;模型与 harness 见该节
97.3
AIME2025,Qwen3-30B-A3B,reasoning-with-Python,Pass@1
同表 GRPO 为 84.2
1000
SAO 稳定训练步数
标准 GRPO 约 160 步崩溃
01

长程 Agent RL 的浪费,来自等最慢的一条轨迹

先看同步 batch 的三个成本:长尾等待、跨版本 off-policy、以及和线上单轨迹反馈不兼容。

同步 RL 的流程是「采一整批 rollout,等齐,再优化」。长程 Agent 任务的轨迹长度差异很大: 短轨迹很快结束,长轨迹变成 straggler,GPU 集群在等最慢那条时大面积空转(SAO §1)。 这不是某个实现细节,而是 batch 语义本身决定的。

GRPO 把这个问题放大了一层。它对每个 prompt 采一组 G 条轨迹,用组均值做 baseline,因此必须等组内所有轨迹完成才能算 advantage; 等待时间由最慢的一条决定。论文把这种延迟称为 latency-driven off-policy:等得越久,用于更新的数据离当前策略越远(SAO §1)。 在线上或复杂 Agent 环境里,环境常常只返回单条轨迹反馈,group-wise sampling 还会直接和反馈形态冲突(SAO §1)。

异步训练能拆掉这个等待,但会引入 policy lag。一条轨迹的生成可能横跨多次模型更新, 精确追踪行为策略 πold 需要保存一串 checkpoint 历史;论文认为这在实践中不可行(SAO §3.1)。 如果直接用当前策略去更新很旧的数据,off-policy 偏差会变成训练震荡。

另一条路是单轨迹:每个 prompt 只采一条,完成即训练。它拆掉了组屏障,但也拆掉了 group baseline; 梯度估计退化成 REINFORCE 式的高方差(SAO §3.2)。所以问题不是「异步还是同步」, 而是「拆掉 group 之后,用什么补方差、用什么挡 off-policy token」。

利用率

等最慢的一条

同步 batch 必须等组内最长轨迹;长尾越重,空转越多。异步消费轨迹能缓解,但不自动解决稳定性。

稳定性

group baseline 会放大延迟

组均值减方差,但组必须等齐;等齐的过程本身制造 off-policy。单轨迹去掉等待,方差又升上来。

线上兼容

环境只回一条轨迹

真实沙箱与在线业务往往一次只给一条反馈;group-wise 采样和这种反馈形态不匹配。

02

GRPO 省了 critic,却把同步屏障留在组里

前人方案分别在「省显存」和「提吞吐」上用力;SAO 要同时处理稳定性和单轨迹反馈。

PPO 的 actor-critic 用独立 value model 估 advantage。论文 §2 指出,这相当于为 value function 再维护一份模型参数, 训练显存 footprint 近似翻倍;换来的是一定程度上的方差控制。GRPO 把这份成本省掉:它不训 critic, 用同一 prompt 的组内归一化奖励做 baseline(SAO §2)。

GRPO 的代价是组屏障。标准 GRPO 在这套 agentic RL 设置里约 160 步崩溃 (SAO §4.2);它的分数是崩溃前的最后有效值。VAPO 换成长度自适应 GAE 与 value-based RL, 但没有 DIS 时 token-level clip ratio 接近 0,约 90 步崩溃(SAO §4.4、Figure 4c)。 也就是说,「看起来没在裁剪」不等于稳定。

异步系统走的是另一条路。AReaL、ROLL Flash、asynchronous RLHF 等工作把 rollout 与训练解耦,重点在吞吐与墙钟效率; 论文的判断是,这些工作对训练稳定性和任务效果的覆盖不足(SAO Abstract、§5.2)。 Decoupled PPO 进一步保留 πθ、πθold、πrollout 三个策略做重要性采样, 但当一条轨迹横跨多次更新时,πθold 的精确行为概率很难追(SAO §3.1)。

SAO §1–§3 的方案对照;「约 160 步」与「约 90 步」是论文报告的训练崩溃位置,条件为 Qwen3-30B-A3B 的 agentic RL 设置。

方案机制在本实验里的卡点
PPOactor-critic + GAE,critic 与策略同时训critic 让训练显存 footprint 近似翻倍(§2)
GRPO同一 prompt 采 G 条,组均值做 baseline,无 critic组必须等最慢一条;标准 GRPO 约 160 步崩溃(§4.2)
VAPOlength-adaptive GAE + value-based RL没有 DIS 时 clip ratio 接近 0,约 90 步崩溃(§4.4、Figure 4c)
AReaL / ROLL Flash / async RLHFrollout 与训练解耦,主打吞吐论文称其重点在效率,稳定性与任务效果覆盖不足(§1、§5.2)
Decoupled PPOπθ / πθold / πrollout 三策略重要性采样轨迹跨多次更新时,精确追踪 πθold 需要 checkpoint 历史,实践不可行(§3.1)
SAO 的赌注

用 critic 换掉 group,再把 critic 训好

单轨迹拆掉了组屏障,但把方差控制的担子全压到 value model。SAO 围绕 value model 的四个设计——K=2 的更快 value 更新、 冻结 attention、skip-observation GAE、扩大 value pretraining——都是围绕这一件事。 所以它不是「GRPO 加一个 mask」,而是把 baseline 从组均值换成了 critic。

03

单轨迹 + DIS:把 trust region 做成硬 mask,再用 critic 补方差

SAO 的关键不是「异步」本身,而是异步之后仍能把极端 off-policy token 挡在梯度外。

单轨迹的设置很直接:每个 prompt 只采一条 rollout,轨迹完成就送入训练缓冲区,不等待同组其他样本(SAO §3.2)。 这让训练节奏和线上单条反馈对齐,但也让 advantage 估计失去 group baseline。SAO 的选择是把 baseline 交给 critic, 并用 DIS 处理异步带来的 policy lag。

rt(θ) = exp( log πθ(at|st) − log πrollout(at|st) )
SAO Eq.2:直接用 rollout 阶段记录的 logprob;不再维护 πθold(§3.1)

DIS 的核心是「直接」:行为策略用 πrollout 代替,ratio 只算当前策略与采样策略的差。 论文的理由是,异步 rollout 可能横跨多次模型更新,精确的 πθold 既贵又容易错; 直接用 rollout logprob 可以省掉一次独立的 old-policy 推理(SAO §3.1)。

f(x) = x,若 1−εl < x < 1+εh;   f(x) = 0,其他
SAO Eq.3:区间外的 token 不是被 clip,而是整个 token 从梯度中置零(§3.1)
L(θ) = Et[ f(rt(θ), εl, εh) · Ât · log πθ(at|st) ]
SAO Eq.1:token-level 目标;f 为 0 的 token 对梯度没有贡献

这和 PPO 的 clip 不是一回事。PPO 的 min/clip 会保留一个被裁剪后的项;DIS 直接把区间外的 token 置零。 论文的措辞是「masked from gradient computation entirely」,并说这让更激进的裁剪成为可能(SAO §3.1)。 区间也不对称:推理任务用 εl=0.3、εh=5.0;coding 任务用 0.8/3.0(SAO §4.1)。 上限比下限宽得多;论文没有解释这组取值的来源。

trust region
[0.70, 6.00]
r_t
2.40
f(r_t)
2.40
状态
保留
当前读数
1−0.30=0.70,1+5.00=6.00;r=2.40 在区间内,f=2.40,保留。
手算 A:DIS 的保留 / mask 边界 与交互输出逐位对上

组 1:reasoning 预设,ε_l=0.30,ε_h=5.00,r=2.40。

  • 下界 1−0.30=0.70,上界 1+5.00=6.00;0.70 < 2.40 < 6.00,所以 f=2.40,状态「保留」。
  • 把 r 推到边界 6.00:6.00 < 6.00 不成立,所以 f=0,状态「mask」。区间是开区间,边界值也被挡掉。

组 2:coding 预设,ε_l=0.80,ε_h=3.00,r=0.75。

  • 下界 1−0.80=0.20,上界 1+3.00=4.00;0.20 < 0.75 < 4.00,所以 f=0.75,状态「保留」。
  • 把 r 推到边界 0.20:0.20 > 0.20 不成立,所以 f=0,状态「mask」。

这个模拟覆盖了什么:只实现 Eq.3 的 mask 函数,覆盖「区间内保留」与「区间外置零」两个分支;预设的 0.3/5.0/0.8/3.0 来自 §4.1。比较前把 r 与区间端点按页面显示的 2 位小数取整,避免 1−0.80 的二进制尾差把边界值 0.20 误判成区间内。它不实现 Eq.1 的 logπθ 项、Eq.2 的 logprob 计算、优势符号、PPO 的 min/clip,也不模拟 token 级批量与数值误差。

Value model:单轨迹的方差要用 critic 补

单轨迹没有组内对比,方差比 GRPO 高。SAO 的做法不是再加一个 group,而是把 value model 训好: 每次策略更新配 K=2 次 value 更新(§3.2);冻结 value model 的 attention,只优化 MoE 投影(§3.2); 用 skip-observation GAE 处理「模型动作 → 环境观测 → 模型动作」的轨迹;并扩大 value model 的预训练语料(§3.2)。

Â(ai,N) = δ + γλ Â(ai+1,0)      δ = rt + γ V(ai+1,0) − V(ai,N)
SAO Eq.4–5:跳过 ai,N 与 ai+1,0 之间的环境观测 token,把动作价值直接接到下一个动作(§3.2)

环境观测 oi 不是模型生成的,标准 GAE 跨过 oi 去算 V(oi,start), 等于让 value model 预测一个外部环境状态的价值;论文认为这会引入噪声(§3.2)。 skip-observation 的改法是把 Bellman target 从「动作 → 观测 → 动作」改成「动作 → 下一个动作」, advantage 只在模型自己生成的 token 上传播。论文在 Appendix A.1/Table 5 还比较了 step-level 与 token-level: 同样训练 400 步时,step-level average 是 85.8 / 60.5、last-token 是 87.3 / 62.8、token-level 是 89.8 / 66.8 (AIME2025 / BeyondAIME,Accuracy %)。

SAO §3.1–§3.2 的方法组件;本表是归纳,不是原文表格。

组件做法解决什么出处
单轨迹采样每个 prompt 1 条 rollout,完成即入训练去掉组同步屏障§3.2
DISrt=πθ/πrollout;区间外 token mask异步 policy lag 与极端 off-policy token§3.1、Eq.1–3
Faster value每次策略更新配 K=2 次 critic 更新critic 跟上快速漂移的策略§3.2
Frozen attention冻结 attention,只训 MoE 投影critic 梯度范数过大§3.2、Figure 4b
Skip-observation GAE跨过环境观测 token,action-to-action环境噪声污染 advantage§3.2、Eq.4–5
Value pretraining扩大 value model 预训练语料critic 冷启动§3.2
拆开看

DIS 不是全部:完整 SAO 还高 3.1 个百分点

Table 1 里「SAO (w/ DIS only)」的 AIME2025 是 94.2, 完整 SAO 是 97.3,差 3.1 个百分点(97.3 − 94.2);「GRPO (+ DIS)」是 93.5。DIS 能把训练稳住,但完整方法还包含单轨迹 value model 的一整套训练设计。 把 SAO 简化成「一个 mask」会漏掉这部分。

04

G=1、batch 128;一次策略更新配两次 critic 更新

把论文的实验配置拆成可复算的 batch 与更新次数,先看清 SAO 的成本落在哪里。

SAO §4.1 的实验配置;GRPO 变体为 16 prompts × 8 rollouts = 128。

项值出处
BackboneQwen3-30B-A3B-Thinking-2507;TIR SFT 3 epochs,数据由 GPT-OSS-120B 生成§4.1
Batch / group128 条轨迹 / G=1§4.1
Max length128k tokens§4.1
Policy LR1×10−6§4.1
ε_l / ε_h(reasoning)0.3 / 5.0§4.1
ε_l / ε_h(coding)0.8 / 3.0§4.1
Value LR / λ_critic / warmup5×10−6 / 1 / 10 steps§4.1
K(critic 更新频次)2§4.1
Coding scaffoldOpenHands,最多 300 轮,128k context§4.1
EvalPass@1;temp 1.0,top-p 1.0,max 128k;math 最多 50 轮;AIME/HMMT/IMO 16 次、BeyondAIME 4 次§4.1

这套配置里,batch 固定为 128 条轨迹。SAO 的 G=1 意味着 128 个 prompt、每个 prompt 1 条轨迹;GRPO 变体则是 16 个 prompt、每个 prompt 8 条轨迹,乘积仍是 128(§4.1)。同样的 batch 大小,组内等待的轨迹数从 0 变成最多 7 条。 下面这个拆分器只做算术,不模拟墙钟时间。

batch 轨迹
128
prompts
128
每 prompt 轨迹
1
组内最多等待
0
当前读数
batch=128 条轨迹;G=1 → 128 个 prompt,每个 prompt 1 条;组内等待 0 条。
手算 B:G=1 与 G=8 的 batch 拆分 与交互输出逐位对上

组 1:G=1(SAO)。

  • batch=128 条轨迹;128/1=128 个 prompt,每个 prompt 1 条轨迹。
  • 组内最多等待 1−1=0 条其他轨迹。这就是「单轨迹、完成即训练」的配置。

组 2:G=8(GRPO 变体)。

  • batch=128 条轨迹;128/8=16 个 prompt,每个 prompt 8 条轨迹;16×8=128。
  • 组内最多等待 8−1=7 条其他轨迹。这是结构计数,不是墙钟时间;论文没有给出等待时间或 GPU 利用率数字。

这个模拟覆盖了什么:只做 batch 的算术拆分,覆盖 G=1 与 G=8 两种论文设置;不模拟 rollout 长度分布、调度策略、吞吐或 GPU 空转比例。

更新次数上,论文 §3.2 把 K 的单位写成「每次策略梯度更新」,§4.1 与 §4.3 的实验描述写成「每 batch」。 两处单位不同,本页只按原样并列,不把 2 次/更新换算成 2 次/batch。 能确定的是:K=2 是实验设置,目的是让 value 估计在策略漂移之前跟上(§3.2)。

成本也在这里。PPO 式 critic 让训练显存 footprint 近似翻倍(§2);SAO 仍然需要 critic, 冻结 attention 只是减少可训练参数,论文没有给出显存账本。所以「省掉组等待」不等于「省掉 critic 的显存与训练时间」。

05

采样、缓冲、训练解耦;轨迹完成即入队

算法上是一条轨迹立即训练;工程上要靠 rollout、training、buffer 同一条 dataflow 才能不重建训练栈。

GRPO · 同步组 轨迹 1 先完成 轨迹 2 中等 轨迹 3 短 轨迹 4 最慢 组屏障 等最慢 整组齐了才更新 一次更新 batch 内同步 SAO · 单轨迹异步 Rollout 1 prompt = 1 条 Buffer 完成即入队 DIS r_t + mask Policy update Eq.1 Weight sync 回 rollout Sandbox 环境观测 Critic K=2 · frozen attn Skip-Obs GAE Eq.4–5 参数更新回采样侧
上排是 GRPO 的组同步:同一 prompt 的多条轨迹必须等最慢一条;下排是 SAO:轨迹完成即入 buffer, DIS 先 mask 再更新策略,critic 以 K=2 更新并提供 skip-observation GAE 的 value。 算法结构据 SAO §3 与 Figure 2 重绘;Megatron/SGLang/slime 的工程分工据 GLM-5.3 博客 §slime,论文本身没有描述 slime 内部实现。

逐步拆开:一条轨迹从生成到更新

  1. 生成。Rollout 引擎对每个 prompt 生成一条轨迹,记录 token-level logprob。SAO 的 batch 是 G=1,所以不需要等同一 prompt 的其他样本(§3.2、§4.1)。
  2. 入队。轨迹完成即进入训练缓冲区;这是「单轨迹异步」和「分组同步」的分界点(§3.2、Figure 2)。
  3. 算 ratio。训练侧用当前策略与 rollout logprob 算 rt;不维护 πθold(Eq.2)。
  4. mask。落在 [1−εl, 1+εh] 外的 token 置零;区间内的 token 保留原 ratio(Eq.3)。
  5. 估 value。critic 以 K=2 更新,冻结 attention、只训 MoE 投影;skip-observation GAE 跨过环境观测,算动作到动作的 advantage(§3.2、Eq.4–5)。
  6. 更新与同步。策略按 Eq.1 更新,更新后的权重回到 rollout 侧。GLM-5.3 博客称 slime 把训练、rollout、buffer 放在同一条 dataflow 上,训练侧 Megatron、采样侧 SGLang(§slime)。
来源边界

论文没写 slime,博客没写算法细节

SAO 论文描述的是算法与 Qwen3-30B-A3B 实验,没有展开 slime 的内部实现;GLM-5.3 博客描述的是工程栈与 GLM-5.3 的 benchmark, 没有给出 SAO 的完整消融。把「Megatron + SGLang + 单 dataflow」当成 SAO 论文的结论,会混淆来源。 本页把算法图归到 SAO §3/Figure 2,把工程分工归到博客 §slime,并在图注里分开标注。

06

AIME +13.1,SWE-Bench +6.8;稳定步数从 160 拉到 1000

先看 SAO 在 Qwen3-30B-A3B 上的对照,再看 GLM-5.3 官方博客的报告值;两套实验不要混。

SAO:Qwen3-30B-A3B,reasoning-with-Python

SAO Table 1(节选):Qwen3-30B-A3B-Thinking-2507,reasoning-with-Python,Pass@1 %; AIME2025/HMMT/IMOAnswerBench 为 16 次评测均值,BeyondAIME 为 4 次;temp 1.0,top-p 1.0,max 128k,math 最多 50 轮。

ModelAIME2025BeyondAIMEHMMT Nov 2025IMOAnswerBench
Qwen3-30B-A3B w/ python14.610.517.37.8
Qwen3-30B-A3B w/o python85.063.076.755.3
SFT w/ python80.453.375.253.3
GRPO w/ python84.254.876.055.8
GRPO (+ DIS)93.570.884.070.0
SAO (DIS only)94.271.586.771.3
SAO97.374.888.374.0

在 Qwen3-30B-A3B、reasoning-with-Python、Pass@1 的条件下,SAO 的 AIME2025 是 97.3,GRPO 是 84.2, 差 +13.1 个百分点(97.3 − 84.2);BeyondAIME 是 74.8 vs 54.8, 差 +20.0 个百分点(74.8 − 54.8);HMMT 是 88.3 vs 76.0, 差 +12.3 个百分点(88.3 − 76.0);IMOAnswerBench 是 74.0 vs 55.8, 差 +18.2 个百分点(74.0 − 55.8)。 对 GRPO (+ DIS) 的 AIME 93.5,SAO 还高 3.8 个百分点(97.3 − 93.5)。

SAO Table 2:Qwen3-30B-A3B,SWE-Bench Verified,OpenHands,最多 300 轮,128k context,Pass@1 %。

ModelSWE-Bench Verified
Qwen3-30B-A3B23.0
+ GRPO (w/ DIS)27.0
+ SAO29.8

SWE-Bench Verified 上,SAO 是 29.8,base 是 23.0,差 +6.8 个百分点(29.8 − 23.0); 对 GRPO (+ DIS) 的 27.0,差 +2.8 个百分点(29.8 − 27.0)。

消融:三个改动各自值多少

SAO Table 4:AIME2025 / BeyondAIME,Accuracy %;SAO 与各消融变体,同为 Qwen3-30B-A3B 设置。

VariantAIME2025BeyondAIME
SAO97.374.8
SAO w/o Faster value95.069.8
SAO w/o Frozen attention90.674.5
Vanilla VAPO (w/o DIS)91.369.0
Running mean baseline79.855.3

去掉 faster value:AIME2025 95.0,比 SAO 低 2.3 个百分点(97.3 − 95.0);BeyondAIME 69.8,低 5.0 个百分点(74.8 − 69.8)。 去掉 frozen attention:AIME 90.6,低 6.7 个百分点(97.3 − 90.6);BeyondAIME 74.5,只低 0.3 个百分点(74.8 − 74.5)。 Running mean baseline 是 79.8 / 55.3,分别低 17.5 个百分点(97.3 − 79.8) 与 19.5 个百分点(74.8 − 55.3)。

稳定性方面,标准 GRPO 约 160 步崩溃;SAO 训练到 1000 步(Abstract);SAO 与 GRPO (+ DIS) 在约 400 步后才出现明显分化(§4.2)。VAPO 在约 90 步崩溃(§4.4)。这些是论文报告的训练动态,不是收敛性证明。

一个反直觉的数字在 Table 1:未做 TIR SFT 的 Qwen3-30B-A3B,AIME2025 在 w/ python 时是 14.6,w/o python 时是 85.0; SFT w/ python 才回到 80.4。 推断(由 Table 1 反推):工具本身不是增益,模型要先学会在推理里调用工具; 未对齐的基座把 python 当成额外噪声。

frozen attention 的代价也不均匀:AIME 掉 6.7 个百分点, BeyondAIME 只掉 0.3 个百分点(Table 4)。 同一个改动在不同 benchmark 上的代价差了一个数量级,不能用一个平均分概括。

GLM-5.3:官方博客的报告值

GLM-5.3 Blog §Stronger Coding(前 3 行)与 §Emergent Cyber Capability(后 2 行):GLM-5.3 vs GLM-5.2,官方博客报告值; 不同 benchmark 的 harness 与预算不同,差值只在行内成立。Terminal-Bench 3.0 为 avg@3,口径为 Claude Code 2.1.207 harness、400K context、128K max output。

BenchmarkGLM-5.2GLM-5.3差值(百分点)
Terminal-Bench 3.04.628.3+23.7
DeepSWE v1.146.266.9+20.7
Agents' Last Exam23.828.5+4.7
CyberGym77.284.5+7.3
ExploitBench24.454.4+30.0

在 GLM-5.3 vs GLM-5.2、官方博客报告值下,Terminal-Bench 3.0 从 4.6 到 28.3(avg@3),差 +23.7 个百分点(28.3 − 4.6); DeepSWE v1.1 从 46.2 到 66.9,差 +20.7 个百分点(66.9 − 46.2); Agents' Last Exam 从 23.8 到 28.5,差 +4.7 个百分点(28.5 − 23.8)。

Cyber 侧:CyberGym 从 77.2 到 84.5,差 +7.3 个百分点(84.5 − 77.2); ExploitBench 从 24.4 到 54.4,差 +30.0 个百分点(54.4 − 24.4), 即 2.23 倍(54.4 / 24.4)。 ExploitGym 是任务计数:2 小时内从 29 到 105 个任务,6 小时内从 39 到 130 个任务;预算是按每模型 TPS 归一化的。

Z.ai Code Bench 上,Max effort 是 34.5% at ~75K output tokens, GLM-5.2 是 23.4% at 96K,差 +11.1 个百分点(34.5 − 23.4); High effort 是 31.4% at ~50K, Claude Opus 4.8 是 29.5% at 120K,差 +1.9 个百分点(31.4 − 29.5)。 官方博客还写「50% improvement」over GLM-5.2 on Z.ai Code Bench;同一节给出 GLM-5.2 在 Max effort 的 23.4%(96K),但未说明 50% 与这组 Max effort 数值的换算口径,本页不替它换算。 官方博客同时写 Claude Fable 5 在 Max effort 达到 39.5%,GLM-5.3 仍在其后。

安全侧,博客说自 GLM-5.2 以来与安全团队合作,在 269 个项目里 确认了 2,436 个漏洞,其中 1,097 个中高危;最早的漏洞可追溯到约 40 年前。 博客未说明这些数字是否经过独立审计。

slime 侧,博客说新增 top-p mask、top-k 与 full-vocabulary OPD;训练与 rollout 的 logprob 平均差控制在 1e-7 量级, 相对此前设置降低 99.99% 以上; 长时序 coding RL 的端到端吞吐提升 2.3 倍以上。

不要相加

SAO 的 +13.1 和 GLM-5.3 的 +23.7 不是同一把尺

SAO 的 AIME/BeyondAIME/HMMT/IMO 数字来自 Qwen3-30B-A3B、reasoning-with-Python、Pass@1;SWE-Bench Verified 来自 OpenHands、Pass@1;GLM-5.3 的数字来自官方博客、开放权重模型(博客称 open-weights)与各 benchmark 自己的 harness。 模型、数据、评测协议都不同。本页把它们并排,是为了看清「后训练 scaling」的两层证据,而不是做加法。

07

省掉的是等待,不是 critic 的成本

SAO 的适用边界由 value model、logprob 基础设施和实验覆盖决定;GLM-5.3 的证据强度则由官方博客决定。

方法边界

实验边界

来源边界

什么时候别用

一句话

SAO 用 critic 换掉 group 屏障;GLM-5.3 用后训练换掉新基座

两者都是 scaling 的账本:SAO 把成本记在 critic 和 logprob 基础设施上,GLM-5.3 把成本记在环境、数据与 RL 系统上。 看清账本,再决定要不要把这套 stack 搬到自己的模型和任务上。