當非同步 Agentic RL 遇上「舊策略失憶」:重新理解 Off-Policy Correction

歡迎關注我們關於非同步 Agentic RL 的最新工作。本文聚焦一個在大規模 LLM 強化學習系統中非常基礎、卻經常被忽略的問題:當 rollout 和 training 非同步解耦之後,PPO 類 off-policy correction 真正需要的 old logits,很多時候已經不見了。

論文:Missing Old Logits in Asynchronous Agentic RL: Semantic Mismatch and Repair Methods for Off-Policy Correction

程式碼:https://github.com/millioniron/async_fixedic

這看起來像是工程細節,但它會直接影響 PPO 目標裡兩個本應彼此獨立的校正過程:training-inference discrepancy correction 和 policy staleness correction。一旦 old logits 丟失,這兩個過程就會被混在一起,導致本來語意清晰的解耦校正失效。

圍繞這個問題,我們系統性地分析了現有非同步 Agentic RL 中的幾類 off-policy correction 範式,討論了三種精確恢復 old logits 的路徑,並提出一種成本更低、更適合大規模訓練的近似方案:PPO-EWMA。

同步 RL 與非同步 RL 中 old logits 的差異
同步 RL 與非同步 RL 中 old logits 的差異

我們的實驗顯示:在 Dense 和 MoE 兩類 LLM 上,經過修正的 PPO-EWMA 在效能和系統開銷之間取得了更好的平衡;而理想化的 Snapshot 方案則幫助我們驗證了一個關鍵判斷:問題的核心不是「要不要做 correction」,而是「你用來做 correction 的 reference policy 到底是不是語意正確的」。

TLDR

現代 Agentic RL 訓練系統中,rollout 往往由 vLLM、SGLang 等推理引擎負責,訓練則由 Megatron-LM、FSDP 等訓練引擎負責。與此同時,為了提升吞吐量,訓練流程常常採用非同步 rollout、延遲更新、部分 rollout 等機制。

這會帶來兩個彼此不同的問題:

1、Training-Inference Discrepancy:即便 rollout 端和 training 端名義上使用的是同一個模型版本,兩者的 token 機率仍可能因為 kernel、精度、量化、平行策略、MoE routing 等差異而不一致。

2、Policy Staleness:當資料真正送到 actor 更新時,生成這些樣本的行為策略往往已經落後於當前訓練策略。

理論上,這兩個問題應該分別處理。理想情況下,總 importance ratio 應該分解為兩個部分:一個用於修復 training-inference discrepancy,另一個用於約束 policy staleness。

但在真實非同步系統中,這個分解依賴一個關鍵前提:你必須拿得到生成這些 token 時對應的 training-side old logits。

而我們的核心發現是:在非同步 Agentic RL 中,這個前提往往不成立。old logits 的缺失會讓 discrepancy repair 和 staleness correction 混雜在一起,破壞解耦校正的原始語意。

非同步設定下 reference policy 的錯位
非同步設定下 reference policy 的錯位

為了解決這個問題,我們做了兩件事:從系統角度分析三種精確恢復 old logits 的路徑;從演算法角度提出一個更適合非同步視窗的 revised PPO-EWMA 近似參考策略。

在 Qwen3-4B 和 Qwen3-30B-A3B 上,我們發現 PPO-EWMA 能穩定優於常規 Decoupled PPO 和 Linear_prox,並在不少任務上逼近理想化的 Snapshot 上界。

研究動機:為什麼非同步 RL 裡的 old logits 會成為核心問題?

PPO 類方法之所以穩定,一個重要原因是:它的 importance ratio 和 clipping 機制,預設你知道「這些樣本到底是由哪個舊策略生成的」。

在同步或者近同步訓練裡,這件事通常不難成立。但在今天的大規模 Agentic RL 系統裡,訓練範式已經改變了:

  • • rollout 和 training 被物理解耦
  • • rollout 佇列可能跨越多個版本
  • • 一條軌跡可能是部分 rollout,甚至橫跨多個參數版本
  • • actor 更新時,早先版本的 training-side logits 可能已經不可恢復

