From 32eba12bb2b1719d6d920bce2bceb8fef8503943 Mon Sep 17 00:00:00 2001 From: tzhouam Date: Sat, 24 Oct 2026 04:11:15 +0000 Subject: [PATCH] knowledge(vllm-omni): 1 change(s) from refine --- .../repos/vllm-omni/models/qwen-image/rules.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/knowledge/repos/vllm-omni/models/qwen-image/rules.md b/knowledge/repos/vllm-omni/models/qwen-image/rules.md index 8663f1b6..eb12f44b 100644 --- a/knowledge/repos/vllm-omni/models/qwen-image/rules.md +++ b/knowledge/repos/vllm-omni/models/qwen-image/rules.md @@ -1,10 +1,10 @@ --- title: "Qwen-Image 实现规则" created: 2026-09-02 -updated: 2026-10-23 +updated: 2026-10-24 type: rule tags: [vllm-omni, models, diffusion] -sources: ["PR #5887", tests/e2e/accuracy/test_qwen_image.py, "PR #6110", vllm_omni/diffusion/models/qwen_image/qwen_image_transformer.py, "PR #5586", "PR #7513", "PR #8699", "PR #9272"] +sources: ["PR #5887", tests/e2e/accuracy/test_qwen_image.py, "PR #6110", vllm_omni/diffusion/models/qwen_image/qwen_image_transformer.py, "PR #5586", "PR #7513", "PR #8699", "PR #9272", "PR #9268"] confidence: high --- @@ -70,3 +70,13 @@ confidence: high - 验收:CPU 单测以 weakref + `gc.collect()` 断言 `release_idle_entries()` 后 dead-owner key 从 `entries`/`_owners` 消失且静态 prefix 张量可回收(weakref 归 None)、live key 保留且 `_owners[live_key]()` 仍指向在飞请求的 key tensor;`release_step_request` 置空 kv_cache 与 geometry 且不调用 `clear`/`release_idle_entries`;prefill 路径断言 `release_idle_entries` 恰好被调用一次。weakref 单测证明的是 entry 生命周期机制,不构成 GPU 端到端 OOM 已消除的证据。^[PR #9272] + +## VLLM-OMNI-PR9268-QWEN21-ROCm-ACC-NIGHTLY — ROCm 夜间精度任务必须跑真实对照;gfx942 IT2I 的文档化 XFAIL 是对 QWENIMG-1a 的显式窄例外 + +- 触发:修改 `tests/e2e/accuracy/qwen_image_21/` 的 contract/preflight/thresholds/测试/参考脚本、`.buildkite/amd/test-amd-nightly.yml` 或 `tests/buildkite/test_amd_pipeline.py` 中 "Qwen-Image 2.1 Accuracy" 作业合同,或 `vllm_omni/diffusion/models/qwen_image_21/autoencoder_kl_qwenimage21.py` 的 `_cudnn_deterministic()` 平台判定。 +- 强制:ROCm 在 torch 侧复用 `cuda` 设备命名空间但 cuDNN attention 不可用——contract 平台项固定 `rocm` 为 `generator_device: "cuda"`、`attention_backend: "TORCH_SDPA"`,preflight 把 `rocm` 映射到 `torch.cuda`;cuda 与 rocm 都断言 `total_memory >= 70 * 1024**3`(实际检查阈值是 70 GiB,失败文案却写 "Use one >=80 GB GPU",审阅时不要把文案当成 80 GB 检查)。ROCm CI 镜像返回空 marketing name 时必须以 `gcnArchName` 作为稳定设备身份,防止校准静默落回 CUDA 默认阈值。VAE 的 `_cudnn_deterministic()` 只在 `torch.version.hip is None`(CUDA)时临时启用 determinism 并在退出时还原原值,HIP/MIOpen 必须保持默认卷积策略。平台 attention 策略各自固定:ROCm 用 Torch SDPA,CUDA 保留 cuDNN attention,NPU 维持既有执行 profile。AMD 夜间作业为 NonBlocking、`mi300_1`、mirror `amdproduction`、180 分钟超时,以 `full_model and diffusion and rocm and MI325 and cards_1` 标记先 collect-only 恰好收集 `it2i`、`t2i` 两个节点(数量或节点不符即 exit 5)再运行,环境固定 `QWEN_IMAGE_21_CALIBRATE=0`(正常执行而非校准掩盖)与 `DIFFUSION_ATTENTION_BACKEND=TORCH_SDPA`,并上传 junitxml、pytest 日志与 accuracy 产物(含 metrics 与图像)。T2I 保持严格数值门限 SSIM ≥ 0.99、PSNR ≥ 40 且必须真实通过。 +- 强制:与 QWENIMG-1a 的显式关系——gfx942 IT2I 必须完整执行 native/reference 对照并保留 metrics 与图像后按文档化 expected XFAIL 报告,根因是默认 MIOpen condition-image VAE 编码跨隔离进程不确定。该 XFAIL 构成对 QWENIMG-1a "先证同 seed repeatability、再上跨实现数值 gate" 要求的显式窄例外:范围仅限 ROCm gfx942 的 IT2I case,且以跨进程非确定性根因仍然成立为前提;除此之外的一切情形(含 ROCm T2I 以及 CUDA/NPU 全部 case)QWENIMG-1a 继续完全生效。任何把该 XFAIL 改为真实数值阈值的变更,必须先按 QWENIMG-1a 证明同 seed repeatability 并定位/消除 MIOpen 非确定性根因,再执行跨实现数值 gate。 +- 禁止:为 ROCm 引入未经验证的数值下限或用校准吸收差异;为通过门限删减 IT2I 真实对照或产物上传;在 HIP 上强制 `cudnn.deterministic`;省略 collect-only 精确节点守卫;把该作业加入 ready/merge pipeline 或改为 blocking;accuracy test 丢失 `os.environ.get("BUILDKITE_COMMIT")` 证据锚点;把 gfx942 IT2I 例外扩大到其他平台或 case,或在未满足 QWENIMG-1a 前置条件的情况下移除 XFAIL 改设数值阈值。 +- 验收:`test_amd_pipeline.py` 断言 grade/pool/mirror/timeout、两个 env 值、`full_model and diffusion and rocm and MI325 and cards_1` 标记、节点守卫文案、`setup_reference.sh` 与 BUILDKITE_COMMIT 读取,并断言 "Qwen-Image 2.1 Accuracy" 不出现在 ready/merge pipeline;`test_vae.py` 以 monkeypatch 分别证明 determinism scope 仅 CUDA 生效且退出后还原、MIOpen 路径保持默认策略。gfx942 IT2I XFAIL(SSIM 0.9834/PSNR 32.30)与 T2I 通过(0.9968/44.63)是 MI300 nightly 的历史证据,不构成对 MIOpen 非确定性的定量刻画。^[PR #9268] + +