AI 基建
0%
第六部分 · 编排 · 第 37 章

训练智能体去行动

作者Changkun Ou
阅读时长约 14 分钟

训练模型回答问题,与训练模型采取行动,差别出现在模型接触环境的边界上。答案可以在一次补全后评分;智能体选择动作、接收观测,再继续选择。因此,训练样本不仅包含模型词元,还包含工具结果、环境状态、终止规则,以及生成这次运行的策略版本。

并不存在一项名为“智能体训练”的单一发明。WebGPT 在 2021 年证明,语言模型可以通过行为克隆和基于人类反馈的选择学会浏览网页;其报告中效果最好的系统采用拒绝采样,而不是在线策略优化 (Nakano et al. 2021)。后来的 Search-R1 等工作则用结果奖励优化多轮搜索行为 (Jin et al. 2025)。两者属于不同的训练范式。示范仍可用于教授合法动作,并为训练提供可靠起点;拒绝采样可以筛选完整的优质运行;离线目标能够复用已有记录;在线强化学习(reinforcement learning, RL)则可以从不断变化的策略中收集新运行。本章关注的是学习单位变成交互轨迹后,系统必须增加哪些契约。训练完成后的规划方式与运行时架构分别见 第 38 章第 41 章

一条轨迹包含两种时间尺度

词元仍然由语言模型逐个生成。智能体训练又增加了一种时间尺度:一个或多个模型词元组成动作后,外部系统向前推进并返回观测。把普通语言模型强化学习称为“单步”,会掩盖其中本来就存在的逐词元决策。更有用的区别是,一次环境交互与反复进行动作与观测交互。

一段部分可观测的交互可以写成:

ht=(x,o0,a0,o1,,at1,ot),atπθ(ht),st+1PE(st,at),ot+1ΩE(st+1),τ=(x,o0,a0,o1,,aT1,oT),R(τ)=t=0T1γtrt+γTrTterm.\begin{aligned} h_t &= (x, o_0, a_0, o_1, \ldots, a_{t-1}, o_t), \\ a_t &\sim \pi_\theta(\,\cdot \mid h_t), \\ s_{t+1} &\sim P_E(\,\cdot \mid s_t, a_t), \\ o_{t+1} &\sim \Omega_E(\,\cdot \mid s_{t+1}), \\ \tau &= (x, o_0, a_0, o_1, \ldots, a_{T-1}, o_T), \\ R(\tau) &= \sum_{t=0}^{T-1} \gamma^t r_t + \gamma^T r_T^{\mathrm{term}}. \end{aligned}

其中,xx 是任务,tt 表示环境轮次,sts_t 是执行动作 tt 之前的隐藏环境状态,oto_t 是智能体能够看到的观测,ata_t 是动作,hth_t 是策略可见的观测历史。策略 πθ\pi_\theta 的参数为 θ\theta。环境版本 EE 决定状态转移分布 PEP_E 和观测分布 ΩE\Omega_E,终止条件决定最后一轮 TTrtr_t 是逐步奖励,rTtermr_T^{\mathrm{term}} 是终局奖励,折扣因子 γ[0,1]\gamma\in[0,1] 控制较晚奖励的权重。完整轨迹为 τ\tau,总回报为 R(τ)R(\tau)。这些方程中的每个符号都对应一项必须记录的策略、环境或评分决定。

动作不一定是纯文本,也可以是结构化函数调用、代码补丁、浏览器指令或多模态控制。观测同样可以采用结构化或多模态形式。把两者序列化成一份词元记录只是常见实现,并非轨迹的定义。

把交互整理成有效的训练记录

这里,假设序列化记录包含词元 z=(z1,,zJ)z=(z_1,\ldots,z_J)。来源掩码定义为:

