【论文解读】ToRL: 扩展工具集成强化学习
ToRL 框架成功地展示了直接**从基础大语言模型**开始,通过**强化学习**来规模化训练其**集成和使用外部工具**的能力是**可行且高效**的。与依赖监督微调的方法不同,ToRL 允许模型通过自主探索来发现更优的工具使用策略,这不仅带来了显著的性能提升(尤其在复杂的数学推理任务上),更重要的是**催生了多种此前未被明确指导的、更高级的认知行为**,如战略性工具调用、对无效代码生成的自我调节、
1st author
paper: [2503.23383] ToRL: Scaling Tool-Integrated RL
code: GAIR-NLP/ToRL
5. 总结 (结果先行)
ToRL 框架成功地展示了直接从基础大语言模型开始,通过强化学习来规模化训练其集成和使用外部工具的能力是可行且高效的。与依赖监督微调的方法不同,ToRL 允许模型通过自主探索来发现更优的工具使用策略,这不仅带来了显著的性能提升(尤其在复杂的数学推理任务上),更重要的是催生了多种此前未被明确指导的、更高级的认知行为,如战略性工具调用、对无效代码生成的自我调节、以及在计算方法和分析方法间的动态适应。
未来的研究可以探索更复杂的工具集、更长时序的任务以及更精细化的奖励机制,以期解锁 LLM 更深层次的自主学习和问题解决潜力。

1. 思想
- 大问题:
- 如何让大型语言模型 (LLM) 自主地学习并优化其使用计算工具(如代码解释器)的策略,以解决复杂问题,特别是那些需要精确计算或多步推理的任务?
- 现有方法多依赖于监督微调 (SFT),即模仿高质量的工具使用轨迹,这限制了模型探索更优或未知策略的能力。
- 小问题:
- 如何在没有预先SFT工具使用数据的情况下,直接从基础 LLM (base models) 开始通过强化学习 (RL) 训练工具使用能力?
- 如何设计一个 RL 框架,使其能够有效地整合工具调用、执行结果反馈,并驱动模型学习?
- 核心思想:
- 直接从基础模型进行强化学习 (RL from Base Models): 不依赖 SFT 预先教授工具使用模式,而是让基础 LLM 直接在与工具交互的 RL 环境中通过试错学习。
- 无限制探索最优策略 (Unrestricted Exploration for Optimal Strategies): 赋予模型充分的探索自由度,使其能够发现超越 SFT 示例的新颖、高效的工具使用方法。
- 迭代的“思考-编码-观察”循环 (Iterative “Reason-Code-Observe” Loop): 模型生成自然语言思考和代码,代码解释器执行代码,并将执行结果(或错误信息)作为观察反馈给模型,模型据此进行下一步决策。
- 奖励驱动的认知行为涌现 (Reward-driven Emergence of Cognitive Behaviors): 通过精心设计的奖励机制,不仅提升任务解决能力,还促使模型学习到更高级的认知策略,如自我纠错、策略调整等。

