跳到主要内容
SecondHome

你以为在训同一个模型:agentic RL 的四重错位与一张仪表盘

6b 系统篇的收官暗坑(L12 p.18-27):单轮 RL 里训练器与 rollout 器天然看同一段文本,agent 的多轮 harness 却让「训练的 token 流」与「推理的 token 流」悄悄分叉——历史怎么拼、模板怎么渲染、token 怎么存,再加权重何时换(async),四处都可能「你以为在训同一个模型,其实两边各看各的」,而且全程零报错。①Sequence extension(p.19-20):Harness A 逐轮追加完整历史 T A₁O₁A₂O₂…,Harness B 每两轮把 A₁O₁A₂O₂ 摘要成 S——训练批里一条轨迹的优势 Â 广播到所有动作 token,loss mask 在 Task/观察为 0、动作为 1;B 重复的 Task token 无 loss 仍耗上下文计算,结论是保精确前缀、能拼多长拼多长。②Chat template 陷阱(p.21-22):Qwen3/3.5 默认模板会把 reasoning 从历史删掉、破坏 sequence extension,agent RL 框架自带定制模板/renderer(Tinker、PrimeRL)。③TITO(p.23-24,LMSYS 2026-05-13):rollout 数据应以 token 存传——tokenize 一一对应、detokenize 多对一,chat template 加个空白就足以让训练/推理 tokenization 不一致。④Async RL(p.25-26):GPU 分组重叠推理与权重更新,agentic RL 常 rollout-bound、推理:训练可到 3:1,代价是 staleness 修正(L11 p.20/p.22-27)与 continuous batching + in-flight weight update(AReaL、Pipeline RL、SGLang);复杂 harness(p.27)配 RAO(2026)与 RLM(2025)。收在 L12 p.43 八项调试指标表:pass@1/pass@k/entropy/importance_weight_max/grad norm/average staleness/trainer MFU/timing——静默 bug 全靠这张表在曲线上现形。

chat template 多加一个空白,就足以让训练与推理的 tokenization 对不上。L12 p.18-27 用一整节讲的就是这类坑。

单轮 chat 的 RL 没有这个问题。decode 出什么就重算什么,训练器与 rollout 器处理的天然是同一段文本,一致性是免费的。

多轮 harness 是把 agent 放进环境跑轨迹的那整套脚手架。agent 一进去,训练的 token 流与推理的 token 流就开始悄悄分叉。你以为在训同一个模型,其实训练器和 rollout 器早已各看各的。

这类 bug 不抛异常、只毁曲线,本篇最后落在 L12 p.43 的八项调试指标表。

一、历史怎么拼:sequence extension 与「能拼多长拼多长」

Agent 轨迹是多轮的。任务指令 T 之后,动作与观察交替:A₁、O₁、A₂、O₂…… 下一轮推理前,harness 要把历史重新拼进 prompt。怎么拼,L12 p.19-20 摆出两种拼法。

Harness A 每轮追加完整历史,序列是 T A₁O₁A₂O₂……,旧轮逐字保留。Harness B 每两轮压缩一次观察:保留 T,把 A₁O₁A₂O₂ 摘要成一条 S。上下文短了,精确前缀没了。

先看训练批怎么读这段序列(L12 p.19-20,衔接 6a 信用分配段 L11 p.6/p.10-11)。多轮轨迹通常只有一条最终奖励,一条轨迹的优势 Â 会广播到全部动作 token。

loss mask 在 Task 与观察 token 上取 0、在动作 token 上取 1。环境说的不学,只学自己说的。

在这个视角下重看 Harness B:每个压缩窗口都重复出现的 Task token,一个 loss 都不产生(mask=0),却照样参与每次前向、照吃上下文计算。历史被改写后,同一个动作在不同轮次看到的条件已不相同。

逐轮追加完整历史 T A₁O₁A₂O₂…:上下文线性变长,但旧 token 逐字不动 —— 训练与推理看到的前缀永远一致,推理侧的前缀缓存也每轮可复用。

每两轮把 A₁O₁A₂O₂ 摘要成 S:上下文省了,代价是历史被改写、条件分布轮轮漂移,重复的 Task token 无 loss 仍耗计算 —— 省下的长度,付在一致性上。

