diff --git a/knowledge/repos/vllm-omni/models/qwen3-tts/rules.md b/knowledge/repos/vllm-omni/models/qwen3-tts/rules.md index ac9dbafe..71459157 100644 --- a/knowledge/repos/vllm-omni/models/qwen3-tts/rules.md +++ b/knowledge/repos/vllm-omni/models/qwen3-tts/rules.md @@ -1,10 +1,10 @@ --- title: "Qwen3-TTS 规则" created: 2026-07-20 -updated: 2026-10-20 +updated: 2026-10-24 type: rule tags: [vllm-omni, models, serving, qwen-omni] -sources: ["PR #5157", "PR #5202", "PR #5608", "PR #6001", "PR #6113", "PR #6523", "PR #6728", "PR #6861", vllm_omni/deploy/aura_omni.yaml, vllm_omni/deploy/qwen3_tts.yaml, vllm_omni/deploy/qwen3_tts_high_concurrency.yaml, vllm_omni/model_executor/models/aura_omni/pipeline.py, vllm_omni/model_executor/models/qwen3_tts/qwen3_tts_code2wav.py, vllm_omni/model_executor/models/qwen3_tts/prompt_embeds_builder.py, vllm_omni/model_executor/models/qwen3_tts/segmented_graph_wrapper.py, vllm_omni/model_executor/models/qwen3_tts/tokenizer_12hz/modeling_qwen3_tts_tokenizer_v2.py, vllm_omni/model_executor/stage_input_processors/chunk_size_utils.py, vllm_omni/entrypoints/openai/serving_speech.py, vllm_omni/entrypoints/openai/serving_speech_stream.py, vllm_omni/entrypoints/openai/speech_usage.py, vllm_omni/entrypoints/openai/tts_adapters/qwen3_tts.py, vllm_omni/model_executor/stage_input_processors/qwen3_tts.py, tests/e2e/online_serving/test_qwen3_tts_base.py, tests/e2e/online_serving/test_qwen3_tts_base_expansion.py, tests/entrypoints/openai_api/test_serving_speech.py, tests/entrypoints/openai_api/test_serving_speech_stream.py, tests/entrypoints/openai_api/test_tts_adapter.py, tests/model_executor/models/qwen3_tts/test_qwen3_tts_code2wav.py, tests/model_executor/models/qwen3_tts/test_qwen3_tts_incremental_decode.py, tests/model_executor/stage_input_processors/test_qwen3_tts_async_chunk.py, "PR #5048", "PR #6639", "issue #6855", "PR #8837", "PR #8674"] +sources: ["PR #5157", "PR #5202", "PR #5608", "PR #6001", "PR #6113", "PR #6523", "PR #6728", "PR #6861", vllm_omni/deploy/aura_omni.yaml, vllm_omni/deploy/qwen3_tts.yaml, vllm_omni/deploy/qwen3_tts_high_concurrency.yaml, vllm_omni/model_executor/models/aura_omni/pipeline.py, vllm_omni/model_executor/models/qwen3_tts/qwen3_tts_code2wav.py, vllm_omni/model_executor/models/qwen3_tts/prompt_embeds_builder.py, vllm_omni/model_executor/models/qwen3_tts/segmented_graph_wrapper.py, vllm_omni/model_executor/models/qwen3_tts/tokenizer_12hz/modeling_qwen3_tts_tokenizer_v2.py, vllm_omni/model_executor/stage_input_processors/chunk_size_utils.py, vllm_omni/entrypoints/openai/serving_speech.py, vllm_omni/entrypoints/openai/serving_speech_stream.py, vllm_omni/entrypoints/openai/speech_usage.py, vllm_omni/entrypoints/openai/tts_adapters/qwen3_tts.py, vllm_omni/model_executor/stage_input_processors/qwen3_tts.py, tests/e2e/online_serving/test_qwen3_tts_base.py, tests/e2e/online_serving/test_qwen3_tts_base_expansion.py, tests/entrypoints/openai_api/test_serving_speech.py, tests/entrypoints/openai_api/test_serving_speech_stream.py, tests/entrypoints/openai_api/test_tts_adapter.py, tests/model_executor/models/qwen3_tts/test_qwen3_tts_code2wav.py, tests/model_executor/models/qwen3_tts/test_qwen3_tts_incremental_decode.py, tests/model_executor/stage_input_processors/test_qwen3_tts_async_chunk.py, "PR #5048", "PR #6639", "issue #6855", "PR #8837", "PR #8674", "PR #9320"] confidence: high --- @@ -259,3 +259,12 @@ Qwen 家族入口见 [Qwen-Omni](../qwen-omni/_index.md)。 - 验收:gating 测试覆盖启用与 unsupported-platform fallback 两个分支(如 projected-table GPU test);sampler 注册/回退与 processor gating(含 plugin);PDL 在 B64/B65/B128 边界的路径选择;codec mask 对 sampling 与 prompt logprobs 均保持;staged write 的 scoped context 选择与 PCM reader fence;部署 YAML 为 per-request conditioned embeddings 预留 headroom 并与 `docs/design/qwen3_omni_tts_performance_optimization.md` 的 serving boundaries 同步。^[PR #8674] + +## VLLM-OMNI-PR9320-ROCM-SELECT-PREFLIGHT — AMD CI GPU lane 必须用显式 ROCm 选择器并预检精确收集数 + +- 触发:修改 `.buildkite/amd/test-amd-ready.yml` / `test-amd-merge.yml` 的 GPU lane pytest 选择器、`.buildkite/amd/scripts/assert-pytest-collection.sh`、`tests/buildkite/` 的 lane 断言,或测试文件上的 `rocm`/`cuda`/`nvidia_only`/`MI325`/`cards_N` 平台标记与 `tests/helpers/tests/test_check_test_marks.py` 的静态标记检查。 +- 强制:AMD READY/MERGE GPU lane 用显式 `rocm and MI325 [and cards_N] and not nvidia_only` 表达式选择测试,不用裸 `cuda`;原有 card-count 排除(如 one-GPU lane 的 `not (cards_2 or … or cards_8)`)随迁移保留。`rocm` 标记只加到有 AMD 运行证据的 variant,且保留全部既有 CUDA 资格:共享 CPU 测试保持 CPU-only(R2-01 因此移除 3 个 CPU-only OmniVoice 测试),Qwen3-TTS MRV2 variant 保持 CUDA-only,#9171 的 Wan CUDA/L4 sentinel 不变。每条迁移 lane 在启动 GPU 负载前先以同一组 pytest 参数运行 `assert-pytest-collection.sh EXPECTED_COUNT`,断言**精确且非零**的收集数(Diffusion 117、R2-01 1,400、R2-02 3、Diffusion LoRA 1、Wan22 offline 2 / online 1、Qwen3-Omni 16、Qwen3-TTS Base 3);预期计数变化必须用 manifest diff 逐项说明——build #14536 的首个精确计数守卫曾在 GPU 执行前暴露 1,399 的临时值,diff 定位到唯一一个有意新增项。AMD lane 以 `rocm` 为准,不引入单独的 `amd` marker;该 PR 不改 GitHub ruleset。 +- 禁止:把 AMD GPU lane 回退到裸 `cuda` 选择器(会静默收集 NVIDIA-only variant 或丢失 ROCm 覆盖,绿灯不再有意义);给没有 AMD 证据的 variant 加 `rocm`;删除或放宽收集数预检、把精确相等断言改成下界或 0 来掩盖 marker drift;为凑计数删测试或改 run-level;引入第二套平台 marker(如 `amd`)。静态合同:任一有效 test item 不得同时带 `rocm` 与 `nvidia_only`,包括 class-level 标记与 stacked function parametrization 叠加出的组合。 +- 验收:迁移 lane 的 YAML 同时携带预检命令与同参数的 pytest 命令;`tests/buildkite/test_amd_pipeline.py` 与 `tests/buildkite/test_amd_ready_r2_01.py` 锁定迁移后的选择器与收集数;静态检查断言 rocm+nvidia_only 的有效组合(含参数化叠加)被拒。边界保持:Qwen3-TTS Base lane 恰好收集 3 个非 MRV2 variant 且 MRV2 不被 `rocm` 选择器收集;Qwen3-Omni lane 新纳入的 7 个 variant 必须在 current-head AMD CI 上真实通过,不得只凭选择器变更即宣称已覆盖。^[PR #9320] + +