2. 方法
ToRL (Tool-Integrated Reinforcement Learning) 框架的核心是将工具集成推理 (TIR) 的过程嵌入到强化学习的循环中。
工具集成推理 (TIR) 轨迹
这是模型与环境交互的基本单元,在第 k k k 步的轨迹 s k s_k sk 定义为:
s k = r 1 , c 1 , o 1 , … , r k , c k , o k s_k = r_1, c_1, o_1, \dots, r_k, c_k, o_k sk=r1,c1,o1,…,rk,ck,ok
其中:
- r i r_i ri: 第 i i i 步的自然语言推理文本 (Natural language reasoning text at step i i i)。
- c i c_i ci: 第 i i i 步模型生成的代码块 (Generated code block at step i i i)。
- o i o_i oi: 代码 c i c_i ci 由解释器 I I I 执行后得到的输出结果 (Execution result of c i c_i ci from interpreter I I I)。
TIR 的迭代生成过程如下:
- Q Q Q: 输入的问题 (Input question)。
- M M M: 大型语言模型 (Large Language Model)。
- I I I: 代码解释器 (Code Interpreter),例如 Python 执行环境。
- 推理与代码生成: ( r k , c k ) = M ( Q ⊕ s k − 1 ) (r_k, c_k) = M(Q \oplus s_{k-1}) (rk,ck)=M(Q⊕sk−1)
- 模型 M M M 基于原始问题 Q Q Q 和截至上一步的轨迹 s k − 1 s_{k-1} sk−1,生成新的自然语言推理 r k r_k rk 和代码 c k c_k ck。 ⊕ \oplus ⊕ 表示文本的拼接。
- 代码执行: o k = I ( c k ) o_k = I(c_k) ok=I(ck)
- 解释器 I I I 执行生成的代码 c k c_k ck,得到输出 o k o_k ok。
- 轨迹更新: s k = s k − 1 ⊕ r k ⊕ c k ⊕ o k s_k = s_{k-1} \oplus r_k \oplus c_k \oplus o_k sk=sk−1⊕rk⊕ck⊕ok
- 将新生成的 r k , c k , o k r_k, c_k, o_k rk,ck,ok 追加到历史轨迹 s k − 1 s_{k-1} sk−1 后,形成新的轨迹 s k s_k sk,用于模型的下一步决策。
框架组件与设计

