rStar2-Agent
Agentic RL · arXiv 2025 · v1

rStar2-Agent:14B 模型用 Python 工具,把 AIME24 推到 80.6%

不让模型「想得更长」,而是让它「想得更聪明」:在推理链里调用 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。

Ning Shang 等 · Microsoft Research arXiv 2508.20722v1 ↗ 代码与训练配方 ↗
TL;DR · 30 秒抓住核心

问题:长 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)。

80.6%
AIME24 pass@1
671B DeepSeek-R1 为 79.8%
69.8%
AIME25 pass@1
DeepSeek-R1 为 70.0%
9339.7
AIME24 平均响应 token
R1-Zero 为 14246.8
01

长 CoT 的瓶颈:错误藏在中间步骤里,模型自己看不见

论文的出发点不是「再想久一点」,而是让模型用外部工具验证中间结果。

长思维链把问题拆成很多步,但每一步都可能出错;一旦前面走偏,后面的推理会继续沿着错误前提展开。模型内部的自我反思(self-reflection)并不稳定:它可能检测不到错误,也可能在错误方向上越改越远(§1)。

Python 解释器提供了另一种信号:代码可以执行,输出对错可验证。模型可以写一段代码算中间结果,看执行输出,再决定下一步;如果代码报错,错误信息本身就是反馈。论文把这种能力称为「agentic reasoning」:模型不只是生成文本,而是在一个工具环境里行动(§1、§2.1)。

缺口 1

纯文本反思不可靠

模型可以写「让我检查一下」,但检查仍然是文本生成,没有外部验证。长 CoT 在难题上容易出现「看起来合理、实际算错」的中间步骤(§1)。

缺口 2

结果奖励会奖励「坏过程」

只用最终答案对错做奖励时,一条中间工具调用错误、但最终答案侥幸正确的轨迹仍然得正奖励。模型会把「错误调用」当成可接受行为(§2.2.2)。

论文在 Figure 4 里量化了第二个缺口:在朴素 GRPO 下,正确回答的轨迹中,工具调用出错的比例(tool call error rate),会在训练后稳定在约 15%(Qwen2.5-32B)与 10%(Qwen3-14B)。这不是小噪声:它意味着正奖励正在强化低质量的工具使用。

02

已有路线:纯 CoT RL、带工具的 RL、复杂奖励塑形

rStar2-Agent 的位置是「带工具的 RL + 最简结果奖励 + 用采样策略处理环境噪声」。

路线 A

纯 CoT RL

DAPO、DeepSeek-R1-Zero 等只用最终答案奖励,不调用外部工具。优点是奖励简单、不易被 hack;缺点是无法用执行结果验证中间步骤(§2.2、§5.3)。

路线 B

带工具的 RL

ReTool 依赖推理 SFT 冷启动;ToolRL/TORL/Kimi 等对工具错误加额外惩罚;ZTRL 是另一条带工具的 RL 基线。论文认为额外惩罚会引入调参与 reward hacking 风险(§2.2.3、§5.3、Table 2、Table 6)。

路线 C

复杂奖励塑形

给过程奖励、给工具错误罚分。论文的选择相反:奖励只保留 0/1 的答案正确性,把质量问题交给 RoC 的采样策略处理(§2.2.3)。

论文的对照实验也支持这个选择:在 Qwen3-14B-Base 上,带工具的 GRPO 明显高于纯 CoT 的 DAPO;在带工具的 GRPO 之上,GRPO-RoC 又进一步降低工具错误、缩短响应(§5.3、Figure 9)。注意 Figure 9 只给曲线,没有给每个点的精确数值,页面不引用曲线读数。

03

GRPO-RoC:过采样 32 条,成功轨迹按「干净程度」选 16 条

奖励仍然是 0/1,变化发生在「哪些 rollout 进入更新」。

3.1 多轮 rollout:遇到工具调用就执行,结果拼回上下文

模型每轮先生成 <reason>,再决定是否输出 <tool_call>。如果有工具调用,环境执行代码,把输出包进 <tool_response> 返回;模型带着这个结果继续下一轮。没有工具调用时,rollout 结束;最多允许 T 轮(前两阶段 T=10,最后阶段 T=15)(§2.1、§5.1)。

<reason> … </reason> <tool_call>{name, arguments}</tool_call>
→ <tool_response> … </tool_response> → <reason> … </reason> → … → <answer> … </answer>
§2.1、Figure 2 · 工具输出由环境写入,模型只对自己的 reason、tool_call、answer 负责

工具调用是 JSON 格式,解析失败会把错误信息包进 <tool_response> 返回。环境可能返回四种结果:有 stdout、无 stdout、执行报错、超时(§2.1)。这个设计把「格式错误」也变成模型可观察的反馈,而不是直接丢弃。

3.2 奖励:只有答案对错,没有过程分

