执行摘要
- 一句话:调整ROCm CI门控测试的设备映射与镜像配置
- 推荐动作:对于关注 vLLM CI 基础设施和 ROCm 测试门控的团队成员,本 PR 值得精读。特别是 run-amd-test.sh 中条件引用的修复,体现了处理 CI 测试命令传递的细致考虑。其余配置更改较为直接,留意评论中提及的潜在不一致即可。
功能与动机
PR body 明确指出 'This PR refines AMD mirror gating amidst new MI300 nodes',作者在评论中补充关联 ci-infra PR#347 以协调基础设施变更。目的是配合新节点部署,将AMD门控测试从旧设备平滑迁移到新设备。
实现拆解
- 移除旧设备镜像:在 engine.yaml 中删除 mi325_2 和 mi325_4 的 AMD 镜像(V1 e2e 多卡测试);在 misc.yaml、models_basic.yaml、models_language.yaml、models_multimodal.yaml 中删除对应的 mi325_1 镜像块。
- 新增新设备镜像:在 entrypoints.yaml 的 LLM 及 API Server 测试中加入 mi300_1 镜像;在 misc.yaml 的 V1 Sample+Logits 和 V1 Core+KV+Metrics 中改为 mi300_1;在 models_language.yaml 的 Hybrid 测试中新增 mi300_1 镜像;在 models_multimodal.yaml 的所有标准测试中改为 mi300_1;在 samplers.yaml 中改为 mi250_1。
- 修复 run-amd-test.sh 引用问题:引入 commands_source 变量区分命令来自环境变量还是参数列表,仅在 argv 模式执行重新引用(re_quoting)以避免对已正确引用的环境变量命令造成二次破坏。
- 更新顶层 pipeline 文件:修改 .buildkite/test-amd.yaml 以包含调整后的测试组列表,确保 CI pipeline 正确调度。
关键文件:
.buildkite/test_areas/models_language.yaml(模块 测试配置;类别 config;类型 configuration): 核心演示了语言模型测试的AMD镜像从MI325_1切换到MI300_1,并新增了Hybrid测试的AMD镜像块。
.buildkite/test_areas/models_multimodal.yaml(模块 测试配置;类别 config;类型 configuration): 多模态测试的四个AMD镜像全部从mi325_1更换为mi300_1,同时移除了最后一个标准测试的镜像块。
.buildkite/scripts/hardware_ci/run-amd-test.sh(模块 CI脚本;类别 infra;类型 infrastructure): 脚本改进避免了重复引用对 VLLM_TEST_COMMANDS 造成破坏,体现了对 CI 健壮性的细致考虑。
.buildkite/test_areas/engine.yaml(模块 测试配置;类别 config;类型 configuration): 移除了两个多卡测试(2GPUs、4GPUs)的AMD镜像,意味着这些测试不再在AMD GPU上运行。
.buildkite/test_areas/entrypoints.yaml(模块 测试配置;类别 config;类型 configuration): 在LLM Integration测试中新增mi300_1镜像,同时移除了API Server Part 1和Part 2的mi325_1镜像,改为不运行AMD镜像或仅在LLM测试中覆盖。
.buildkite/test_areas/misc.yaml(模块 测试配置;类别 config;类型 configuration): 调整了Spec Decode移除镜像,同时V1 Sample+Logits和V1 Core+KV+Metrics改为mi300_1。存在与PR描述不一致的潜在问题。
.buildkite/test-amd.yaml(模块 顶层配置;类别 config;类型 configuration): 顶层CI pipeline文件,根据下层测试组的变化调整了包含的测试步骤列表。
关键符号:未识别
关键源码片段
.buildkite/scripts/hardware_ci/run-amd-test.sh
脚本改进避免了重复引用对 VLLM_TEST_COMMANDS 造成破坏,体现了对 CI 健壮性的细致考虑。
# 在 run-amd-test.sh 中,引入 commands_source 变量以区分命令来源
if [[ -n "${VLLM_TEST_COMMANDS:-}" ]]; then
commands="${VLLM_TEST_COMMANDS}"
commands_source="env" # 标记命令来自环境变量,引用已正确保留
echo "Commands sourced from VLLM_TEST_COMMANDS (quoting preserved)"
else
commands="$*"
commands_source="argv"
if [[ -z "$commands" ]]; then
echo "Error: No test commands provided." >&2
exit 1
fi
fi
# 只有来自 argv 的命令需要重新引用处理,避免破坏已经正确的引用
if [[ "$commands_source" == "argv" ]]; then
commands=$(re_quote_pytest_markers "$commands")
echo "After re-quoting: $commands"
else
echo "Skipping re-quoting for VLLM_TEST_COMMANDS input"
fi
评论区精华
在 review 中,gemini-code-assist[bot] 提出了两个问题:
风险与影响
- 风险:
- 配置不一致风险:misc.yaml 中镜像绑定可能不符合预期,导致门控测试无法正确覆盖目标硬件(Comment #1)。
- 命令重复维护风险:models_language.yaml 中 AMD 镜像的命令与主测试命令重复,后续修改参数需同步两处,易致遗漏。
- 脚本变更影响:run-amd-test.sh 的条件引用逻辑变更可能影响其他依赖该脚本的 CI 流程。
- 设备资源依赖:新设备 mi300_1/mi250_1 资源不足可能导致测试排队或超时。
- 影响:本 PR 仅影响 AMD ROCm CI 的测试调度和硬件映射,对 vLLM 产品的用户无直接功能影响。CI 维护者需关注新设备的稳定性和资源利用率。由于去掉了部分旧设备的镜像,门控覆盖率可能短暂下降,但长期将提升对新硬件的覆盖。
- 风险标记:配置不一致风险, 命令重复维护, 脚本变更影响, 设备资源依赖
关联脉络
参与讨论