# PR #56459 完整报告

- 仓库：`vllm-project/vllm`
- 标题：[ROCm][Docker] Pin AINIC apt repo to snapshot 1.117.5-a-77
- 合并时间：2026-09-11 22:14
- 原文链接：http://prhub.com.cn/vllm-project/vllm/pull/56459

---

# 执行摘要

- 一句话：固定 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 选定的版本完全一致，镜像内容不变。

# 实现拆解

1. 变更入口：在 `docker/Dockerfile.rocm` 和 `docker/Dockerfile.rocm_gfx1250` 中，将 `ARG AINIC_VERSION=1.117.5` 改为 `ARG AINIC_VERSION=1.117.5-a-77`。两个 Dockerfile 同步修改，确保通用 ROCm 镜像与 gfx1250 专用镜像使用同一固定快照，避免变体之间行为不一致。
2. 配套文档：在 `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` 的说明，防止文档与镜像声明不一致。
3. 验证方式：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 索引文件配对不一致的问题。

```dockerfile
# 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 触发记录，均为流程性消息，无技术争议。

- 暂无高价值评论线程

# 风险与影响

- 风险：
 1. 第三方快照可用性：`repo.radeon.com` 的 per-build 快照 `1.117.5-a-77` 理论上仍可能被上游清理或下线，届时镜像构建会再次失败；但 per-build 路径通常不会复用，风险较低。
 2. 版本锁定一致性：固定后的快照提供的 `libionic1` 与 `ionic-dkms` 版本与之前完全一致，镜像内容无实质变化，功能性回归风险低。
 3. 影响面窄：变更仅作用于 ROCm Docker 镜像构建配置与对应文档，不涉及运行时、核心代码和推理逻辑。
 4. 无自动化回归测试：该变更没有配套测试文件，后续若需升级 AINIC 版本，需要人工同步修改两个 Dockerfile 和一份文档，存在遗漏点。
 - 影响：对用户的影响：使用 `vllm/vllm-openai-rocm` 官方镜像并启用 AINIC（AMD Pensando Pollara）NIC 的用户，镜像内实际安装的驱动库版本不变，但 apt 源解析更稳定，减少构建时的偶发失败。对系统的影响：修复 AMD CI 任务在环境 setup 阶段的不稳定失败。对团队的影响：为 ROCm 镜像的第三方 apt 依赖提供了 " 从可变路径固定到 per-build 快照 " 的实践范式，同时要求后续维护者注意 Dockerfile 主变体、gfx1250 变体和文档三处版本号的同步。
 - 风险标记：构建配置变更 , 依赖第三方 apt 快照 , 无自动化测试覆盖

# 关联脉络

- 暂无明显关联 PR