From d713771c66ce28f33d2670fdce73ea454043262b Mon Sep 17 00:00:00 2001 From: tzhouam Date: Mon, 26 Oct 2026 13:37:34 +0000 Subject: [PATCH] knowledge(vllm-omni): 1 change(s) from intake --- .../vllm-omni/components/serving/_index.md | 1 + .../serving/rules-dfx-reliability.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 knowledge/repos/vllm-omni/components/serving/rules-dfx-reliability.md diff --git a/knowledge/repos/vllm-omni/components/serving/_index.md b/knowledge/repos/vllm-omni/components/serving/_index.md index 67a9843e..331d5c56 100644 --- a/knowledge/repos/vllm-omni/components/serving/_index.md +++ b/knowledge/repos/vllm-omni/components/serving/_index.md @@ -65,3 +65,4 @@ sources: [] - [vLLM-Omni Stage-CLI 测试规则](rules-stage-cli-tests.md) - [vLLM-Omni Serving 规则 — MiniCPM-o 注意力后端对比](rules-minicpmo-attn-compare.md) - [Diffusion speech 采样参数校验规则](rules-diffusion-speech-params.md) +- [vLLM-Omni Serving · DFX 可靠性故障注入测试评审规则](rules-dfx-reliability.md) diff --git a/knowledge/repos/vllm-omni/components/serving/rules-dfx-reliability.md b/knowledge/repos/vllm-omni/components/serving/rules-dfx-reliability.md new file mode 100644 index 00000000..6c00c1a1 --- /dev/null +++ b/knowledge/repos/vllm-omni/components/serving/rules-dfx-reliability.md @@ -0,0 +1,19 @@ +--- +title: "vLLM-Omni Serving · DFX 可靠性故障注入测试评审规则" +created: 2026-10-26 +updated: 2026-10-26 +type: rule +tags: [vllm-omni, components, serving] +sources: ["PR #9407"] +--- + +# vLLM-Omni Serving · DFX 可靠性故障注入测试评审规则 + +## VLLM-OMNI-PR9407-FAULT-PAYLOAD-REUSE — 可靠性故障注入的并发线程复用预构建多模态请求体,worker 线程禁止触发 espeak + +- 触发:改动 `tests/dfx/reliability/test_qwen3_omni.py` 中 `_multimodal_request` 的请求体构建、模块级 `_MULTIMODAL_REQUESTS` 缓存,或进程击杀(process-kill)线程池(`submit_concurrent` / `assert_fast_fail` 路径)对该请求体的使用;以及任何会让多个测试线程直接或间接调用 `tests/helpers/media.py` 的 `generate_synthetic_audio`(pyttsx3/espeak)的新测试代码。 +- 强制:多模态请求体须在调用线程上按 model 构建一次并缓存于 `_MULTIMODAL_REQUESTS`(warmup 在进入线程池前的主线程完成首次音频合成),`assert_fast_fail` 与 `submit_concurrent` 复用同一 body,线程池 worker 只发送 HTTP;`_multimodal_request` 每次返回新组装的外层 dict,`modalities` 以 `list(...)` 拷贝。依据 PR #9407 随修复新增的代码注释:espeak 为进程级全局(单一 synth 回调、固定 350 项 voice 表 N_VOICES_LIST),修复前四个 worker 线程各自调用 `_multimodal_request` → `generate_synthetic_audio`,在服务器已返回 HTTP 500 的情况下把 pytest 进程以 SIGSEGV(退出码 139)杀死,故障注入测试无法完成对 API 错误的断言。 +- 禁止:把请求体构建(尤其 `generate_synthetic_audio` 调用)移回线程池 worker 或任何并发路径;删除 `_MULTIMODAL_REQUESTS` 缓存使 worker 重新合成音频;在没有并发调用方证据的情况下改 `tests/helpers/media.py` 加进程级 espeak 锁(PR #9407 记录仓库内其余 `generate_synthetic_audio` 调用方均为单线程,媒体助手保持不动)。 +- 验收:`tests/dfx/reliability/test_qwen3_omni.py::test_reliability_fault_process_kill_worker_no_load[qwen3_omni_reliability_async_chunk__sigterm]`(双 H100、Qwen/Qwen3-Omni-30B-A3B-Instruct)能完整结束并观测到 HTTP 500,pytest 进程不再以 139 退出;源码中 `_multimodal_request` 含按 model 的缓存,且线程池 worker 路径不再调用 `generate_synthetic_audio`。^[PR #9407] + +