Prhub

#37930 [ROCm][CI] Add uv pip compile workflow for rocm-test.txt lockfile

原始 PR 作者 AndreasKaratzas 合并时间 2026-03-27 01:44 文件变更 4 提交数 9 评论 9 代码增减 +1478 / -98

执行摘要

为 ROCm 测试环境添加 uv pip compile 工作流以生成锁文件。

根据PR body描述,动机是'Adds a proper uv pip compile workflow for generating rocm-test.txt from rocm-test.in, matching the existing CUDA test.in in to test.txt pattern.'。这解决了ROCm依赖管理与CUDA模式不一致的问题,使用uv工具生成锁文件以避免CUDA包混入,并确保测试环境的正确性。

建议ROCm和CI相关工程师精读此PR,重点关注排除列表的设计决策、验证步骤的实现,以及未来uv工具更新的优化可能。对于其他开发者,可快速浏览以了解vLLM依赖管理流程的演变。

讨论亮点

Review中的核心讨论围绕包排除列表的维护性展开:

  • gemini-code-assist建议使用通配符(如nvidia-*)简化排除列表,以提升可维护性(评论路径.pre-commit-config.yaml line 76)。
  • AndreasKaratzas最初回应'Specificity is better I think.',但hmellor指出'Wildcards would likely be more robust. As it is now every CUDA dependency change would break the ROCm build, which is annoying for CUDA developers and ROCm developers.'
  • AndreasKaratzas后来测试发现uv不支持通配符,因此保持显式排除列表,并说明未来若uv支持ROCm后端可改用--torch-backend。结论是保持当前设计以避免构建失败,但接受显式列表的维护负担。

实现拆解

实现分为四个关键部分:

  1. pre-commit配置更新:在.pre-commit-config.yaml中添加新的pip-compile-rocm钩子,使用-c requirements/rocm.txt作为约束文件,并显式排除torch、torchvision、torchaudio、triton及多个CUDA/NVIDIA包(如nvidia-cublas、cuda-toolkit等),因为uv不支持ROCm后端。
  2. Docker验证步骤:在docker/Dockerfile.rocm中添加RUN命令,通过torch.version.hip验证确保安装的是ROCm版PyTorch,避免意外CUDA安装。
  3. 依赖输入文件新增:新增requirements/rocm-test.in文件,列出ROCm测试所需的83个依赖包,包括pytest、transformers等。
  4. 锁文件生成:更新requirements/rocm-test.txt为uv生成的锁文件,包含346个固定包,无CUDA/NVIDIA包。
文件 模块 状态 重要度
.pre-commit-config.yaml CI 配置 modified 8.0
docker/Dockerfile.rocm Docker 配置 modified 6.0
requirements/rocm-test.in 依赖管理 added 5.0
requirements/rocm-test.txt 依赖管理 modified 5.0

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

评论区精华

包排除列表简化 设计

gemini-code-assist 建议使用通配符简化 CUDA/NVIDIA 包排除列表,而 AndreasKaratzas 和 hmellor 讨论后测试发现 uv 不支持通配符。

结论:保持显式排除列表,未来若 uv 支持 ROCm 后端可改用 --torch-backend。 · 已解决

风险与影响

技术风险包括:

  • 锁文件维护风险:在.pre-commit-config.yaml中,显式排除列表可能遗漏未来新增的CUDA/NVIDIA包,导致ROCm构建失败。
  • 验证步骤失败风险docker/Dockerfile.rocm中的验证脚本依赖PyTorch API,若API变更或环境异常可能中断构建流程。
  • 依赖变更敏感风险:由于uv工具的约束和排除机制,依赖版本更新可能引入兼容性问题,需手动更新列表。

影响范围:

  • 用户影响:无直接影响,因为是CI内部改进,不涉及终端用户功能。
  • 系统影响:提升ROCm CI的稳定性和可重复性,减少因依赖冲突导致的构建失败,对vLLM的ROCm测试流程有正面作用。
  • 团队影响:ROCm开发者受益于更可靠的测试环境;CUDA开发者需注意ROCm构建可能因依赖变更而失败,增加了跨团队协作的关注点。
    影响程度:中等,局限于CI基础设施,但对ROCm测试质量有显著提升。
锁文件维护负担 验证步骤失败风险 依赖变更敏感

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论