Prhub

#34644 [release 2.11] Update to torch 2.11

原始 PR 作者 atalman 合并时间 2026-04-08 09:55 文件变更 26 提交数 12 评论 78 代码增减 +114 / -88

执行摘要

升级 PyTorch 及相关依赖至 2.11 版本,涉及全平台构建和 CI 配置。

PR body 中表述为“Update to Torch 2.11”,旨在跟进 PyTorch 最新版本以获取性能改进和新特性。

建议技术管理者和工程师精读此 PR,以理解大规模依赖升级的最佳实践,特别是多平台协调和风险缓解策略。关注 Docker 镜像变更和测试跳过决策,这些是权衡兼容性与新特性的关键点。

讨论亮点

review 中的核心讨论:

  • CPU 依赖调整:fadara01 指出在 AArch64 平台上,torch==2.11.0 会安装不必要的 CUDA 库,建议使用 +cpu 后缀,此建议被采纳。
  • Docker 镜像变更:mgoin 询问为何将构建基础镜像从 Ubuntu 20.04 升级到 22.04,担心 glibc 兼容性问题;atalman 回应称 CUDA 13.0.0 只有 20.04 镜像可用,但最终镜像保持 22.04 以匹配最终镜像。
  • 测试问题:AndreasKaratzas 提到 torchao 测试在 2.11 版本中仍然失败,但问题在 nightly 版本中已存在,因此无新增风险。
  • 版本一致性:讨论确保不同平台(如 CPU、CUDA)的版本声明一致。

实现拆解

实现分为多个模块:

  1. 构建配置:更新 CMakeLists.txt 中的 TORCH_SUPPORTED_VERSION 为 2.11.0。
  2. 依赖管理:修改所有 requirements 文件(如 cuda.txt、cpu.txt、rocm-build.txt 等)中的 torch、torchvision、torchaudio 版本。
  3. Docker 配置:更新 Dockerfile 中的 CUDA 版本至 13.0.0,基础镜像从 Ubuntu 20.04 升级到 22.04,并调整 NCCL 安装逻辑。
  4. CI/CD:更新 Buildkite 配置文件(如 test-amd.yaml、quantization.yaml),升级 torchao 至 0.17.0,并跳过因 PyTorch 2.11 导致的 Helion 内核测试。
  5. 代码适配:在 vllm/utils/torch_utils.py 中更新 HAS_OPAQUE_TYPE 条件,并在 vllm/model_executor/layers/fused_moe/runner/moe_runner_base.py 中修复 FakeScriptObject 处理。
文件 模块 状态 重要度
requirements/cuda.txt 依赖管理 modified 8.0
docker/Dockerfile 容器化 modified 8.0
vllm/utils/torch_utils.py 工具函数 modified 6.0
.buildkite/test_areas/quantization.yaml CI/CD modified 5.0

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

关键符号

_resolve_layer_name

评论区精华

CPU 依赖后缀调整 设计

fadara01 建议为 AArch64 平台添加 +cpu 后缀以避免安装 CUDA 库。

结论:建议被采纳,更新了 requirements 文件。 · 已解决

Docker 基础镜像升级 设计

mgoin 询问为何将 BUILD_BASE_IMAGE 从 Ubuntu 20.04 升级到 22.04,担心 glibc 兼容性。

结论:atalman 回应 CUDA 13.0.0 只有 20.04 镜像,但最终保持 22.04 以匹配最终镜像。 · 已解决

torchao 测试失败 测试

AndreasKaratzas 指出 torchao 测试在 2.11 版本中仍然失败,但问题在 nightly 中已存在。

结论:无新增风险,问题标记为待解决。 · unresolved

风险与影响

技术风险:

  • 回归风险:PyTorch 2.11 可能引入 API 变化,导致现有代码行为异常,需全面测试。
  • 兼容性风险:Docker 镜像升级到 Ubuntu 22.04 可能改变 glibc 版本,影响二进制兼容性。
  • 性能风险:新版本可能有性能变化,需验证推理和训练性能。
  • 安全风险:依赖升级可能引入新漏洞。
  • 具体文件风险:在 vllm/utils/torch_utils.py 中 HAS_OPAQUE_TYPE 条件更新可能影响编译时行为。

影响范围广泛:

  • 对用户:需要重新安装依赖,可能遇到安装问题或运行时错误。
  • 对系统:影响所有硬件平台(NVIDIA GPU、AMD GPU、CPU、Intel XPU)的构建和部署。
  • 对团队:开发、测试和 CI 流水线需适应新版本,可能需要更新本地环境。影响程度高,因为 PyTorch 是核心依赖。
核心依赖升级 兼容性变化 测试覆盖不足

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本 PR 将 PyTorch 从 2.10.0 升级至 2.11.0,是一项影响广泛的基础设施变更。覆盖了 CUDA、CPU、ROCM 和 XPU 全平台,更新了构建配置、Docker 镜像、依赖管理和 CI 测试流水线。升级旨在获取新特性和性能改进,但需注意兼容性风险和测试调整。

功能与动机

动机源于跟进 PyTorch 最新版本,PR body 简单表述为“Update to Torch 2.11”。这有助于 vLLM 利用 PyTorch 2.11 的性能优化和新功能,保持技术栈的现代性。

实现拆解

  • 构建配置:更新 CMakeLists.txt 中的 TORCH_SUPPORTED_VERSION 为 2.11.0。
  • 依赖管理:修改所有 requirements 文件,例如:
    • requirements/cuda.txttorch==2.11.0, torchvision==0.26.0, torchaudio==2.11.0
    • requirements/cpu.txt:为 AArch64 添加 +cpu 后缀以避免 CUDA 库安装。
  • Docker 配置:更新 docker/Dockerfile,CUDA 版本升级至 13.0.0,基础镜像从 Ubuntu 20.04 改为 22.04,并调整 NCCL 安装逻辑。
  • CI/CD:更新 Buildkite 配置文件,如 .buildkite/test_areas/quantization.yaml,升级 torchao 至 0.17.0,并跳过因 PyTorch 2.11 SymInt 问题导致的 Helion 内核测试。
  • 代码适配:在 vllm/utils/torch_utils.py 中更新 HAS_OPAQUE_TYPE 条件至 2.12.0.dev;在 vllm/model_executor/layers/fused_moe/runner/moe_runner_base.py 中修复 _resolve_layer_name 函数以处理 FakeScriptObject

评论区精华

  • CPU 依赖优化:fadara01 指出:“on AArch64 CPU, torch==2.11.0 now installs cuda libs not needed for CPU, so let's do torch==2.11.0+cpu for AArch64 too”,此建议被采纳,确保了依赖精简。
  • Docker 镜像选择:mgoin 询问:“Why do we need a devel image for the final base now?” 并关注 glibc 兼容性。atalman 回应称 CUDA 13.0.0 只有 20.04 镜像,但最终决策保持 22.04 以匹配最终镜像。
  • 测试状态:AndreasKaratzas 评论:“Torchao seems to be consistent in its failures between this version and our current nightly”,表明测试问题已存在,无需额外担心。

风险与影响

  • 风险:PyTorch 2.11 可能引入 API 不兼容,导致回归;Docker 镜像升级可能影响二进制兼容性;跳过的 Helion 测试需后续解决。
  • 影响:所有用户需重新安装依赖;系统构建和部署流程变更;团队需更新开发环境并验证性能。

关联脉络

此 PR 是 vLLM 项目定期依赖升级的一部分,与历史 PR 如 #38062(修复 Helion 测试)相关,展示了持续集成中测试调整的协同。未来可能需要进一步修复因版本升级暴露的问题。

参与讨论