A Brief Code Walkthrough of slime 简介 slime 是专为强化学习大规模训练设计的 LLM 后训练框架。 核心能力 高性能训练: 通过 Megatron-LM 提供分布式训练能力,支持 Dense 和 MoE 模型 灵活数据生成: 通过 SGLang 引擎和自定义接口,实现任意复杂的数据生成流程 异步训练: 支持训练和推理的异步执行,显著提升 GPU 利用率 项目链接 项目地址: https://github.
slime 是专为强化学习大规模训练设计的 LLM 后训练框架。
zhuzilin/slime:latestslime 采用分离式架构,将 RLHF 训练流程分解为三个独立协作的模块:
Training (Megatron): 负责主训练流程,支持多种并行策略
Rollout (SGLang): 生成新数据(含 reward/verifier),基于 SGLang 优化推理
slime/ray/rollout.pyData Buffer: 桥梁模块,管理数据流和自定义生成逻辑
slime/ray/buffer.py
上图展示了slime的核心工作流程,包括训练循环、RolloutController、RolloutDataSourceWithBuffer以及SGLang分布式推理系统的完整交互过程。
基于 Ray 框架进行资源调度:
核心实现: slime/ray/placement_group.py
slime 提供两种训练模式:
train.py): 传统的顺序执行模式train_async.py),在disaggregated架构下,使用rollout_manager.async_generate和actor_model.async_train进行训推分离异步训练,其中rollout始终领先train一个step,采用off-policy策略支持用户自定义复杂的数据生成逻辑:
扩展接口: slime_plugins/rollout_buffer/
Dense 模型: GLM-4-9B, Qwen3-4B 等
MoE 模型: Qwen3-30B-A3B, DeepSeek-R1 等
slime/ ├── slime/ # 核心框架代码 │ ├── ray/ # Ray 分布式组件 │ │ ├── actor_group.py # 训练 Actor 管理 │ │ ├── rollout.py # 推理 Actor 管理 │ │ ├── buffer.py # 数据缓冲区 │ │ └── placement_group.py # 资源分配 │ ├── backends/ # 后端引擎集成 │ │ ├── megatron_utils/ # Megatron 训练后端 │ │ └── sglang_utils/ # SGLang 推理后端 │ └── utils/ # 工具函数 ├── slime_plugins/ # 插件和扩展 │ ├── rollout_buffer/ # 自定义生成插件 │ └── models/ # 模型适配 ├── scripts/ # 启动脚本 │ └── models/ # 各模型配置 ├── examples/ # 使用示例 ├── docs/ # 详细文档 ├── train.py # 同步训练入口 └── train_async.py # 异步训练入口
参考架构设计: SGLang Code Walk-through
scripts/:启动脚本与模型配置
train.py 或 train_async.pyslime/scripts/run-qwen3-4B.sh、slime/scripts/run-deepseek-r1.shtrain.py / train_async.py:训练入口
PlacementGroup 分配 GPU → 创建 actor_group(训练)与 rollout_manager(推理)→ 进入训练循环rollout_manager.async_generate() 与 ray.get() 交错以并行化slime/ray/:分布式编排与资源管理
placement_group.py:基于 Ray Placement Group 的 GPU 资源分配与打包actor_group.py:训练 Actor 组管理,暴露 async_init/async_train/async_update_weights 等接口rollout.py:Rollout Actor(SGLang 引擎容器)、推理服务路由、权重接收buffer.py:数据缓冲、样本批次组织、与 Rollout/Training 的中间桥梁slime/backends/:后端引擎适配
megatron_utils/:训练后端(优化器、权重更新、与分布式通信集成)sglang_utils/:推理后端(包装 SGLang、批处理生成、引擎生命周期管理)slime_plugins/:可插拔扩展
rollout_buffer/:通过 HTTP/OpenAI 接口等外部联动的自定义轨迹生成器体系models/:不同模型族的小适配层examples/:最小可运行示例
examples/search-r1/ 展示多轮对话 + 工具调用的生成与训练串联方式docs/:说明文档与用法指南
scripts/)train.py 或 train_async.py 并传入参数train*.py)create_placement_groups(args) 分配/映射 GPUcreate_actor_group(args, pgs["actor"]) 构建训练 Actor 组create_rollout_manager(args, pgs["rollout"]) 构建推理与数据生成管理器ray/ + backends/)actor_group.async_train(...) → Megatron 优化/梯度计算rollout_manager.async_generate(...) → SGLang 批量推理actor_group.async_update_weights() → 将训练权重推送到推理引擎buffer.py + 插件)Buffer 负责抽样/拼批/调用自定义生成(slime_plugins/rollout_buffer/)→ 返回训练可用样本通过以上链路,slime 将脚本 → 入口 → 分布式执行 → 数据/权重流自然地串起来,实现高效可扩展的 RL 后训练。