Prhub

#41386 [ROCm] ROCm7.2.2 + profiler fix + AITER 0.1.12.post2

原始 PR 作者 gshtras 合并时间 2026-05-05 02:07 文件变更 2 提交数 15 评论 3 代码增减 +25 / -5

执行摘要

升级 ROCm 至 7.2.2,重建 CLR 修补 profiler

PR body 说明‘A combination of base libraries that works Including the profiler fix through rocm runtime’,旨在整合一组可用的基础库,使 profiler 修复通过 ROCm runtime 生效。提交信息也明确‘Bump ROCm to 7.2.2; rebuild CLR to fix profiling’。

建议在后续 PR 中验证 hotfix 的安装路径,补充 -DCMAKE_INSTALL_PREFIX;执行 apt-get clean 或清理 list 缓存以优化镜像层;在升级到 ROCm 7.2.3 时及时移除临时 hotfix。此 PR 的稀疏检出 + 固定 commit 模式值得借鉴,适合用于上游修复未发布时的临时工单。

讨论亮点
  • gemini-code-assist 指出 hotfix 的 cmake 命令缺少 CMAKE_INSTALL_PREFIX,默认安装到 /usr/local,而镜像的 LD_LIBRARY_PATH 优先搜索 /opt/rocm,因此系统仍会加载原始库,修复可能无效。同时建议将多个 RUN 合并以优化镜像层。

  • Bortlesboat 认可 hotfix 的实现模式(稀疏检出、固定 commit、清理临时目录),但注意到 apt-get install 后未清理 /var/lib/apt/lists/*,会导致镜像层缓存膨胀。鉴于临时性质认为可接受。

实现拆解

  1. 升级基础镜像与依赖版本docker/Dockerfile.rocm_base):将基础镜像标签 BASE_IMAGErocm/dev-ubuntu-22.04:7.2.1-complete 升级为 7.2.2-complete;将 AITER_BRANCHv0.1.10.post3 升级为 v0.1.12.post2。同时移除 pytorch/third_party/kineto 的远程添加与 checkout 操作,因为 profiler 修复已迁移至 CLR。

  2. 添加 torch profiler hotfixdocker/Dockerfile.rocm_base):通过 git clone --filter=blob:none 稀疏检出 rocm-systems 仓库的特定提交(35e8c7bf8),仅包含 projects/hipprojects/clr。然后利用 cmake 构建 CLR 并执行 make install,从而将上游 PR #5062 的修复应用到系统。该步骤标记为临时,预期在迁移至 ROCm 7.2.3 后移除。

  3. 更新构建配置.buildkite/release-pipeline.yaml):将 generate-rocm-wheels-root-index 步骤中的 VARIANT 环境变量从 rocm721 修改为 rocm722,确保仓库索引的版本标签与实际镜像一致。

注意:cmake 命令中仅设置 -DCMAKE_PREFIX_PATH='/opt/rocm/',未设置 -DCMAKE_INSTALL_PREFIX='/opt/rocm/',可能导致 hotfix 无效(见评论区讨论)。

文件 模块 状态 重要度
docker/Dockerfile.rocm_base Docker 镜像 modified 4.37
.buildkite/release-pipeline.yaml CI 配置 modified 2.67

关键源码片段

docker/Dockerfile.rocm_base infrastructure

主要变更文件:升级 ROCm 基础镜像,添加 CLR 重建 hotfix 修复 profiler,升级 AITER,移除 kineto patch

# 升级 ROCm 基础镜像版本从 7.2.1 到 7.2.2
ARG BASE_IMAGE=rocm/dev-ubuntu-22.04:7.2.2-complete
​
# 升级 AITER 从 v0.1.10.post3 到 v0.1.12.post2
ARG AITER_BRANCH=v0.1.12.post2
​
# torch profiler hotfix for 7.2.2: 重建 CLR 并合并上游 PR #5062 的修复
# 此部分将在升级至 ROCm 7.2.3 后移除
RUN apt-get update && apt-get install -y rocm-llvm-dev
RUN pip install CppHeaderParser
RUN git clone --no-checkout --filter=blob:none https://github.com/ROCm/rocm-systems /tmp/rocm-systems && cd /tmp/rocm-systems && git sparse-checkout init --cone && git sparse-checkout set projects/hip projects/clr && git checkout 35e8c7bf8911862e5389509800e65fdf125412b3 && export CLR_DIR=/tmp/rocm-systems/projects/clr && export HIP_DIR=/tmp/rocm-systems/projects/hip && mkdir -p $CLR_DIR/build && cd $CLR_DIR/build && cmake -DHIP_COMMON_DIR=$HIP_DIR -DCMAKE_PREFIX_PATH=/opt/rocm/ -DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF -DHIP_PLATFORM=amd .. && make -j$(nproc) && make install && rm -rf /tmp/rocm-systems
# 注意:Review 指出缺少 -DCMAKE_INSTALL_PREFIX=/opt/rocm/ 可能导致修复无效
# 同时建议在 apt-get 后清理 /var/lib/apt/lists/* 以优化镜像层

评论区精华

CLR 重建 hotfix 可能因缺少 CMAKE_INSTALL_PREFIX 而无效 正确性

gemini-code-assist 在 `docker/Dockerfile.rocm_base` 指出 cmake 命令缺少 `-DCMAKE_INSTALL_PREFIX='/opt/rocm/'`,默认安装到 `/usr/local`,而 `LD_LIBRARY_PATH` 优先搜索 `/opt/rocm`,因此系统仍会加载原始库,修复可能无效。同时建议将多个 RUN 合并以减少镜像层。

结论:PR 已合并,但作者未对此评论做公开回应或修改。hotfix 的有效性仍存疑。 · Open

apt 缓存清理 other

Bortlesboat 在 PR review 中指出 `apt-get install` 后未清理 `/var/lib/apt/lists/*`,会增加镜像层体积。但鉴于该段为临时 hotfix,认为可以接受。

结论:确认问题但未修复,评论者认为可接受。 · Dismissed

风险与影响

  • Hotfix 可能无效:如评论区指出,缺少 CMAKE_INSTALL_PREFIX 可能导致重建的库未被系统加载,profiler 修复未生效(影响 docker/Dockerfile.rocm_base 构建的镜像)。
  • 兼容性风险:从 ROCm 7.2.1 升级到 7.2.2,以及 AITER 版本跳跃(0.1.10 → 0.1.12),可能引入未预期的行为改变,但 PR 应已通过内部和外部测试。
  • 技术债务:hotfix 标记为临时,若忘记在 ROCm 7.2.3 升级时移除,将导致冗余的构建步骤和可能的冲突。
  • 镜像体积:apt 缓存未清理导致 Docker 镜像层略大。

影响范围限定于 ROCm 平台的 CI/CD 构建环境和开发环境。最终用户无直接影响,但确保 ROCm 用户能正常使用 torch profiler 进行性能分析。影响程度中等,因为涉及整个 ROCm 基础镜像的依赖升级和构建流程调整。

Hotfix 可能无效 缺少 CMAKE_INSTALL_PREFIX apt 缓存未清理 临时修复待移除

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论