每条轨迹的奖励是 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 就是为这个坏处设计的:它不改奖励,只改哪些正样本被采样。

3.3 RoC:负样本保多样性,正样本按 perr + pformat 反比采样

每个问题先采样 2G = 32 条轨迹,再选出 16 条做更新。负奖励轨迹不做筛选,按原分布抽一半,保留失败模式的多样性;正奖励轨迹抽一半,但每条先算一个惩罚分(§2.2.3):

perr = 0.5  if no tool calls
perr = (# error tool calls) / (# all tool calls)  otherwise
pformat = 1  if no <answer> tags
pformat = min(1, (# answer tags − 1) / (# turns))  otherwise
ptotal = perr + pformat
§2.2.3、Eq.4–5 · 没有工具调用的轨迹给 perr=0.5,鼓励使用工具;多个 answer 标签按比例罚分

正样本按与 ptotal 成反比的概率采样:工具错误越少、格式越干净,越容易被选中。这样模型看到的正样本是「既答对、又干净」的轨迹,而不是「答对但过程一塌糊涂」的轨迹(§2.2.3)。

04

64 张 MI300X、约一周、510 个 RL step

论文给了硬件、步数与阶段长度,但没有给总 GPU 小时或单步耗时。

硬件

64 × AMD MI300X

全部训练在 64 张 MI300X 上完成,约一周;论文没有给总 GPU 小时、功耗或费用(§4.3、§5.1)。

SFT

3 epochs,lr 5e-6,batch 128

非推理 SFT:3 个 epoch、学习率 5e-6、4% warmup、cosine、batch 128。数据包括 165K 函数调用(function call)数据、30K 指令跟随、27K 对话(§4.1、§5.1)。

RL

lr 1e-6,batch 512 prompts

AdamW,常数学习率 1e-6,batch 512 个 prompt;每题过采样 2G=32 条、选 16 条;rollout 温度 1.0,warmup 20 个 rollout step(§4.3、§5.1)。

三阶段

8K → 12K → 12K

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)。

05

训练管线:非推理 SFT → 三阶段 RL → 14B 模型

上面的回路是单条多轮 rollout,下面是三个阶段的数据与长度课程。

Qwen3-14B-Base 预训练底座 非推理 SFT 工具格式 · 指令跟随 · 对话 Stage 1 · 8K 42K 题 · 300 步 Stage 2 · 12K 约 85 步(推断) Stage 3 · 12K 17.3K 难题 · 125 步 rStar2-Agent-14B 510 RL steps · 约一周 每条 rollout:reason → tool_call → tool_response → … → answer 最多 T=10(前两阶段)/ 15(最后阶段)轮 GRPO-RoC:每题过采样 32 条 → 选 16 条 负样本按原分布抽一半,保留失败多样性 正样本按 p_err + p_format 反比采样,优先工具错误少、格式干净的轨迹 奖励只有 0/1 答案正确性;没有 KL、没有 entropy loss、没有过程奖励 RoC 采样

三阶段的长度课程是「先短后长」:Stage 1 用 8K 上限逼模型简洁,Stage 2 放到 12K 处理更复杂的问题,Stage 3 不再加长度,而是把题目换成 17.3K 道难题。论文说 Stage 3 用当前策略对 42K 题各采样 8 次,去掉「8 次全对」的题,剩下的就是难题(§4.3)。

06

AIME24 80.6%、AIME25 69.8%,AIME24 响应长度比 R1-Zero 少 34.4%(相对)

先看数学主表,再看 token 效率与跨领域泛化;最后看阶段增益与 32B 对照。

6.1 Table 3:AIME24 超过 R1,AIME25 略低

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-500AIME24AIME25HMMT25
OpenAI o3-mini (medium)98.079.677.053.0
DeepSeek-R1 (671B)97.379.870.044.4
Claude-Opus-4.0 (Think)98.276.069.2—
Kimi k1.596.277.5——
Magistral Medium94.373.664.9—
QWQ-32B98.079.565.847.5
Magistral Small (24B)95.970.762.835.7
Qwen3-14B96.879.370.448.9
DeepSeek-R1-Zero (671B)95.971.053.346.0
rStar2-Agent-14B97.880.669.852.7
Table 3 · 本页加粗仅标 rStar2 行,不代表各列最优。AIME25 最高值是 o3-mini 的 77.0,rStar2 的 69.8 不是最优;MATH-500 最高是 Claude 的 98.2,rStar2 的 97.8 也不是最优;HMMT25 最高是 o3-mini 的 53.0,rStar2 的 52.7 排第二。

6.2 Table 4:AIME24 少 4907.1 token,相对少 34.4%

在 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%)。

切换基准,查看四个模型的平均响应长度;rStar2 的柱子最低。

6.3 Table 5:GPQA 提升,BFCL/IFEval/Arena-Hard 均低于 SFT

只在数学上做 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-DiamondBFCL v3IFEval strictArena-Hard
DeepSeek-V359.157.686.185.5
rStar2-Agent-14B60.9 (42.1)60.8 (63.1)83.4 (83.7)86.6 (86.8)
Table 5 · 括号内是 non-reasoning SFT 后的分数。GPQA 与 BFCL 相对 SFT 的方向相反:GPQA +18.8,BFCL −2.3;IFEval 与 Arena-Hard 则低于 SFT。论文的结论是“保持可比”,不是“全面提升”。

6.4 阶段增益:Stage 1 就把 AIME24 从 3.3 拉到 72.1

非推理 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)。

