Prhub

#6498 [ci] chore: triton-ascend==3.2.1 need install path in docker

原始 PR 作者 yyyy2000 合并时间 2026-05-27 15:20 文件变更 4 提交数 4 评论 4 代码增减 +21 / -7

执行摘要

在 Ascend Dockerfile 中配置 triton-ascend 专用 pip 源

PR 标题明确说明 triton-ascend==3.2.1 need install path in docker,即需要在 Docker 构建过程中配置 triton-ascend 包的安装路径(私有 pip 索引),以避免因默认 PyPI 源不包含该包而导致的安装失败。

该 PR 是典型的 Docker 基础设施维护,变更简单、聚焦。建议:

1) 确认构建 CI 已涵盖这些 Dockerfile;
2) 后续优化可将 export 改为 ENV 以提升可维护性。整体值得快速合并。

讨论亮点

代码审查机器人 gemini-code-assist[bot] 指出,在 RUN 指令中使用 export 设置的环境变量不会持久化到后续 RUN 指令中,可能导致构建失败,建议改用 ENV 指令。但该评论未得到作者或维护者的回复或采纳,PR 最终以 wucong25 的 approve 合并。说明在上下文中,因为后续 pip 操作均在同一个 RUN 指令链中(通过 && 连接),环境变量仍然有效,因此 export 方式可行,但使用 ENV 更为规范和健壮。

实现拆解

  1. Dockerfile.ascend_8.5.0_a2Dockerfile.ascend_8.5.0_a3 中,将原有的 RUN 指令前插入 export PIP_EXTRA_INDEX_URLexport PIP_TRUSTED_HOST,指定 triton-ascend 的私有索引;同时添加条件判断:在 x86_64 架构下安装 CPU 版 torch 2.9.0,并修改 pip install vllm-ascend 的参数为 --no-build-isolation --no-deps
  2. Dockerfile.ascend.sglang_8.5.0_a2Dockerfile.ascend.sglang_8.5.0_a3 中,在 git clone verl 之前以类似方式设置环境变量。
  3. 四个文件的修改均在同一模式:在 RUN 命令中通过 export 设置环境变量,后续 pip 操作即可从私有索引安装 triton-ascend。
文件 模块 状态 重要度
docker/ascend/Dockerfile.ascend_8.5.0_a2 部署脚本 modified 4.0
docker/ascend/Dockerfile.ascend_8.5.0_a3 部署脚本 modified 3.9
docker/ascend/Dockerfile.ascend.sglang_8.5.0_a2 部署脚本 modified 2.93
docker/ascend/Dockerfile.ascend.sglang_8.5.0_a3 部署脚本 modified 2.93

关键源码片段

docker/ascend/Dockerfile.ascend_8.5.0_a2 infrastructure

核心变更文件之一,增加 triton-ascend 私有源和 CPU torch 安装。

# 在 RUN 指令中设置私有 pip 源(通过 && 链式执行,变量在当前层生效)
RUN export PIP_EXTRA_INDEX_URL=https://triton-ascend.osinfra.cn/pypi/simple/ && \
    export PIP_TRUSTED_HOST=triton-ascend.osinfra.cn && \
    ARCH=$(uname -m) && \
    # ... 其他安装步骤 ... && \
    if [ "$ARCH" = "x86_64" ]; then \
        pip install torch==2.9.0+cpu --index-url https://download.pytorch.org/whl/cpu/; \
    fi && \
    # 安装 vllm-ascend 时跳过依赖和隔离构建
    export COMPILE_CUSTOM_KERNELS=1 && pip install --no-build-isolation --no-deps -v -e . && cd ..
docker/ascend/Dockerfile.ascend_8.5.0_a3 infrastructure

与 a2 版本同步修改,保持一致性。

# 相同模式:在 RUN 指令中 export 私有源变量
RUN export PIP_EXTRA_INDEX_URL=https://triton-ascend.osinfra.cn/pypi/simple/ && \
    export PIP_TRUSTED_HOST=triton-ascend.osinfra.cn && \
    ARCH=$(uname -m) && \
    # ... 其他安装 ... && \
    if [ "$ARCH" = "x86_64" ]; then \
        pip install torch==2.9.0+cpu --index-url https://download.pytorch.org/whl/cpu/; \
    fi && \
    export COMPILE_CUSTOM_KERNELS=1 && pip install --no-build-isolation --no-deps -v -e . && cd ..

评论区精华

Dockerfile 中使用 export 与 ENV 的选择 正确性

gemini-code-assist[bot] 指出在 RUN 指令中使用 export 设置的环境变量不会持久化到后续 RUN 指令中,可能导致 triton-ascend 解析失败,建议改用 ENV 指令。

结论:未直接回应,但 PR 最终被 wucong25 approve 并合并。由于环境变量在同一 RUN 链中通过 && 传递,export 当前有效,但使用 ENV 更优。 · 已解决

风险与影响

低风险。变更仅影响 Ascend 平台的 Docker 构建流程,不涉及运行时逻辑。潜在风险包括:私有索引失效或 triton-ascend 包版本不匹配导致构建中断;x86_64 架构下安装 CPU PyTorch 可能引入不必要的依赖。但这些均可通过 CI 构建验证。

影响范围限定于 Ascend 平台的 Docker 镜像构建流程。对使用 Dockerfile.ascend_8.5.0_a2Dockerfile.ascend_8.5.0_a3Dockerfile.ascend.sglang_8.5.0_a2Dockerfile.ascend.sglang_8.5.0_a3 的用户有直接效果:构建过程中能够正常安装 triton-ascend 包,从而避免构建失败。对其他模块无影响。

缺少测试覆盖 构建环境可能变化

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论