THUDM/slime 2026年第28周周报(07-06至07-12)
执行摘要
本周共合并5个PR,整体聚焦于基础设施重构与功能增强。主要变化包括:引擎侧权重同步架构重构(/pull_weights)、新增训练资源释放机制(--release-train)、过时代码清理、routed experts扩展以及数据来源追踪。作者分布以zhuzilin为主(4个),nanjiangwill贡献了高重要性的引擎重构。风险方面,测试覆盖不足仍是主要关注点,核心路径变更需后续验证。
本周重点变化
- 引擎权重同步下沉:PR #2181 实现了引擎侧/pull_weights端点,将磁盘级delta权重同步的fan-out从slime层下移到引擎内部,slime不再需要了解引擎拓扑。该变更涉及sglang_engine.py、disk_delta.py和补丁文件,对非POSIX文件系统兼容性做了处理。
- 训练资源释放模式:PR #2180 引入--release-train参数,在模型保存后释放训练Actor组的GPU资源,下一轮训练时从checkpoint重建。该模式与磁盘权重更新配合,可提高大规模集群的GPU利用率。涉及actor_group.py、placement_group.py和train.py的核心重构。
- 代码清理与多节点安全强化:PR #2183 删除了多个过时函数(get_advantages_and_returns、onload_weights_from_disk等),移除了冗余参数,并增加了多节点环境下的guard,提升代码健壮性。
- routed experts支持:PR #2185 为Sample类添加routed_experts_start_len,允许在解码阶段分块接收routed experts信息,同时放宽log probs复用条件。
- 数据来源追踪:PR #2184 新增source_names字段,通过get_source函数提取样本来源,支持多数据源混合训练场景。
模块与主题趋势
本周变更集中在以下模块:
- backends/sglang_utils:引擎侧新增/pull_weights端点,是该模块最重要的重构。sglang_engine.py修改次数最多。
- ray/rollout.py:涉及多个PR,包括数据来源追踪和代码清理,是数据流的核心路径。
- ray/actor_group.py:release-train模式的重构,涉及资源生命周期管理。
- backends/megatron_utils:routed experts支持,影响actor.py和types.py。
- utils/disk_delta.py:引擎重构中用于delta应用的模块。
- 配置与安全:新增配置项(--release-train)和参数清理,体现了团队在代码质量和安全上的持续投入。
趋势上,本周表现出以下特点:
- 架构下沉:将逻辑从orchestrator层下移至引擎层(#2181),减少中间层的耦合。
- 资源弹性:通过释放和重建Actor组,向弹性训练迈进一步。
- 债务清理:系统性地移除过时代码,降低维护成本。
- 功能扩展:支持更多MoE路由模式和混合数据源。
风险观察
- 测试覆盖不足:多个PR(#2185、#2181、#2184)均标记“缺少测试覆盖”,尤其是路由变更和引擎重构无配套测试,存在回归风险。
- 核心路径变更:routed_experts_start_len涉及数据拼接逻辑,release-train改变训练流程,需在更多场景验证。
- 跨模块耦合:引擎补丁与sglang后端强绑定,未来切换后端可能需要调整。
- 删除函数残留:清理PR删除了多个函数,需确认所有依赖模块已适配,尤其是外部调用。
- 文件系统兼容性:非POSIX文件系统依赖用户配置,文档需明确说明。
重点PR速览
| PR编号 |
标题 |
重要性 |
作者 |
核心变更 |
| #2181 |
[3/n] Disaggregated rollout: engine-side /pull_weights |
9.1 |
nanjiangwill |
引擎侧权重同步端点,减少slime拓扑感知 |
| #2180 |
Add --release-train |
9.0 |
zhuzilin |
训练后释放GPU资源,重建时从checkpoint加载 |
| #2183 |
cleanup |
7.7 |
zhuzilin |
删除过时函数和参数,增加多节点guard |
| #2185 |
Support routed_experts_start_len |
5.9 |
zhuzilin |
扩展routed experts数据拼接逻辑 |
| #2184 |
sync source_names |
6.0 |
zhuzilin |
新增数据来源追踪字段 |
详细说明:
- #2181:新增/pull_weights端点,通过调度器广播到所有host,应用delta并确认。slime侧移除了all_engine_actors和sync_local_checkpoint。设计文档详细描述了动机和验证。
- #2180:重构RayTrainGroup,延迟Actor初始化,新增release()和create()方法。训练循环中根据--release-train释放资源,配合sglang HiCache补丁释放内存。
- #2183:清理函数包括get_advantages_and_returns(已被batch版替代)、onload_weights_from_disk、parse_critic_args。移除logprob_utils.py中冗余参数。增加多节点环境检查,避免错误行为。
- #2185:在_apply_meta_info中读取routed_experts_start_len,调整行数计算,并放宽can_reuse_log_probs_in_loss条件。
- #2184:新增get_source函数,在rollout中提取source_names,训练侧跳过该字段的日志计算,更新文档。
后续建议
- 补齐测试:针对引擎重构、release-train、routed experts等功能增加单元测试和集成测试,降低回归风险。
- 监控性能:release-train模式涉及Actor组释放和重建,需监控时间开销,评估对训练效率的影响。
- 文档完善:明确非POSIX文件系统配置要求,以及source_names在不同场景的配置方式。
- 验证多节点:清理PR中的多节点guard变更需在真实多节点环境验证,确保不会引入新问题。
- 规划后端适配:引擎侧/pull_weights与sglang绑定,后续其他后端(如Megatron)是否采用类似模式需评估。
参与讨论