# PR #55252 完整报告

- 仓库：`vllm-project/vllm`
- 标题：[ROCm][CI] Stage F gating
- 合并时间：2026-09-12 15:40
- 原文链接：http://prhub.com.cn/vllm-project/vllm/pull/55252

---

# 执行摘要

- 一句话：为 ROCm CI 新增 15 个 AMD 镜像测试门禁
- 推荐动作：值得精读。这是 vLLM 将 AMD 平台纳入一等公民的重要一步，展示了 Buildkite mirror 机制的用法，对理解 ROCm CI 布局有帮助。后续若想了解完整 Stage F/G 演进，可对比 PR 56522、56526 等。

# 功能与动机

PR body 说明要“Add 15 AMD mirrors for existing CI test groups”，即在现有 NVIDIA 测试组上挂 AMD mirror，让 ROCm 相关测试成为合入门禁的一部分。结合近期 PR 56522（延长 MI300 测试超时）和 56526（修复 ROCm Kimi-K3 崩溃）可知，ROCm 平台正在系统性地加大 CI 覆盖，而本 PR 是其中的 Stage F 阶段：将分散的 AMD 镜像测试统一纳入 gating。Issue 评论中的 mergify 提示曾出现冲突，需要 rebase。

# 实现拆解

1. 在每个目标测试组的 YAML 定义末尾追加 mirror.amd 块，将 NVIDIA job 复制为 AMD job；
2. AMD job 使用 mi250_1/mi250_4/mi355_1/mi355_2 设备池，并设置 depends_on: image-build-amd 以复用 ROCm 镜像构建产物；
3. 部分 mirror 使用 no_gpu: true（如 Rust Cargo、Basic Models Other、Multimodal Processor Shard），表示这些测试不需要 GPU，可在 CPU 或轻量节点运行；
4. 对需要 ROCm 特定依赖的测试，在 commands 中安装 requirements/kv_connectors_rocm.txt 或设置 ATTENTION_BACKEND=TRITON_ATTN（如 NixlConnector 系列）；
5. 每个 mirror 单独声明 source_file_dependencies，使其能在对应源码变化时触发；
6. 12 个 commit 中包含多次 merge origin/main，并在 commit 8a98b2e 中说明“Resolve Basic Models Other with the incoming Qwen3.5 MTP configuration test”，即与 main 的冲突被解决并保留了新覆盖。

关键文件：
- `.buildkite/test_areas/misc.yaml`（模块 CI 配置；类别 config；类型 configuration）: 包含最多新增行（+47），为 Extract Hidden States Integration 和 Batch Invariance 添加 AMD mirror，并扩展了 source_file_dependencies 覆盖
- `.buildkite/test_areas/lm_eval.yaml`（模块 CI 配置；类别 config；类型 configuration）: 为 LM Eval Small Models Distributed 与 GPQA Eval（GPT-OSS）添加 MI355 mirror，并切换至 ROCm 专属配置列表 models-mi3xx-fp8-and-mixed.txt 和 models-gfx950.txt
- `.buildkite/test_areas/distributed.yaml`（模块 CI 配置；类别 config；类型 configuration）: 为 Distributed Compile + RPC（MI355）与 Pipeline + Context Parallelism（MI250）添加 mirror，覆盖多卡并行测试的 ROCm 验证

关键符号：未识别


# 评论区精华

CodeRabbit 提出 1 条 actionable 评论：rust_frontend_cargo.yaml 中两个 MI250 Cargo mirror 的 timeout 分别为 25 分钟，与独立 AMD job 的 35 分钟不一致，建议统一为 35 分钟。提交 4405802 已修复。此外 mergify 曾提示 merge conflict 需要 rebase，最终作者通过多次 merge origin/main 解决。没有其他实质性争议。

- MI250 Rust Cargo mirror 超时不一致 (testing): 作者在 commit 4405802 中修复，将两个 mirror 超时从 25 改为 35 分钟。
- merge 冲突处理 (other): 作者未 rebase，而是多次 merge origin/main 解决冲突，最终 head_sha 019ace4 成功合并。

# 风险与影响

- 风险：纯 CI 配置变更，不涉及运行时代码。主要风险是：
 1) 新 AMD mirror 可能因环境差异（如 MI250 的 GPU 数量、显存、驱动）导致测试失败，需要在 CI 中观察；
 2) 增加 CI 流水线总耗时，AMD 节点资源可能成为瓶颈；
 3) 如果某些测试在 ROCm 上本身就不稳定，gating 后可能阻塞合入，需要后续用 optional 或 skip 处理（如 PR 56463 对 XPU 的做法）；
 4) mirror 的 source_file_dependencies 若配置不当，可能导致测试触发不足或过度触发。
 - 影响：对 CI 流水线：AMD 硬件利用率提升，合入门禁覆盖扩大；对 ROCm 用户：更早发现回归，保证主要功能在 AMD GPU 上可用；对团队：需要维护 15 组 mirror 的配置，增加 CI 维护成本。对最终用户无直接影响，但能提升 AMD 平台的软件质量。
 - 风险标记：新增 CI 门禁 , 环境差异风险 , 资源占用增加 , 纯配置变更

# 关联脉络

- PR #56522 [ROCm][CI] Extend timeout for `Basic Models (other)`: 同属 ROCm CI 可靠性改进，延长 MI300 测试超时，与本 PR 的 AMD mirror 超时设置一脉相承
- PR #56526 [ROCm][Kimi-K3] Fix non-contiguous state_indices crash and GPU-sync assert in fused KDA/MLA prefill: ROCm 平台的 bugfix，说明本 PR 的 AMD gating 测试有实际价值，能拦截此类回归
- PR #56329 [CI] Give every Buildkite step an explicit key, and a hook to enforce it: 同类 CI 基础设施改进，涉及 Buildkite 配置规范化，与本 PR 的 .buildkite 改动相关