执行摘要
- 一句话:为 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。
实现拆解
- 在每个目标测试组的 YAML 定义末尾追加 mirror.amd 块,将 NVIDIA job 复制为 AMD job;
- AMD job 使用 mi250_1/mi250_4/mi355_1/mi355_2 设备池,并设置 depends_on: image-build-amd 以复用 ROCm 镜像构建产物;
- 部分 mirror 使用 no_gpu: true(如 Rust Cargo、Basic Models Other、Multimodal Processor Shard),表示这些测试不需要 GPU,可在 CPU 或轻量节点运行;
- 对需要 ROCm 特定依赖的测试,在 commands 中安装 requirements/kv_connectors_rocm.txt 或设置 ATTENTION_BACKEND=TRITON_ATTN(如 NixlConnector 系列);
- 每个 mirror 单独声明 source_file_dependencies,使其能在对应源码变化时触发;
- 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 改动相关
参与讨论