Prhub

#2021 Support update_from_disk

原始 PR 作者 zhuzilin 合并时间 2026-06-05 11:55 文件变更 18 提交数 7 评论 0 代码增减 +644 / -110

执行摘要

支持完整权重磁盘同步模式

提供一种无需 NCCL 广播的权重同步方式,适用于共享文件系统环境,降低网络开销并提高可靠性。PR 标题明确支持通过磁盘更新权重。

值得精读,尤其关注 UpdateWeightFromDisk 的同步流程和参数兼容性设计。配套测试可作为集成测试参考。

讨论亮点

该 PR 无 review 评论,可能由作者直接合并。关键设计决策(如磁盘同步与 NCCL 的对比、废弃参数兼容)已在代码注释中体现。

实现拆解

  1. 新增 UpdateWeightFromDisk 类(slime/backends/megatron_utils/update_weight/update_weight_from_disk.py),实现 connect_rollout_enginesdisconnect_rollout_enginespop_metricsupdate_weights 方法。update_weights 在 rank 0 暂停引擎、刷新缓存,然后调用 save_hf_model_to_path 将模型保存到版本化目录,最后通知引擎从磁盘加载。

  2. 重构 hf_checkpoint_saver.py:将原 save_hf_model_direct 函数拆分为通用函数 save_hf_model_to_pathsave_hf_model_direct_to_path,前者根据 megatron_to_hf_mode 选择桥接或直接转换,后者实现具体保存逻辑,支持任意输出路径和自定义进度描述。

  3. 参数扩展:在 arguments.py 中新增 --update-weight-disk-dir--update-weight-disk-keep-files,将 --update-weight-delta-dir 标记为废弃别名,并通过 _resolve_update_weight_disk_dir 函数统一处理冲突和回填。

  4. 删除旧 save_hf_model 函数(model.py),将入口统一到新的 save_hf_model_to_path

  5. 测试配套:test_megatron_argument_validation.py 新增参数验证测试,test_full_disk_weight_update.py 新增端到端 CI 测试,验证完整磁盘同步流程。test_hf_checkpoint_saver.py 增加对输出路径冲突的测试。

文件 模块 状态 重要度
slime/backends/megatron_utils/update_weight/update_weight_from_disk.py 权重同步 added 8.82
slime/backends/megatron_utils/hf_checkpoint_saver.py HF 检查点保存 modified 8.56
slime/utils/arguments.py 参数解析 modified 7.91
slime/backends/megatron_utils/model.py 模型管理层 modified 7.56
tests/test_megatron_argument_validation.py 参数验证测试 modified 7.45
tests/test_full_disk_weight_update.py 磁盘同步测试 added 7.22

关键符号

UpdateWeightFromDisk save_hf_model_to_path save_hf_model_direct_to_path _resolve_update_weight_disk_dir

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

新增磁盘 I/O 路径可能成为性能瓶颈,尤其在高频同步时;共享文件系统的延迟和容错性影响可靠性;废弃参数 --update-weight-delta-dir 可能导致用户困惑,但通过警告和回填缓解;需要确保引擎有权读写磁盘目录。

用户获得替代 NCCL 的同步选项,适合文件系统环境;系统增加磁盘写入和读取负载;团队需维护两套传输模式;测试覆盖了主要路径,但边缘情况(权限、磁盘满)未覆盖。

共享文件系统依赖 废弃参数兼容 磁盘 I/O 性能

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论