From 159dceaf658df1cc5dac3292c1b90c7638b25e63 Mon Sep 17 00:00:00 2001 From: Hongsheng Liu Date: Mon, 10 Aug 2026 12:47:40 +0800 Subject: [PATCH] docs: remove recipe coverage registry Signed-off-by: Hongsheng Liu --- docs/models/recipe_coverage.yaml | 73 --------------- docs/models/supported_models.md | 35 +------ recipes/README.md | 9 +- tests/docs/test_recipe_coverage.py | 142 ----------------------------- 4 files changed, 9 insertions(+), 250 deletions(-) delete mode 100644 docs/models/recipe_coverage.yaml delete mode 100644 tests/docs/test_recipe_coverage.py diff --git a/docs/models/recipe_coverage.yaml b/docs/models/recipe_coverage.yaml deleted file mode 100644 index 3389bcf98..000000000 --- a/docs/models/recipe_coverage.yaml +++ /dev/null @@ -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] diff --git a/docs/models/supported_models.md b/docs/models/supported_models.md index ab9ae311b..055ba0925 100644 --- a/docs/models/supported_models.md +++ b/docs/models/supported_models.md @@ -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. - H3 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 diff --git a/recipes/README.md b/recipes/README.md index 005b62ce5..334f44c30 100644 --- a/recipes/README.md +++ b/recipes/README.md @@ -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//`, > 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: diff --git a/tests/docs/test_recipe_coverage.py b/tests/docs/test_recipe_coverage.py deleted file mode 100644 index 6425dd4ad..000000000 --- a/tests/docs/test_recipe_coverage.py +++ /dev/null @@ -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)