NVIDIA AI 發佈 Molt:一個 PyTorch 原生的智能體強化學習框架
NVIDIA NeMo 團隊發佈了 Molt,一個約 8.6K 行 RL 代碼的 PyTorch 原生智能體強化學習框架,組合 Ray、vLLM 和 NVIDIA AutoModel,目標是降低研究者在算法迭代中的工程成本。它支持普通 Python 智能體、token 精確的軌跡,吞吐量與基於 Megatron 的堆棧相當,但需注意 MoE 路由差異。
智能體強化學習研究伴隨着不斷的算法修改。新估計器、新流水線階段、新 rollout 方案層出不窮。在主流框架中,每一次修改都要貫穿訓練器、分佈式後端和 rollout 粘合層,研究者每次迭代都要承擔這些成本。
NVIDIA NeMo 團隊發佈的 Molt 直接瞄準了這一成本。它是一個 PyTorch 原生的智能體 RL 框架,設計目標非常獨特:代碼庫要足夠緊湊,讓研究者能在腦中把握整體,也讓 AI 編程助手能完整閲讀和推理。其 RL 代碼量約為 8.6K 行(通過跟蹤各框架 RL 入口的導入圖統計),相比之下 verl 約 62K 行、slime 約 25K 行、OpenRLHF 約 7.2K 行。
Molt 是否可用於部署?可以。它以 Apache 2.0 許可發佈,附帶啓動腳本、Slurm 腳本和預構建容器。但研究論文將其定位為研究基礎設施而非生產訓練服務;真正的門檻是硬件。隨附的配方假設使用 2 個節點、每節點 8 塊 H100 GPU,其中 8 塊用於訓練、8 塊用於 rollout。這意味着 Molt 面向前沿實驗室、資金充足的 AI 初創公司、金融/醫療/機器人領域的企業 AI 研究團隊以及擁有多節點 H100/H200 的學術實驗室。應用場景包括多輪工具調用智能體、代碼執行智能體、視覺語言環境(附帶的 geo3k 配方)、LLM 作為評判者的獎勵循環,以及在線策略蒸餾到更小的 student 模型。
Molt 組合了 Ray(放置與異步隊列)、vLLM(rollout)和 NVIDIA AutoModel(FSDP2 訓練),三者均未 fork,所以上游改進通過容器 pin 而非 rebase 進入。運行時是一個智能體池:一組 vLLM 引擎位於請求路由器之後,再加上一個可訓練的策略 actor。流式池保持 prompt 組在飛行中,使引擎在 actor 訓練時不會排空。部分 rollout 會暫停引擎,通過 NCCL 將 actor 分片直接廣播到每個引擎,然後恢復保留的請求而不是丟棄。
智能體本身是一個普通程序。RL 運行只需指定一個導出 AgentRunner 的 Python 模塊,其餘都是普通代碼,包括獎勵。支持兩種形式:Env 在 Gymnasium 對齊的 step() 中由框架擁有 LLM 循環;ChatAgent 則通過標準 OpenAI 或 Anthropic SDK 由用户擁有循環。Molt 啓動一個支持兩種線路協議的迴環服務器,每個請求在服務端解碼為 token 精確的累積。當長程智能體壓縮上下文並重寫前綴時,服務器會自動密封當前段並打開新段。
三個正確性不變量支撐着設計:token 同一性(採樣 token id 定義軌跡,而非重新 token 化的轉錄)、策略版本語義(可訓練 token 保留其行為策略的對數概率,異步使用在序列級門控後逐 token 修正)、前向一致性(rollout 與 actor 必須對模型語義一致)。對於混合專家(MoE)策略,最後一個不變量最重要:rollout 和訓練路由器獨立選擇專家,小的數值差異可能翻轉 top-k 選擇。Molt 採用 rollout 路由重放:vLLM 返回每個 token 的專家 id,訓練前向重放這些 id。
Molt 是 Apache 2.0 許可的智能體 RL 框架,RL 代碼約 8.6K 行,約為 verl 的 1/7。Ray、vLLM 和 NVIDIA AutoModel 組合而不 fork,上游發佈以容器 pin 引入。智能體是普通 Python,標準 OpenAI/Anthropic SDK 可直接訓練。吞吐量與基於 Megatron 的堆棧統計相當,並披露了 MoE 不匹配注意事項。規模只是一個標誌:同一個循環可以在 --fsdp.ep_size 256 下運行稠密 4B 模型和 700B MoE。