Skip to content
Draft
Show file tree
Hide file tree
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
16 changes: 12 additions & 4 deletions adapters/vllm_omni/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ modules:
wave: 1
risk: high
model_executor:
local_paths: [vllm_omni/model_executor/]
local_paths: [vllm_omni/model_executor/, vllm_omni/experimental/, vllm_omni/model_extras/]
wave: 1
risk: high
input_output:
Expand All @@ -54,17 +54,25 @@ modules:
wave: 1
risk: high
online_serving:
local_paths: [vllm_omni/entrypoints/]
local_paths: [vllm_omni/entrypoints/, vllm_omni/engine/]
wave: 1
model_config:
local_paths: [vllm_omni/config/]
local_paths: [vllm_omni/config/, vllm_omni/deploy/]
wave: 1
platform:
local_paths: [vllm_omni/platforms/]
wave: 1
benchmarks:
local_paths: [benchmarks/]
local_paths: [benchmarks/, vllm_omni/benchmarks/]
wave: 2
diffusion:
local_paths: [vllm_omni/diffusion/]
wave: 1
risk: high
distributed:
local_paths: [vllm_omni/distributed/]
wave: 1
risk: high

validation:
test_manifest_sources: [.buildkite/]
Expand Down
33 changes: 20 additions & 13 deletions adapters/vllm_omni/release_baseline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,25 @@ schema_version: 1

upstream:
repository: vllm-project/vllm-omni
previous_audited_sha: 5d44868e918ecf9d3a6f1158c45acfad5989e1a7
audited_ref: v0.26.0rc1
audited_sha: 807db6efd70ff2e9b55a63d6e1b0530e2b74f8f2
previous_audited_sha: 807db6efd70ff2e9b55a63d6e1b0530e2b74f8f2
audited_ref: v0.26.0
audited_sha: a4ea67a21b20054dacc6e83952f9bd407e8ee4e7

# These fingerprints are generated from sorted registry/deploy inventories.
# They make the baseline exact without duplicating hundreds of entries here.
inventories:
autoregressive:
count: 72
sha256: 79afac742125003b8d65a02e0e6b53398c4fc5f1c6e765fa8e1eb31f74871195
count: 77
sha256: 10e7850b0c7804f23ddffeb7cf5f2ad83c616d3977ec3b67eabab5c121564a49
diffusion:
count: 61
sha256: f5c0b782cb98f20a9c7c77b696fda620a12d0899fd9e8abc9ccb696fe0c457e1
count: 58
sha256: 7dc6a5a373ca33a31a44961c1422008327cede3b364577fa095fd37c05ea2085
pipelines:
count: 46
sha256: ce4f6edb8748e030f04bf7a6fe038231453cd1cd75f64311c898acff8c14b14b
count: 51
sha256: 8f567368a2a958fee2f89e4bce3ec20ec2e7a420bbdbab2fef9d65fb604e3ae8
deploy_yamls:
count: 71
sha256: fb4c591580262a2dc8d03dd8c7fd681d98486f31007696d56adf349c24c25147
count: 79
sha256: fb75633eeeaadc4f421fd4d2ec62b03b04d9a9f48e959297d88ae51c20d51bc5

