diff --git a/knowledge/repos/vllm-omni/rules-amd-ci.md b/knowledge/repos/vllm-omni/rules-amd-ci.md index 357f3dcc..3f38a3b1 100644 --- a/knowledge/repos/vllm-omni/rules-amd-ci.md +++ b/knowledge/repos/vllm-omni/rules-amd-ci.md @@ -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 流水线规则 @@ -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] + +## 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] + +