你的AgenticRL可能白训了:被忽略的“旧logits”陷阱

admin 2026-07-09 06:18:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文指出异步AgenticRL中rollout与训练解耦会导致PPO所需的oldlogits丢失,破坏off-policycorrection语义并混淆两类不同约束。作者提出三条精确恢复路径及低成本的PPO-EWMA近似方案,实验证明该方案通过动态衰减与自动重置,能以极低开销逼近理想恢复效果,建议大规模训练优先采用。 综合评分: 88 文章分类: AI安全


cover_image

你的Agentic RL可能白训了:被忽略的“旧logits”陷阱

林00 林00

SecureNexusLab

2026年7月6日 09:30 江西

在小说阅读器读本章

去阅读

大规模LLM强化学习系统里,rollout和training解耦之后,PPO真正需要的old logits,可能已经丢了。

最近在arXiv上刷到一篇挺有意思的工作,来自天津大学、清华、北大和京东AI infra的合作——「Missing Old Logits in Asynchronous Agentic RL: Semantic Mismatch and Repair Methods for Off-Policy Correction」

读完之后最大的感受是,这是一个典型的”藏在工程细节里的算法陷阱”。

论文关注的问题非常具体:当异步Agentic RL系统里rollout和training被物理解耦之后,PPO类off-policy correction真正需要的「old logits」,很多时候已经丢了。

看起来像工程实现上的小问题,但本质上是一个「算法语义被系统架构破坏」的问题。

问题的起点

先快速过一下背景。

在大规模Agentic RL训练系统里,为了让吞吐跑上去,现在的做法普遍是把rollout和training拆开——vLLM、SGLang这类推理引擎负责生成数据,Megatron-LM、FSDP这类训练引擎负责更新参数。

这套架构本身不新,异步RL在游戏和机器人领域已经被研究了很多年。

但LLM Agentic RL带来了一些新的麻烦。

「第一,Training-Inference Discrepancy。」 即便rollout侧和training侧用的是同一个模型版本,两边的token概率也可能不一致。kernel实现、精度、量化、并行策略、MoE routing,随便哪个环节有差异,概率分布就对不上。

「第二,Policy Staleness。」 异步rollout、延迟更新、partial rollout这些机制意味着,当数据真正送到actor手里开始更新的时候,生成这些数据的那个”行为策略”,已经落后于当前策略好几个版本了。

这两个问题本身不是新东西。理论上,它们应该被分开处理。

在PPO里,「总importance ratio」可以分解成两个部分:一个用于修复training-inference discrepancy(记作r_d),另一个用于约束policy staleness(记作r_s)。

这套分解的逻辑很干净:一个负责修”数值错位”,一个负责控”更新幅度”。

「但问题来了:这套分解成立的前提是,你能拿到生成这些token时对应的training-side old logits。」

而在异步系统里,这个前提经常不成立。

为什么old logits会丢

这本质上是系统架构演进带来的副作用。

在同步或近同步训练里,模型更新和样本生成挨得近,old logits随时可以重新算。但在现代异步Agentic RL系统里:

  • rollout和training被物理拆开,跑在不同的集群上
  • rollout队列可能跨越多个模型版本
  • 一条轨迹可能是partial rollout,横跨多个参数版本
  • actor更新时,早先版本的training-side logits可能已经被丢弃或者无法恢复

结果就是,你手里没有真正的old policy了。

你只能用一个proxy policy凑合。

然后问题就变成了:如果reference policy本身已经错位,那么基于它做的discrepancy mask和PPO clipping,究竟在约束什么?

两类不同性质的约束被混在一起了

这的一个核心观点是,「现有PPO-style off-policy correction里其实有两类不同性质的约束,它们不应该被混在一起」

「第一类是Discrepancy constraint。」 它关注的是rollout侧分布和training侧分布差了多少,用来过滤”数值上不可信”的token。这种约束应该围绕1对称,因为它和advantage正负无关。

直觉上,这种约束应该围绕1对称,因为它和advantage正负无关。

「第二类是Staleness constraint。」 它关注的是当前策略和历史行为策略之间的距离,实现PPO意义上的trust-region约束。这种约束天然带有对advantage符号敏感的clipping结构,因此会天然带有对advantage符号敏感的clipping结构。

一个是修”训练/推理错位”,一个是控”策略更新幅度”。「它们本质上不是一回事。」

它们不应该被混成同一个proxy ratio去解释。

一个关键结论是,discrepancy repair不能替代staleness correction。discrepancy mask是对称的,PPO clipping是跟advantage符号相关的非对称约束。即使二者数值上看起来都像”过滤异常ratio”,它们也不是同一种约束,不能互相替代。

更糟的是,一旦old logits缺失,你就会被迫使用某个proxy policy,同时把这两个不同目标都压到这个proxy上。最后得到的不是一个更干净的correction,而是两个机制相互干扰:mask会改变clip的有效工作区间,clip也会影响被保留下来的token分布。