SFT → Stage 1 → Stage 2 → Stage 3;两个基准在 Stage 2 之后仍有提升。
图注:token 图柱高按 max=18000 归一化;阶段图柱高按 max=90 归一化,0 值抬到 1.5% 仅为可见。
手算:柱高归一化 两组 token 图 + 两组阶段图

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% 柱高)。

6.5 32B 对照:只跑前两阶段,AIME25 57.3

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-500AIME24AIME25RL steps
DAPO-Qwen-32B90.350.032.1>5000
VAPO-Qwen-32B—60.4—>5000
ZTRL-32B87.856.733.3600
ReTool-32B93.467.049.3400
rStar2-Agent-Qwen2.5-32B94.869.457.3700
Table 6 · 仅转录与 32B 工具基线相关的行(未转录 DeepSeek-R1-Zero-Qwen-32B、Open-Reasoner-Zero-32B 与 Qwen3-14B-Base 部分)。32B 只跑 Stage 1+2;700 步是论文 §5.3 的文字说明。本页加粗仅标 rStar2 行。rStar2 的 MATH-500 94.8 高于 ReTool 的 93.4,但没有 14B 的 97.8 高。
07

边界:整数答案、单一 Python 工具、没有超过 14B 的完整训练

这些条件决定了「14B 打 671B」能推广到哪一步。

数据

只收整数答案的数学题

训练集 42K 题,要求最终答案是整数;论文明确说符号等价判断太容易出错,所以不收非整数答案。证明题、开放题、非整数答案都不在范围内(§4.2)。

工具

只有 Python 解释器

环境只提供 execute_python_code_with_standard_io 工具(Fig. 3 的注册名;轨迹示例里简写为 execute_python_code);没有浏览器、数据库、文件系统或检索。代码环境支持 45K 并发、0.3 秒平均返回,但这是工程指标,不是推理能力(§2.1、§3)。

模型

14B 完整训练,32B 只跑两阶段

14B 跑完三阶段 510 步;32B 因资源限制只跑 Stage 1+2 的 700 步。没有 32B 的 Stage 3 结果,也没有 Llama/Mistral 等其它家族(§5.1、§5.3)。

成本

没有总 GPU 小时

论文给 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 的筛选逻辑不一定适用。

笔记勘误(只记录,不修改原笔记)
  • 笔记与论文都把与 Claude-Opus-4.0 的差距写成 3.6%:论文 §1 Introduction 与 §5.2 写 3.6;但 Table 3 的 80.6 对 76.0 复算是 4.6 个百分点,原文自身不一致。页面按 Table 3 复算 4.6,并保留原文的 3.6 说法。
  • 「超越 671B DeepSeek-R1」要限定列:AIME24、MATH-500、HMMT25 三项高于 R1(AIME24 高 0.8 个百分点),但 AIME25 69.8 低于 R1 的 70.0。不能概括成「所有数学基准都超过」。
  • 「SFT 阶段完全不使用推理数据」正确,结果是 AIME24 仅 3.33、AIME25 为 0(Table 1)。这是非推理冷启动的预期代价;Table 1 的 79.3/70.4 属于官方 Qwen3-14B,不是 base,base 的 AIME 未报告,不能描述成「从 79.3 掉到 3.33」。
  • 「平均响应长度显著缩短」没有统计检验:9339.7 对 14246.8 是均值差 4907.1 token(相对 34.4%),论文没有给方差、置信区间或显著性检验;「显著」是修辞。
  • 「17.3K 难题」的来源:是用 Stage 2 末尾策略对 42K 题各采样 8 次、去掉 8 次全对的题得到的,不是人工标注的难度分级(§4.3)。
  • Table 5 的 BFCL 不是提升:SFT 63.1 → RL 60.8,降 2.3 个百分点;论文原句是 “the model shows no improvement but maintains performance comparable to our non-reasoning SFT baseline”(§5.2),不能写成工具使用变强。IFEval 也从 83.7 降到 83.4。
  • 笔记说「只保留那些工具使用最少…的成功范例」不准确:Eq.4 对没有工具调用的轨迹给 perr = 0.5,是在鼓励使用工具,不是让工具调用最少。正样本按 ptotal = perr + pformat 反比采样,优先选工具错误少、格式干净的轨迹(§2.2.3、Eq.4–5)。