执行摘要
- 一句话:升级 torch_memory_saver 并恢复 cu13 测试
- 推荐动作:值得合入。这是一个典型的依赖升级与测试恢复 PR,变更简洁明了。对于维护者而言,可以关注
torch_memory_saver==0.0.9.post1 在更广泛的 CUDA 版本上的稳定性,但就本 PR 而言风险已充分验证。
功能与动机
此前 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.so 和 torch_cu13.abi3.so 等文件(并利用 ctypes.CDLL 探测运行时 CUDA 版本)解决了该问题,从而不再需要为 cu13 环境单独构建或分发 wheel。
实现拆解
-
升级 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。
-
将 cu13 阻塞的测试移回 registered 目录:删除 test/manual/model_loading/test_utils_update_weights.py 和 test/manual/rl/test_multi_instance_release_memory_occupation.py 开头的 TODO 块注释(描述 cu13 兼容问题),并将其移至对应的 test/registered/ 目录下,恢复其在 CI 中的自动运行。
-
验证结果:在 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(模块 依赖管理;类别 config;类型 configuration): 核心配置变更:将 torch_memory_saver 的版本约束从固定版本改为宽松范围,使 cu12+cu13 兼容的 wheel 能被 pip 解析安装。
test/registered/model_loading/test_utils_update_weights.py(模块 模型加载;类别 test;类型 rename-or-move): 从 test/manual/ 搬迁回 registered 目录,并删除开头的 TODO 注释块,测试逻辑不变。恢复 CI 自动执行。
test/registered/rl/test_multi_instance_release_memory_occupation.py(模块 强化学习;类别 test;类型 rename-or-move): 从 test/manual/ 搬迁回 registered 目录,并删除开头的 TODO 注释块,测试逻辑不变。恢复 CI 自动执行。
关键符号:未识别
关键源码片段
test/registered/rl/test_multi_instance_release_memory_occupation.py
从 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 版本完全相同)
评论区精华
主要讨论集中在 review 阶段:
风险与影响
- 风险:风险极低。该 PR 本质上是依赖版本放宽和测试搬迁:
- 依赖版本从
==0.0.9 改为 >=0.0.9.post1,在同一 wheel 内向下兼容 cu12,不存在回归风险。
- 测试文件搬迁仅删除了阻塞的注释块,未修改任何测试逻辑,不会引入新的缺陷。
- 在 H200 cu13 环境上的两次关键测试均通过,验证了兼容性。
- 影响:
- 用户/系统:使用 CUDA 13 运行时的用户将不再遇到
torch_memory_saver 加载失败的错误;cu12 用户无感知。
- CI/团队:此前因 cu13 问题手动移至
test/manual/ 的两个测试现在重新纳入 CI 自动检查,减少了人工维护成本。
- 部署:不需要修改 Dockerfile 或 CI 矩阵等配置文件。
- 风险标记:无显著风险
关联脉络
- PR #23119 疑似关联 PR(issue 评论中提及失败 workflow): PR body 和测试文件中的 TODO 注释引用了 https://github.com/sgl-project/sglang/actions/runs/24616960626/job/71980705675?pr=23119,表明 PR #23119 是之前暴露 cu13 兼容性问题的 CI 运行。
参与讨论