执行摘要
- 一句话:Ascend 镜像升级至 CANN 9.0.1/Python 3.12 并清理无效构建步骤
- 推荐动作:不值得作为重点 PR 精读,可快速浏览。值得留意的是「删除不存在的构建文件」与「跟随 vllm 升级同步调整镜像」这类配套变更的协作模式:基础设施维护往往与上游依赖升级联动(如 PR#7238),在排查 Ascend 镜像构建失败时,应先核对 vllm 仓库文件结构是否变化。
功能与动机
PR body 明确说明「update to python 3.12 & cann 9.0.1,delete non-existent file」。该变更是 Ascend 镜像环境版本的常规跟进:CANN 9.0.1 与 Python 3.12 是更新版本的运行环境,而 vllm 新版仓库中 requirements/build.txt 已不存在,继续执行该步骤会导致镜像构建失败或无意义的构建过程。
实现拆解
实现拆解如下(均为基础设施配置变更):
- 基础镜像升级:修改
docker/ascend/Dockerfile.ascend_9.0.0_a2 与 Dockerfile.ascend_9.0.0_a3 的 FROM 行,将镜像从 cann:9.0.0-910b-ubuntu22.04-py3.11 / cann:9.0.0-a3-ubuntu22.04-py3.11 升级为 cann:9.0.1-910b-ubuntu22.04-py3.12 / cann:9.0.1-a3-ubuntu22.04-py3.12,分别对应 910B 与 910_9392 两个 SOC 平台。
- vllm 构建步骤简化:在两个 Dockerfile 中删除
cd vllm && pip install -r requirements/build.txt && 这一步骤,保留后续的 VLLM_TARGET_DEVICE=empty pip install -v -e. editable 安装。原因是新版 vllm 已移除 requirements/build.txt 文件,删除后避免构建阶段报错,也使镜像层构建更简洁。
- 未含配套变更:本 PR 没有新增测试、文档或 CI 配置改动,仅依赖现有的 Ascend Docker 镜像构建工作流(如
.github/workflows/docker-build-ascend-a2.yml、docker-build-ascend-a3.yml)做实际构建验证。
关键文件:
docker/ascend/Dockerfile.ascend_9.0.0_a2(模块 镜像构建;类别 infra;类型 infrastructure): Ascend 910B 平台的构建镜像定义:基础镜像升级到 CANN 9.0.1 + Python 3.12,并移除 vllm 安装流程中对已不存在文件 requirements/build.txt 的引用。
docker/ascend/Dockerfile.ascend_9.0.0_a3(模块 镜像构建;类别 infra;类型 infrastructure): Ascend A3 平台(910_9392)的配套镜像定义,与 a2 文件做相同的 CANN/Python 版本升级和 build.txt 清理,保证两平台镜像环境一致。
关键符号:未识别
关键源码片段
docker/ascend/Dockerfile.ascend_9.0.0_a2
Ascend 910B 平台的构建镜像定义:基础镜像升级到 CANN 9.0.1 + Python 3.12,并移除 vllm 安装流程中对已不存在文件 requirements/build.txt 的引用。
# 基础镜像升级:CANN 9.0.0 + Python 3.11 -> CANN 9.0.1 + Python 3.12
FROM swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.1-910b-ubuntu22.04-py3.12
ARG SOC_VERSION="ascend910b1"
# ... 环境准备阶段省略 ...
RUN export PIP_EXTRA_INDEX_URL=https://triton-ascend.osinfra.cn/pypi/simple/ && \
source /usr/local/Ascend/ascend-toolkit/set_env.sh && \
source /usr/local/Ascend/nnal/atb/set_env.sh && \
# vllm 新版已移除 requirements/build.txt,故不再执行该 pip install 步骤,
# 直接以 VLLM_TARGET_DEVICE=empty 做 editable 安装,避免无效构建
cd vllm && \
VLLM_TARGET_DEVICE=empty pip install -v -e. && cd .. && \
if [ "$ARCH" = "x86_64" ]; then \
pip install torch==2.10.0+cpu --index-url https://download.pytorch.org/whl/cpu/; \
fi
docker/ascend/Dockerfile.ascend_9.0.0_a3
Ascend A3 平台(910_9392)的配套镜像定义,与 a2 文件做相同的 CANN/Python 版本升级和 build.txt 清理,保证两平台镜像环境一致。
# 基础镜像升级:CANN 9.0.0 + Python 3.11 -> CANN 9.0.1 + Python 3.12
FROM swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.1-a3-ubuntu22.04-py3.12
ARG SOC_VERSION="ascend910_9392"
# ... 环境准备阶段省略 ...
RUN export PIP_EXTRA_INDEX_URL=https://triton-ascend.osinfra.cn/pypi/simple/ && \
source /usr/local/Ascend/ascend-toolkit/set_env.sh && \
source /usr/local/Ascend/nnal/atb/set_env.sh && \
# vllm 新版已移除 requirements/build.txt,直接进行 editable 安装
cd vllm && \
VLLM_TARGET_DEVICE=empty pip install -v -e. && cd .. && \
if [ "$ARCH" = "x86_64" ]; then \
pip install torch==2.10.0+cpu --index-url https://download.pytorch.org/whl/cpu/; \
fi
评论区精华
该 PR 无任何 review 评论或讨论线程,审核人 wucong25 直接给予 APPROVED。核心结论即 PR body 所述:升级 Python/CANN 版本并删除不存在的文件,改动意图简单明确,未产生设计或实现层面的分歧。
风险与影响
- 风险:主要风险集中在环境兼容性上:
- CANN/Python 版本跃升:从 Python 3.11 升至 3.12、CANN 9.0.0 升至 9.0.1,可能影响 Ascend 算子库行为、
triton-ascend 依赖兼容性以及镜像内其他 Python 包(如 torch==2.10.0+cpu)的可用性,需依赖镜像构建 CI 做真实验证。
- 删除 build.txt 的潜在依赖缺失:若 vllm 在 editable 安装过程中仍隐式依赖
requirements/build.txt 中声明的构建依赖(如 ninja、cython 等),删除后可能造成构建期失败;不过该步骤被移除正是因为文件已不存在,风险较低。
- 无自动化测试覆盖:Dockerfile 变更没有可执行的单测或集成测试,只能通过镜像构建流水线和下游 NPU CI 任务间接验证。
- 影响:影响范围为使用 Ascend a2/a3 镜像的用户和依赖这些镜像的 CI 流水线(如 nightly_ascend.yml、Ascend Docker 构建工作流)。升级后基础运行环境统一到 CANN 9.0.1 + Python 3.12,与 vLLM 0.23.0 升级链路(PR#7238)保持一致;已有镜像需重新构建,下游任务也需同步验证算子与三方库兼容性。整体影响面较小,属于可预期的环境维护变更。
- 风险标记:依赖版本升级, 构建链路变更, 未配套测试, NPU 运行时兼容性
关联脉络
- PR #7238 [doc] feat: Update vllm/vllm-ascend and torch version: 同一 Ascend 基础设施升级链路:7238 将 vLLM/vLLM-Ascend 升到 0.23.0 并同步相关脚本与文档,本 PR 在此之上升级 CANN/Python 基础镜像并移除 vllm 新版已不存在的 build.txt 安装步骤,二者共同构成 Ascend 镜像环境的版本升级闭环。
参与讨论