Slime: An SGLang-Native Post-Training Framework for RL Scaling
Slime: An SGLang-Native Post-Training Framework for RL Scaling
发表时间: 2025-07 · Blog post by The slime Team (lmsys.org)
原文: https://lmsys.org/blog/2025-07-09-slime
作者/机构:The slime Team
速读
一句话结论 开发了 slime,这是一个原生集成 SGLang 进行推理、Megatron-LM 进行训练的强化学习后训练框架,通过高度可定制的接口和无缝的参数透传,实现了强化学习规模化扩展以及从预训练到部署的无缝衔接。
要解决什么问题 当前强化学习社区在后训练阶段面临严重的框架碎片化和工程维护卡点。为了应对纯数学推理、多轮工具调用、异步训练或智能体等不同任务,研究者通常需要分叉并维护多个独立的框架。这种做法不仅导致在修复漏洞时耗费大量时间进行代码合并,还容易因遗漏补丁而引发训练崩溃。此外,试图为所有数据采样场景定义一个通用模板的传统思路,往往会限制用户的实际需求,导致框架只能覆盖小部分应用场景。同时,与预训练不同,强化学习工作负载在训练期间需要进行海量的在线采样,这对推理性能提出了极高的要求;而现有的训练后端往往被各机构深度定制,难以与快速迭代的推理框架保持同步,导致预训练、后训练和在线部署之间存在繁琐且易错的检查点格式转换和精度对齐问题。
怎么做的 slime 的核心思路是将框架的复杂性转移到用户自定义的流水线和底层核心库中,通过原生集成最快的推理框架 SGLang 和久经考验的训练框架 Megatron-LM,构建一个轻量且高度可扩展的后训练系统。在数据采样与定制化方面,slime 放弃了死板的通用模板,转而使用 sgl-router 来管理所有 SGLang 服务器。它为数据生成组件提供了一个开放接口,复杂的智能体环境可以通过兼容 OpenAI 的 API 直接与 slime 交互,用户只需向单一端点发送 HTTP 请求即可注入自定义逻辑,无需修改环境代码。在资源管理与训练调度上,slime 引入 Ray 进行 GPU 管理,通过一个简单的 --colocate 标志即可在同置(共享 GPU)或解耦(分离 GPU)设置间切换;借助 Ray 的 .remote() 方法,系统自然支持异步执行,用户只需移动 ray.get 操作即可改变同步行为。此外,训练循环直接暴露在 train.py 中,没有被繁杂的训练器类封装。在极致性能的实现上,slime 采用原生体验设计。对于推理,它在内部以服务器模式启动 SGLang,并通过 --sglang 前缀实现所有 SGLang 优化参数的无缝透传(例如开启多节点 MoE 推理的 --sglang-enable-ep-moe 等),并提供 --debug-rollout-only 模式用于性能调优。对于训练,它同样对 Megatron 参数进行无缝透传,支持张量并行(TP)、流水线并行(PP)、专家并行(EP)和上下文并行(CP)等所有并行策略,监控训练的算力利用率(MFU),并提供检查点转换工具和 --debug-train-only 模式。为了解决强化学习特有的高频权重更新问题,slime 联合 SGLang 团队在底层实现了针对多种并行策略下 MoE 模型的参数更新以及降低开销的分桶参数更新机制。针对 DAPO 等需要超额采样的动态采样算法,开发了 /abort_request 端点,允许立即终止正在进行的请求并回收部分生成的内容。
效果如何 由于本文档为框架发布说明,作者并未提供传统意义上的模型规模、训练数据量或与特定基线方法的量化对比实验结果。从工程实现与系统支持的效果来看,slime 成功打通了从预训练到生产部署的统一流水线:用户可以使用 Megatron 进行预训练,无缝切换到集成 Megatron 和 SGLang 的 slime 进行后训练(支持强化学习、监督微调 SFT 以及拒绝采样),最后直接使用 SGLang 进行评估和部署,彻底消除了检查点格式转换和精度对齐的代价。在硬件与生态支持方面,系统在发布首日即获得了 AMD 硬件团队的支持,并在底层验证了多节点混合专家(MoE)模型的推理能力。作者也指出了当前的局限与未来演进方向:SFT 功能目前仍处于实验阶段,且系统目前高度依赖 Megatron,未来计划增加原生的 PyTorch 训练后端支持以降低用户的使用门槛,并进一步探索大规模 MoE 模型的最优强化学习训练策略。
主要贡献
当前强化学习(RL)社区存在一个普遍痛点:针对不同的任务(如纯数学推理、多轮工具调用、异步训练、Agentic任务等)往往需要分叉(Fork)并维护多个不同的独立框架。这种碎片化导致了繁琐的Bug修复和因缺失补丁而导致的训练崩溃。
为了解决这一问题,本文提出了 slime,这是一个专为强化学习扩展(RL Scaling)设计的后训练(Post-Training)框架。其核心研究目标是让RL系统无缝集成到现有基础设施中,使研究人员能够专注于新想法而非编写样板工程代码。
slime 框架具备以下三大核心创新点:
- 多功能性(Versatile):提供完全可定制的Rollout(数据采样)接口以及灵活的训练设置(支持同置/解耦、同步/异步、RL或SFT冷启动)。
- 高性能(Performant):原生集成SGLang用于推理,原生集成Megatron-LM用于训练。
- 易维护性(Maintainable):代码库轻量级,支持从Megatron预训练到SGLang部署的无缝过渡。
背景知识与设计原则
当前RL框架的误区与困境。RL社区中一种普遍的误解是,必须为不同的任务构建单独的框架。正如《苦涩的教训》(The Bitter Lesson)所启示的,试图为每一种Rollout场景定义一个通用的模板,最终只会创造出一个仅能满足现实世界一小部分需求的RL框架。在深度学习领域,人们并不会仅仅为了一个新的数据加载器就去Fork整个PyTorch,但当前的RL框架却陷入了强行规定用户应如何构建其应用程序的陷阱中。
slime的设计原则。基于上述观察,slime对RL中的数据采样采取了截然不同的视角。框架不应限制用户的创造力,而应提供开放的接口,允许用户注入自定义逻辑,自由地与数据生成组件进行交互,从而适应各种复杂的真实世界需求。
方法细节
采用sgl-router管理数据采样与路由。为了实现高度的可定制性,slime通过sgl-router管理框架内的所有SGLang服务器,并为数据生成组件提供了一个统一的接口。在这种架构下,用户只需向单一端点发送HTTP请求即可完成交互。通过暴露这个端点,复杂的Agent环境可以通过兼容OpenAI的API直接与slime进行交互。这一设计不仅完全不需要修改Agent环境本身,还完美保留了训练与部署之间的一致性。
基于Ray的资源管理与灵活训练方案。在训练方案的调度上,slime使用Ray来进行底层资源管理。用户只需通过修改一个简单的命令行标志位(--colocate),就可以在同置(colocated,即训练和推理共享同一批GPU)或解耦(decoupled,即训练和推理使用独立的GPU)设置之间自由切换。此外,借助Ray的.remote()方法实现的异步执行机制,slime天然具备支持异步训练的能力。如果用户需要改变同步行为,只需简单地移动ray.get操作的位置即可。为了最大程度地方便研究人员实验不同的策略,slime刻意避免了使用复杂的Trainer类来封装代码,而是直接在入口文件train.py中暴露了最核心的训练循环。
原生集成SGLang以保障极致推理性能。一个优秀的RL框架必须具备极高且稳定的运行速度。由于RL工作负载在训练期间需要进行海量的在线采样,推理性能成为了整个系统的瓶颈。因此,slime独家集成了SGLang,并刻意打造了“SGLang原生”的使用体验——在slime内部使用SGLang的感觉与独立使用SGLang完全一致。为了实现这一目标,slime在内部以服务器模式(server-based mode)启动所有的SGLang服务器;同时实现了对所有SGLang参数(带有--sglang前缀)的无缝透传(seamless pass-through),这确保了用户可以启用SGLang的所有底层优化选项。例如,用户可以直接传递--sglang-enable-ep-moe、--sglang-enable-dp-attention和--sglang-enable-deepep-moe来激活强大的多节点MoE(混合专家)推理能力。此外,slime还提供了一个纯SGLang调试模式(--debug-rollout-only)以方便进行极致的性能调优。不仅如此,slime的基础Docker镜像直接构建于lmsysorg/sglang:dev之上。
原生集成Megatron-LM以提供企业级训练能力。在训练端,slime集成了久经考验的Megatron-LM框架,旨在提供与原生预训练体验相媲美的后训练体验。与SGLang的集成类似,slime实现了对所有Megatron参数的无缝透传;全面支持Megatron的所有并行策略(包括张量并行TP、流水线并行PP、专家并行EP和上下文并行CP),并内置了对训练MFU(Model Flops Utilization)的实时监控。slime同样提供了一个纯Megatron调试模式(--debug-train-only),并支持保存采样数据以便于实验复现。鉴于Megatron的配置通常极其复杂,slime还贴心地提供了检查点(Checkpoint)转换工具以降低使用门槛。
确保持续高速与上游同步。保持“持续高速”意味着框架必须紧跟推理和训练引擎的最新演进。SGLang的迭代速度极快,而Megatron在各个组织中往往存在高度定制化的内部Fork版本。slime的设计使其能够轻松跟上SGLang的上游代码变更,并无缝适配各团队内部的Megatron变体。这种参数透传机制使得框架升级变得毫不费力。
针对RL工作负载的权重更新优化。除了整合现有的推理和训练框架,slime团队还深入解决了RL特有的工作负载问题。与常规的纯推理任务不同,RL训练在运行过程中涉及极其频繁的模型权重更新。为了解决这一性能瓶颈,slime团队与SGLang团队密切合作,向SGLang上游提交了多项专门的优化补丁:
- 实现了在各种复杂并行策略下对MoE模型的参数更新支持(参考PR:https://github.com/sgl-project/sglang/pull/6265, https://github.com/sgl-project/sglang/pull/6308, https://github.com/sgl-project/sglang/pull/6311)。
- 引入了分桶参数更新(Bucketed parameter update)机制,大幅降低了权重同步的通信开销(参考PR:https://github.com/sgl-project/sglang/pull/7292)。
引入/abort_request端点以支持动态采样。在诸如DAPO等需要过采样(oversampling)的先进RL算法中,系统常常面临一种情况:一旦已经收集到足够的数据,某些仍在生成中的请求就变得不再必要。为了优化资源利用率,slime团队与AReal团队合作,在SGLang中设计并实现了一个全新的API端点:/abort_request。该端点的工作机制如下:
- 允许系统立即终止正在进行的推理请求。
- 支持回收部分已经生成的内容,从而使得部分Rollout(partial rollouts)成为可能。
(相关实现参考PR:https://github.com/sgl-project/sglang/pull/6698, https://github.com/sgl-project/sglang/pull/6855, https://github.com/sgl-project/sglang/pull/6184, https://github.com/sgl-project/sglang/pull/5966)。
实现轻量级与可扩展的工作流统一。通过上述设计,slime将系统的复杂性成功地从框架层转移到了用户自定义的管道(Pipelines)和核心依赖库(SGLang和Megatron)中,从而打造了一个极为轻量且易于维护的代码库。得益于这种模块化设计和强大的后端支持,slime能够以极少的额外代码自然地扩展到其他后训练工作流中:
- 监督微调(SFT):只需加载Megatron并使用Token预测损失即可(注:该SFT功能目前处于实验阶段)。
- 拒绝采样(Rejection Sampling):可以先使用SGLang进行数据过滤,随后直接接入Megatron进行SFT。
最重要的是,slime的原生集成彻底打通了从预训练到在线服务的桥梁。用户可以使用Megatron进行预训练,无缝切换到slime(同时集成Megatron和SGLang)进行RL后训练,最后直接将模型交给SGLang进行评估和线上部署。这一统一的管道消除了转换检查点格式和对齐不同框架间计算精度的繁琐且易错的步骤,彻底免除了编写“胶水代码”的烦恼。
实验环境
本文作为框架发布的技术报告,未提供针对特定数据集的定量基准测试,但明确了以下软硬件运行环境:
- 软件配置:推理引擎基于 SGLang,训练引擎基于 Megatron-LM。资源调度与异步管理基于 Ray 框架。系统基础容器镜像采用
lmsysorg/sglang:dev。 - 硬件配置:框架在发布首日(Day-1)即获得了 AMD 硬件的原生支持(得益于 AMD GenAI - Foundation Model 团队的支持)。
实验结果
本文档主要侧重于 slime 框架的架构设计、系统集成机制以及针对 RL 场景的工程优化(如动态采样终止、MoE 权重更新等)。通过成功桥接 Megatron-LM 与 SGLang,并验证了其在同置/解耦环境下的异步运行能力,定性地证明了该框架能够有效消除传统 RL 训练中的样板代码与框架切换损耗。暂无具体的定量指标(如吞吐量对比、收敛曲线等)展示。
结论
slime 是一个专为强化学习扩展(RL Scaling)打造的、高度可定制且性能卓越的后训练框架。通过原生集成 SGLang(用于高速推理)和 Megatron-LM(用于大规模训练),并利用 Ray 进行灵活的资源管理,slime 成功地将复杂性从框架底层抽离,为研究人员提供了一个轻量级、易扩展的统一工作流。它不仅消除了不同阶段间模型转换的痛点,还实现了从预训练、RL后训练到最终部署的无缝衔接。
未来工作(Roadmap):
强化学习扩展的旅程才刚刚开始,slime 在下一阶段将重点推进以下工作:
- 持续与 SGLang 团队合作,探索针对超大规模 MoE 模型的最佳 RL 训练策略。
- 支持更广泛的后训练(Post-training)工作流,进一步巩固从预训练到生产环境的桥梁。
- 增加对原生 PyTorch 训练后端的支持,以降低普通用户的使用门槛。
💬 评论讨论
欢迎在这里分享您的想法和见解!