所以从这个角度看,异步Agentic RL真正的问题不是”off-policy correction不够强”,而是:

「你在做correction时,使用的reference policy语义已经不干净了。」

如何精确恢复old logits:三条系统路径

如果问题的根源在于old logits丢了,那自然思路就是把它找回来。

论文讨论了三种可行路径。

「Snapshot-based version tracking」是最直接的方法:保存历史参数快照,并在训练时重新加载对应版本,显式恢复生成轨迹时的training-side old logits。

这个方案语义最干净,也最接近理想状态。但它需要额外CPU/host内存,带来频繁版本切换。在partial rollout场景下,一条样本可能跨多个版本,进一步放大I/O和调度开销。

「Dedicated old-logit model」是第二条路:单独维护一个用于计算old logits的模型,让主actor继续训练,同时把old-logit computation独立出来。它可以和训练阶段做一定overlap,减少对主训练路径的阻塞,但需要额外模型资源和更复杂的资源分配。

「Synchronization via partial rollout interruption」是第三条路:在某个版本真正消失之前,临时中断rollout,回收partial trajectory,用当前仍驻留的旧版本补算精确logits。这个方案避免长期保存历史权重,但会引入同步stall,破坏rollout并行性。

这三种方案都能更精确地解决问题,但指向同一个事实:精确old-logit recovery是可行的,系统成本并不低。

低成本近似:Revised PPO-EWMA

既然精确恢复太贵,一个更现实的问题就是,能不能找到一个近似reference policy,它虽然不等于真实old policy,但至少比现有proxy更合理。

论文的回答是使用「PPO-EWMA」

这里的核心想法并不是”假装恢复了old logits”,而是构造一个更平滑、同时更接近异步版本窗口中心的参考策略π_prox,并用它同时承担staleness correction和discrepancy repair的参考。

相比简单的Linear_prox,论文更强调两点改进。

第一,「根据staleness window选择EWMA衰减系数」。不是固定使用一个很大的经验衰减,而是让β_prox和系统里的实际异步窗口长度对齐,使这个proxy policy更接近rollout数据所处版本区间的”中间位置”。

第二,「加入自动reset机制」。EWMA虽然平滑,但也可能越积越旧。历史版本积累过多之后,π_prox / μ_old会越来越偏,导致Train-Infer Mask大量掉点,最后把训练搞崩。

因此需要持续监控Train-Infer Mask保留下来的token比例。当这个比例低于阈值时,直接把EWMA reference reset到当前actor。

这个设计的本质是,平时让EWMA提供更平滑的参考,一旦reference漂得太远,就及时重心归位。这让PPO-EWMA既保留了低成本优势,又避免proxy reference长期失真。

实验设置

论文在两类代表性backbone上进行了实验:dense模型Qwen3-4B,MoE模型Qwen3-30B-A3B。

评测任务覆盖多个Agentic benchmark,包括tau²-Bench的retail / airline / telecom,以及VitaBench的in-store / delivery。

同时,显式控制异步训练中的最大版本间隔,使实验能更集中地观察old-logit missing会带来什么问题,以及exact recovery和approximate reference的差别到底有多大。

比较的主要方法包括Decoupled PPO、Linear_prox、PPO-EWMA和理想化精确old-logit恢复方案Snapshot。

主要结果

整体实验结果非常清楚。

在Qwen3-4B上,PPO-EWMA在多个指标上稳定优于Decoupled PPO和Linear_prox:retail上取得最好的pass@4,VitaBench in-store上取得最好的pass@2,telecom上达到并列最优。

在Qwen3-30B-A3B上,PPO-EWMA依然保持优势:airline split上表现最强,retail pass@4上达到最优,telecom avg@2和pass@2上也达到practical methods中的最优。

更重要的是,它在多个任务上已经开始逼近理想化Snapshot的效果。这说明,即便拿不到真实old logits,只要reference policy构造得更合理,依然可以恢复很大一部分decoupled correction的收益。

下表汇总了dense Qwen3-4B和MoE Qwen3-30B-A3B上的主要结果。Snapshot*表示理想化的精确old-logit recovery,加粗项表示同一backbone下practical methods中的最优结果。

