执行摘要
- 一句话:统一 Buildkite 测试作业标签为设备优先格式
- 推荐动作:值得精读 PR body 及其关联的 vllm-dashboard#67 与 ci-infra#478 两个跨仓库 issue,完整案例展示了「命名迁移」如何通过跨仓库契约(label 格式、verbatim 覆盖、dashboard 兼容)平滑落地;对 CI 标签有深度定制需求的读者可借鉴其唯一性校验与发布顺序设计。后续在
.buildkite/test_areas 新增或修改作业时,应遵循 :<vendor>: (<Device>) <Purpose> [Shard %N] 约定并注意标签唯一性。
功能与动机
PR body 明确提出标准化目标:Standardize Buildkite test-area labels on a device-first format: :<vendor>: (<Device>) <Purpose> [Shard %N]。此前标签以用途开头、设备信息隐含或缺失,且 AMD 镜像标签恒为派生的 AMD: <label> (<device>);源标签改为 :nvidia: 前缀后,AMD 作业会错误渲染为 AMD: :nvidia: H200 … (mi300_1)。因此配套 ci-infra#478 引入 mirror.amd.label 可选字段、vllm-dashboard#67 保证仪表盘分组不出现冷缓存缺口,本 PR 为执行主体。
实现拆解
- 确定命名约定:将全部主标签从「用途优先」改为「设备优先」格式
:<vendor>: (<Device>) <Purpose>。例如 models_multimodal.yaml 中 "Multi-Modal Models (Standard) 1: qwen2" 改为 ":nvidia: (H200) Multimodal Models (Standard) 1: qwen2";lm_eval.yaml 中 "LM Eval Small Models" 改为 ":nvidia: (H200) LM Eval Small Models";CPU 作业统一使用 :computer: (CPU) 前缀,如 "Multi-Modal Processor (CPU) %N" 改为 ":computer: (CPU) Multimodal Processor Shard %N"。设备名由 step 的 device 字段推导:h200_18gb → (H200)、mi300_1 → (MI300)、b200-k8s → (B200),40 个无显式 device 字段的作业按 ci-infra 队列映射标注为 (L4)。
- 为 AMD 镜像作业新增显式标签:所有带
mirror.amd 的 step 在 mirror.amd 下新增 label 字段,格式为 ":amd: (MI3xx) <同源 purpose>"。该字段依赖已合入的 ci-infra#478 语义——存在时 verbatim 作为镜像 job 的显示标签,缺省时行为与旧版 AMD: <label> (<device>) 派生逻辑逐字节一致,且 NVIDIA 侧标签永不受影响。58 个 AMD 覆盖 models_multimodal.yaml、lm_eval.yaml、disaggregated.yaml、kernels.yaml、spec_decode.yaml、engine.yaml 等文件。
- 处理并行与唯一性:所有带
parallelism 的作业将 label 中的 %N 改写为 Shard %N(如 kernels.yaml 的 "Kernels Attention Test %N" → ":nvidia: (L4) Attention Kernels Shard %N"),使 Buildkite 展开后的 job 名与渲染结果完全对应。去掉设备后缀后出现四对重复标签,通过简明 purpose 限定词区分:Basic/Extended(distributed.yaml 的 DP 测试)、DP + EP/Distributed Features、FP8 MoE Kernels/DeepEP FP8 MoE Kernels(kernels.yaml)、Medium/Large,保证 268 个逻辑标签全局唯一。
- 校验与发布顺序:PR body 记录了完整验证手段——对所有变更 YAML 做结构对比(剔除 label 字段后与 origin/main 完全一致)、校验 vendor/device/shard 格式与逻辑级/展开级双重唯一性、block-key 字符约束(
[A-Za-z0-9_-]+)、渲染 Buildkite build#84295 全量 pipeline 并逐一比对等。发布顺序为 vllm-dashboard#67 → ci-infra#478 → 本 PR,三者构成同一命名迁移的跨仓库契约。
关键文件:
.buildkite/test_areas/models_multimodal.yaml(模块 测试编排;类别 config;类型 configuration): 多模态模型测试区域,覆盖 H200、CPU 与多种 AMD 镜像设备,是主标签、AMD 显式标签与 CPU :computer: 前缀三类规则同时出现的代表性文件。
.buildkite/test_areas/lm_eval.yaml(模块 测试编排;类别 config;类型 configuration): 改动量最大的文件(+28/-26),覆盖 H200、H100、B200、A100、DGX Spark 与 8xMI300 等多种设备,完整展示了多设备型号到标签的映射。
.buildkite/test_areas/disaggregated.yaml(模块 测试编排;类别 config;类型 configuration): KV 传输/分离式推理测试区域,大量作业无显式 device 字段、依赖隐式队列映射,PR 中这些作业统一标注为 :nvidia: (L4),是隐式设备映射风险的代表文件。
.buildkite/test_areas/kernels.yaml(模块 测试编排;类别 config;类型 configuration): kernel 测试区域,包含并行 Shard 后缀改写、FP8/DeepEP MoE 限定词区分等本 PR 最复杂的唯一性处理。
.buildkite/test_areas/models_language.yaml(模块 测试编排;类别 config;类型 configuration): 语言模型测试区域,主标签、AMD 显式标签与 Granite 仅限 L4 运行的注释说明共同体现设备维度信息的前置化。
.buildkite/test_areas/spec_decode.yaml(模块 测试编排;类别 config;类型 configuration): 投机解码测试区域,覆盖 H200、B200、H100 与 MI300/MI300_2 混合设备,showcase 多设备镜像配对场景。
关键符号:未识别
评论区精华
该 PR 没有实质性的代码评审讨论:review_comments_count 为 0,评论区仅有 claude[bot] 的模板提示和 /ci run 触发记录(Buildkite #84290)。真正的设计决策记录在 PR body 与两个关联跨仓库 issue 中:
风险与影响
- 风险:
- 隐式设备映射强耦合:40 个无显式
device 字段的作业统一标注为 :nvidia: (L4),依赖 ci-infra 队列到设备的映射保持稳定;若队列映射调整,标签会与实际硬件失配。
- 跨仓库前置依赖:新标签对 AMD 作业的渲染依赖 ci-infra#478 的
mirror.amd.label 语义。若该基础设施版本未同步部署,回退逻辑仍可工作(无 label 时沿用旧派生行为),但可能短暂出现 AMD 作业带 :nvidia: 前缀的渲染错误。
- 唯一性依赖人工约定:268 个标签唯一性靠限定词和命名规范维持,新增测试作业时若沿用相同 purpose 可能产生冲突,当前无自动检测(仅本次一次性校验)。
- 外部工具匹配失效风险:按旧 label 精确匹配的脚本、Slack 通知或 dashboard 过滤器可能受影响;PR 仅确认了 host-side fast-CI reporter 按 job UUID 去重不受影响,其余外部消费者未逐一排查。
- 影响:影响范围集中在 CI 可视化与工具链:Buildkite 作业显示名、dashboard 分组与过滤器、历史 job 检索的 label 语义全部变化;对 vLLM 运行时行为、性能、模型推理或用户 API 零影响。收益层面,设备优先命名让跨 NVIDIA/AMD/CPU 的 CI 状态一眼可读,为后续按硬件筛选、资源归因和 dashboard 分组提供统一基础。受影响的直接人群是维护 CI 的团队与依赖 job 标签做统计的外部脚本作者,需要同步更新匹配规则。
- 风险标记:CI 显示标签与设备映射强耦合, 跨仓库前置依赖, 标签唯一性靠人工约定维护, 外部按 label 匹配的工具可能失效
关联脉络
- PR #478 Allow AMD mirrors to declare their own display label: 跨仓库(ci-infra)前置依赖:新增
mirror.amd.label 字段,使 58 个 AMD 镜像作业能显式声明 :amd: 标签,否则设备优先命名会让 AMD 作业显示 NVIDIA 前缀。
- PR #67 Preserve dashboard grouping across CI label renames: 跨仓库(vllm-dashboard)前置依赖:保证重命名后 dashboard 分组视图不出现冷缓存缺口,并兼容新旧两种 AMD 标签格式。
- PR #40938 [ROCm][CI] Move ROCm AITER quantization tests: 历史 vLLM PR:曾修改
.buildkite/test_areas/kernels.yaml(本 PR 改动的同一文件)并调整 CI job 结构;后续新增测试作业时需遵循新的标签唯一性约定。
参与讨论