# Structural review owners for changed upstream paths. This is deliberately
# separate from manifest.modules: changing that runtime map alters rebase fan-out.
Expand All @@ -32,6 +32,8 @@ path_owners:
- .buildkite/
- .github/
- docker/
comfyui:
- apps/ComfyUI-vLLM-Omni/
configuration:
- vllm_omni/config/
- vllm_omni/deploy/
Expand All @@ -44,7 +46,6 @@ path_owners:
- docs/
- examples/
- recipes/
- realtime_video_prompt_interaction_protocol.md
model-executor:
- vllm_omni/attention/
- vllm_omni/experimental/
Expand Down Expand Up @@ -86,13 +87,16 @@ owner_documents:
- knowledge/repos/vllm-omni/benchmark/_index.md
ci:
- knowledge/repos/vllm-omni/ci/_index.md
comfyui:
- knowledge/repos/vllm-omni/components/comfyui/rules.md
configuration:
- knowledge/repos/vllm-omni/components/configuration/rules.md
diffusion:
- knowledge/repos/vllm-omni/components/diffusion/rules.md
distributed:
- knowledge/repos/vllm-omni/components/distributed/_index.md
- knowledge/repos/vllm-omni/components/distributed/rules.md
documentation:
- knowledge/repos/vllm-omni/docs/rules.md
- knowledge/general/docs/_index.md
model-executor:
- knowledge/repos/vllm-omni/components/model-executor/rules.md
Expand Down Expand Up @@ -124,6 +128,8 @@ ignored_paths:
reason: legal metadata
- pattern: README.md
reason: repository overview
- pattern: realtime_video_prompt_interaction_protocol.md
reason: deleted upstream documentation artifact
- pattern: SECURITY.md
reason: community metadata
- pattern: setup.py
Expand All @@ -137,6 +143,7 @@ pin_documents:
- doc/KNOWLEDGE.md
- knowledge/repos/vllm-omni/models/catalog.md
- knowledge/repos/vllm-omni/components/configuration/_index.md
- knowledge/repos/vllm-omni/components/comfyui/_index.md
- knowledge/repos/vllm-omni/components/diffusion/_index.md
- knowledge/repos/vllm-omni/components/distributed/_index.md
- knowledge/repos/vllm-omni/components/model-executor/_index.md
Expand Down
4 changes: 2 additions & 2 deletions doc/KNOWLEDGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ extensions merely because they are absent from the common source.
(per-file upstream created/updated dates, captured before the submodule's git
history was removed — used for page frontmatter).
- **Code-mirror pin:** the `knowledge/repos/vllm-omni/components/` source maps
are verified against vllm-omni `main @
807db6efd70ff2e9b55a63d6e1b0530e2b74f8f2`. The canonical machine baseline
are verified against vllm-omni `v0.26.0 @
a4ea67a21b20054dacc6e83952f9bd407e8ee4e7`. The canonical machine baseline
is `adapters/vllm_omni/release_baseline.yaml`.

## Layout: general vs repo-specific
Expand Down
28 changes: 13 additions & 15 deletions knowledge/general/ci/guides/inspect-existing-tests-first.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ created: 2026-07-10
updated: 2026-07-16
type: guide
tags: [general, ci]
sources: ["#3297", "tests/e2e/accuracy/test_gebench_h100_smoke.py", "tests/e2e/accuracy/test_hunyuan_image3.py"]
sources: ["#3297", "tests/e2e/accuracy/test_hunyuan_image3.py", "tests/e2e/accuracy/conftest.py"]
---

