rStar2-Agent: Agentic Reasoning Technical Report

作者/机构: Ning Shang∗, Yifei Liu∗, Yi Zhu∗, Li Lyna Zhang∗†, Weijiang Xu, Xinyu Guan, Buze Zhang, Bingcheng Dong, Xudong Zhou, Bowen Zhang, Ying Xin, Ziming Miao, Scarlett Li, Fan Yang, Mao Yang†
Microsoft Research


A1 主要贡献

本文介绍了 rStar2-Agent,一个通过智能体强化学习(agentic reinforcement learning)训练的 14B 数学推理模型,其性能达到了前沿水平。该模型超越了当前的长思维链(long CoT),展现了更高级的认知行为,例如在使用 Python 编码工具前进行深思熟虑,并反思代码执行反馈,从而在复杂问题解决中自主探索、验证和优化中间步骤。

核心问题与挑战:
当前的推理模型,如 OpenAI o-series 和 DeepSeek-R1,通过扩展思维链(即“思考更长时间”)来提升性能,但这种方法在处理易于出现细微中间错误或需要创造性思维转变的难题时存在根本局限。模型依赖的内部自我反思常常无法发现错误或在初始方法错误时进行自我纠正。为了让模型“思考得更聪明”,需要发展其利用工具进行推理、验证并从环境反馈中学习的能力。然而,大规模地应用智能体强化学习面临两大挑战:

  1. 环境噪声:编码工具和 Python 解释器会引入噪声。模型生成的错误代码会导致环境返回错误信息,这会分散模型的注意力,使其耗费大量 token 去修正错误而非推进推理。仅依赖最终结果奖励的现有强化学习方法会加剧此问题,因为它会奖励那些虽然中间步骤有错但最终答案正确的轨迹,导致模型产出冗长低质的推理过程。
  2. 基础设施需求:大规模智能体强化学习训练对基础设施要求极高。单个训练批次可能触发数万个并发工具调用,构建可靠且响应迅速的代码执行环境非常困难。此外,与环境交互的智能体式推演(rollout)会放大标准强化学习系统中的推演效率低下问题,拖慢整体训练进程。

主要创新点:
为了应对上述挑战,rStar2-Agent 包含了三项关键创新:

  1. 高效可靠的大规模智能体强化学习基础设施

    • 构建了一个高吞吐量、隔离的代码环境,能够处理 45,000 个并发工具调用,平均反馈时间仅为 0.3 秒。
    • 引入了负载均衡的推演调度器(load-balanced rollout scheduler),根据各 GPU 上可用的 KV 缓存容量动态分配推演请求,最大化计算利用率。
    • 该基础设施使得在有限的 GPU 资源(64个 MI300X GPU)上也能高效进行强化学习训练,仅用一周时间便完成了 rStar2-Agent-14B 的训练。
  2. GRPO-RoC 算法

    • 提出了 GRPO-RoC(Group Relative Policy Optimization with Resampling on Correct),将 GRPO 算法与“正确时重采样”(Resample-On-Correct, RoC)推演策略相结合,以解决稀疏、仅依赖最终结果的奖励下由环境引发的噪声问题。
    • RoC 策略首先过采样(oversample)一组更多的推演,然后进行下采样(downsample)。对于奖励为正的轨迹,它会过滤掉包含工具使用错误或格式问题的低质量轨迹,只保留最优质的;对于奖励为负的轨迹,则进行均匀下采样以保留多样的失败模式。
    • 这种非对称采样方式既保留了信息丰富的负面信号,又强调了高质量的成功案例,使模型能学习到更简洁高效的推理方式。
  3. 高效的智能体训练配方

    • 训练从一个非推理的监督微调(SFT)阶段开始,该阶段仅用于灌输通用的指令遵循、编码工具使用和格式化能力,而不增强推理能力。这避免了 SFT 可能导致的过拟合,并保持初始响应较短,让后续的强化学习能更有效地培养推理能力。
    • 随后进行多阶段强化学习训练,使用 GRPO-RoC 算法,逐步增加任务难度和最大训练长度(从 8K 扩展到 12K)。这种方式显著降低了强化学习的成本,并鼓励模型采用更高效的推理策略。
    • 仅用 510 个强化学习步骤,模型就迅速达到了前沿的数学推理水平,展现了极高的能力和训练效率。

最终,rStar2-Agent-14B 在 AIME24 和 AIME25 测试中分别取得了 80.6% 和 69.8% 的 pass@1 分数,超越了 671B 的 DeepSeek-R1,且响应长度显著更短。


图 1: rStar2-Agent-14B 仅用 510 个 RL 训练步骤就达到了前沿水平的数学推理能力。