於是,一個原本很自然的分解會失去語意前提:

  • • r_d:修復 training-inference discrepancy
  • • r_s:修復 policy staleness

表面上你還在進行解耦校正,但實際上,你使用的 reference policy 已經不是「真正的舊策略」了。這就帶來一個關鍵問題:

如果 reference policy 本身已經錯位,那麼基於它做出來的 discrepancy mask 和 PPO clipping,究竟還在約束什麼?

統一視角:Off-Policy Correction 裡其實有兩類不同約束

本文的一個核心觀點是,現有 PPO-style off-policy correction 可以放到一個統一視角下理解:它們都在試圖約束兩個東西,但這兩個東西的語意不同。

第一類是 Discrepancy constraint。它關注 rollout 端分布和 training 端分布到底差了多少,用來過濾因訓練/推理不一致而導致的「數值上不可信」的 token。直覺上,這種約束應該圍繞 1 對稱,因為它和 advantage 正負無關。

第二類是 Staleness constraint。它關注當前策略和歷史行為策略之間的距離,用來實現 PPO 意義下的信賴區間約束,因此會天然帶有對 advantage 符號敏感的 clipping 結構。

PPO clipping 與 discrepancy mask 的不同有效區域
PPO clipping 與 discrepancy mask 的不同有效區域

也就是說,這兩類約束雖然都寫在 ratio 上,但本質上不是同一回事:一個是在修復「訓練/推理錯位」,另一個是在控制「策略更新幅度」。它們不應該被混成同一個 proxy ratio 去解釋。

一個關鍵結論:Discrepancy Repair 不能替代 Staleness Correction

有些做法會傾向於認為,只要把 training-inference mismatch 控好,很多 off-policy 問題就能順手緩解。但我們的分析顯示,這個想法並不成立。

原因在於:discrepancy mask 通常是對稱的,而 PPO clipping 通常是與 advantage 符號相關的非對稱約束。即使兩者數值上看起來都像「過濾異常 ratio」,它們也不是同一種約束,不能互相替代。

更糟的是,一旦 old logits 缺失,你就會被迫使用某個代理策略,同時把這兩個不同目標都壓到這個代理上。最後得到的不是一個更乾淨的校正,而是兩個機制相互干擾:mask 會改變 clip 的有效工作區間,clip 也會影響被保留下來的 token 分布。

所以從這個角度看,非同步 Agentic RL 真正的問題不是「off-policy correction 不夠強」,而是:

你在做校正時,使用的 reference policy 語意已經不乾淨了。

如何精確恢復 old logits?三條系統路徑

如果問題的根源在於 old logits 丟了,那麼一個自然的思路就是把它找回來。我們在文中討論了三種可行路徑。

三種精確恢復 old logits 的系統路徑
三種精確恢復 old logits 的系統路徑

Snapshot-based version tracking 是最直接的方法:保存歷史參數快照,並在訓練時重新載入對應版本,顯式恢復生成軌跡時的 training-side old logits。

這個方案語意最乾淨,也最接近理想狀態。但它需要額外的 CPU/host 記憶體,帶來頻繁的版本切換;在部分 rollout 情境下,一條樣本可能跨越多個版本,進一步放大 I/O 和排程開銷。

Dedicated old-logit model 是第二條路:單獨維護一個用於計算 old logits 的模型,讓主 actor 繼續訓練,同時把 old-logit computation 獨立出來。它可以和訓練階段做一定 overlap,減少對主訓練路徑的阻塞,但需要額外的模型資源和更複雜的資源分配。

Synchronization via partial rollout interruption 是第三條路:在某個版本真正消失之前,臨時中斷 rollout,回收部分軌跡,用當前仍駐留的舊版本補算精確 logits。這個方案避免了長期保存歷史權重,但會引入同步空轉,破壞 rollout 的平行性,並帶來資源切換和排程擾動。

