hande on modern rl
简介(未完成)
Agentic RL 与单轮 RL 的根本差异:训练对象从 completion 变成 trajectory,rollout 必须在真实环境里执行。
- 单轮决策:模型接收一个 prompt,输出一段完整回答,奖励模型给出一个分数,策略据此更新一次。无论底层算法是 PPO 还是 GRPO,”一问一答一打分”的骨架始终未变。
- 但真实的智能体不这样工作。考虑一个订机票 Agent。用户说”帮我订一张明天北京到上海最便宜的早班机票”,Agent 必须分步行动:先搜索航班,对比价格和时间,确认座位库存,调用下单 API,等待出票确认。中间任何一步出错——搜索 query 太宽、没比价直接选第一条、库存判断失误、下单参数错误——整个任务就失败。环境只在最后给出一个二元信号:出票成功(reward = 1)或失败 (reward = 0)。这种从”一问一答”到”多步与环境交互”的转变,正是 Agentic RL 要解决的核心问题。
Search-R1:最小可跑的 Agentic RL 案例
- Search-R1 把任务限制在一个很小的 agent 环境里:模型只需要学会”什么时候搜索、搜什么、什么时候回答”。它和传统RAG 的差别不是”有没有检索”,而是”谁来决定检索”——传统 RAG 由系统先检索,再把文档交给模型;Search-R1 让模型在推理过程中自己发起 search action。
- 当搜索 query 变成模型 action,检索结果变成环境observation,RL 训练就不再只是优化一段 answer,而是在优化一条会调用工具的轨迹。
SFT 与 Prompting 的局限
ReAct、Toolformer 等方法已经能让 LLM 调用工具了,为何还需要 RL?关键区别在于:SFT 和 prompting 教会模型的是模仿——复制人类演示中”何时调用工具、调用什么工具”的模式。但真实的 Agent 任务中,工具使用的最优策略高度依赖上下文:
- 搜索查询如何构造?何时打开网页详情?何时停止搜索开始总结?
- 代码修改后测试仍未通过,是继续调试还是切换方向?
- 多个来源的信息相互矛盾,应采信哪一个? 这些本质上是策略学习问题,而非单纯的语言建模问题。演示数据难以覆盖所有可能的决策路径,而 RL 可以根据任务结果反向塑造工具调用、规划和记忆管理等行为模式。
SFT 和 RL 在 Agentic 场景中的分工:
- SFT 教格式:教会模型工具调用的语法、基本的交互协议。
- RL 教策略:教会模型何时调用工具、如何组合多步行动、失败后如何恢复。
整体轮廓
Agentic RL 把训练对象从”一段回答”扩展到”一条完整交互轨迹”。这一扩展引出四个核心议题
- 形式化——轨迹、状态、动作在多轮设定下如何精确定义?角如何区分模型生成的 action token 与环境返回的 observation token?
- 信用分配——一条轨迹最终失败,reward 怎么回拆到每一步??ORM/PRM/SALT/GiGPO/HGPO/SPA-RL/AgentPRM/ARPO/IGPO/StepPO 等十多种方法各有何取舍?
- 工具与轨迹工程——训练数据从哪来、工具策略怎么学、沙箱怎么管?
- 真实训练陷阱——工业界在哪些坑里摔过?
形式化/把”多轮交互”翻译成 RL 能处理的数学对象
工程框架
框架的几个取舍
- 同步 vs 异步。
- 同步训练简单、可控、容易调试,但 GPU 利用率低。
- 异步训练吞吐翻倍,但训练数据可能基于旧权重生成,需要额外的算法补偿。AReaL 的研究表明,异步训练可以在不损失效果的前提下将速度提升近 3 倍——但前提是训练已经调通。
- 框架最初为单轮 RL(推理任务)设计,还是一开始就考虑了多轮 Agent 交互。前者的 Agent 执行模块是后加的,能用但不是为此优化;后者的 Agent 执行是架构一等公民,在状态管理、异构轨迹长度、工具调用异步返回等方面有原生支持。
留下评论