verl reTool recipe: Using multi-round conversations and code sandboxing to improve the math of large models

概述

我们使用 verl 框架成功复现了 ReTool,这是一种用于大语言模型(LLM)工具增强推理的先进强化学习(RL)框架。此次复现不仅验证了 ReTool 在结构化问题解决(如数学推理)方面的开创性表现,还凸显了 verl 作为强化学习训练框架的稳健性,并验证了 verl 为 Agentic RL 场景开发的新功能。

Retool 论文链接:https://arxiv.org/pdf/2504.11536

image.png

Retool 工作和复现方法

工作原理

Retool 的工作流程分为两个关键阶段:

  1. 冷启动与监督微调(SFT)

    首先通过数据生成流水线构建包含代码增强推理轨迹的高质量数据集,通过监督微调使模型掌握基础工具调用(如代码执行)与执行结果分析能力。

  2. 动态交互与策略优化(RL)。

    借助 verl 强化学习框架,模型在推理时动态插入代码块并与沙盒环境实时交互,生成自然语言思考与代码片段的混合轨迹,检测到代码终止标记时将代码发送至沙盒异步执行,执行结果(成功输出 / 错误信息)反馈给模型指导后续推理。这种 "思考 - 执行 - 反馈" 的循环机制,配合基于最终答案准确性的奖励设计,使模型自主优化工具调用策略,提升推理效率与计算准确性。

verl支持复现retool的新功能

Server-based的请求异步rollout

由于agent需要通过各种工具调用与环境进行交互,为了避免 GPU 在等待工具调用返回结果时出现空闲,我们采用了基于异步的协程机制来异步执行每个样本的推理请求,从而提高训练速度。为了支持请求异步rollout,推理引擎(服务器)和agent(客户端)在架构上是分离的,实现了server-based的系统,其目标如下:

  1. 提供负载平衡机制,平衡多个 GPU 的负载,减少长尾请求对性能的影响
  2. 推理引擎和客户端系统层面解耦,防止agent相关的逻辑(如trace)影响推理引擎。

server-based 架构图,来自 verl 文档https://verl.readthedocs.io/en/latest/advance/agent_loop.html

verl server-based 的组件和作用见下表,调用流程可以参考架构图

组件 Role
AgentLoop 作为客户端,实现agent的功能
AsyncLLMServerManager 推理网关,提供generate接口给client
AsyncSglangServer 或
AsyncvLLMServer
服务端,后端对接到推理引擎,每个实例对应一个DP组

image.png

多轮对话和工具调用