结论(L12 p.20):尽量保持精确前缀(exact prefix),能拼多长拼多长。训练一致性直接跟着来,推理侧的缓存复用也是它给的。

二、模板与 token:两道更静默的关

拼接策略选对了,后面还有两处裂缝,一处比一处难查。

模板关(L12 p.21-22)。现代 chat 模型的每一轮输入都要过 chat template 渲染,而默认模板不是为 agent RL 设计的。Qwen3/3.5 的默认模板会把 reasoning 从历史中删掉,见 Qwen3 Technical Report。

rollout 时上一轮的推理过程被抹除,精确前缀从第二轮起就不成立。通用 chat 产品与 agent 训练的需求本就错位,这不是哪一家的疏忽。

所以 agent RL 框架干脆自带定制模板 /renderer,L12 p.21-22 点名 Tinker、PrimeRL。在 RL 系统里,模板是训练契约的一部分,不是渲染细节。

token 关(L12 p.23-24)。TITO(Token-In-Token-Out):rollout 数据以 token 的形态存储与传输,不走字符串。

理由藏在一处不对称里:tokenize 一一对应,detokenize 多对一。token 序列能确定地译成字符串,字符串再切回 token 却不保证回到原序列(No Token Left Behind,LMSYS 2026-05-13,Miles 训练系统的复盘)。

只要数据在两个引擎之间走过一趟「字符串空间」,哪怕只是 chat template 多加了一个空白,训练侧重算的 token 流就可能不再是 rollout 实际生成的 token 流。

user: 推理引擎 decode 出 token 序列 x₁…xₙ—— 策略真正「说出口」的内容assistant: 落盘时 detokenize 成字符串存库:多对一映射,空白与边界细节被抹平tool: 训练侧取字符串重新 tokenize,得到 y₁…yₘ——y 与 x 已不是同一序列Thought: 训练器在 π(y) 上算梯度,rollout 采样自 π(x):两边各训各的、各看各的Observation: 全程零报错;只有 importance_weight_max 无故冒尖,曲线莫名变差
为什么它比调错超参更难查

超参错了,loss 通常立刻给出反应。token 流错位时,两侧的 logprob 各自都「正常」,数据管道每个组件单独看都无罪,只有把 rollout 的 token 与训练侧输入逐 token 对一遍,错位才暴露。这也是 TITO 把存 token 上升为系统原则的原因:让往返字符串空间这条路根本不存在。

三、时间维度:async RL、3:1 与在途权重更新

前两节错在表示,同一条轨迹被摆成两副样子;这一节错在时间,训练器往前走了,rollout 器还在旧权重上采样。

同步方案里,训练与推理同卡共置、轮流独占:一致性免费,但一边跑另一边闲。异步 RL(L12 p.25)把 GPU 分组、重叠推理与权重更新,把 rollout 阶段的 GPU 空闲消掉。agentic RL 的负载常是 rollout-bound,采样是瓶颈,推理: 训练的卡数比可以到 3:1。

代价是数据变旧:训练吃的轨迹来自若干步之前的权重,staleness(陈旧度)必须修正。工具在 6a 算法段已备好,AReaL 的 staleness 处理见 L11 p.20,重要性采样 / 裁剪见 L11 p.22-27。

系统侧还需要推理框架为 RL 演化出的两种能力(L12 p.25-26):continuous batching 与 in-flight weight update。前者是连续凑批,请求随到随入批,把长短不齐的轨迹拼满 GPU。后者是在途权重更新,请求处理中途热切换权重,SGLang 文档给了示例。

这条线的代表系统是 AReaL 与 Pipeline RL。

重要性采样救得了 staleness,救不了 token 错位

staleness 修正的数学前提,是训练与 rollout 在同一段 token 序列上各算一个 π、比值才有意义。若第二节的两处错位让两边 token 流不同,importance ratio 比的是两个不同事件的概率,修正从根上失效。所以工程顺序是:先保 token 一致,再谈异步。

顺带一页(L12 p.27):当 harness 复杂到子 agent、上下文压缩,轨迹本身开始递归化。前沿已为此备好概念:RAO(Recursive Agent Optimization,2026)与 RLM(Recursive Language Models,2025),把训练对象从单条轨迹推广到递归调用的树。

本篇不展开,记住坐标即可;更大的全景坐标见 m6-agentic-rl-survey 综述卡。

四、八项仪表盘:静默 bug 的显影液

