docs: remove recipe coverage registry

Signed-off-by: Hongsheng Liu <liuhongsheng4@huawei.com>
This commit is contained in:
Hongsheng Liu committed 2026-08-10 12:47:40 +08:00
1 parent d10bf78c60
commit 159dceaf65
4 files changed
+9 -250

No files matched your search

-73
View File
@@ -1,73 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
# This registry is keyed by an exact Hugging Face checkpoint and task. A
# Supported Models row may cover several checkpoints, but coverage entries must
# be split whenever the example or recipe differs.
version: 1
# The registry is incrementally audited. An absent entry means that coverage
# has not been audited yet; it is not evidence that no recipe exists. Do not
# infer recipe coverage from the implementation or hardware columns in
# supported_models.md.
entries:
- model: Qwen/Qwen3-Omni-30B-A3B-Instruct
task: omni-serving
examples:
- docs/user_guide/examples/offline_inference/qwen3_omni.md
- docs/user_guide/examples/online_serving/qwen3_omni.md
recipe:
status: repository
repository_path: recipes/Qwen/Qwen3-Omni.md
hardware: [nvidia]
- model: Qwen/Qwen-Image
task: text-to-image
examples:
- docs/user_guide/examples/offline_inference/text_to_image.md
- docs/user_guide/examples/online_serving/text_to_image.md
recipe:
status: published
published_url: https://recipes.vllm.ai/Qwen/Qwen-Image
repository_path: recipes/Qwen/Qwen-Image.md
hardware: [nvidia]
- model: Qwen/Qwen-Image-2512
task: text-to-image
examples:
- docs/user_guide/examples/offline_inference/text_to_image.md
- docs/user_guide/examples/online_serving/text_to_image.md
recipe:
status: repository
repository_path: recipes/Qwen/Qwen-Image-2512.md
hardware: [nvidia]
- model: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
task: text-to-speech
examples:
- docs/user_guide/examples/offline_inference/text_to_speech.md
- docs/user_guide/examples/online_serving/text_to_speech.md
recipe:
status: published
published_url: https://recipes.vllm.ai/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
repository_path: recipes/Qwen/Qwen3-TTS.md
hardware: [nvidia]
- model: bosonai/higgs-audio-v3-tts-4b
task: text-to-speech
examples:
- docs/user_guide/examples/online_serving/text_to_speech.md
recipe:
status: published
published_url: https://recipes.vllm.ai/bosonai/higgs-audio-v3-tts-4b
repository_path: recipes/BosonAI/Higgs-Audio-V3-TTS.md
hardware: [nvidia]
- model: MiniMaxAI/MiniMax-H3
task: video-audio-generation
examples: []
recipe:
status: published
published_url: https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3
repository_path: recipes/MiniMaxAI/MiniMax-H3.md
hardware: [nvidia, amd]
+5 -30
View File
@@ -96,42 +96,17 @@ th {
| `ErnieImagePipeline` | ERNIE-Image | `baidu/ERNIE-Image`, `baidu/ERNIE-Image-Turbo` | ✅︎ | ✅︎ | ✅︎ | ✅︎ | — |
|`HiDreamImagePipeline` | HiDream-I1-Full | `HiDream-ai/HiDream-I1-Full` | ✅︎ | ✅︎ | | | — |
The `Recipe` column links the exact checkpoint/task entry from
[`recipe_coverage.yaml`](https://github.com/vllm-project/vllm-omni/blob/main/docs/models/recipe_coverage.yaml).
`Published` is preferred when a corresponding `recipes.vllm.ai` page exists;
otherwise the link points to the repository recipe. `—` means that the exact
checkpoint/task mapping has not been audited yet.
The `Recipe` column links the corresponding deployment recipe. `Published` is
preferred when a corresponding `recipes.vllm.ai` page exists; otherwise the
link points to the repository recipe. `—` means that no recipe link has been
added for that model row yet.
For rows with an audited recipe link, the hardware checkmarks reflect hardware
explicitly documented in that recipe. Other rows retain the implementation
support metadata until their recipe coverage is audited.
support metadata until their recipe is audited.
✅︎ indicates the model is supported on that backend. Empty cells mean not listed as supported on that backend.
## Recipe and Example Coverage
The table above describes implementation and backend support. It does not
imply that a model has a validated deployment recipe.
Recipe and example coverage is tracked per exact Hugging Face checkpoint and
task in the machine-readable
[`recipe_coverage.yaml`](https://github.com/vllm-project/vllm-omni/blob/main/docs/models/recipe_coverage.yaml).
The registry is populated as coverage is audited and is the source of truth
for mapping exact checkpoints and tasks to links. Recipe files under
[`recipes/`](https://github.com/vllm-project/vllm-omni/tree/main/recipes) remain
the source of truth for commands and validation details. It uses the following
link precedence:
1. `published`: link to the published `recipes.vllm.ai` page.
2. `repository`: link to the in-repository recipe until a published page exists.
3. `no_validated_recipe_yet`: show `No validated recipe yet` only when that
result has been explicitly audited.
4. A checkpoint/task without an entry: coverage has not been audited yet.
Split entries whenever checkpoints, tasks, examples, or validation evidence
differ. A single Supported Models row may therefore map to multiple registry
entries.
<sup>H3</sup> MiniMax H3 AMD GPU support is validated on gfx942 (MI300X) and
gfx950 (MI350) in BF16, using the AITER `FLASH_ATTN` diffusion attention backend.
Other AMD SKUs (e.g. MI325X) are not listed until their
+4 -5
View File
@@ -19,11 +19,10 @@ add files for this repo. Use one Markdown file per model family by default.
> Individual pages resolve at `https://recipes.vllm.ai/<provider>/<model-id>`,
> e.g. [`bosonai/higgs-audio-v3-tts-4b`](https://recipes.vllm.ai/bosonai/higgs-audio-v3-tts-4b).
The exact checkpoint/task mapping used by the Supported Models documentation
is tracked in
[`docs/models/recipe_coverage.yaml`](../docs/models/recipe_coverage.yaml).
This registry records link precedence; the recipe files in this directory
remain the source of truth for commands and validation details.
The `Recipe` column in the Supported Models documentation links to the
published recipe when available and otherwise to the corresponding recipe in
this directory. The recipe files remain the source of truth for commands and
validation details.
Example layout:
-142
View File
@@ -1,142 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
import re
from pathlib import Path
import pytest
import yaml
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
ROOT_DIR = Path(__file__).parents[2]
COVERAGE_PATH = ROOT_DIR / "docs/models/recipe_coverage.yaml"
SUPPORTED_MODELS_PATH = ROOT_DIR / "docs/models/supported_models.md"
VALID_STATUSES = {"published", "repository", "no_validated_recipe_yet"}
VALID_HARDWARE = {"nvidia", "amd", "ascend", "intel"}
HARDWARE_COLUMNS = {
"nvidia": 4,
"amd": 5,
"ascend": 6,
"intel": 7,
}
def load_entries() -> list[dict]:
data = yaml.safe_load(COVERAGE_PATH.read_text(encoding="utf-8"))
assert data["version"] == 1
assert isinstance(data["entries"], list)
return data["entries"]
def supported_model_ids() -> set[str]:
model_ids = set()
for line in SUPPORTED_MODELS_PATH.read_text(encoding="utf-8").splitlines():
if not line.startswith("|"):
continue
columns = line.split("|")
if len(columns) <= 3:
continue
model_ids.update(re.findall(r"`([^`]+/[^`]+)`", columns[3]))
return model_ids
def supported_model_recipe_cells() -> dict[str, str]:
recipe_cells = {}
in_table = False
for line in SUPPORTED_MODELS_PATH.read_text(encoding="utf-8").splitlines():
if line.startswith("| Architecture |"):
in_table = True
continue
if in_table and not line.startswith("|"):
break
if not in_table:
continue
columns = line.split("|")
if len(columns) <= 8 or columns[1].strip().startswith("-"):
continue
for model_id in re.findall(r"`([^`]+/[^`]+)`", columns[3]):
recipe_cells[model_id] = columns[8].strip()
return recipe_cells
def expected_recipe_link(entry: dict) -> str:
recipe = entry["recipe"]
if recipe["status"] == "published":
return recipe["published_url"]
if recipe["status"] == "repository":
return f"https://github.com/vllm-project/vllm-omni/blob/main/{recipe['repository_path']}"
return "No validated recipe yet"
def supported_model_hardware_cells() -> dict[str, list[str]]:
hardware_cells = {}
in_table = False
for line in SUPPORTED_MODELS_PATH.read_text(encoding="utf-8").splitlines():
if line.startswith("| Architecture |"):
in_table = True
continue
if in_table and not line.startswith("|"):
break
if not in_table:
continue
columns = line.split("|")
if len(columns) <= 8 or columns[1].strip().startswith("-"):
continue
cells = [columns[index].strip() for index in HARDWARE_COLUMNS.values()]
for model_id in re.findall(r"`([^`]+/[^`]+)`", columns[3]):
hardware_cells[model_id] = cells
return hardware_cells
def test_registry_keys_are_exact_supported_checkpoints():
entries = load_entries()
keys = [(entry["model"], entry["task"]) for entry in entries]
assert len(keys) == len(set(keys))
assert all(entry["model"] in supported_model_ids() for entry in entries)
def test_supported_models_render_registry_recipe_links():
recipe_cells = supported_model_recipe_cells()
for entry in load_entries():
assert expected_recipe_link(entry) in recipe_cells[entry["model"]]
def test_registry_entries_have_explicit_recipe_precedence():
for entry in load_entries():
assert set(entry) >= {"model", "task", "examples", "recipe"}
assert isinstance(entry["examples"], list)
recipe = entry["recipe"]
status = recipe["status"]
assert status in VALID_STATUSES
assert set(recipe.get("hardware", [])) <= VALID_HARDWARE
if status == "published":
assert recipe["published_url"].startswith("https://recipes.vllm.ai/")
elif status == "repository":
assert recipe["repository_path"].startswith("recipes/")
assert "published_url" not in recipe
else:
assert "published_url" not in recipe
assert "repository_path" not in recipe
paths = [*entry["examples"], recipe.get("repository_path")]
for relative_path in filter(None, paths):
path = Path(relative_path)
assert not path.is_absolute()
assert (ROOT_DIR / path).is_file(), relative_path
def test_supported_models_render_recipe_hardware():
hardware_cells = supported_model_hardware_cells()
for entry in load_entries():
recipe_hardware = set(entry["recipe"].get("hardware", []))
cells = hardware_cells[entry["model"]]
for hardware, cell in zip(HARDWARE_COLUMNS, cells, strict=True):
assert (cell == "✅︎") == (hardware in recipe_hardware)