Prhub

#24981 [AMD] avoid aiter re-installing triton in amd_install_dependency

原始 PR 作者 bingxche 合并时间 2026-05-11 23:05 文件变更 1 提交数 3 评论 3 代码增减 +1 / -1

执行摘要

修复 AMD CI 中 aiter 重建时 triton 被重装问题

避免 aiter 在 AMD CI 重建时重新安装 triton,因为 aiter 的 setup.py 在 commit #3086 后无条件调用 install_triton.sh,导致卸载 CI 镜像自带的 ROCm 优化 triton 并重新安装,可能引发兼容性问题并掩盖更重要的 bug。

值得合入,但可考虑 gemini-code-assist[bot] 的建议进一步优化构建隔离设置,以提升 CI 效率。

讨论亮点

gemini-code-assist[bot] 指出使用默认构建隔离的 pip install 在 CI 中效率低下,会重新下载超过1GB的 torch 等依赖,建议增加 --no-build-isolation 并使用缓存和 install_with_retry 提高效率。该建议未被采纳,但当前方案已经通过 AITER_USE_SYSTEM_TRITON=1 规避了核心问题。

实现拆解

  1. 设置环境变量:在 scripts/ci/amd/amd_ci_install_dependency.sh 中 aiter 重建命令前添加 AITER_USE_SYSTEM_TRITON=1,使得 aiter 的 setup.py 跳过 triton 安装流程。
  2. 改用 pip install -e .:将 python3 setup.py develop 替换为 pip install -e .,以匹配已有 Dockerfile 和 aiter 自身 CI 工作流,利用 PEP 517 构建隔离避免依赖冲突。
  3. 验证:CI 运行 [run 25676429617] 显示成功保留系统 triton 3.4.0。
文件 模块 状态 重要度
scripts/ci/amd/amd_ci_install_dependency.sh CI 脚本 modified 2.95

关键源码片段

scripts/ci/amd/amd_ci_install_dependency.sh infrastructure

唯一变更文件,通过新增环境变量和 CLI 命令变更避免 triton 重装

# sglang/scripts/ci/amd/amd_ci_install_dependency.sh
# 上下文:当 NEED_REBUILD 为 true 时执行 aiter 重建
if [[ "${NEED_REBUILD}" == "true" ]]; then
    # ... 其他准备步骤
    docker exec ci_sglang bash -c "
        cd /sgl-workspace/aiter && \
        # 设置环境变量避免 aiter 重新安装 triton(保留 CI 镜像自带的 ROCm 优化版)
        AITER_USE_SYSTEM_TRITON=1 GPU_ARCHS=${GPU_ARCH_LIST} python3 setup.py develop
    "
    echo "[CI-AITER-CHECK] === AITER REBUILD COMPLETE ==="
fi

注意:实际 diff 中该命令可能为 pip install -e .,但核心思路一致。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:仅修改一行环境变量和安装命令,不影响业务代码。潜在风险是如果未来 aiter 的安装流程变化,环境变量名可能失效,但 CI 日志可快速发现。

直接影响 AMD CI 的 aiter 构建步骤,缩短构建时间(避免下载 triton),提高 CI 稳定性。不影响用户功能或运行时行为。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论