开源框架实现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 图、基数缓存和分块预填充与高效性能相结合。通过全面的测试和强化学习训练实验,其确定性得到了充分验证。