执行摘要
- 一句话:修复 ROCm 上 fastsafetensors 的 CUDA-only PyPI 问题
- 推荐动作:该 PR 是紧急修复型变更,值得关注其后续演进。建议跟踪 Issue 评论中提到的上游 PR(foundation-model-stack/fastsafetensors#67 和 #68),待上游发布支持 ROCm 的通用 wheel 后,应恢复使用 PyPI 版本,以消除 git 依赖。
功能与动机
PyPI 上的 fastsafetensors wheel 是 CUDA-only 的,其编译扩展硬编码 dlopen libcudart.so,在 ROCm 主机上会抛出异常: Exception: [FAIL] GPU runtime library (libcudart.so or libamdhip64.so) does not exist,即使 libamdhip64.so 存在。这破坏了 ROCm CI 测试镜像和 ROCm 发布镜像。PR 描述提到:"Installing it directly from the pinned git tag forces build from source."
实现拆解
- 更新测试依赖声明:在
requirements/test/rocm.in 中将 fastsafetensors>=0.2.2 替换为 fastsafetensors @ git+https://github.com/foundation-model-stack/fastsafetensors.git@0.2.2,并添加注释 "PyPI only ships CUDA wheels" 说明原因。
- 同步锁定文件:相应地更新
requirements/test/rocm.txt 和 requirements/rocm.txt,将 fastsafetensors 版本锁定为 git 源码构建。
- 移除 Dockerfile 中的 git 依赖限制:在
docker/Dockerfile.rocm 中删除了约 24 行用于检查并阻止 git+ 依赖的代码,因为 fastsafetensors 现在正是通过 git+ 方式安装的。该检查原本是为了防止 uv 不兼容 git+ URL 的问题,但此次特殊情况下需要例外。
关键文件:
docker/Dockerfile.rocm(模块 Docker 构建;类别 infra;类型 infrastructure): 移除了约 24 行禁止 git+ 依赖的检查脚本,这是实现从源码构建 fastsafetensors 的关键配套变更。
requirements/test/rocm.in(模块 测试依赖;类别 test;类型 test-coverage): 核心依赖声明变更,将 fastsafetensors 从 PyPI 版本改为 git 源码构建。
requirements/test/rocm.txt(模块 依赖锁定;类别 docs;类型 documentation): 同步锁定文件,反映 fastsafetensors 的 git 依赖。
requirements/rocm.txt(模块 依赖锁定;类别 docs;类型 documentation): 同步锁定文件,反映 fastsafetensors 的 git 依赖。
关键符号:未识别
关键源码片段
requirements/test/rocm.in
核心依赖声明变更,将 fastsafetensors 从 PyPI 版本改为 git 源码构建。
# 旧行 ( 被替换 ):
# fastsafetensors>=0.2.2 # 0.2.2 contains important fixes for multi-GPU mem usage
# 新行 :
fastsafetensors @ git+https://github.com/foundation-model-stack/fastsafetensors.git@0.2.2 # PyPI only ships CUDA wheels
# 注释说明 PyPI 只有 CUDA wheel,因此强制从指定 git tag 源码构建
# 确保在 ROCm 环境下正确链接 libamdhip64
评论区精华
review 中 gemini-code-assist[bot] 提出了两个关于 Dockerfile 构建的安全建议:
风险与影响
- 风险:
- Dockerfile 兼容性风险:移除了对 git+ 依赖的全面检查,未来可能引入其他 git+ 依赖,而 uv 对 git+ URL 的支持可能有限,需确保构建工具兼容。
- 构建安全性风险:不采用
--no-build-isolation 可能导致临时下载的 torch(CUDA 版本)被链接,尽管作者声称不需要 torch,但风险仍存在。
- 版本锁定风险:依赖特定 git commit 快照,若上游仓库不可达或标签被强制推送,可能导致构建失败。
- 影响:用户/系统影响:仅影响 ROCm 用户和 CI。修复后 ROCm 环境中 fastsafetensors 可以正常加载模型权重,消除 CI 测试组(如 mi250_1: Model Executor)的运行时崩溃。团队影响:简化了 ROCm 镜像构建流程,移除了不必要的检查,但需留意未来引入新的 git 依赖。
- 风险标记:构建安全风险, 依赖版本锁定风险, 上游依赖可用性
关联脉络
- PR #41166 [Ci][BugFix] Fix slow DP tests due to bad teardown logic: 同属 ROCm CI 修复系列,提高 ROCm 测试稳定性。
参与讨论