执行摘要
- 一句话:升级 ROCm 至 7.2.2,重建 CLR 修补 profiler
- 推荐动作:建议在后续 PR 中验证 hotfix 的安装路径,补充
-DCMAKE_INSTALL_PREFIX;执行 apt-get clean 或清理 list 缓存以优化镜像层;在升级到 ROCm 7.2.3 时及时移除临时 hotfix。此 PR 的稀疏检出 + 固定 commit 模式值得借鉴,适合用于上游修复未发布时的临时工单。
功能与动机
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’。
实现拆解
-
升级基础镜像与依赖版本(docker/Dockerfile.rocm_base):将基础镜像标签 BASE_IMAGE 从 rocm/dev-ubuntu-22.04:7.2.1-complete 升级为 7.2.2-complete;将 AITER_BRANCH 从 v0.1.10.post3 升级为 v0.1.12.post2。同时移除 pytorch/third_party/kineto 的远程添加与 checkout 操作,因为 profiler 修复已迁移至 CLR。
-
添加 torch profiler hotfix(docker/Dockerfile.rocm_base):通过 git clone --filter=blob:none 稀疏检出 rocm-systems 仓库的特定提交(35e8c7bf8),仅包含 projects/hip 和 projects/clr。然后利用 cmake 构建 CLR 并执行 make install,从而将上游 PR #5062 的修复应用到系统。该步骤标记为临时,预期在迁移至 ROCm 7.2.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 镜像;类别 infra;类型 infrastructure): 主要变更文件:升级 ROCm 基础镜像,添加 CLR 重建 hotfix 修复 profiler,升级 AITER,移除 kineto patch
.buildkite/release-pipeline.yaml(模块 CI 配置;类别 config;类型 configuration): 更新 ROCm 发布管线的版本变量从 rocm721 到 rocm722
关键符号:未识别
关键源码片段
docker/Dockerfile.rocm_base
主要变更文件:升级 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/* 以优化镜像层
评论区精华
-
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/*,会导致镜像层缓存膨胀。鉴于临时性质认为可接受。
-
CLR 重建 hotfix 可能因缺少 CMAKE_INSTALL_PREFIX 而无效 (correctness): PR 已合并,但作者未对此评论做公开回应或修改。hotfix 的有效性仍存疑。
- apt 缓存清理 (other): 确认问题但未修复,评论者认为可接受。
风险与影响
- 风险:
- 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 缓存未清理, 临时修复待移除
关联脉络
参与讨论