端到端强化学习训练多轮工具集成推理(TIR)时,训练经常中途崩盘、分数塌到 0。论文把病根指向工具反馈引起的分布漂移——它让模型在后续回合采样出极低概率的 token,进而引发梯度范数爆炸。 解法只加了一条规则:任何一回合既没有完整代码块、也没有最终答案,整条轨迹不进策略更新。
单轮 TIR 训练是平滑的;一改成多轮,工具输出被拼进下一轮 prompt,它来自外部解释器、偏离预训练分布,模型随之「漂」,开始生成极低概率 token,并在一轮轮循环里累积放大。
论文的 Proposition 3.1 说,logits 上的策略梯度 ∝ 未裁剪的重要性比 ρ,以及一个对低概率 token 高度敏感的概率项 √(1 − 2P(c) + ΣP(j)²)。对负奖励轨迹,低概率 token 的 ρ 可以涨到无穷;即便裁剪,概率项也会让梯度居高不下。所以只 mask 反馈 token 不够。
作者的观察是:这种漂移常常表现为一回合「既没有完整代码块、也没有最终答案」(partial code、重复文本、过早 eos)。由此把整条轨迹从策略更新里滤掉,既挡掉大风度梯度,也避免早期正确步骤被后期塌陷「连坐」。
它不是新算法:GRPO + feedback masking 照旧,只多一个过滤开关,可与其它 RL 改进正交叠加。
读完这节应知道:为什么把单轮改成多轮,训练就从平滑变成爆炸——而且和代码质量无关。
TIR 的循环是「推理 → 写代码 → 沙箱执行 → 读回结果 → 再推理」。论文把轨迹写成
o = (q, l0, f0, …, lK−1, fK−1),其中 lk 是模型第 k 轮生成的回答,fk 是工具反馈;并用两层 MDP(回合级 + token 级)描述它,统一一个策略 πθ 求解。
模型只生成一段回答,最多带一个代码块。反馈只被「读」一次,不会被当作下一轮的输入条件。Figure 2 显示:单轮 naive 训练平滑上升。
fk 被拼进第 k+1 轮 prompt。它来自外部解释器,可能显著偏离 LLM 学到的数据分布;以这种 OOD 输入为条件,后续生成就开始高度随机,选中 token 的概率被压得异常低。
Figure 3 的压测很直观:Turn 1 的 token 概率普遍较高,Turn 2、3 模型自己的文本里开始出现低概率片段,到 Turn 4 整段塌成无意义输出、概率极低。
而多轮 TIR 本来就做 feedback masking:工具 token 不参与 loss 计算(mi,t = 0)。论文指出这不够——mask 只挡住了反馈 token 自己的梯度,挡不住它污染后续生成。这就是本文要补的洞。
这节对照两类做法各自卡在哪,也解释为什么作者坚持不走 SFT 冷启动。
代表:ReTool 先在 Qwen2.5-Math-32B-Instruct 上做冷启动 SFT 再 RL;ToRL、Effective TIR 则在数学专精基座上做 RL。
强项:确实稳,32B 上分数也高。Table 1 里 ReTool-32B 的 AIME24 是 67.0,高于 SimpleTIR-32B 的 59.9;7B 上 ReTool 未报告。
代价:SFT 把模型的推理形态锚定在标注范例上,削弱 Zero RL 的「涌现」这一核心收益。论文要的是不依赖冷启动的人类数据。
候选:按高重要性比(importance ratio)过滤、或按低 token 概率过滤。直觉上——既然病根是低概率 token,把它们筛掉就行。
卡点:Figure 5(下)里这两种过滤都压不住梯度爆炸,训练分数曲线仍然乱跳。论文归因于两点:阈值难调,且它们不解决 credit assignment。
此外梯度裁剪(clip=1)在这套设置里已经开着,仍然爆。
所以作者要找的不是「更细的 token 级信号」,而是一个鲁棒、语义清晰、还能顺带修掉 credit assignment 的轨迹级判据。这就是下一节的 void turn。
这篇论文只有一个公式是它自己的,其余都沿用 GRPO;先看懂公式,再对着模拟器亲手验证一次。
策略用 GRPO 训练,优势是组内相对奖励 Âi = (ri − mean(r)) / std(r)。目标只对「模型生成」的 token 累积 loss:
论文对 ρ 做 PPO 概率比裁剪(clip 0.2/0.28,即 ε = 0.2 与 0.28),但第二项完全不受裁剪影响;而按 importance ratio 去过滤,又只做了第一项的一半。两条路都堵不住。
论文给的典型成因:partial code、重复文本、过早采样到 eos 导致的残缺回答。它在成功轨迹里很少见,在异常轨迹里很常见,因此是一个强判据。
算法:逐条检查采样到的轨迹,任何一回合是 void turn → 在 GRPO 更新前把整条轨迹从 batch 中 mask 掉。一个动作同时做了两件事:挡住低概率 token 的大梯度回流,并纠正错配的 credit assignment(早期正确步骤不再被后期塌陷拖累)。
下面把 Figure 4 的流程做成可操作版本。轨迹里有四回合,其中一回合是 void turn。切换处理方式,看这条轨迹还能不能进入策略更新、梯度里还剩多少低概率 token——以及它同时带来什么副作用。
手算验证(默认:G = 16,void 占 8 条):
这段给出复现所需的全部关键配置,并指出「省交互回合」才是这套方法的实际收益之一。
训练集为 SimpleRL 的 Math3-5 与 DeepscaleR;代码执行用异步的 Sandbox Fusion。基座是未对齐的 Qwen2.5-7B / 32B,全程不做 SFT。
rollout 温度 1.0,每 prompt n = 16 次 rollout,采样 batch 1280;训练 batch 512;PPO clip 0.2/0.28,epochs 4;lr 1e-6,梯度裁剪 global-norm = 1;γ = 1、GAE λ = 1;KL 系数 0、熵系数 0。
为避免基座模型遇到 OOD 特殊 token,工具输出前只加一句 "Code Execution Result:";每段生成的代码前预置一个 final_answer 函数,让简单题在一回合内收尾;代码块成形后立即停止生成,并在下一回合前追加真实的工具反馈,防止模型幻觉工具输出。
后两点还让 void turn 的检测变得很直接:一回合要么有完整代码块(进而被执行)、要么有 final_answer / \boxed{},否则就是 void。
代价方面:论文自述训练依赖高并行度的沙箱,并且完整异步的 rollout 与奖励计算仍是开放问题(Limitations)。过滤本身几乎零开销——只是把样本从更新前的 batch 里拿掉。
Figure 4 的顺序:交互 → 轨迹过滤 → 策略更新;void turn 同时触发「停止生成」和「整条丢弃」。
数字全部取自 Table 1 / Table 2 / Table 3,均为 average@32;「-」表示原文未提供。
| 模型 (7B) | TIR | Zero RL | 起点 | AIME24 | AIME25 | MATH500 | Olympiad | AMC23 | HMMT25 |
|---|---|---|---|---|---|---|---|---|---|
| Qwen2.5-7B | ✗ | / | Base | 3.2 | 1.1 | 51.9 | 15.4 | 21.7 | 0.0 |
| SimpleRL-Zoo-7B | ✗ | ✓ | Base | 15.6 | - | 78.2 | 40.4 | 62.5 | - |
| ToRL-7B | ✓ | ✗ | Math-Inst | 40.2 | 27.9 | 82.2 | 49.9 | 75.0 | - |
| Effective TIR-7B | ✓ | ✗ | Math | 42.3 | 29.2 | 86.4 | - | 74.2 | - |
| ZeroTIR-7B | ✓ | ✓ | Base | 39.6 | 25.0 | 80.2 | - | - | 22.5 |
| SimpleTIR-7B | ✓ | ✓ | Base | 50.5 | 30.9 | 88.4 | 54.8 | 79.1 | 29.7 |
Table 1(节选,Qwen2.5-7B 部分)· TIR:训练与评测是否用工具;Zero RL:是否从 base 直接 RL
32B 规模上,SimpleTIR-32B 的 AIME24 是 59.9、MATH500 是 92.9;同为零 RL 的 ZeroTIR-32B 分别是 48 和 87.8。但冷启动路线仍未被完全追平:ReTool 的 AIME24 达到 67.0,AIME25 是 49.3;SimpleTIR-32B 的 AIME25 为 49.2,几乎持平。
| 设置(7B) | AIME24 | MATH500 |
|---|---|---|
| SimpleTIR | 50.5 | 88.4 |
| Naive Multi-Turn | 20.8 | 73.1 |
| Low Prob Filtering | 23.3 | 72.8 |
| High Ratio Filtering | 26.3 | 75.0 |
| Stop Generation w/o Filtering | 26.1 | 77.3 |
Table 2 · 因消融方法训练不稳定,报告 1000 个梯度步内的最高分
两点反直觉:其一,「遇 void turn 就停生成」还不够(26.1)——保留轨迹依然被 credit assignment 拖累,必须整条丢弃;其二,token 级的两种过滤都只在 20–26 区间打转,说明问题不在于「挑出哪些 token」,而在于「哪条轨迹值得学」。
作者用 Claude-3.7-Sonnet 标注正确回答中的推理模式(Table 3):SimpleTIR-32B 相比冷启动的 ReTool,渐进式推理 46.5% vs 18.9%,错误修正 38.0% vs 25.8%,交叉验证 86.0% vs 82.4%。频率之和可超 100%,因为一条回答可含多种模式。
作者 Limitations 写了四条,加上从原文数据本身能读出的一条,共五个边界。
论文自述:void turn 作为低概率 token 的指示器,未必能直接迁移到多轮 TIR 之外的任务。网页浏览、API 调用、机器人控制等场景里,「这一轮有没有推进」远没有「有没有代码块/最终答案」那么好判定。
数学推理最多训练 10 回合,但复杂 agent 任务可能需要更多交互。回合越深,漂移累积的机会也越多。
同基座、同起点下,冷启动 + RL 的 ReTool 在 AIME24(67.0)、AIME25(49.3)上仍高于 SimpleTIR-32B。SimpleTIR 的优势是不需要人类冷启动数据,以及推理模式更多样,而不是绝对分数更高。
训练依赖高并行沙箱;完全异步的 rollout 与奖励计算仍是开放问题,涉及 rollout 效率、显存管理与 credit assignment。
「整条丢弃」会连同其中有效的早期步骤一起扔掉。本页推断:若难点题目初期几乎采样不到无 void turn 的轨迹,可学的样本会骤减——论文未单独报告这类样本在训练中的比例,这一风险的大小取决于实际题集的难度分布。
一句话:SimpleTIR 把「病根在数据」这一思路落成了一个回合级开关。它不改变 RL 算法,也不扩大模型能力,而是让 Zero RL 在多轮工具场景下第一次能跑稳、并跑出分数。