| Backbone | Method | Retail avg/pass | Airline avg/pass | Telecom avg/pass | In-store avg/pass | Delivery avg/pass | | — | — | — | — | — | — | — | | Qwen3-4B | Decoupled PPO | 63.96 / 88.60 | 53.5 / 72 | 40 / 50 | 19.83 / 37 | 19.56 / 33 | | Qwen3-4B | Linear_prox | 64.40 / 86.84 | 54 / 72 | 37.5 / 50 | 22.37 / 40 | 19.10 / 28 | | Qwen3-4B | 「PPO-EWMA」 | 「65.72 / 90.35」 | 54 / 74 | 「42.5 / 52.5」 | 「25 / 50」 | 「25.88 / 39」 | | Qwen3-4B | Snapshot* | 66.23 / 89.47 | 「56 / 76」 | 42.5 / 52.5 | 28.89 / 47 | 27.33 / 42 | | Qwen3-30B-A3B | Decoupled PPO | 65.43 / 89.47 | 57 / 76 | 44.75 / 55 | 18.28 / 32 | 25.88 / 39 | | Qwen3-30B-A3B | Linear_prox | 65.8 / 87.7 | 53.5 / 74 | 44 / 55 | 31.47 / 47 | 20.74 / 33 | | Qwen3-30B-A3B | 「PPO-EWMA」 | 「67.82 / 92.1」 | 「60 / 82」 | 「45 / 57.5」 | 「33.41 / 48」 | 「28.49 / 43」 | | Qwen3-30B-A3B | Snapshot* | 69.70 / 92.1 | 59 / 80 | 45 / 57.5 | 34.62 / 50 | 30.74 / 45 |

论文还专门测了系统开销,结果也很有代表性。

对于Snapshot,虽然校正最准确,但系统成本显著增加:4B模型CPU存储约40GB,30B MoE模型CPU存储约76.4GB,额外时间开销分别约25秒和150秒。

相比之下,PPO-EWMA的资源代价要轻得多:4B约7.9GB,30B约15.2GB,额外时间分别约8秒和34秒。

也就是说,Snapshot更像是一个”理想上界”和分析工具,而不是最适合大规模生产部署的默认方案。

下表展示了精确old-logit recovery和PPO-EWMA的系统成本差异。Snapshot语义更干净,但存储和恢复时间都显著更高,PPO-EWMA则提供了更现实的性能-成本权衡。

| Metric | Snapshot 4B | Snapshot 30B | PPO-EWMA 4B | PPO-EWMA 30B | | — | — | — | — | — | | Switch latency (s) | 7 | 14.2 | 7 | 14.2 | | CPU storage (GB) | 40 | 76.4 | 7.9 | 15.2 | | Extra time (s) | 25 | 150 | 8 | 34 |

Dedicated old-logit model的资源切分结果如下:

| Resource ratio | Old-logit (s) | Update (s) | Single (s) | Overlap (s) | Change | | — | — | — | — | — | — | | 1:2 | 243 | 272 | 305 | 284 | -6.8% | | 1:3 | 243 | 206 | 237 | 254 | +7.17% |

单独维护old-logit model虽然可以部分overlap计算,但收益高度依赖资源切分比例,本身也需要更多系统支持,因此未必总是划算。这也是论文最终更强调PPO-EWMA practical value的原因。

阈值分析

借助Snapshot恢复出来的精确old logits,论文进一步分析了discrepancy threshold和stale-policy threshold的相互作用。

实验显示,更宽松的discrepancy threshold会保留更多token,前期学习更快,但它也会放进更多偏差较大的off-policy token,后期更容易不稳定。更严格的threshold前期更慢,但retained-token dynamics更平稳。

同时,mask和clip并不是彼此独立的两个开关。在相同discrepancy threshold下,更宽松的stale-policy threshold会让更多问题token在早期存活,这反过来会把Train-Infer Mask拉低。后期clip变强之后,又会对剩余更新形成抑制,使mask恢复。

这进一步说明,当reference policy不准确时,mask和clip的耦合会更复杂。

PPO-EWMA消融

论文还专门分析了PPO-EWMA的训练动态,重点看了三个信号:task success、Train-Infer Mask和PPO-CLIP ratio。

结果表明,如果只用EWMA而不reset,proxy reference可能会逐渐漂移得太远,最终导致Train-Infer Mask崩掉。

加入自动reset之后,只需要少量重置事件,就能把reference拉回合理区域,同时保住前期EWMA带来的优化收益。

这个结果非常符合直觉:纯当前策略不够稳,纯历史平滑又可能过旧,合理的办法不是二选一,而是”平时做平滑,过旧时重置”。

核心观点

如果只用一句话概括这篇工作:

「在异步Agentic RL里,真正被忽视的问题不是off-policy correction本身,而是你做correction时所依赖的old logits语义已经失真。」

围绕这个问题,这做了三件事:

  1. 给出一个统一视角,明确区分training-inference discrepancy correction和policy staleness correction
  2. 指出异步系统中的missing-old-logit problem会破坏这种分解
  3. 从精确恢复和低成本近似两个方向,给出一套更系统的解决思路

总结与未来展望

本文关注的是异步Agentic RL中一个非常底层但关键的问题:old logits缺失。

分析表明,这个问题会直接破坏decoupled off-policy correction的语义基础。基于此,一方面讨论了三种精确恢复old logits的系统路径,另一方面提出了更适合实际大规模训练的revised PPO-EWMA方案。

实验结果说明,精确恢复old logits的确能提升correction fidelity。但从性能-成本权衡来看,PPO-EWMA是更现实、更易落地的方案。


点个「在看」再走


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:SecureNexusLab 林00 林00《你的Agentic RL可能白训了:被忽略的“旧logits”陷阱》

评论:0   参与:  0