Prhub

#23182 [ci][cu13] Bump torch_memory_saver to 0.0.9.post1; restore manual tests

原始 PR 作者 Kangyan-Zhou 合并时间 2026-05-02 13:50 文件变更 3 提交数 3 评论 10 代码增减 +1 / -11

执行摘要

升级 torch_memory_saver 并恢复 cu13 测试

此前 torch_memory_saver==0.0.9 的 wheel 仅链接了 libcudart.so.12,在 CUDA 13 运行时环境(如 H200)下 LD_PRELOAD 会因找不到 libcudart.so.12 而失败。参见 PR body 中的日志:python3: error while loading shared libraries: libcudart.so.12: cannot open shared object file

0.0.9.post1 通过在 wheel 内打包 preload_cu13.abi3.sotorch_cu13.abi3.so 等文件(并利用 ctypes.CDLL 探测运行时 CUDA 版本)解决了该问题,从而不再需要为 cu13 环境单独构建或分发 wheel。

值得合入。这是一个典型的依赖升级与测试恢复 PR,变更简洁明了。对于维护者而言,可以关注 torch_memory_saver==0.0.9.post1 在更广泛的 CUDA 版本上的稳定性,但就本 PR 而言风险已充分验证。

讨论亮点

主要讨论集中在 review 阶段:

  • gemini-code-assist[bot] 指出:在 Dockerfile 中直接硬编码 Github URL 安装 torch_memory_saver wheel 不够一致,建议改用 ${GITHUB_ARTIFACTORY} 变量,以支持自定义仓库或镜像。但该 PR 最终并未涉及 Dockerfile 的修改:torch_memory_saver 的升级仅通过 pyproject.toml 的版本约束变更实现,Dockerfile 中无需额外的安装步骤。因此该建议已被间接采纳(根本不需要 Dockerfile 变更)。

    • 用户 Kangyan-Zhou 多次触发 /rerun-test 以确认 CI 通过,最终 1-gpu-h100-h200 runner 上的测试通过。

实现拆解

  1. 升级 torch_memory_saver 版本约束:在 python/pyproject.toml[project.dependencies] 中将 torch_memory_saver==0.0.9 改为 torch_memory_saver>=0.0.9.post1,使得 pip install 时能自动获取兼容 cu12 和 cu13 的 wheel。

  2. 将 cu13 阻塞的测试移回 registered 目录:删除 test/manual/model_loading/test_utils_update_weights.pytest/manual/rl/test_multi_instance_release_memory_occupation.py 开头的 TODO 块注释(描述 cu13 兼容问题),并将其移至对应的 test/registered/ 目录下,恢复其在 CI 中的自动运行。

  3. 验证结果:在 H200 + CUDA 13.0.1 环境下,两项测试均通过。test_utils_update_weights.py 在单 GPU 上 45 秒完成,test_multi_instance_release_memory_occupation.py 在 dp=2 tp=2 的 4 卡配置下 71 秒完成。

文件 模块 状态 重要度
python/pyproject.toml 依赖管理 modified 3.12
test/registered/model_loading/test_utils_update_weights.py 模型加载 renamed 4.85
test/registered/rl/test_multi_instance_release_memory_occupation.py 强化学习 renamed 4.5

关键源码片段

test/registered/rl/test_multi_instance_release_memory_occupation.py rename-or-move

从 test/manual/ 搬迁回 registered 目录,并删除开头的 TODO 注释块,测试逻辑不变。恢复 CI 自动执行。

# test/registered/rl/test_multi_instance_release_memory_occupation.py (head)
# 移除了 base 版本中阻止 cu13 运行的 TODO 注释块,其余代码与原 manual 版本一致。
# 原先的注释内容(已删除): 指出该测试在 cu13 环境中失败。
import gc
import multiprocessing
# ...(后续代码与 manual 版本完全相同)

评论区精华

Dockerfile 中安装 URL 应使用 GITHUB_ARTIFACTORY 变量 style

gemini-code-assist[bot] 建议在 Dockerfile 中安装 torch_memory_saver 时使用 `${GITHUB_ARTIFACTORY}` 变量代替硬编码的 github.com 域名,以保持一致性并支持自定义仓库或镜像。

结论:该建议未直接体现在 PR 中,因为最终实现方式不涉及 Dockerfile 修改——torch_memory_saver 的更新完全通过 pyproject.toml 的版本约束实现,pip 会自动从 PyPI 获取合适的 wheel。 · 已解决

风险与影响

风险极低。该 PR 本质上是依赖版本放宽和测试搬迁:

  1. 依赖版本从 ==0.0.9 改为 >=0.0.9.post1,在同一 wheel 内向下兼容 cu12,不存在回归风险。
  2. 测试文件搬迁仅删除了阻塞的注释块,未修改任何测试逻辑,不会引入新的缺陷。
  3. 在 H200 cu13 环境上的两次关键测试均通过,验证了兼容性。
  • 用户/系统:使用 CUDA 13 运行时的用户将不再遇到 torch_memory_saver 加载失败的错误;cu12 用户无感知。
  • CI/团队:此前因 cu13 问题手动移至 test/manual/ 的两个测试现在重新纳入 CI 自动检查,减少了人工维护成本。
  • 部署:不需要修改 Dockerfile 或 CI 矩阵等配置文件。
无显著风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论