開源框架實現100%可復現的穩定RL訓練!
下圖是基于Qwen3-8B進行的重復實驗。兩次運行,一條曲線,實現了結果的完美重合,為需要高精度復現的實驗場景提供了可靠保障。
這就是SGLang團隊聯合slime團隊的最新開源成果。
近期,Thinking Machines Lab (由 OpenAI 前 CTO Mira Murati 創立) 發布了一篇文章——《克服LLM推理中的不確定性》,指出問題的核心在于缺乏批次不變性(batch invariance)。
自從這篇博客發布后,業界反響熱烈,一直期待開源推理引擎能實現穩定可用的確定性推理,或者更進一步,實現完全可復現的RL訓練。而現在,SGLang和slime一起給出了答案。
SGLang團隊在Thinking Machines Lab發布的批次不變算子基礎之上,通過定制一系列注意力算子和采樣邏輯,實現了完全確定性推理。該實現同時保持與分塊預填充 (chunked prefill)、CUDA Graph、Radix Cache 和非貪婪采樣 (non-greedy sampling)等關鍵功能的兼容性。
利用CUDA Graph,SGLang可以實現2.8倍的加速。與 Thinking Machines Lab博客中報告的61.5%性能下降相比,SGLang在FlashInfer和FlashAttention 3后端平均僅有34.35%的性能下降。
在此基礎上,SGLang團隊聯合slime團隊一起,以極少代碼實現了完全可復現的穩定RL訓練,具體細節現在全面公開。
問題的本質:為什么LLM推理不確定?
從大語言模型(LLM)推理中獲得一致輸出的能力越來越重要。例如,推理結果的不確定性可能會隱式地將在線策略強化學習(RL)轉換為離線策略RL。然而,即使將溫度降到0,由于使用了動態批處理(Dynamic Batching) 和基數緩存(Radix Cache),采樣仍然不是確定性的。
Thinking Machines Lab的研究發現,不確定性的最大來源是變化的批次大小:即使用戶重復提交相同的提示,輸出也可能在不同的運行中有所變化,因為請求可能與其他用戶的請求一起批處理,批次大小的差異導致不確定的推理結果。
更具體地說,不同的批次大小會影響內核的歸約(reduction)分割過程。這導致每個歸約塊的順序和大小變化,由于浮點運算的非結合性,可能導致不確定的輸出。為了解決這個問題,他們實現了批次不變(batch invariant) 的歸約算子(RMSNorm、Matmul)。這些算子也作為配套庫發布供外部集成。
在Thinking Machines Lab工作的基礎上,SGLang提供了強大、高吞吐量的確定性 LLM 推理解決方案,將批次不變(batch invariant)算子、CUDA 圖、基數緩存和分塊預填充與高效性能相結合。通過全面的測試和強化學習訓練實驗,其確定性得到了充分驗證。