# 规则:先看现有代码,再谈方案
Expand All @@ -16,13 +16,11 @@ sources: ["#3297", "tests/e2e/accuracy/test_gebench_h100_smoke.py", "tests/e2e/a
- 讨论"用 CLIP-score 替代"、"改 GenBench 砍 it2i"、"采集 9 小时 baseline"
- 写了 300 行方案对比文档

结果用户直接去看仓库:
```
tests/e2e/accuracy/test_gebench_h100_smoke.py
```
**已经存在**,跑的就是 type3/type4 T2I,用 `/v1/images/generations`,judge 是 VLM-as-judge(Qwen2.5-VL-7B-Instruct),**零 mmdet/mmcv 依赖**。

`--gebench-model` 还是 CLI 参数。加一行 `--gebench-model Tencent/HunyuanImage-3.0-Instruct` 就能跑。
结果用户直接去看当前 target 的 `tests/e2e/accuracy/`:旧记录中的
`test_gebench_h100_smoke.py` 和 `test_gedit_bench_h100_smoke.py` 已经删除;当前
HunyuanImage3 的入口是 `tests/e2e/accuracy/test_hunyuan_image3.py`,并由
`tests/e2e/accuracy/conftest.py` 提供仍然存在的 accuracy fixtures。旧的
`--gebench-model` 路径不能再当作现行合同。

我前面所有工作(踩 mmcv 坑、建 Py3.10 venv、写 GenEval 集成代码)全部白做。

Expand All @@ -45,23 +43,23 @@ tests/e2e/accuracy/test_gebench_h100_smoke.py
| 目录 | 内容 |
|---|---|
| `tests/e2e/accuracy/` | 所有精度 CI 入口 |
| `tests/e2e/accuracy/conftest.py` | fixture 和 CLI option(`--gebench-model`, `--gedit-model`, `--accuracy-judge-model` 等) |
| `tests/e2e/accuracy/test_gebench_h100_smoke.py` | T2I 精度(type3/type4)用 VLM judge |
| `tests/e2e/accuracy/test_gedit_bench_h100_smoke.py` | IT2I 精度,同款 judge 路径 |
| `tests/e2e/accuracy/conftest.py` | 当前仍存在的 Wan2.2/HunyuanVideo accuracy fixtures 和 CLI options |
| `tests/e2e/accuracy/test_hunyuan_image3.py` | HunyuanImage3 IT2I/COT 对齐入口 |
| `tests/e2e/accuracy/test_hunyuan_image3_pixel_accuracy.py` | HunyuanImage3 像素精度入口 |
| `tests/e2e/accuracy/helpers.py` | `reset_artifact_dir` 等 |
| `vllm_omni/benchmarks/accuracy/text_to_image/gbench.py` | GEBench 实现(type3/type4 走 `/v1/images/generations`,type1/2/5 走 `/v1/images/edits`) |

## 下一次做新模型精度 CI

抄 `test_gebench_h100_smoke.py`,改 `--gebench-model` 参数。完成。
**除非有强理由**(比如新模型 T2I endpoint 不同、判据不同),否则不要考虑 GenEval / CLIP-score / 自研评分器
先从当前 `tests/e2e/accuracy/` 选择语义最接近的幸存者,读取它的 fixture、CLI
选项和运行方式,再决定复用还是新增;不要假设历史 GEBench 文件或参数仍存在

## 判据模板

用户问"做 XX 精度 CI"时,先回答 3 个问题再提方案:
1. 团队现有类似测试文件?叫什么名字?
2. 它的 fixture 和 CLI option 我的模型能复用吗?
3. 跑一下 `pytest --gebench-model <my-model>` 会发生什么?报错才说明需要改,没报错就结束了
3. 跑一下当前幸存者的最小 pytest 入口会发生什么?只有现行路径的采集或运行错误
才说明需要改,不要为已删除的 slug 重建测试文件。

## HunyuanImage3 现成 IT2I accuracy pytest(2026-06-02)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ sources: ["PR #5052"]

**PR Test Result 规范**:
- 表格标题必须带输入口径,例如 `Official IT2I performance comparison`,不要只写 `Performance`。
- 精度表必须写 reference,例如 `against tests/e2e/accuracy/assets/hunyuan_image_ref.png`。
- 精度表必须写 reference,例如 `against tests/assets/hunyuan/hunyuan_image_ref.png`。
- 速度表必须写 `model initialization excluded/included`。
- 如果同一 PR 同时有 smoke 和 official e2e,smoke 放在最后,且标题写 `Compatibility smoke`。

Expand Down
4 changes: 2 additions & 2 deletions knowledge/repos/vllm-omni/ci/_index.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: "vLLM-Omni CI"
created: 2026-07-10
updated: 2026-07-10
updated: 2026-08-05
type: index
tags: [vllm-omni, ci]
sources: []
sources: [.buildkite/cuda/pipeline.yml, docs/contributing/ci/test_system_overview.md]
---

# vLLM-Omni CI
Expand Down
35 changes: 19 additions & 16 deletions knowledge/repos/vllm-omni/ci/guides/buildkite-structure.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,40 @@
---
title: "Buildkite 管线结构"
created: 2026-07-16
updated: 2026-07-16
updated: 2026-08-05
type: guide
tags: [vllm-omni, ci]
sources: [".buildkite/pipeline.yml", "vllm-omni-rebase-agent@122a9468:agent/config.py", "vllm-omni-rebase-agent@122a9468:config.sh"]
sources: [".buildkite/cuda/pipeline.yml", ".buildkite/cuda/rebase-pipeline.yml", "vllm-omni-rebase-agent@122a9468:agent/config.py", "vllm-omni-rebase-agent@122a9468:config.sh"]
---

# Buildkite 管线结构

仓库侧事实在 `main @ 5c390096` 复核;运营侧事实(管线名、队列→硬件映射)来自
仓库侧事实在 `v0.26.0 @ a4ea67a2` 复核;运营侧事实(管线名、队列→硬件映射)来自
rebase-agent 配置快照(@122a9468),**属运营观测、可能漂移**,用前核对。

## `.buildkite/` 布局(仓库侧)

- **`pipeline.yml`**(根入口,two-doc 模式):文档 1 经
`.buildkite/scripts/upload_pipeline.py` 做 skip-ci 判定(docs-only / pytest
skip 标记,diff-aware);`---` 后的文档 2 构建 CI 镜像(`docker/Dockerfile.ci` →
`public.ecr.aws/q9t5s3a7/vllm-ci-test-repo`)并按条件上载子管线
- **`cuda/pipeline.yml`**(CUDA hook entry):由
`.buildkite/common/scripts/upload_pipeline.py` 读取 `cuda/bootstrap-upload-steps.yml`
并上传实际子管线;skip-ci 的 step key 是 `upload-ci-pipeline`,不再依赖根目录
`pipeline.yml` 的 two-doc 结构
- 分级 → 子管线映射:**L2 → `test-ready.yml`**(带 `ready` label 的 PR,diff-aware;
或 main+nightly);**L3 → `test-merge.yml`**(`merge-test` label 或 main+nightly);
**L4 → `test-nightly.yml`**(main+nightly 定时,或 PR label + rebuild);
**L5 → `test-weekly.yml`**(每周,依赖镜像构建)。
- 平台管线:`pipeline-intel.yaml`、`pipeline-npu.yaml`、`pipeline-npu-a3.yaml`;
AMD 变体 `test-amd.yaml`/`test-amd-ready.yaml`/`test-amd-merge.yml` +
- 平台管线:`intel/pipeline-intel.yml`、`npu/pipeline-npu.yml`、
`npu/pipeline-npu-a3.yml`;AMD 变体 `amd/test-amd-ready.yml`/
`test-amd-merge.yml` +
`test-template-amd-omni.j2` + bootstrap 脚本;发布/对齐:
`release-pipeline.yaml`、`rebase-pipeline.yaml`。
- 硬件 runner 脚本:`scripts/`(`run-amd-test.sh`、`run-xpu-test.sh`、
`run_npu_test.sh`、nightly-index 与 wheel/镜像发布脚本)。
- `test-ready.yml` 示例步骤组("Simple Test"):
`pytest tests/diffusion tests/model_executor -m 'core_model and cpu'` +
互补 "Other Test" + "Custom Pipeline Test"
(`tests/e2e/offline_inference/custom_pipeline/ -m core_model`),跑在
- `release/release-pipeline.yml` 是发布管线;对齐管线现在是
`cuda/rebase-pipeline.yml`,分别上传 ready、merge 和 nightly 子管线。
- 测试树按 owner/feature 归档:原 `tests/ar_diffusion/` 归入
`tests/diffusion/ar_diffusion/`,full-duplex、custom pipeline、RLHF 和 ComfyUI
归入 `tests/e2e/features/<feature>/`;新增 component 测试放在对应
`tests/{component}/`,不创建平行的旧顶层目录。
- `cuda/test-ready.yml` 的 CPU fast lanes 仍按 `tests/diffusion`、
`tests/model_executor`、`tests/entrypoints` 和 `tests/engine` 分组;feature lane
使用 `tests/e2e/features/custom_pipeline/` 与 `tests/e2e/features/fullduplex/`,跑在
`gpu_1_queue`、CI docker 镜像内、`HF_HOME=/fsx/hf_cache`。

## 运营事实(rebase-agent 观测,@122a9468)
Expand Down
4 changes: 2 additions & 2 deletions knowledge/repos/vllm-omni/ci/guides/test-tiers.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "测试分级(L1–L5)与 pytest markers"
created: 2026-07-16
updated: 2026-07-31
updated: 2026-08-05
type: guide
tags: [vllm-omni, ci]
sources: [docs/contributing/ci/test_system_overview.md, docs/contributing/ci/test_writing_guide.md]
Expand All @@ -10,7 +10,7 @@ sources: [docs/contributing/ci/test_system_overview.md, docs/contributing/ci/tes
# 测试分级(L1–L5)与 pytest markers

官方 spec:`docs/contributing/ci/test_system_overview.md` +
`test_writing_guide.md`(`main @ 807db6ef` 复核)。测试金字塔五级 + Common 规范
`test_writing_guide.md`(`v0.26.0 @ a4ea67a2` 复核)。测试金字塔五级 + Common 规范
(PR 模板/checklist 与 CI 失败说明)。

## 五级定义
Expand Down
3 changes: 2 additions & 1 deletion knowledge/repos/vllm-omni/components/_index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "vLLM-Omni 组件 owner"
created: 2026-07-10
updated: 2026-07-31
updated: 2026-08-06
type: index
tags: [vllm-omni, components]
sources: []
Expand All @@ -15,6 +15,7 @@ sources: []
| Owner | 负责范围 | 直接入口 |
|---|---|---|
| [Configuration](configuration/_index.md) | deploy YAML、PipelineConfig、registry、字段归属、default 和 endpoint policy | [rules](configuration/rules.md) |
| [ComfyUI](comfyui/_index.md) | ComfyUI video node/client、T2VA/FL2VA/Ref2VA 路由和 multipart 字段 | [rules](comfyui/rules.md) |
| [Serving](serving/_index.md) | 用户请求、OpenAI API、响应、AsyncOmni engine 生命周期 | [rules](serving/rules.md) |
| [Model Executor](model-executor/_index.md) | stage config/input、模型加载、worker、跨 stage 数据桥 | [rules](model-executor/rules.md) |
| [Diffusion](diffusion/_index.md) | diffusion pipeline、denoise、VAE/DiT、并行和 cache | [rules](diffusion/rules.md) |
Expand Down
32 changes: 32 additions & 0 deletions knowledge/repos/vllm-omni/components/comfyui/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: "ComfyUI vLLM-Omni"
created: 2026-08-06
updated: 2026-08-06
type: index
tags: [vllm-omni, components, serving]
sources: [apps/ComfyUI-vLLM-Omni/, tests/e2e/features/comfyui/, "PR #5756"]
confidence: high
---

# ComfyUI vLLM-Omni

- 源码入口:`apps/ComfyUI-vLLM-Omni/` 的 nodes、API client、types 和 example workflows。
- 源码校验:app 与 `tests/e2e/features/comfyui/` 已在 `v0.26.0 @ a4ea67a2` 验证存在。
- 主要职责:把 ComfyUI video-generation 节点输入校验并编译为 vLLM-Omni 的 T2VA、
FL2VA 或 Ref2VA multipart 请求;服务端 endpoint 本身归 [Serving](../serving/_index.md)。

## 什么时候查这里

- 修改 ComfyUI 节点输入、reference 组合、mode 选择、multipart 字段或 client 请求。
- 用 [MiniMax H3](../../models/minimax-h3/_index.md) 验证 T2VA/FL2VA/Ref2VA workflow。

## 目录内容

| 遇到什么 | 查看哪里 |
|---|---|
| frame/reference 互斥、mode 路由、multipart 字段 | [rules](rules.md) |

## 不放什么

- 通用 OpenAI-compatible request normalization 或 endpoint policy;这些属于 Serving。
- MiniMax H3 pipeline 内部的 packing、量化和 denoise 行为;这些属于模型 owner。
35 changes: 35 additions & 0 deletions knowledge/repos/vllm-omni/components/comfyui/rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
title: "ComfyUI vLLM-Omni 规则"
created: 2026-08-06
updated: 2026-08-06
type: rule
tags: [vllm-omni, components, serving]
sources: [apps/ComfyUI-vLLM-Omni/comfyui_vllm_omni/nodes.py, apps/ComfyUI-vLLM-Omni/comfyui_vllm_omni/utils/api_client.py, tests/e2e/features/comfyui/test_comfyui_integration.py, "PR #5756"]
confidence: high
---

# ComfyUI vLLM-Omni 规则

只有 `COMFY-数字字母` 是可审计规则 ID。

## Direct 代码快速入口

| PR 描述信号 | 规则组 | 第一批源码 |
|---|---|---|
| ComfyUI、T2VA/FL2VA/Ref2VA、frame/reference、multipart | COMFY-1a | `apps/ComfyUI-vLLM-Omni/comfyui_vllm_omni/nodes.py` → `utils/api_client.py` → integration tests |

## COMFY-1a — video mode 必须由互斥的 canonical 输入组合唯一决定

- 触发:ComfyUI video-generation node/client 修改 frame、image/audio/video references、
mode 路由或 multipart 字段。
- 强制:先校验 frame 与所有 reference 互斥,再确定唯一模式:有 frame 走 FL2VA;frame
和 references 都没有走 T2VA;reference-only 只接受“恰好一张图 + 一段音频”或“仅一个
或多个视频”,并走 Ref2VA。图像写入 `input_reference`,音频写入
`audio_reference`,视频按顺序重复写入 `input_references`。
- 禁止:视频与 image/audio 混用;frame 与 reference 同时发送;按字段遍历顺序覆盖已经
选定的 mode;让 node 校验与 API client 使用不同的组合矩阵或字段名。
- 验收:node 和 client 都有非法组合负例;E2E 分别覆盖 T2VA、FL2VA、image+audio
Ref2VA 和 multi-video Ref2VA,并断言最终 mode 与 multipart key/count。 ^[PR #5756]

owner 范围见 [ComfyUI index](_index.md);服务端请求合同见
[Serving 规则](../serving/rules.md),模型能力见 [MiniMax H3](../../models/minimax-h3/_index.md)。
Loading
Loading