Prhub

#51058 [Build] Upgrade runtime image to Ubuntu 24.04, pick up rdma-core > 44

原始 PR 作者 tlrmchlsmth 合并时间 2026-08-09 09:17 文件变更 3 提交数 5 评论 10 代码增减 +7 / -5

执行摘要

运行时镜像升级 Ubuntu 24.04,rdma-core 升至 50 支持 NCCL GIN

PR body 明确指出动机:NCCL GIN(NCCL_GIN_TYPE=3 即 GDA-KI)需要 rdma-core > 44,而 Ubuntu 22.04 只带 39,Ubuntu 24.04 提供 50.0;同时作者认为没有阻塞因素,升级后不再需要为需要 24.04 的用户分别构建镜像,可简化 build/release 流程。

建议构建与发布相关工程师快速过一遍;变更本身机械(版本号升级),但评审中的内核/驱动兼容性调研与文档化处理值得借鉴,属于基础设施升级的标准操作范例。普通业务开发无需深入。

讨论亮点

核心讨论围绕宿主内核兼容性展开:Harry-Chen 提出关键问题,询问 24.04 userland 的最小内核要求,担心用户把容器跑在非常老的内核上;作者调研后回复 Ubuntu 24.04 的 glibc floor 是 3.2,真正的下限由 CUDA 13 决定——正常运行需要 R580 驱动(内核 4.15),设置 VLLM_ENABLE_CUDA_COMPATIBILITY=1 可降到 R535 驱动(内核 3.10);Harry-Chen 认可结论,指出现存最老内核可能来自 RHEL7(正好 3.10),随后与 mgoin 一起批准合并。作者还主动说明本次变更不影响 PyPI wheels,那些构建用 manylinux2_28 覆盖 OS 版本。

实现拆解

  1. 构建参数中枢 docker/versions.json:UBUNTU_VERSION 默认值从 22.04 改为 24.04;FINAL_BASE_IMAGE 同步切换到 nvidia/cuda:13.0.3-base-ubuntu24.04;GDRCOPY_OS_VERSION 改为 Ubuntu24_04。该文件是所有镜像构建分支默认参数的事实来源,一处修改即可让各 CUDA 版本构建默认落在 24.04。
  2. 构建脚本 docker/Dockerfile:将 ARG UBUNTU_VERSION 默认值改为 24.04,并将接近文件尾部的 ARG GDRCOPY_OS_VERSION 改为 Ubuntu24_04,保证 tools/install_gdrcopy.sh 下载的预编译 gdrcopy 包与基础系统匹配,避免因版本不一致找不到 .deb 包。
  3. 文档配套 docs/getting_started/installation/gpu.cuda.inc.md:在 CUDA compatibility 小节追加宿主内核要求说明——CUDA 13 镜像正常运行需要 R580 或更新驱动(内核不低于 4.15),VLLM_ENABLE_CUDA_COMPATIBILITY=1 兼容模式支持 R535/R570,其中 R535 可把内核下限降到 3.10,R570 仍要求 4.15;同时明确 userland 升级到 Ubuntu 24.04 不会抬高这些由驱动定义的内核要求。
  4. 验证与发布边界:无新增单元测试,依赖 Buildkite CI(commit 3cd4c20295f4 触发构建 #82941)验证镜像构建;作者在讨论中说明 PyPI wheels 的构建通过 manylinux2_28 覆盖 OS 版本,不受本次变更影响。
文件 模块 状态 重要度
docker/versions.json 镜像配置 modified 4.05
docker/Dockerfile 镜像构建 modified 3.36
docs/getting_started/installation/gpu.cuda.inc.md 安装文档 modified 2.46

关键源码片段

docker/Dockerfile infrastructure

消费 versions.json 的 ARG 默认值,本次同步 UBUNTU_VERSION 与 GDRCOPY_OS_VERSION,保证基础层与 gdrcopy 安装版本一致。

# 以下 ARG 定义在 Dockerfile 中分布在不同位置,此处合并展示
ARG CUDA_VERSION=13.0.3
# 运行时基础镜像从 Ubuntu 22.04 升级到 24.04。24.04 自带 rdma-core 50.0,
# 满足 NCCL GIN(GDA-KI)对 rdma-core > 44 的要求,而 22.04 仅有 39
ARG UBUNTU_VERSION=24.04
​
# gdrcopy 预编译包按 OS 版本命名,必须与 UBUNTU_VERSION 保持一致,
# 否则 tools/install_gdrcopy.sh 会因找不到对应 .deb 包而失败
ARG GDRCOPY_CUDA_VERSION=12.8
ARG GDRCOPY_OS_VERSION=Ubuntu24_04

评论区精华

Ubuntu 24.04 userland 对旧宿主内核的兼容性 question

Harry-Chen 询问 24.04 userland 的最小内核要求,担心用户把容器跑在非常老的内核上。

结论:作者核实:glibc floor 为 3.2;CUDA 13 正常运行需 R580 驱动(内核 4.15),VLLM_ENABLE_CUDA_COMPATIBILITY=1 可降至 R535 驱动(内核 3.10);Harry-Chen 认可 RHEL7(3.10)为现存最老内核后放行。 · 已解决

变更是否影响 PyPI wheels question

作者主动说明本变更只作用于 Docker 镜像,PyPI wheels 构建使用 manylinux2_28 覆盖 OS 版本。

结论:不影响 PyPI wheels,二者发布路径独立。 · 已解决

风险与影响

宿主内核兼容是主要风险:镜像 userland 切到 24.04 后,老内核主机需要确认驱动满足 CUDA 13 要求(正常运行 4.15+,兼容模式 3.10+),已通过文档降低误用风险。gdrcopy 安装存在版本联动风险:GDRCOPY_OS_VERSION 必须与 Ubuntu 版本保持一致,本次同步为 Ubuntu24_04 且 CI 构建通过。配置漂移风险:versions.json 中 UBUNTU_VERSION、FINAL_BASE_IMAGE、GDRCOPY_OS_VERSION 三个参数相互关联,未来若只改一处会导致镜像构建不一致。对 PyPI 无影响,manylinux2_28 构建路径独立。

所有使用官方 Docker 镜像的 vLLM 用户默认获得 Ubuntu 24.04 userland 与 rdma-core 50.0,可直接使用 NCCL GIN(GDA-KI)等需要新版 rdma-core 的多节点通信方案;旧内核主机用户需在升级前核实驱动与内核版本。构建与发布流程简化,团队不再维护 22.04/24.04 双镜像线,镜像内部工具链(如 gdrcopy)随之切换。影响范围限于 Docker 镜像构建与发布主线,不涉及业务代码。

基础镜像升级影响全量容器用户 宿主内核下限依赖 GPU 驱动版本 gdrcopy 版本需与 Ubuntu 版本联动 无独立测试,依赖 CI 镜像构建验证

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论