這三種方案都能更精確地解決問題,但它們指向同一個事實:精確的 old-logit recovery 是可行的,但系統成本並不低。

低成本近似:為什麼我們選擇 Revised PPO-EWMA?

既然精確恢復太昂貴,一個更現實的問題就是:能不能找到一個近似的 reference policy,它雖然不等於真實舊策略,但至少比現有代理更合理?

我們的答案是使用 PPO-EWMA。

這裡的核心想法並不是「假裝恢復了 old logits」,而是構造一個更平滑、同時更接近非同步版本視窗中心的參考策略 pi_prox,並用它同時承擔 staleness correction 和 discrepancy repair 的參考。

相比簡單的 Linear_prox,我們更強調兩點。

第一,根據 staleness window 選擇 EWMA 衰減係數。我們不是固定使用一個很大的經驗衰減,而是讓 beta_prox 和系統裡的實際非同步視窗長度對齊,使這個 proxy policy 更接近 rollout 資料所處版本區間的「中間位置」。

第二,加入自動 reset 機制。EWMA 雖然平滑,但也可能越積越舊。歷史版本積累過多之後,pi_prox / mu_old 會越來越偏,導致 Train-Infer Mask 大量掉點,最後把訓練搞崩。

因此,我們持續監控 Train-Infer Mask 保留下來的 token 比例;當這個比例低於閾值時,直接把 EWMA reference 重置到當前 actor。

這個設計的本質是:平時讓 EWMA 提供更平滑的參考,一旦 reference 漂得太遠,就及時重心歸位。這讓 PPO-EWMA 既保留了低成本優勢,又避免 proxy reference 長期失真。

實驗設定:我們如何驗證這個問題?

我們在兩類代表性骨幹網路上進行了實驗:

  • • dense 模型:Qwen3-4B
  • • MoE 模型:Qwen3-30B-A3B

評測任務涵蓋多個 Agentic benchmark,包括 tau^2-Bench 的零售/航空/電信,以及 VitaBench 的店內/外送。

同時,我們顯式控制非同步訓練中的最大版本間隔,使實驗能更集中地觀察 old-logit missing 會帶來什麼問題,以及精確恢復和近似參考的差別到底有多大。

我們比較的主要方法包括 Decoupled PPO、Linear_prox、PPO-EWMA 和理想化精確 old-logit 恢復方案 Snapshot。

主要結果:PPO-EWMA 在效能和成本之間取得更佳平衡

整體實驗結果非常清楚。

在 Qwen3-4B 上,PPO-EWMA 在多個指標上穩定優於 Decoupled PPO 和 Linear_prox:零售任務上取得最好的 pass@4,VitaBench 店內任務上取得最好的 pass@2,電信任務上達到並列最優。

在 Qwen3-30B-A3B 上,PPO-EWMA 依然保持優勢:航空分項上表現最強,零售 pass@4 上達到最優,電信 avg@2 和 pass@2 上也達到實用方法中的最優。

更重要的是,它在多個任務上已經開始逼近理想化 Snapshot 的效果。這說明:

即便拿不到真實的 old logits,只要 reference policy 構造得更合理,依然可以恢復很大一部分解耦校正的收益。

下表彙整了 dense Qwen3-4B 和 MoE Qwen3-30B-A3B 上的主要結果。Snapshot* 表示理想化的精確 old-logit recovery;加粗項表示同一骨幹網路下實用方法中的最優結果。

骨幹網路
方法
零售 avg/pass
航空 avg/pass
電信 avg/pass
店內 avg/pass
外送 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

一個很有意思的結果:精確 old logits 確實更好,但代價更高

我們還專門測試了系統開銷,結果也很有代表性。

對於 Snapshot,雖然校正最準確,但系統成本顯著增加:4B 模型 CPU 儲存約 40 GB,30B MoE 模型 CPU 儲存約 76.4 GB,額外時間開銷分別約為 25 秒和 150 秒。

