Prhub

#52819 [ROCm]: Bump triton 3.7 commit

原始 PR 作者 Rohan138 合并时间 2026-08-20 06:39 文件变更 1 提交数 3 评论 21 代码增减 +2 / -2

执行摘要

ROCm 基础镜像升级 Triton 3.7 修复回归并锁定 pybind11

PR 的目标是包含 ROCm/triton 的提交 f0b55c07,用于缓解 Triton 3.7 中的回归问题,并作为等待 #50605(升级至 Triton 3.8 并启用 async_copy)落地前的临时方案。同时,由于 pybind11 3.1.0(08/06 发布)导致了 Kimi K2.6/K3 的问题,需要临时锁定 pybind11 版本。

值得阅读,因为它是基础设施层面的关键变更,展示了版本锁定与临时修复的典型做法。可关注其与 #50605 的关联,以及后续 pybind11 解锁和 Triton 3.8 升级的演进。

讨论亮点
  1. 合并顺序讨论:AndreasKaratzas 建议先合并 AITER bump base 再评估本 PR,以避免 base 冲突;Rohan138 认为应先落地本 PR 再 rebase AITER bump,因为本 PR 需要进入 v0.28.0 cherry-picks,而 AITER bump 需要额外的 e2e 测试。
  2. 测试失败讨论:AndreasKaratzas 指出某些测试不应 segfault,Rohan138 反馈 transformers 失败在重试后消失,但对 Llama 4 权重加载缓慢表示疑问,AndreasKaratzas 认为需要设备端调试。最终 Llama 4 测试在重试后通过,但仍有 flaky 现象。

实现拆解

  1. 更新 Triton 分支:在 docker/Dockerfile.rocm_base 中,将 ARG TRITON_BRANCH532137f 改为 f0b55c0,并更新注释日期(从 08/07 到 08/18)。目的是引入上游的回归修复,用于稳定 Triton 3.7 的 ROCm 构建。
  2. 固定 pybind11 版本:在同一文件中,将 pip install 行中的 pybind11 改为 'pybind11<3.1.0',以规避由 pybind11 3.1.0 引入的 Kimi K2.6/K3 问题,待后续 AITER 修复后再解除限制。
  3. CI 与测试验证:通过多次 /ci run/amd-ci run nightly 触发 CI,用于验证改动,并处理了 Llama 4 权重加载的 flaky 问题。
文件 模块 状态 重要度
docker/Dockerfile.rocm_base Docker 镜像 modified 3.76

关键源码片段

docker/Dockerfile.rocm_base infrastructure

唯一变更文件,通过修改 Triton 分支和 pybind11 版本锁定来修复回归。

# 该 Dockerfile 用于构建 ROCm 基础镜像,此改动通过更新 Triton 与 pybind11 的版本
# 来修复 Triton 3.7 回归,并规避 pybind11 3.1.0 导致的 Kimi 模型问题。
ARG BASE_IMAGE=rocm/dev-ubuntu-22.04:7.2.3-complete
# 将 Triton 分支更新至 f0b55c0,包含回归修复,并同步更新注释日期
ARG TRITON_BRANCH="f0b55c0" # release/internal/3.7.x as of 08/18
ARG TRITON_REPO="https://github.com/ROCm/triton.git"# ... 中间构建逻辑省略 ...# 安装 pip 依赖时,锁定 pybind11 版本小于 3.1.0,以规避 Kimi K2.6/K3 的兼容性问题,
# 后续需在 AITER 修复后解除此限制。
RUN pip install -U packaging 'cmake<4' ninja wheel 'setuptools<80' 'pybind11<3.1.0' Cython
# ...

评论区精华

合并顺序与 cherry-pick 策略 设计

AndreasKaratzas 建议先合并 AITER bump base 再评估本 PR,以避免冲突;Rohan138 则认为应先落地本 PR 再 rebase AITER bump,因需进入 v0.28.0 cherry-picks,而 AITER bump 还需 e2e 测试。

结论:最终先合入本 PR,AITER bump 稍后 rebase。 · 已解决

CI 测试失败(segfault 与 Llama 4 加载缓慢) 测试

AndreasKaratzas 指出部分测试不应 segfault;Rohan138 反馈 transformers 测试重试后通过,但 Llama 4 权重加载缓慢,AndreasKaratzas 认为需要设备端调试。

结论:Llama 4 测试重试后通过,但仍被标记为 flaky,需进一步设备端调试。 · 已解决

风险与影响

  1. Triton 分支变更风险docker/Dockerfile.rocm_base 是 ROCm 基础镜像的关键配置,新的 Triton 提交 f0b55c0 可能引入新的回归或行为变化,尽管 CI 与夜间测试通过,但长尾场景(如特定模型、特定算子)的风险仍存在。
  2. pybind11 版本锁定风险:锁定 pybind11<3.1.0 是临时方案,如果其他依赖需要 pybind11 3.1.0 的特性,可能引发兼容性问题。且该约束可能影响后续 AITER bump 或 Triton 3.8 升级的集成。
  3. Llama 4 加载缓慢/flaky:CI 中观察到 Llama 4 权重加载缓慢且偶发失败,虽在重试后通过,但可能暗示与镜像环境或 Triton 相关的潜在性能或稳定性问题。

该 PR 直接影响 ROCm 平台的 Docker 镜像构建,对所有基于此镜像的 ROCm 用户和 CI 测试生效。通过修复 Triton 3.7 回归和 pybind11 问题,提升了 ROCm 上模型推理(特别是 Kimi K2.6/K3)的稳定性。变更范围虽小(仅 Dockerfile),但影响面广,覆盖整个 ROCm 构建链。

基础设施变更 测试覆盖不足 存在 flaky 测试

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论