-
TIR Rollout 框架
-
提示工程 (Prompting) : 使用提示词 (见 Figure 3),引导模型在解决问题时,能够在其思考过程中自然地生成用于工具调用的代码块 (例如,以
```python开始,以 ` ````结束)。 -
动态代码执行: 当模型生成代码终止标识符 (例如
```output) 时,系统会暂停模型的文本生成,提取最近生成的代码块交由解释器执行。- 工具调用频率控制 ( C C C): 引入超参数 C C C,限制单轮响应中模型能够进行工具调用的最大次数。若超过 C C C 次,则后续的代码执行请求会被忽略,迫使模型切换到纯文本推理模式,以平衡效率和效果。
-
结果反馈: 代码的执行结果 (OBSERVATION) 或错误信息会被格式化后插入到模型的当前上下文中,然后模型继续生成后续的推理或最终答案。
# 例子, 参考Figure 1. `#`符号后是解释, 不是对话内容 A conversation between User and Assistant.The user asks a question,and the Assistant solves it. User: Please integrate natural language reasoning with programs to solve the problem above,and put your final answer within \boxed{}. What is the square root of 2 equal to? # 填充了 prompt 的具体问题 Assistant: ```python import math print(math.sqrt(2)) ``` ```output # 检测到终止标识符, 开始调用python解释器执行上面的代码 1.4142135623730951 # 解释器返回结果, 替换了Observation ``` # 模型继续生成, 最多发起C次调用, 直到得到\boxed{}的答案
-
-
具体设计
- 执行环境选择 (Execution Environment Selection): 选用 Sandbox Fusion 作为代码解释器。它提供了一个隔离的执行环境,相比 qwen-agent 内置的 Python 执行器,虽然延迟略高,但稳定性更强,能防止执行错误影响主训练进程。
- 错误信息处理 (Error Message Processing): 当代码执行出错时,仅提取错误追踪信息 (traceback) 的最后一行关键错误描述 (如
NameError: name 'a' is not defined)反馈给模型,以减少无关信息对上下文长度的占用。 - 沙箱输出屏蔽 (Sandbox Output Masking): 在计算强化学习的损失函数时,屏蔽掉由代码解释器返回的
OBSERVATION部分的梯度。这样做是为了防止模型试图去“记忆”特定的工具输出内容,而是鼓励其学习通用的推理和工具使用模式。
-
奖励设计:
- 基础奖励 (Primary Reward):
- 若模型最终给出的答案正确,奖励为 +1。
- 若模型最终给出的答案错误,奖励为 -1。
- 代码可执行性惩罚 (Code Executability Penalty - 实验中默认未使用):
- 若模型生成的响应中包含无法执行的代码,则额外施加 -0.5 的奖励惩罚。
- 默认实验中仅保留了答案正确性奖励,以简化并集中学习信号。
- 基础奖励 (Primary Reward):
3. 优势
与基于 SFT 的工具集成方法相比,ToRL 的主要优势在于:
- 从零开始学习工具使用: 无需依赖预先收集和标注的高质量工具使用轨迹进行 SFT,模型直接通过 RL 从基础状态开始探索和学习如何利用工具。
- 发现更优策略的潜力: 通过更自由的探索,模型有机会发现 SFT 数据中未曾包含或非最优的工具使用策略。
- 促进认知行为的涌现: 直接的 RL 训练更容易促使模型发展出如自我反思、动态调整策略、交叉验证等更复杂的认知行为,而不仅仅是模仿。
4. 实验
-
数据集构建:
- 来源: NuminaMATH, MATH, DeepScaleR 等数学竞赛题库。
- 筛选: 移除非证明题和验证标准模糊的题目,得到 75,149 道可验证问题。
- 精炼: 使用 LIMR (一种 RL 数据蒸馏技术) 提取高质量、难度均衡的样本,最终形成包含 28,740 个问题的训练集。
-
实验设置:
- RL 框架: veRL。
- 代码解释器: Sandbox Fusion。
- RL 算法: GRPO。
- 基础模型: Qwen2.5-Math 系列 (1.5B 和 7B 参数)。
- 关键超参数: 默认工具调用上限 C = 1 C=1 C=1。
- 奖励机制: 默认仅使用答案正确性奖励 (+1/-1)。
-
评估基准: AIME24, AIME25, MATH500, OlympiadBench, AMC23。
-
主要实验结论:
-
显著性能提升:
- ToRL 训练的模型在所有数学基准测试中均显著优于基线模型 (包括无工具的 RL 模型和 Qwen2.5-Math-Instruct-TIR 模型)。
- ToRL-7B 在 AIME24 测试集上达到了 43.3% 的准确率,比无工具集成的 RL 模型高出 14%,比当时最佳的 TIR 模型高出 17%。平均分提升了 14.7%。
-
工具使用行为的演化:

- 代码使用率 (Code Ratio, Fig 5a): 随着训练的进行,模型在其响应中包含代码的比例从约 40% 逐步提升到 80%。
- 代码通过率 (Pass Ratio, Fig 5b): 成功执行(无运行时错误)的代码比例持续上升,表明模型编码能力的增强。
- 正确/错误答案中的代码通过率 (Fig 5c): 正确答案对应的代码通常有更高的执行成功率,暗示了代码质量与解题能力的正相关性。
- 有效代码率 (Effective Code Ratio, Fig 5d): 模型生成的、在最终答案前被有效执行的代码比例随训练增加。
-
消融实验:
- 工具调用频率 C C C : 将最大工具调用次数 C C C 从 1 增加到 2,可以带来约 2% 的平均准确率提升。但同时,训练单个步骤所需的时间也大幅增加 (例如,从 118s/step ( C = 0 C=0 C=0) 上升到 288s/step ( C = 2 C=2 C=2)),需要在性能和效率间进行权衡。
- 代码可执行性奖励: 在奖励函数中加入对不可执行代码的惩罚 (-0.5),并未能提升模型性能,反而可能略微降低。作者推测,这种惩罚可能使模型在代码生成上变得过于保守,从而影响其解决复杂问题的能力。
-
通过 RL 规模化涌现的认知行为:
- 错误驱动的修正: 模型在初次生成代码并收到执行错误 (如
TypeError) 反馈后,能够理解错误并调整代码,最终成功执行并解决问题。 - 反思与交叉验证: 模型首先通过自然语言推理得到一个初步答案,然后尝试使用工具 (代码)进行验证。当发现工具输出与推理结果不一致时,模型会进行反思,重新检查代码和推理步骤,并进一步通过工具进行验证,最终得到修正后的正确答案。这体现了模型在计算推理和分析推理间的动态适应和自我校准能力。
- 错误驱动的修正: 模型在初次生成代码并收到执行错误 (如
-
更多推荐
所有评论(0)