相比之下,PPO-EWMA 的資源代價要輕得多:4B 約 7.9 GB,30B 約 15.2 GB,額外時間分別約 8 秒和 34 秒。

也就是說,Snapshot 更像是一個「理想上界」和分析工具,而非最適合大規模生產部署的預設方案。

下表展示了精確 old-logit recovery 和 PPO-EWMA 的系統成本差異。Snapshot 語意更乾淨,但儲存和恢復時間都顯著更高;PPO-EWMA 則提供了更現實的效能-成本權衡。

指標
Snapshot 4B
Snapshot 30B
PPO-EWMA 4B
PPO-EWMA 30B
切換延遲(秒)
7
14.2
7
14.2
CPU 儲存(GB)
40
76.4
7.9
15.2
額外時間(秒)
25
150
8
34

專用 old-logit model 的資源切分結果如下:

資源比例
Old-logit(秒)
更新(秒)
單一(秒)
重疊(秒)
變化
1:2
243
272
305
284
-6.8%
1:3
243
206
237
254
+7.17%

單獨維護 old-logit model 雖然可以部分重疊運算,但收益高度依賴資源切分比例,本身也需要更多系統支援,因此未必總是划算。這也是為什麼我們最終更強調 PPO-EWMA 的實用價值。

閾值分析:為什麼 mask 和 clip 會相互影響?

藉助 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 恢復。

Discrepancy mask 與 PPO clipping 的交互
Discrepancy mask 與 PPO clipping 的交互

這進一步說明:當 reference policy 不準確時,mask 和 clip 的耦合會更複雜。

PPO-EWMA 消融實驗:為什麼自動 reset 很關鍵?

我們還專門分析了 PPO-EWMA 的訓練動態,重點看了三個訊號:任務成功率、Train-Infer Mask 和 PPO-CLIP ratio。

結果表明,如果只用 EWMA 而不 reset,proxy reference 可能會逐漸漂移得太遠,最終導致 Train-Infer Mask 崩掉。

EWMA 自動重置的效果
EWMA 自動重置的效果

加入自動 reset 之後,只需要少量重置事件,就能把 reference 拉回合理區域,同時保住前期 EWMA 帶來的優化收益。

這個結果非常符合我們的直覺:純當前策略不夠穩,純歷史平滑又可能過舊,合理的辦法不是二選一,而是「平時做平滑,過舊時重置」。

這篇工作的核心觀點

如果只用一句話概括這篇工作:

在非同步 Agentic RL 裡,真正被忽視的問題不是 off-policy correction 本身,而是你做校正時所依賴的 old logits 語意已經失真。

圍繞這個問題,我們做了三件事:

1、給出一個統一視角,明確區分 training-inference discrepancy correction 和 policy staleness correction

2、指出非同步系統中的 missing-old-logit 問題會破壞這種分解

3、從精確恢復和低成本近似兩個方向,給出一套更系統性的解決思路

總結與未來展望

本文關注的是非同步 Agentic RL 中一個非常底層但關鍵的問題:old logits 缺失。

我們的分析表明,這個問題會直接破壞解耦式 off-policy correction 的語意基礎。基於此,我們一方面討論了三種精確恢復 old logits 的系統路徑,另一方面提出了更適合實際大規模訓練的 revised PPO-EWMA 方案。

實驗結果說明:精確恢復 old logits 的確能提升校正忠實度;但從效能-成本權衡來看,PPO-EWMA 是更現實、更容易落地的方案。

未來仍有不少方向值得繼續推進,包括更極端非同步視窗下 reference policy 的構造、更複雜部分 rollout 情境中的 token-level 版本對齊、MoE routing 重播與 old-logit correction 的聯合建模,以及面向真實工業訓練疊棧的更輕量 old-logit 基礎設施。

如果你也在關注非同步 LLM RL、Agentic RL、MoE RL 或者 Off-Policy Correction,歡迎交流。

相關文章推薦

分享網址
AINews·AI 新聞聚合平台
© 2026 AINews. All rights reserved.