Prhub

#1924 Reduce host memory with upgraded tms

原始 PR 作者 zhuzilin 合并时间 2026-05-19 21:19 文件变更 6 提交数 1 评论 0 代码增减 +141 / -7

执行摘要

升级 torch_memory_saver 减少主机内存占用

减少训练时主机端(CPU)的内存占用,通过升级 torch_memory_saver 并利用其零拷贝特性和禁用冗余梯度缓冲区备份来实现。PR body 引用自内部仓库的已有优化实践。

推荐精读,特别是 megatron.patch 中如何通过 TMS 的 region 替换现有缓冲区分配逻辑、以及 disable_grad_buffers_cpu_backup 与 nccl_ub 的互斥设计。该 PR 展示了深度集成第三方内存管理库以优化训练内存的典型模式。

讨论亮点

该 PR 无 review 评论和讨论。

实现拆解

  1. actor_group.py:将 TMS 预加载动态库的搜索从单个固定文件名改为依次尝试两个文件名(优先 CUDA 12 专用版本),失败时抛出 FileNotFoundError,提高跨 CUDA 版本的兼容性。
  2. megatron.patch:在 Megatron 的 _ParamAndGradBuffer 和 DistributedDataParallel 中新增 disable_grad_buffers_cpu_backup 参数,当开启时使用 TMS 的 region 上下文管理器(禁用 CPU 备份)分配梯度缓冲区,避免不必要的 CPU 内存占用;同时添加与 nccl_ub 的互斥断言。
  3. arguments.py:在 slime_validate_args 中当 offload_train = True 时自动设置 disable_grad_buffers_cpu_backup = True;并调用 reset_arg 重置 --record-memory-history 的默认值。
  4. common.py:在 _maybe_get_cpu_backup 中调用 torch_memory_saver.get_cpu_backup 时添加 zero_copy=True 参数,避免额外 CPU 内存拷贝。
  5. Dockerfile:新增 TMS_CUDA_MAJOR 构建参数,根据 CUDA 版本动态安装 TMS,确保库文件命名正确。
  6. version.txt:更新镜像版本号。
文件 模块 状态 重要度
slime/ray/actor_group.py 调度器 modified 6.54
docker/patch/latest/megatron.patch 补丁 modified 6.07
slime/utils/arguments.py 参数 modified 5.23
slime/backends/megatron_utils/update_weight/common.py 后端 modified 4.49
docker/Dockerfile 部署脚本 modified 3.02
docker/version.txt 部署脚本 modified 1.32

关键符号

_allocate_gpus_for_actor _maybe_get_cpu_backup slime_validate_args

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

评论区精华

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

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

风险与影响

  1. 依赖兼容性:升级 TMS 可能引入与旧版本的接口不兼容,但本 PR 已通过搜索多个文件名和添加 zero_copy 参数适配新版。
  2. Megatron 内部补丁:patch 修改了 Megatron 的 DDP 和缓冲区核心逻辑(param_and_grad_buffer.py),若未来 Megatron 升级可能导致补丁冲突。
  3. 配置默认值变更:当 offload_train 启用时自动设置 disable_grad_buffers_cpu_backup,可能影响未预期此行为的用户,但该行为符合设计意图。
  4. 性能回退:禁用 CPU 备份可能会在梯度同步失败时增加恢复难度,但 TMS 的 region 机制已处理异常路径。

用户影响:所有使用 --offload_train 进行训练的用户将自动获得更低的主机内存占用(约减少梯度缓冲区在 CPU 上的副本),无需手动调整。
系统影响:需要安装特定版本的 torch_memory_saver(commit a193d9dd),Docker 构建会自动处理。
团队影响:后续维护需关注 Megatron 补丁与上游的同步。

依赖版本升级 Megatron 内部 patch 新增配置参数

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论