不让模型「想得更长」,而是让它「想得更聪明」:在推理链里调用 Python 解释器,执行代码、看反馈、再修正。训练先做非推理 SFT(只教工具格式与指令跟随),随后三阶段 GRPO-RoC 逐步把最大响应长度从 8K 拉到 12K,并在最后阶段只练 17.3K 道难题。 最终 rStar2-Agent-14B(Qwen3-14B-Base 经三阶段 RL)在 510 个 RL step 后达到 AIME24 80.6%、AIME25 69.8%(均为 pass@1),AIME24 平均响应长度 9339.7 token。
问题:长 CoT 会「想得越长,错得越隐蔽」。 中间步骤写错,模型很难自己发现;纯文本反思又常常检测不到错误。rStar2-Agent 把 Python 解释器变成环境,让模型用代码探索、验证、修正(§1)。
方法:非推理 SFT + 三阶段 GRPO-RoC。 SFT 只教指令跟随、JSON 工具调用和基础编码,故意不教数学推理;RL 阶段用「过采样 2G 条、再按质量选 G 条」的 RoC 策略,成功轨迹只留工具错误少、格式干净的,失败轨迹保留多样性(§2.2.3、§4.1)。
结果:14B 在 AIME24 超过 671B DeepSeek-R1。 AIME24 80.6% 对 R1 的 79.8%(高 0.8 个百分点);AIME25 69.8% 略低于 R1 的 70.0%;HMMT25 52.7% 高于 R1 的 44.4%。不是所有列都赢。
代价:只做整数答案的数学题,只验证到 14B/32B。 训练数据要求最终答案是整数,避免符号等价判断出错;工具只有 Python;32B 只跑完前两个阶段 700 步。论文没有给总 GPU 小时,只说 64 张 MI300X、约一周(§4.2、§4.3、§5.3)。
论文的出发点不是「再想久一点」,而是让模型用外部工具验证中间结果。
长思维链把问题拆成很多步,但每一步都可能出错;一旦前面走偏,后面的推理会继续沿着错误前提展开。模型内部的自我反思(self-reflection)并不稳定:它可能检测不到错误,也可能在错误方向上越改越远(§1)。
Python 解释器提供了另一种信号:代码可以执行,输出对错可验证。模型可以写一段代码算中间结果,看执行输出,再决定下一步;如果代码报错,错误信息本身就是反馈。论文把这种能力称为「agentic reasoning」:模型不只是生成文本,而是在一个工具环境里行动(§1、§2.1)。
模型可以写「让我检查一下」,但检查仍然是文本生成,没有外部验证。长 CoT 在难题上容易出现「看起来合理、实际算错」的中间步骤(§1)。
只用最终答案对错做奖励时,一条中间工具调用错误、但最终答案侥幸正确的轨迹仍然得正奖励。模型会把「错误调用」当成可接受行为(§2.2.2)。
论文在 Figure 4 里量化了第二个缺口:在朴素 GRPO 下,正确回答的轨迹中,工具调用出错的比例(tool call error rate),会在训练后稳定在约 15%(Qwen2.5-32B)与 10%(Qwen3-14B)。这不是小噪声:它意味着正奖励正在强化低质量的工具使用。
rStar2-Agent 的位置是「带工具的 RL + 最简结果奖励 + 用采样策略处理环境噪声」。
DAPO、DeepSeek-R1-Zero 等只用最终答案奖励,不调用外部工具。优点是奖励简单、不易被 hack;缺点是无法用执行结果验证中间步骤(§2.2、§5.3)。
ReTool 依赖推理 SFT 冷启动;ToolRL/TORL/Kimi 等对工具错误加额外惩罚;ZTRL 是另一条带工具的 RL 基线。论文认为额外惩罚会引入调参与 reward hacking 风险(§2.2.3、§5.3、Table 2、Table 6)。
给过程奖励、给工具错误罚分。论文的选择相反:奖励只保留 0/1 的答案正确性,把质量问题交给 RoC 的采样策略处理(§2.2.3)。
论文的对照实验也支持这个选择:在 Qwen3-14B-Base 上,带工具的 GRPO 明显高于纯 CoT 的 DAPO;在带工具的 GRPO 之上,GRPO-RoC 又进一步降低工具错误、缩短响应(§5.3、Figure 9)。注意 Figure 9 只给曲线,没有给每个点的精确数值,页面不引用曲线读数。
奖励仍然是 0/1,变化发生在「哪些 rollout 进入更新」。
模型每轮先生成 <reason>,再决定是否输出 <tool_call>。如果有工具调用,环境执行代码,把输出包进 <tool_response> 返回;模型带着这个结果继续下一轮。没有工具调用时,rollout 结束;最多允许 T 轮(前两阶段 T=10,最后阶段 T=15)(§2.1、§5.1)。
工具调用是 JSON 格式,解析失败会把错误信息包进 <tool_response> 返回。环境可能返回四种结果:有 stdout、无 stdout、执行报错、超时(§2.1)。这个设计把「格式错误」也变成模型可观察的反馈,而不是直接丢弃。
每条轨迹的奖励是 0 或 1:最终答案与 ground truth 等价得 1,否则 0。答案从 <answer> 里的 boxed 内容抽取,用规则式数学验证器比较(§2.2.1、Eq.3)。没有 KL 惩罚、没有 entropy loss,clip 采用 Clip-Higher:下界 0.2、上界 0.28(§2.2.1)。
这样做的好处是避免 reward hacking;坏处是「过程错误但答案正确」的轨迹也会得 1。RoC 就是为这个坏处设计的:它不改奖励,只改哪些正样本被采样。
每个问题先采样 2G = 32 条轨迹,再选出 16 条做更新。负奖励轨迹不做筛选,按原分布抽一半,保留失败模式的多样性;正奖励轨迹抽一半,但每条先算一个惩罚分(§2.2.3):
正样本按与 ptotal 成反比的概率采样:工具错误越少、格式越干净,越容易被选中。这样模型看到的正样本是「既答对、又干净」的轨迹,而不是「答对但过程一塌糊涂」的轨迹(§2.2.3)。
论文给了硬件、步数与阶段长度,但没有给总 GPU 小时或单步耗时。
全部训练在 64 张 MI300X 上完成,约一周;论文没有给总 GPU 小时、功耗或费用(§4.3、§5.1)。
非推理 SFT:3 个 epoch、学习率 5e-6、4% warmup、cosine、batch 128。数据包括 165K 函数调用(function call)数据、30K 指令跟随、27K 对话(§4.1、§5.1)。
AdamW,常数学习率 1e-6,batch 512 个 prompt;每题过采样 2G=32 条、选 16 条;rollout 温度 1.0,warmup 20 个 rollout step(§4.3、§5.1)。
Stage 1:42K 题、8K 上限、300 步;Stage 2:12K 上限,§4.3 称 final 385 steps of Stage 2,由总 510 − Stage 1 300 − Stage 3 125 得 85 步(即累计第 385 步)推断;Stage 3:17.3K 难题、12K 上限、125 步。合计 510 步(§4.3)。
基础设施是这篇报告的工程重点:代码环境支持 45K 并发工具调用,平均 0.3 秒返回;调度器按 GPU 的 KV cache 余量动态分配 rollout,避免静态分配造成的 GPU 空转。论文没有给这套环境的 CPU 核数、内存或网络带宽(§3)。
上面的回路是单条多轮 rollout,下面是三个阶段的数据与长度课程。
三阶段的长度课程是「先短后长」:Stage 1 用 8K 上限逼模型简洁,Stage 2 放到 12K 处理更复杂的问题,Stage 3 不再加长度,而是把题目换成 17.3K 道难题。论文说 Stage 3 用当前策略对 42K 题各采样 8 次,去掉「8 次全对」的题,剩下的就是难题(§4.3)。
先看数学主表,再看 token 效率与跨领域泛化;最后看阶段增益与 32B 对照。
rStar2-Agent-14B 在 MATH-500 得 97.8%、AIME24 80.6%、AIME25 69.8%、HMMT25 52.7%。对比 671B DeepSeek-R1 的 97.3%/79.8%/70.0%/44.4%:AIME24 高 0.8 个百分点,AIME25 低 0.2 个百分点,HMMT25 高 8.3 个百分点。对比 o3-mini:AIME24 高 1.0 个百分点,AIME25 低 7.2 个百分点,HMMT25 低 0.3 个百分点。论文说「frontier-level」,页面只按表内数字陈述,不把它写成所有列都领先。
| 模型 | MATH-500 | AIME24 | AIME25 | HMMT25 |
|---|---|---|---|---|
| OpenAI o3-mini (medium) | 98.0 | 79.6 | 77.0 | 53.0 |
| DeepSeek-R1 (671B) | 97.3 | 79.8 | 70.0 | 44.4 |
| Claude-Opus-4.0 (Think) | 98.2 | 76.0 | 69.2 | — |
| Kimi k1.5 | 96.2 | 77.5 | — | — |
| Magistral Medium | 94.3 | 73.6 | 64.9 | — |
| QWQ-32B | 98.0 | 79.5 | 65.8 | 47.5 |
| Magistral Small (24B) | 95.9 | 70.7 | 62.8 | 35.7 |
| Qwen3-14B | 96.8 | 79.3 | 70.4 | 48.9 |
| DeepSeek-R1-Zero (671B) | 95.9 | 71.0 | 53.3 | 46.0 |
| rStar2-Agent-14B | 97.8 | 80.6 | 69.8 | 52.7 |
在 AIME24 上,rStar2-Agent 平均 9339.7 token;DeepSeek-R1-Zero 是 14246.8,多 4907.1 token(相对 34.4%)。QWQ-32B 是 11868.4,多 2528.7(相对 21.3%);Qwen3-14B 是 14747.6,多 5407.9(相对 36.7%)。AIME25 上,rStar2 是 10943.4;R1-Zero 是 17132.9,多 6189.5(相对 36.1%);QWQ 是 15865.4,多 4922.0(相对 31.0%);Qwen3-14B 是 17521.9,多 6578.5(相对 37.5%)。
只在数学上做 agentic RL,GPQA-Diamond 从 SFT 的 42.1% 升到 60.9%(+18.8 个百分点),比 DeepSeek-V3 的 59.1% 高 1.8 个百分点;BFCL v3 则从 SFT 的 63.1% 降到 60.8%(−2.3 个百分点),但仍比 DeepSeek-V3 的 57.6% 高 3.2 个百分点。IFEval 为 83.4%,低于 SFT 的 83.7%,也低于 DeepSeek-V3 的 86.1%(低 2.7 个百分点);Arena-Hard 为 86.6%,低于 SFT 的 86.8%(低 0.2 个百分点)。
| 模型 | GPQA-Diamond | BFCL v3 | IFEval strict | Arena-Hard |
|---|---|---|---|---|
| DeepSeek-V3 | 59.1 | 57.6 | 86.1 | 85.5 |
| rStar2-Agent-14B | 60.9 (42.1) | 60.8 (63.1) | 83.4 (83.7) | 86.6 (86.8) |
非推理 SFT 后,AIME24 只有 3.3%、AIME25 是 0%。Stage 1 后 AIME24 到 72.1%、AIME25 到 64.2%,分别比 CoT-only 的 DAPO(50.4/42.9,Table 6 中 Qwen3-14B-Base 的 DAPO-Qwen-14B w/Forking tokens 行)高 21.7/21.3 个百分点。Stage 2 后到 77.0/64.8(+4.9/+0.6);Stage 3 后到 80.6/69.8(+3.6/+5.0)。
AIME24 · R1-Zero:14246.8 / 18000 × 100 = 79.149% → 79.1%(JS 输出 79.1%)。
AIME25 · rStar2-14B:10943.4 / 18000 × 100 = 60.797% → 60.8%(JS 输出 60.8%)。
阶段 AIME24 · Stage 3:80.6 / 90 × 100 = 89.556% → 89.6%(JS 输出 89.6%)。
阶段 AIME25 · SFT:0 / 90 × 100 = 0%,柱高抬到 1.5% 仅为可见;读数仍显示 0.0(JS 输出 1.5% 柱高)。
Table 6 在 Qwen2.5-32B 上只跑 Stage 1+2(700 步),rStar2 得 MATH-500 94.8%、AIME24 69.4%、AIME25 57.3%;ReTool 是 93.4%/67.0%/49.3%,rStar2 的 AIME24/AIME25 分别高 2.4/8.0 个百分点。论文说 32B 的 Stage 3 没跑,性能「预计还会提升」,这是预期不是实测(§5.3、Table 6)。
| 模型(Qwen2.5-32B) | MATH-500 | AIME24 | AIME25 | RL steps |
|---|---|---|---|---|
| DAPO-Qwen-32B | 90.3 | 50.0 | 32.1 | >5000 |
| VAPO-Qwen-32B | — | 60.4 | — | >5000 |
| ZTRL-32B | 87.8 | 56.7 | 33.3 | 600 |
| ReTool-32B | 93.4 | 67.0 | 49.3 | 400 |
| rStar2-Agent-Qwen2.5-32B | 94.8 | 69.4 | 57.3 | 700 |
这些条件决定了「14B 打 671B」能推广到哪一步。
训练集 42K 题,要求最终答案是整数;论文明确说符号等价判断太容易出错,所以不收非整数答案。证明题、开放题、非整数答案都不在范围内(§4.2)。
环境只提供 execute_python_code_with_standard_io 工具(Fig. 3 的注册名;轨迹示例里简写为 execute_python_code);没有浏览器、数据库、文件系统或检索。代码环境支持 45K 并发、0.3 秒平均返回,但这是工程指标,不是推理能力(§2.1、§3)。
14B 跑完三阶段 510 步;32B 因资源限制只跑 Stage 1+2 的 700 步。没有 32B 的 Stage 3 结果,也没有 Llama/Mistral 等其它家族(§5.1、§5.3)。
论文给 64 张 MI300X、约一周、510 步,但没有总 GPU 小时、单步耗时或费用。不能把「14B」直接换算成「便宜」,也不能和 671B 的训练成本严格对比(§4.3)。
结果层面有三条边界。第一,不是所有数学列都赢:AIME25 69.8 低于 R1 的 70.0 和 o3-mini 的 77.0;MATH-500 97.8 低于 Claude 的 98.2。第二,跨领域不是全面提升:GPQA 从 42.1 到 60.9,但 BFCL 从 63.1 降到 60.8,IFEval 从 83.7 降到 83.4,Arena-Hard 从 86.8 降到 86.6;论文的措辞是「保持可比」。第三,训练后期会崩溃:Stage 3 到 510 步后,继续训练会出现策略与奖励同时崩溃;论文尝试了提高温度、延长长度、增加工具轮数、提高 clip、重置优化器,都没有解决,只能停在 510 步(§5.3)。
方法层面的边界是「结果奖励 + RoC」的适用范围:它假设最终答案可以被规则验证,且错误主要来自工具使用质量;如果任务没有可验证答案,或者错误主要来自知识不足,RoC 的筛选逻辑不一定适用。