![]()
大語言模型正在從 “回答問題” 走向 “完成任務”。在 Agentic RL 后訓練中,模型不僅生成文本,還會調用搜索、代碼執行等外部工具,根據環境返回繼續推理。這樣的交互讓模型擁有更強的行動能力,也讓訓練系統面對一種比普通 RLHF 更不穩定的工作負載:同一批請求可能產生長度相差數十倍的軌跡,少量超長軌跡拖慢整個 rollout;與此同時,訓練和 rollout 對 GPU 的需求還會隨著策略演化不斷變化。
針對上述問題,來自香港中文大學和香港恒生大學的研究團隊提出了Libra,一個面向 Agentic RL Post-Training 的資源管理系統。Libra 不再把 rollout 視作固定瓶頸,而是將訓練與 rollout 作為一個耦合系統統一優化,并通過異構推理集群、因果感知調度和彈性資源切換,讓有限 GPU 資源隨著實時工作負載動態流動。
在 48 張 NVIDIA A800 GPU 上,Libra 在 Search-R1、DAPO-Math-17K 和 R2E-Gym 三類任務中均取得最高吞吐,最高達到基線的3.0 倍;在相近最終獎勵下,達到目標獎勵所需時間最多縮短至基線的1/2.5。目前論文與代碼均已公開。
![]()
- 論文標題:Libra: Efficient Resource Management for Agentic RL Post-Training
- 論文鏈接:https://arxiv.org/abs/2606.03077
- 開源代碼: https://github.com/NetX-lab/Libra
![]()
圖 1:Libra 系統總覽。系統由全局資源規劃器、異構 rollout 集群、C-MLFQ 調度器和彈性執行機制組成。圖片來源:論文。
Agentic RL 帶來的不只是 “更長的輸出”
一個標準 RL 后訓練迭代通常包含軌跡生成、軌跡評估和策略更新。由于評估階段相對輕量,系統效率主要取決于兩個環節:rollout 能多快地產生軌跡,以及 training 能多快地吸收這些軌跡并更新策略。
在傳統推理中,請求長度通常與輸入提示具有較強相關性;但在 Agentic RL 中,軌跡長度會被運行時事件改變。例如,搜索工具可能返回大段內容,代碼執行可能失敗并觸發多輪修復,模型也可能根據環境反饋擴展后續推理。因此,軌跡最終長度在生成前很難可靠預測。
研究團隊在 R2E-Gym 上觀察到,最長的 10% 軌跡占據了超過 50% 的 rollout 時間。更重要的是,這種分布并不穩定:隨著策略在訓練中逐漸改變,模型的工具使用方式和推理長度也會發生漂移。
這種漂移會放大 rollout 與 training 的結構性差異。實驗顯示,當序列長度從 1K 增長到 32K token 時,rollout 延遲增長了 95 倍,而訓練時間僅增長 3.9 倍。原因在于 rollout 需要自回歸解碼,對序列長度和 KV cache 更敏感;訓練則可以通過 batching 攤薄長度變化帶來的影響。
![]()
圖 2:(a)隨著序列變長,rollout 延遲增長遠快于訓練;(b)訓練過程中,平均序列長度和 rollout 時間持續漂移。圖片來源:論文。
這意味著,一個在訓練初期合理的靜態 GPU 切分,可能在數百步之后變得嚴重失衡。如果 rollout 變慢,訓練 GPU 會等待新數據;如果訓練變慢,rollout 產生的軌跡又會在隊列中積壓。端到端迭代時間實際上由二者中更慢的一方決定:
T_iter = max (T_rollout, T_train)
因此,問題不能只靠 “繼續優化 rollout” 解決,而需要從全局視角動態尋找訓練與 rollout 的平衡點。
全局資源規劃:同時決定訓練和 rollout 怎么用 GPU
Libra 的第一項核心設計是Global Resource Planner(全局資源規劃器)。在固定 GPU 預算下,它聯合搜索:
- 多少 GPU 分配給訓練,多少分配給 rollout;
- 訓練側采用怎樣的 TP、PP、DP,以及 MoE 模型的 EP 組合;
- rollout 側應當部署多少個 TP-1、TP-2、TP-4 或 TP-8 推理實例;
- 當前配置的訓練時間、rollout 時間和最終迭代 makespan。
訓練側使用拓撲感知的決策樹枚舉可行并行策略,并根據顯存、通信開銷和 pipeline bubble 等約束提前剪枝。rollout 側則把請求按歷史長度排序,用動態規劃尋找異構 TP 實例和請求區間之間的最優分配。底層 Cost Evaluator 同時建模兩側的執行時間,讓規劃器能夠比較不同全局配置。
規劃并不是只在啟動時運行一次。Libra 會周期性讀取最新軌跡統計,重新求解資源配置;只有當預計收益超過重配置成本時,才真正觸發資源移動。這樣既能追蹤 workload drift,也能避免頻繁切換帶來的抖動。
Elastic Hybrid Pool:不重建核心通信組,也能移動算力
“算出新配置” 并不等于 “能夠低成本執行新配置”。傳統分布式訓練中,加入或移除訓練 worker 往往意味著重建通信組并重新分發狀態,頻繁操作代價過高。
Libra 將資源劃分為三個池:
- Core Training Pool:保持固定的訓練拓撲;
- Core Rollout Pool:承擔穩定的異構軌跡生成;
- Elastic Hybrid Pool:根據瓶頸在 rollout 與 training 模式間切換。
其關鍵原則是保持核心訓練拓撲不變。Hybrid worker 以完整的數據并行副本形式加入,不改變核心 TP/PP 結構。系統進一步把副本內部的 NCCL 通信與副本之間的梯度交換解耦,成員變化只發生在獨立的跨副本通信域。
當 rollout worker 重新加入訓練時,它會異步獲取最新模型和優化器快照。恢復期間,核心訓練仍然繼續推進;加入中的 worker 通過側通道發送零梯度占位,使核心 All-Reduce 與 “該 worker 尚未加入” 時在數學上保持等價。狀態對齊后,它再從下一步開始貢獻真實梯度。
不預測最終長度,而在工具返回時做因果路由
Libra 的第二項核心設計是C-MLFQ(Causality-Driven Multi-Level Feedback Queue)。
傳統長度預測方法試圖在請求開始時猜測最終長度,但 Agentic RL 的關鍵變化往往發生在中途。Libra 的觀察是:工具返回大小、成功或失敗狀態并非普通相關特征,而是后續軌跡擴展的直接因果信號。例如,大 payload 會立刻增加上下文,工具失敗則可能觸發重試、診斷和代碼修改。
C-MLFQ 用歷史軌跡建立一棵因果感知前綴樹。樹節點由 prompt ID 和此前所有工具返回狀態的有序序列確定,并保存從當前節點到軌跡結束的剩余長度分布。運行時流程分為三步:
- 請求開始時先進入適合短序列的小 TP bucket;
- 每次工具返回后,根據工具類型、payload 大小和執行狀態查詢前綴樹;
- 只有當剩余長度的均值與 P90 指向同一 bucket 時才遷移,否則繼續留在當前 bucket;軌跡結束后再離線更新樹。
![]()
圖 3:C-MLFQ 在工具返回點讀取因果狀態并決定是否遷移請求,完成后再更新前綴樹。圖片來源:論文。
這種設計避免了額外模型推理,也不需要隨著策略變化反復訓練長度預測器。相比傳統 MLFQ 等到長度越界后逐級遷移,C-MLFQ 可以在工具返回后更早做出一次性決策。
在 Search-R1 上,C-MLFQ 的單次路由準確率達到 91.1%,明顯高于基于 embedding 的長度預測方法(65.2%)和傳統 MLFQ(44.8%);與此同時,其遷移 token 比例只有 8.2%,系統吞吐達到 2700 token/s。
48 張 A800 上的端到端結果
團隊在 6 個節點、共 48 張 NVIDIA A800-SXM4-80GB GPU 上進行實驗。節點內使用 NVLink/NVSwitch,節點間使用支持 GPUDirect RDMA 的 200 Gb/s RoCE 網絡。實驗采用 GRPO,最大模型長度為 40960 token,每個 prompt 采樣 16 條軌跡。
工作負載覆蓋三個差異明顯的 Agentic RL 場景:
- Search-R1:模型需要多輪生成搜索查詢并利用外部知識;
- R2E-Gym:軟件工程 Agent 操作真實代碼倉庫并調用 Bash、Python 等工具;
- DAPO-Math-17K:包含 17K 道競賽級數學問題。
對比方法包括 verl-Colocated、verl-Static-Uniform、verl-Greedy-Heuristic,以及基于初始 workload 選出最優靜態配置的 AReaL-Static-Optimal。
![]()
圖 4:Libra 在 Search-R1、DAPO-Math-17K 和 R2E-Gym 上的吞吐及獎勵收斂結果。紅線為 Libra。圖片來源:論文。
在 Search-R1 上,Libra 的平均吞吐約為 2700 token/s,相比 AReaL-Static-Optimal 提升約 63%,相比 verl-Greedy-Heuristic 提升 80%,相比 verl-Colocated 提升 300%。在 DAPO-Math-17K 和 R2E-Gym 上,Libra 同樣保持最高吞吐。
由于各方法訓練同一模型并執行相同步數,它們最終達到的獎勵相近,區別主要是 wall-clock time。Libra 在 Search-R1、DAPO-Math-17K 和 R2E-Gym 上分別用 17.9、26.7 和 63.2 小時完成訓練,達到目標獎勵的速度最高提升 2.5 倍。
消融實驗進一步說明了各模塊的作用。在 R2E-Gym 上,Static-Uniform 基線吞吐為 423 token/s;加入同構資源規劃后提高到 510 token/s,異構 TP 再帶來 41 token/s,C-MLFQ 增加 115 token/s,最終彈性執行繼續增加 97 token/s,使完整 Libra 達到 763 token/s,總體提升約 80.4%。
圖 5:從靜態均分逐步加入全局規劃、異構 TP、C-MLFQ 和彈性執行后的吞吐變化。圖片來源:論文。
![]()
系統實現與開源
Libra 包含約 1.3 萬行 Python 和 C++/CUDA 代碼,核心 RL 訓練循環基于 verl,生成側使用 vLLM,訓練側使用 Megatron-LM。開源倉庫提供了 Slurm 與非 Slurm Quick Start、數據準備、配置參考、可觀測性說明及實驗腳本。
Libra 的核心觀點是:在 Agentic RL 中,rollout 并不是永恒不變的系統瓶頸。隨著策略和軌跡分布演化,真正的瓶頸會在訓練與 rollout 之間移動。只有同時解決跨階段資源分配、階段內部異構執行以及低成本資源切換,系統才能在長期訓練過程中持續接近最優狀態。
作者簡介
作者團隊由陳凱文、譚昕、李敬宗和徐宏組成,來自香港中文大學與香港恒生大學,長期從事 AI 基礎設施、機器學習系統、資源調度、大模型推理、分布式訓練及計算機網絡研究。第一作者陳凱文為香港中文大學博士生,團隊成員成果發表于 SIGCOMM、ASPLOS、NSDI、ICML 等國際會議。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.