这四处都不报错,唯一的突破口是训练曲线。L12 p.43 给出八项调试指标,每一项都对应一类分叉:

指标看什么异常读法
reward / pass@1训练奖励与留出集并排看多步平坦,或训练涨而留出集降 = reward hacking
pass@k采样多样性pass@1 升而 pass@k 降 = 多样性崩溃
entropy策略分布骤降趋 0 或跳变 = 退化文本
importance_weight_maxπ_train/π_rollout 最差 token 比值尖峰 = token 错位或数据 stale(少数 token 主导更新)
grad norm梯度规模尖峰通常先于发散出现
average staleness数据落后多少个权重版本async 配平与否的直读
trainer MFU训练器算力利用率padding / 长短不均衡 / 小 microbatch 会拉低
timingrollout /update/stall /total 分段stall > 0 = 训练器在等 rollout

前三节的每一处错位在这张表上都有投影。importance_weight_max 冒尖,要么是第三节数据 stale,要么是第二节的 token 流根本不是一段序列,ratio 比错了对象。

average staleness 直接量化 async 的滞后。timing 的 stall > 0,说明分组没配平、训练器在干等 rollout。trainer MFU 低,多半是 padding 与长短不均衡。

pass@k 降而 pass@1 升、entropy 塌缩,是 6a 讲过的探索崩溃在表上的读法。reward 涨而留出集降,则是《算法再稳,尺子歪了也白搭》里的 reward hacking 三条路径。

这张表同时覆盖算法侧与系统侧的故障。

与本讲的连接

跨篇连读:《双引擎解剖》拆的是 weight sync 通道的同步体量与 MoE 路由,本篇补上 rollout 数据这条通道,两条合起来才是 6b 双引擎的完整暗坑图;《算法再稳,尺子歪了也白搭》末尾预告的八项调试指标,本篇正面拆完。

行动项:给自家管线做一次三连检,harness 拼历史用的是精确前缀还是摘要、模板会不会把 reasoning 从历史删掉、rollout 落盘的是 token 还是字符串。前三问查完,第四问在 p.43 那张表上直接读:timing 的 stall 是否大于 0。

本节论文与规范

本节资料

  • 2025 综述(v5 2026 更新)。把 agentic RL 定式化为时序扩展的部分可观测 MDP,按规划、工具使用、记忆、推理、自我提升、感知六大能力 × 任务域双维度组织,综观 500+ 文献,并整理开源环境、基准与框架清单。L11/L12 的「系统与陷阱」两条线索都能在其中找到更大坐标。当课程地图用:迷失时回来看全景。

  • 2025/2026(v5 2026-03)前沿。大规模异步 RL 系统:生成/训练解耦、staleness 修正(one-step-off)的系统研究——L11 p18-22 与 L12 p25「async 需陈旧性修正」的展开;2026 衍生 AReaL-DTA 前缀树(τ²-bench 压缩 9.43×)与 AReaL 2.0(Cursor 每 5 小时在线 RL 一版)。

  • Qwen3 Technical Report 论文2505.09388前沿

    2025 前沿。GRPO 家族超大规模(旗舰 235B-A22B、119 语种)完整落地记录:强到弱蒸馏、thinking budget 控制与四种尺寸训练配方——「slides 里的算法如何变成产品」的最佳样本;其默认 chat template 删 reasoning 的行为也是 L12 p21 模板陷阱案例。训练管线四阶段(长 CoT 冷启动→推理 RL→模式融合→强到弱蒸馏)公开可抄。

  • 活跃开源仓库。RadixAttention 前缀缓存(L12 p10 agentic RL 组内共享 prompt 直接受益)与 in-flight weight update 文档示例(L12 p26)——读 L12 推理引擎两页的实操对照。文档把前缀缓存命中率、权重热更新写成可跑示例,帧率数据可复现。agentic RL 组内共享前缀正是 radix 树的拿手场景,配 L12 两页读效率最高。

  • 2026-05 一线工程帖(L12 p23-24 官方引用)。Token-In-Token-Out:rollout 数据必须以 token 而非字符串存储传输,chat template 加空白等小变换会让训练/推理 tokenization 不一致;tokenize 一一对应、detokenize 多对一。跨系统传 rollout 一律传 token id,字符串往返即不可逆损伤。

AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。

本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。