A3/A2 智能体强化学习方法论


图 2: rStar2-Agent 训练大语言模型在专用的执行环境中原生使用 Python 编码工具,从而为解决复杂问题实现更高级、更有效的推理。

2.1 在代码环境中进行更智能的推理

<tool call>{"name": "execute python code with standard io", "arguments": {"code": "import sympy\n\n def verify divisibility (m,p):\n\n for p in sympy.primerange(2, 100000) ··· ", "input": ""}}</tool call>

在每一轮结束时,系统会检查是否存在 <tool call> 块。如果存在,会解析 JSON 以提取 code 字段中的代码块和 arguments 中的 input 字段(如果可用)。如果因格式无效而解析失败,错误信息将被包装在 <tool response> 标签中返回给模型。否则,提取的代码和参数将被转发到环境服务,该服务会产生四种可能的响应之一:
1. 成功执行并有标准输出:返回程序输出。
2. 成功执行但无标准输出:返回 IPython 显示的输出。
3. 执行错误:返回错误信息和追溯日志。
4. 超时:代码语法有效,但因复杂度高或逻辑错误(如无限循环)未在时限内完成。
在所有情况下,环境反馈都会被包装在 <tool response> 标签中并返回给模型。这种结构化方法提供了一个标准化的、类似 API 的接口,消除了解析的模糊性,并清晰地分离了推理与执行。

2.2 端到端的智能体强化学习

2.2.1 预备知识:GRPO

2.2.2 智能体强化学习中的挑战

2.2.3 GRPO-RoC: 带正确时重采样的组相对策略优化


A2/A3 大规模智能体强化学习基础设施

图 5: 我们的智能体强化学习基础设施的总体设计。
图 5: 我们的智能体强化学习基础设施的总体设计。

3.1 可靠的高吞吐量代码环境

图 6: 我们的代码环境展示了可扩展性,能够可靠地处理每步高达 45K 的并发工具调用,同时保持从分派到响应的端到端延迟始终很低。
图 6: 我们的代码环境展示了可扩展性,能够可靠地处理每步高达 45K 的并发工具调用,同时保持从分派到响应的端到端延迟始终很低。

3.2 负载均衡的推演调度器

图 7: 上图:朴素的静态推演分配导致显著的 GPU 空闲时间和同步延迟。下图:我们动态的负载均衡调度器,根据可用的 KV 缓存分配推演,异步分派工具调用执行,并在 GPU 之间平衡计算。例如,K1, K2, J1 表示根据推理引擎 0 和 1 上当前可用的 KV 缓存内存计算出的推演数量。
图 7: 上图:朴素的静态推演分配导致显著的 GPU 空闲时间和同步延迟。下图:我们动态的负载均衡调度器,根据可用的 KV 缓存分配推演,异步分派工具调用执行,并在 GPU 之间平衡计算。例如,K1, K2, J1 表示根据推理引擎 0 和 1 上当前可用的 KV 缓存内存计算出的推演数量。


A2 训练配方

本节介绍了我们以最小计算规模提升 rStar2-Agent-14B 的配方,涵盖了数据集策划、多阶段训练以及从失败尝试中汲取的教训。我们使用 Qwen3-14B-base【37,Qwen Team, Qwen3 technical report, 2025】作为基础模型。

4.1 用于指令遵循的非推理冷启动

4.2 强化学习数据策划

4.3 多阶段强化学习训练

4.3.1 失败的尝试与教训


A4 实验

5.1 实验设置

5.2 rStar2-Agent-14B 主要结果

5.3 消融研究与讨论

5.4 智能体推理行为分析

通过分析推理轨迹中的高熵 token,我们发现 rStar2-Agent 的成功归因于两种独特的行为模式:

  1. 用于探索和自我反思的“分叉 token”(Forking tokens):这些高熵 token 引入了不确定性,触发模型进行自我反思(如“但是在最终确定前”、“再次检查”)和验证中间步骤。这种行为在基于 CoT 的强化学习中也普遍存在。

  2. 智能体强化学习引入的对工具调用响应的“反思 token”(Reflection tokens):这是智能体推理特有的新模式。在收到代码环境的反馈后,模型会生成一连串高熵的反思 token 来分析和解释执行结果。如图 10 和图 11 所示,模型会仔细验证正确的工具响应,或在遇到代码错误时诊断问题、探索替代方案并最终生成正确的代码。这种行为反映了比传统长 CoT 更高级的、类似人类的认知能力。

