Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions knowledge/repos/vllm-omni/rules-amd-ci.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: "vllm-omni AMD/ROCm CI 流水线规则"
created: 2026-10-22
updated: 2026-10-24
updated: 2026-10-25
type: rule
tags: [vllm-omni]
sources: ["PR #9227", "PR #9224", "PR #9126", "PR #9307"]
sources: ["PR #9227", "PR #9224", "PR #9126", "PR #9307", "PR #9372"]
---

# vllm-omni AMD/ROCm CI 流水线规则
Expand Down Expand Up @@ -44,3 +44,12 @@ sources: ["PR #9227", "PR #9224", "PR #9126", "PR #9307"]
- 验收:`pytest tests/buildkite/test_amd_pipeline.py::test_qwen3_omni_seed_tts_realtime_perf_is_one_nonblocking_nightly_job -q` 通过;夜间 YAML 中该作业保持上述结构,`tests/dfx/perf/tests/test_qwen3_omni_seed_tts.json` 的 rocm mark 为 `MI325` 且 `benchmark_params` 为无 baseline 的 explicit/vad 两项;`test-amd-ready.yml` 与 `test-amd-merge.yml` 不含该作业 label。^[PR #9307]

<!-- kb:rule status=active since=v0.30.0 -->

## VLLM-OMNI-PR9372-AMD-NIGHTLY-SRC-FILTER — AMD label 夜间按源依赖过滤:只滤 NIGHTLY_TESTS 组,排定/调试夜间逐字节全量

- 触发:改动 `.buildkite/amd/scripts/filter_test_suite.py`、`.buildkite/amd/scripts/bootstrap-amd-omni.sh` 中 `upload_pipeline` 的夜间过滤接线与临时文件清理、`.buildkite/amd/test-amd-nightly.yml` 作业的 `source_file_dependencies` 键,或 `.buildkite/common/ci_source_file_dependencies.yml` 与 `.buildkite/common/scripts/upload_pipeline.py` 中 `filter_pipeline_by_source_dependencies` 的共享注册表及 AMD 回退前缀。
- 强制:label 触发的 AMD PR 夜间(`BUILDKITE_PULL_REQUEST` 非 `false`/空、无 `DEBUG_TEST_YAML`、非 `NIGHTLY=1`)必须经 `filter_test_suite.py` 复用共享 `filter_pipeline_by_source_dependencies`,只保留与 `--changed-files` 匹配的作业;`test-amd-nightly.yml` 每个夜间作业声明 `source_file_dependencies` 键(PR #9372 覆盖全部 30 个工作负载);多套件组合时仅过滤 `NIGHTLY_TESTS` 组——组缺失、重复或组内 steps 非列表必须报错,过滤后为空则整组移除——READY/MERGE 组保持原样;排定 `NIGHTLY=1` 与显式调试夜间必须把输入套件逐字节写入输出、不过滤;AMD 复用 CUDA/NPU 的匹配与回退语义但不套用 CUDA 硬件扩展;路由基础设施文件(bootstrap/combine/filter/select 脚本、`test-template-amd-omni.j2`、依赖注册表、common `upload_pipeline.py`)作为 AMD 回退前缀:改动仅限这些文件时保留全量套件,且回退不豁免过滤——同时存在命中作业依赖键的源码改动时套件仍按匹配收窄(由 `tests/buildkite/test_amd_nightly_source_filter.py::test_fallback_plus_matching_model_change_still_filters` 守护);fail-closed 范围以 `filter_test_suite.py` 实际捕获的 `FileNotFoundError`/`TypeError`/`ValueError`(依赖键未知、注册表缺失、组合套件缺 steps 列表、`NIGHTLY_TESTS` 组缺失/重复/组内 steps 非列表)及顶层文档非 dict 的 `parser.error` 为限——YAML 解析异常不在捕获之列,共享过滤函数对顶层 steps 非列表的套件按原文档返回,不得把 fail-closed 表述为覆盖一切非法输入;在 `pipeline.yaml` 渲染并 `cat` 完成后、执行 `buildkite-agent artifact upload pipeline.yaml` 与 `buildkite-agent pipeline upload pipeline.yaml` 之前,清理 combined 与 filtered 两个临时 YAML。
- 禁止:让 label 触发的 AMD PR 夜间跳过源过滤扇出全量矩阵(PR #9369 例:diffusion-only PR 在 CUDA 侧只选 2 个源相关作业,AMD 侧却跑满 30 个夜间工作负载);过滤排定 `NIGHTLY=1` 或调试夜间;过滤组合套件中 `NIGHTLY_TESTS` 以外的组;删除夜间作业的 `source_file_dependencies` 键;对 AMD 套用 CUDA 硬件扩展;仅因改动同时触及路由基础设施回退前缀就放行全量套件(同时存在匹配源码改动时仍须收窄);吞掉上述已捕获范围内的 fail-closed 错误令未知键静默放行或静默收窄;删除 `tests/buildkite/test_amd_nightly_source_filter.py` 或 `tests/buildkite/test_upload_pipeline.py` 中对应回归。
- 验收:`env PYTHONPATH=. pytest -q -o addopts='' --confcutdir=tests/buildkite tests/buildkite/test_amd_nightly_source_filter.py tests/buildkite/test_upload_pipeline.py` 通过,其中 `test_fallback_plus_matching_model_change_still_filters` 断言回退前缀改动叠加匹配源码改动仍收窄套件;`test-amd-nightly.yml` 每个夜间作业含 `source_file_dependencies`;diffusion-only PR 输入收窄到匹配的 tiny-diffusion 作业,排定与调试输入与原套件逐字节一致,组合 READY+NIGHTLY 输入 READY 原样、仅 NIGHTLY 部分收窄。^[PR #9372]

<!-- kb:rule status=active since=v0.30.0 -->
Loading