mj={1,zj 是策略生成且纳入更新的词元,0,zj 来自提示、系统或环境.m_j = \begin{cases} 1, & z_j \text{ 是策略生成且纳入更新的词元},\\ 0, & z_j \text{ 来自提示、系统或环境}. \end{cases}

一种示意性的带掩码策略目标可以写成:

Lpolicy(θ)=1j=1Jmjj=1JmjA^jlogπθ(zjz<j).\mathcal{L}_{\mathrm{policy}}(\theta) = -\frac{1}{\sum_{j=1}^{J} m_j} \sum_{j=1}^{J} m_j\,\widehat{A}_j \log \pi_\theta(z_j\mid z_{<j}).

其中,jj 是序列化词元的索引,JJ 是记录长度,z<jz_{<j} 是词元 jj 之前的前缀,mjm_j 是二元来源掩码,A^j\widehat{A}_j 是分配给纳入更新词元的训练权重或优势。提示词与系统词元的 mj=0m_j=0,环境观测也一样。分母统计纳入更新的动作词元,不能为零。具体算法还可能加入概率比率、裁剪、参考策略、熵项或价值损失。核心不变量更简单:环境观测可以影响后续动作,但不是策略采样出的动作。掩码是一条所有权规则,并不表示观测无关紧要。

Search-R1 对检索段落采用了这条规则:检索到的词元保留在上下文中,但不进入策略损失 (Jin et al. 2025)。生产训练记录也必须以同样方式区分系统与提示词元、工具响应、浏览器状态、编译器输出和注入的错误消息。记录还要说明是否保留私有推理词元,以及是否用它们训练。若角色不明确,一次预处理变更就可能悄悄让模型学习预测并非由它产生的文本。

训练记录不能只保留词元:

字段 训练为何需要它
任务、环境版本、重置种子 重建初始状态,并检测训练数据与评测数据的泄漏。
策略与分词器版本 标识行为策略,使似然比具有明确含义。
解析后的动作与原始动作文本 把语言生成行为与解析器行为分开。
观测来源与截断情况 说明策略实际看到了什么,又遗漏了什么。
超时、重试、取消和终止原因 区分策略失败与基础设施失败。
逐步奖励、终局奖励、验证器版本 让最终回报可审计。
成本、权限与安全事件 防止任务成功掩盖不可接受的执行路径。

无效调用需要明确的处理规则。环境可以拒绝调用并返回错误观测,也可以结束回合或施加惩罚。收集完成后再丢弃无效调用会改变训练分布。被截断的轨迹也必须有单独的终止原因,因为耗尽预算与完成任务不是同一种结果。

TASK 任务与重置状态 POLICY 策略生成动作 TASK->POLICY ENV 环境向前推进 POLICY->ENV OBS 观测加入历史 ENV->OBS TERM 终止规则 OBS->TERM TERM->POLICY 继续 VERIFY 验证器为轨迹评分 TERM->VERIFY 停止 ADV 估计训练权重 VERIFY->ADV 新权重 UPDATE 带掩码的策略更新 只更新动作词元 ADV->UPDATE 新权重 UPDATE->POLICY 新权重
图 37.1. 一次轨迹训练循环。策略与环境轮流执行,直到终止规则触发。验证器随后为已记录的轨迹评分,优势估计器给出训练权重,策略更新则通过来源掩码,只把策略生成的动作词元计入策略损失。图中省略了资源部署与调度选择。

先确定数据范式,再选择优化器

智能体训练并不等于在线强化学习。数据来源决定了优化器能够学到什么:

范式 训练记录 能提供什么 主要限制
行为克隆 人工示范的动作与观测轨迹 合法的动作语法、工具使用约定,以及可靠的训练起点。 只能覆盖示范者经历的状态分布及其错误,示范中未出现的恢复行为仍然不可见。
选择或离线学习 已记录且带有分数或偏好的轨迹 复用昂贵的环境运行,收集期间无需改变策略。 无法探索日志中不存在的状态,而且仍需记录行为策略的来源。
在线强化学习 从当前或近期策略采样的新轨迹 让策略发现替代路径,并从自身失败中获得反馈。 需要在线环境、反复评分、探索控制,以及防止利用验证器漏洞的措施。
混合课程 先用示范,再用筛选后的轨迹或在线轨迹 先学会接口,再优化任务结果。 阶段边界、数据配比和不断变化的动作格式都会成为新的超参数。

WebGPT 对应前两行,并不能证明在线强化学习始终不可或缺 (Nakano et al. 2021)。实践中,通常会在稀疏结果优化开始前教会模型合法的工具调用语法。否则,早期 rollout 预算可能都花在重新摸索解析器上,而不是学习任务本身。

把奖励设计成契约

环境与奖励不是同一个对象。环境负责改变状态并产生观测,验证器或奖励包装器则为动作、状态或完整轨迹打分。把这些接口分开,才能定位故障来源。

契约 必须回答的问题
状态转移契约 给定重置状态和动作,状态会怎样变化?哪些失败会重试、暴露给策略或直接终止?
观测契约 哪些状态可见?采用什么格式?如何截断、脱敏并记录来源?
验证器契约 检查哪项产物?检查是否确定、隔离、带版本且不易被篡改?
奖励契约 如何组合有效性、进展、结果、成本与安全?奖励塑形是否会改变最优行为?

智能体奖励通常组合多种信号:

  • 语法与有效性: 动作能否解析,是否调用了可用工具,参数是否符合模式?这种信号密集,却不能说明动作是否有用。
  • 中间进展: 当前状态是否更接近目标?它有助于分配信用,但若进展指标有误,系统可能奖励绕路,甚至阻止同样有效的替代路径。
  • 最终任务结果: 测试是否通过,答案是否正确,环境是否达到目标状态?它最接近期望结果,但往往十分稀疏。
  • 成本与约束: 一次运行用了多少词元、工具调用、时间、费用和权限,是否发生安全违规?这些信号会暴露单个成功标记看不到的取舍。

ToolRL 的实验说明,粗粒度答案匹配与结构化工具使用奖励不能互换 (Qian et al. 2025)。SWE-RL 用与开发者补丁的相似度作为可复现代理,并没有证明所有语义正确的修复都能获得相同分数 (Wei et al. 2025)。多条动作路径可能解决同一个任务。逐动作精确匹配可能拒绝更好的路径,过弱的最终检查则可能把表面修复误判为成功。

因此,奖励欺骗既是优化问题,也是接口问题。应保留一套不参与训练的验证器,用专门测试探测已知漏洞,并检查代理奖励与目标任务指标之间的差距。即使评分过程自动完成,人编写的测试和参考产物仍然包含人工监督。

轨迹奖励不等于动作级信用分配

组相对策略优化(Group Relative Policy Optimization, GRPO)不使用 PPO 中的学习型价值评论家,而是在同一任务的一组样本中归一化回报 (Shao et al. 2024)。对一组 GG 条轨迹,一种简单写法是:

Rˉ=1Gi=1GRi,σR=1Gi=1G(RiRˉ)2,A^i=RiRˉσR+ε.\bar{R}=\frac{1}{G}\sum_{i=1}^{G}R_i, \qquad \sigma_R=\sqrt{\frac{1}{G}\sum_{i=1}^{G}(R_i-\bar{R})^2}, \qquad \widehat{A}_i=\frac{R_i-\bar{R}}{\sigma_R+\varepsilon}.

其中,ii 是组内轨迹索引,GG 是组大小,RiR_i 是轨迹 ii 的回报,Rˉ\bar{R} 是组均值,σR\sigma_R 是组标准差,ε>0\varepsilon>0 用于避免除以零,A^i\widehat{A}_i 是归一化后的轨迹优势。若所有回报都相同,这个估计器就无法提供排序信号。

当奖励只有一个不打折扣的终局值时,常见实现会把同一条轨迹的优势应用到所有纳入更新的动作词元。这样做会整体强化或抑制整条采样路径,却无法指出究竟哪个动作造成了结果。把这个数值直接称为“信用分配”,容易掩盖它并没有提供因果层面的分辨率。

不同补救方法针对的是不同环节:

  • 逐步奖励改变反馈时机,但只有中间指标可信时才有帮助。
  • 学习型价值函数根据状态或历史估计未来期望回报,可以得到逐步优势,却也增加了一个在部分可观测条件下可能很难拟合的模型。
  • 从同一个状态或检查点重放替代动作,可以形成局部反事实比较;在开放或随机环境中,完全复现状态可能并不容易。
  • GiGPO 从反复出现的锚点状态建立逐步样本组,同时保留无需评论家的组估计器 (Feng et al. 2025)。论文报告的提升限于 ALFWorld、WebShop 和搜索增强问答,方法还依赖能够被识别为等价的状态。

奖励设计、信用估计与探索是三项独立选择。更细的奖励不会自动带来更好的探索,增加分支 rollout 也无法修正有缺陷的验证器。RAGEN 在三个程式化环境中报告的“回声陷阱”提供了一个值得测试的警告:在那些实验中,奖励方差下降与梯度上升同时伴随策略坍缩 (Wang et al. 2025)。它是一项诊断信号,不是智能体强化学习的普遍定律。

争议所在

只看结果的奖励已经在多轮搜索等范围狭窄、结果可核验的场景中取得进展;另一些实验则受益于逐步信用或奖励塑形。现有证据并未给出唯一适用的选择。当验证器可靠、有效路径很多时,稀疏结果奖励很有吸引力;当中间状态可信、终局距离过远时,过程反馈更合适。有效的比较必须保持环境、基础策略、rollout 预算和评测验证器不变。

把环境当作版本化的数据基础设施

可执行环境是能够复用的训练基础设施。例如,SWE-Gym 把 2,438 个真实 Python 仓库任务与运行环境、单元测试和自然语言任务打包在一起。其 ICML 2025 研究把这套集合用于监督式智能体训练和验证器引导的推断时扩展,并在论文评测设置中报告了解决率最高提升 19 个百分点 (Pan et al. 2025)。这个结果说明可复现实验基底的价值,不应改写成在线强化学习的结果。

训练环境需要明确的运行契约:

  • 重置与回放: 重置必须恢复到已知快照。记录种子、环境版本、数据版本、时钟策略和允许的网络状态,并实测确定性回放率,不能把它当作默认成立。
  • 隔离: 分别约束文件系统、进程、网络、凭据和租户范围。一个 rollout 不能读取另一条 rollout 的产物,也不能接触留出的答案。
  • 控制观测: 限制输出大小,标记截断,保留来源角色,并把工具输出视为不可信输入。
  • 失败语义: 为每个动作和整条轨迹设置超时,并区分解析器拒绝、工具故障、重试耗尽、取消与真实任务失败。
  • 验证器完整性: 在智能体可写边界之外执行评分,为依赖项记录版本,并保留足够证据以审计结果。
  • 数据集隔离: 在仓库、模板和依赖层面隔离训练任务、调参任务和最终评测任务,不能只按问题编号切分。

这些控制会直接影响学习。偶发失败的测试会引入奖励噪声,缓慢的浏览器会拉长 rollout 尾部,泄漏的答案会把记忆伪装成能力。API 发生变化,即使任务文本不变,也会改变状态转移分布。

下层约束:rollout 耗时决定优化节奏

这里,对轨迹 ii,下面的式子给出一份实用的墙钟时间分解:

Trollout,i=Treset,i+t=0Ti1(Tdecode,i,t+Tenv,i,t)+Tverify,i.T_{\mathrm{rollout},i} = T_{\mathrm{reset},i} + \sum_{t=0}^{T_i-1} \left(T_{\mathrm{decode},i,t}+T_{\mathrm{env},i,t}\right) + T_{\mathrm{verify},i}.

这里,对包含 BB 条轨迹的同步批次,相应的近似关键路径为:

Titerationmax1iBTrollout,i+Tupdate+Tweight sync.T_{\mathrm{iteration}} \approx \max_{1\le i\le B} T_{\mathrm{rollout},i} + T_{\mathrm{update}} + T_{\mathrm{weight\ sync}}.

其中,Treset,iT_{\mathrm{reset},i} 是环境准备时间,TiT_i 是轨迹 ii 的轮数,Tdecode,i,tT_{\mathrm{decode},i,t} 是策略生成动作 tt 的时间,Tenv,i,tT_{\mathrm{env},i,t} 是工具或环境执行时间,Tverify,iT_{\mathrm{verify},i} 是评分时间,BB 是批大小,TupdateT_{\mathrm{update}} 是学习器更新时间,Tweight syncT_{\mathrm{weight\ sync}} 是让 rollout worker 获得新权重所需的时间。最大值把拖慢整批的长尾任务显式写了出来:一次很慢的工具调用就可能卡住整个同步批次。真实系统可以重叠其中一些阶段,因此应实测各阶段的追踪数据,不能把这项求和当作硬件定律。

OpenRLHF 报告生成阶段可能占据 RLHF 的大部分墙钟时间,并使用 Ray、vLLM 与 DeepSpeed 组织不同角色 (Hu et al. 2025)。在智能体工作负载中,解码可能占主导,也可能是环境与验证器延迟占主导。vLLM 只是一种可选的推断后端,并不是定义的一部分。接纳控制、取消、前缀复用和组批依然重要,只是调度单位变成了会在轮次之间暂停的轨迹。

资源布局与策略新鲜度彼此独立

有两项系统决策经常被混在一起:

设计轴 选择 收益 需要测量的代价
资源布局 同机部署 rollout 与学习角色 复用 GPU 池,也可能减少常驻模型副本。 重新分片、显存压力与不同阶段的空闲时间。
资源布局 使用独立的 GPU 池 分别调整 rollout 和学习规模,并允许两者重叠。 额外容量、权重传输与跨池协调。
更新同步 同步收集与更新 每个批次都能使用版本明确且较新的策略。 同步屏障与长尾任务造成的空闲。
更新同步 异步收集与更新 让 rollout 与学习重叠,并减少同步屏障。 行为策略陈旧,以及相应的异策略校正。

两条轴彼此独立。独立的 GPU 池仍然可以停在同步屏障前,同机集群也可以分时运行不同角色,同时允许旧权重产生的 rollout 继续排队。HybridFlow 的 3D-HybridEngine 是一种同机设计,会在生成布局与训练布局之间重新分片 actor (Sheng et al. 2025)。OpenRLHF 则展示了基于 Ray 的分布式布局 (Hu et al. 2025)。部署方式本身不能决定数据是否来自当前策略。

异步 RLHF 把生成和学习分开,并在指令遵循与数学推理任务上展示了吞吐量与异策略偏差之间的取舍 (Noukhovitch et al. 2025)。AReaL 进一步使用持续运行的 rollout worker 与感知陈旧度的学习器,在其数学和代码工作负载中报告了相对所评同步系统最高 2.77 倍的训练速度 (Fu et al. 2025)。这些结果证明了可行的系统设计,不保证长时间跨度的工具智能体也能得到同样收益。

每条异步轨迹都必须携带生成它的行为策略版本。这里,若轨迹 ii 由行为策略 μi\mu_i 生成,而学习器使用 πθ\pi_\theta,则逐词元重要性比率为:

ρi,j(θ)=πθ(zi,jzi,<j)μi(zi,jzi,<j),mi,j=1.\rho_{i,j}(\theta) = \frac{\pi_\theta(z_{i,j}\mid z_{i,<j})} {\mu_i(z_{i,j}\mid z_{i,<j})}, \qquad m_{i,j}=1.

其中,ii 表示轨迹,jj 表示策略生成的词元,zi,<jz_{i,<j} 是该词元被记录时的上下文,mi,j=1m_{i,j}=1 表示它是纳入更新的动作词元,μi\mu_i 是记录中的行为策略,πθ\pi_\theta 是当前学习器,ρi,j\rho_{i,j} 用当前策略重新加权旧样本。裁剪重要性比率可以限制方差,却无法弥补支持集缺失或任意陈旧的轨迹。跨许多词元和轮次连乘的比率可能变得极端,因此应记录策略延迟、比率分布和裁剪比例,而不能只给一次运行贴上“异步”标签。

图 37.2. 资源布局与更新同步是两条独立的设计轴。资源布局视图比较共享 GPU 池与独立的 rollout、学习池;调度视图比较同步屏障与带策略延迟测量的异步重叠。可以在两条轴之间切换。方框宽度仅作示意,不代表实测利用率。

同时验证学习效果、环境质量与系统表现

一份有效的评测表应把三个层面分开:

层面 最低限度的测量项
策略行为 按任务时长和任务类型统计成功率;工具调用有效率;动作失败后的恢复能力;每次成功所需的步骤、词元与成本;安全违规率;并列报告代理奖励和留出验证器结果。
环境质量 环境重置失败率;确定性回放率;解析器、工具和验证器失败率;观测截断;泄漏探测;各阶段的 p50、p95 与 p99 延迟。
训练系统 每秒 rollout 词元数、每秒环境步数、每小时轨迹数、训练器空闲比例、GPU 显存、权重传输时间、策略延迟、比率裁剪比例和丢弃轨迹比例。

比较系统时必须使用匹配的硬件和匹配的工作负载分布。若吞吐提升来自缩短轨迹、丢弃慢任务或更换验证器,就不能只归因于系统优化。学习曲线应分别以环境交互次数、生成的动作词元、加速器时间和墙钟时间为横轴,因为每个分母回答的问题不同。

发布前,应使用生产环境使用的解析器和工具权限重放留出任务,扰动工具延迟与故障,测试预算耗尽,并手工检查高奖励的失败轨迹。只有策略在独立的评测契约下确实进步,而且没有以过高成本或不安全动作换取分数,训练才算成功。

这条流水线最终得到的是一项从交互中学习过的策略。下一章讨论另一个问题:运行时循环应当如何把规划、记忆、工具与外部世界提供给这项策略?

延伸阅读

  • Nakano et al., “WebGPT: Browser-Assisted Question-Answering with Human Feedback” (早期浏览智能体研究;所报告的最强系统结合行为克隆、学习得到的奖励模型和拒绝采样), 2021. arXiv:2112.09332
    WebGPT 用示范与人类反馈训练语言模型浏览网页;其最强配置使用拒绝采样,而非在线策略梯度更新。
  • Jin et al., “Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning” (采用结果奖励和检索令牌掩码的多轮搜索强化学习), 2025. arXiv:2503.09516
    Search-R1 训练语言模型在推理中多次发起搜索,并让检索段落保留在上下文中、但不进入策略损失。
  • Qian et al., “ToolRL: Reward Is All Tool Learning Needs” (研究奖励类型、尺度、粒度和时机如何影响工具选择与使用), 2025. arXiv:2504.13958
    ToolRL 通过实验说明,工具使用训练取决于动作有效性、工具选择、参数、尺度、粒度和反馈时机等多方面的奖励设计。
  • Pan et al., “Training Software Engineering Agents and Verifiers with SWE-Gym” (包含 2438 个真实 Python 仓库任务的可执行环境), 2025. arXiv:2412.21139
    SWE-Gym 将 2,438 个真实代码仓库任务封装为可复现的运行环境与测试,支持监督式智能体训练和验证器引导的推理扩展。
  • Feng et al., “Group-in-Group Policy Optimization for LLM Agent Training” (在轨迹级组相对优势上增加步骤级锚定状态分组), 2025. arXiv:2505.10978
    GiGPO 在等价环境状态重复出现时构造局部比较组,无需额外评论器或推演即可提供逐步相对优势。
  • Sheng et al., “HybridFlow: A Flexible and Efficient RLHF Framework” (开源实现为 veRL;其 3D-HybridEngine 在生成布局与训练布局之间重新分片行动者模型), 2025. arXiv:2409.19256
    HybridFlow 提供分布式 RLHF 数据流,并用 3D-HybridEngine 在共享资源池中把同一 actor 重分片到生成与训练布局。
  • Fu et al., “AReaL: A Large-Scale Asynchronous Reinforcement Learning System for Language Reasoning” (采用陈旧度感知训练的完全异步采样与学习), 2025. arXiv:2505.24298
    AReaL 让推演持续生成、学习器独立更新,并控制策略陈旧度;在其数学与代码工作负载上报告最高 2.77 倍加速。

评论

登录后评论