执行摘要
- 一句话:固定 AINIC apt 仓库到快照,修复 ROCm 镜像构建失败
- 推荐动作:该 PR 改动很小但值得快速阅读:它清晰展示了如何修复 apt 可变仓库路径导致的完整性检查失败,并通过选中内容完全一致的快照来保持镜像二进制不变。对于维护 ROCm 镜像或处理第三方 apt 源不稳定问题的工程师有参考价值,无需深入代码学习。
功能与动机
PR body 明确说明:AMD Model Executor job 在环境 setup 时失败,报错 E: Failed to fetch .../amdainic/pensando/ubuntu/1.117.5/dists/jammy/main/binary-amd64/Packages.gz File has unexpected size (3363 != 3397). Mirror sync in progress?。原因是 AINIC_VERSION=1.117.5 指向可变路径,repo.radeon.com 的索引文件按文件缓存,客户端可能把某个 publication 的 InRelease 与另一个的 Packages.gz 配对,触发 apt 完整性检查失败。固定到 1.117.5-a-77 这个 per-build 快照路径后,该路径不会在后续构建中被复用,且经测试确认该快照恰好提供 libionic1=54.0-187-1 和 ionic-dkms=26.03.3.001,与 #54112 选定的版本完全一致,镜像内容不变。
实现拆解
- 变更入口:在
docker/Dockerfile.rocm 和 docker/Dockerfile.rocm_gfx1250 中,将 ARG AINIC_VERSION=1.117.5 改为 ARG AINIC_VERSION=1.117.5-a-77。两个 Dockerfile 同步修改,确保通用 ROCm 镜像与 gfx1250 专用镜像使用同一固定快照,避免变体之间行为不一致。
- 配套文档:在
docs/features/moriio_connector_usage.md 的"官方镜像预装"列表中,将 AINIC 版本说明从 1.117.5 更新为 1.117.5-a-77,同时保留 libionic1=54.0-187-1 与 ionic-dkms=26.03.3.001 的说明,防止文档与镜像声明不一致。
- 验证方式:PR body 给出隔离 apt root 下固定到 CI pod 所用 CDN 边缘节点的测试对比,
1.117.5 路径 InRelease 期望 3397 但实际返回 3363,退出码 100;1.117.5-a-77 路径期望与实际均为 3363,退出码 0。本 PR 未新增自动化测试文件,属于纯构建配置与文档变更。
关键文件:
docker/Dockerfile.rocm(模块 镜像构建;类别 infra;类型 infrastructure): 通用 ROCm 镜像的主构建文件,是 AINIC 版本变量的定义处,也是本次修复的核心入口。将 ARG AINIC_VERSION 从可变路径 1.117.5 固定到 per-build 快照 1.117.5-a-77,直接消除 apt 索引文件配对不一致的问题。
docker/Dockerfile.rocm_gfx1250(模块 镜像构建;类别 infra;类型 infrastructure): gfx1250 专用镜像构建文件,与通用 ROCm 镜像保持同一 AINIC 版本,确保不同硬件变体的镜像构建行为一致。
docs/features/moriio_connector_usage.md(模块 文档;类别 docs;类型 documentation): MoRI 连接器使用文档中声明了官方镜像预装的 AINIC 版本号,需与 Dockerfile 同步更新,避免文档描述与镜像实际内容不一致。
关键符号:未识别
关键源码片段
docker/Dockerfile.rocm
通用 ROCm 镜像的主构建文件,是 AINIC 版本变量的定义处,也是本次修复的核心入口。将 ARG AINIC_VERSION 从可变路径 1.117.5 固定到 per-build 快照 1.117.5-a-77,直接消除 apt 索引文件配对不一致的问题。
# Users can specify a custom version compatible with their host drivers.
# The default version has been tested with ionic-dkms=26.03.3.001
# (libionic1=54.0-187-1), required for MoRI-EP/NIXL on Pollara/AINIC.
# 固定到 per-build 快照 1.117.5-a-77:1.117.5 是可变路径,repo.radeon.com
# 的索引文件按文件缓存,可能把不同 publication 的 InRelease 与 Packages.gz
# 配在一起,导致 apt 完整性检查失败。快照路径不会被后续构建复用。
ARG AINIC_VERSION=1.117.5-a-77
评论区精华
本 PR 没有实质性的 review 讨论:claude[bot] 因 PR 来自 fork 而自动跳过审查,AndreasKaratzas 直接 approve。Issue 侧仅有 mergify 的文档预览、/ci run 指令和 Buildkite CI 触发记录,均为流程性消息,无技术争议。
风险与影响
- 风险:
- 第三方快照可用性:
repo.radeon.com 的 per-build 快照 1.117.5-a-77 理论上仍可能被上游清理或下线,届时镜像构建会再次失败;但 per-build 路径通常不会复用,风险较低。
- 版本锁定一致性:固定后的快照提供的
libionic1 与 ionic-dkms 版本与之前完全一致,镜像内容无实质变化,功能性回归风险低。
- 影响面窄:变更仅作用于 ROCm Docker 镜像构建配置与对应文档,不涉及运行时、核心代码和推理逻辑。
- 无自动化回归测试:该变更没有配套测试文件,后续若需升级 AINIC 版本,需要人工同步修改两个 Dockerfile 和一份文档,存在遗漏点。
- 影响:对用户的影响:使用 vllm/vllm-openai-rocm 官方镜像并启用 AINIC(AMD Pensando Pollara)NIC 的用户,镜像内实际安装的驱动库版本不变,但 apt 源解析更稳定,减少构建时的偶发失败。对系统的影响:修复 AMD CI 任务在环境 setup 阶段的不稳定失败。对团队的影响:为 ROCm 镜像的第三方 apt 依赖提供了"从可变路径固定到 per-build 快照"的实践范式,同时要求后续维护者注意 Dockerfile 主变体、gfx1250 变体和文档三处版本号的同步。
- 风险标记:构建配置变更, 依赖第三方 apt 快照, 无自动化测试覆盖
关联脉络
参与讨论