<tool_call>
{"name": "execute_python_code_with_standard_io", "arguments": {"code": "import itertools \n\n# Setup grid indexing and adjacency\nindex_to_rc = [(i//3 + 1, i%3 + 1) for i in range(9)]\nadjacency = []\nfor idx in range(9):\n r, c = index_to_rc[idx]\n neighbors = []\n if r > 1: neighbors.append(idx - 3) \n if r < 3: neighbors.append(idx + 3) \n if c > 1: neighbors.append(idx - 1) \n if c < 3: neighbors.append(idx + 1) \n adjacency.append(neighbors)\n\ncorner_pairs = [(0, 2), (2, 8), (8, 6), (6, 0)]\n\ncount = 0\nf or colors in itertools.product(range(3), repeat=9):\n # Check condition (i)\n valid_i = True\n f or idx in range(9):\n f or nb in adjacency[idx]:\n if colors[idx] == colors[nb]: \n valid_i = False\n break\n if not valid_i:\n break\n if not valid_i:\n continue\n\n # Check condition (ii)\n valid_ii = True\n f or a, b in corner_pairs:\n if colors[a] == colors[b]:\n valid_ii = False\n break\n if valid_ii:\n count += 1\n\nprint(count)", "input": ""}}
</tool_call><|im_end|><|im_start|>user<tool_response>
Total valid colorings: 24
</tool_response><|im_end|>
<|im_start|>assistant<reason>
Python代码执行并返回了有**24**种有效的着色方案然而在得出结论之前我应该验证代码逻辑是否正确地捕捉了两个条件
1. **条件i):** 它检查了每个格子的邻接关系每个方块的四边邻接),并确保相邻方块颜色不同
2. **条件ii):** 它明确强制要求四个角边对的颜色不同
但我想再次检查
- **格子邻接** 我通过考虑上///右移动来构建邻接列表这对于3x3网格中的边共享是正确的
- **角对** `(0,2)`, `(2,8)`, `(8,6)`, `(6,0)` 分别对应顶部右侧底部左侧的边条件ii要求这些颜色不同代码检查了这一点
- **颜色映射** 颜色0,1,2映射到红绿——不影响计数
我运行了一次代码得到24为确保没有错误我应该
1. **手动测试一个小案例** 假设我采用一个简单的着色方案看看程序的逻辑是否一致但这会很繁琐或者我可以添加打印语句或重新执行
2. **重新执行代码**以确保它不是一次性的异常
3. **考虑同一条边上的角方块是否可能被误解了** 也许问题只要求边界边上的角方块颜色不同而不是我检查的四对等等它说网格同一条边上的两个角方块颜色不能相同”,并且有四个这样的边对每个边对都是一对所以我的理解似乎是正确的
鉴于此为了一致性我将再次运行Python代码以确认结果24
### 重新运行代码
</reason>
...
一切似乎都对上了因此最终答案应该是 \boxed{24}
但在最终确定之前
我想通过以下方式交叉验证
1. 确保没有逻辑上的疏忽
2. 确认四个角对完全符合要求
根据问题:“网格同一条边上的两个角方块颜色不能相同。”四个边各有两个角方块——它将这些对视为独立于标准邻接关系代码额外检查了这四个对这与问题相符
因此我可以自信地给出
\boxed{24}

图 10: 带有编码工具使用和自我反思的智能体强化学习轨迹示例#1。

图 11: 带有编码工具使用和自我反思的智能体强化学习轨迹示例#2。前 20% 高熵 token 以绿色标记。模型最初尝试进行工具调用但遇到代码错误。然后它反思问题,生成修正后的代码片段,成功执行,并再次验证以得出最终正确答案。
图 11: 带有编码工具使用和自我反思的智能体强化学习轨迹示例#2。前 20% 高熵 token 以绿色标记。模型最初尝试进行工具调用但遇到代码错误。然后它反思问题,生成修正后的代码片段,成功执行,并再次验证以得出最终正确答案。


A5 结论

本文介绍了 rStar2-Agent,一个 14B 的数学推理模型,它通过大规模智能体强化学习实现了“思考得更聪明而不仅仅是更长”,性能可与 671B 的 DeepSeek-R1 相媲美。其成功得益于用于在代码环境中有效训练的 GRPO-RoC 算法、一个可扩展的强化学习基础设施以及一个计算高效的训练配方。在 AIME24 和 AIME25 上,该 14B 模型分别达到了 80.6% 和 69.8% 的 pass@1 准确率,超越了 DeepSeek-R1,同时生成了更短的响应并能泛化到数学以外的领域。分析进一步揭示,智能体推理从工具响应中引入了“反思 token”,驱动了探索、自我反思和错误修正。我们计划将 rStar2-Agent 扩展到更广泛的推理领域和有价值的环境中。