- Start from a maintained FastVideo recipe, then copy an executable config. Runtime and memory estimates are intentionally omitted until reproducible benchmark records are published.
-
+
+## Customize a recipe
+
+Start from the checked-in source, then change only the settings your model
+supports:
+
+- [Configuration](../inference/configuration.md) covers the Python and CLI
+ config surfaces.
+- [Optimizations](../inference/optimizations.md) covers attention backends,
+ compilation, and memory tradeoffs.
+- [Support matrix](../inference/support_matrix.md) lists supported models and
+ optimizations.
diff --git a/docs/generate_examples.py b/docs/generate_examples.py
index 6a57397a7..1e85d5d4a 100644
--- a/docs/generate_examples.py
+++ b/docs/generate_examples.py
@@ -2,6 +2,7 @@
# adapted from vllm: https://github.com/vllm-project/vllm/blob/v0.7.3/docs/source/generate_examples.py
import itertools
+import json
import os
import re
from dataclasses import dataclass, field
@@ -19,6 +20,40 @@ GENERATED_DOC_PREFIXES = (
"training/examples/",
"distillation/examples/",
)
+COOKBOOK_DATA = ROOT_DIR / "docs/assets/cookbook-recipes.json"
+COOKBOOK_SOURCE_ROOTS = (
+ ROOT_DIR / "examples/inference",
+ ROOT_DIR / "scripts/inference",
+)
+
+
+def validate_cookbook() -> None:
+ """Keep cookbook entries tied to checked-in runnable sources."""
+ recipes = json.loads(COOKBOOK_DATA.read_text(encoding="utf-8")).get("recipes")
+ if not isinstance(recipes, list) or not recipes:
+ raise ValueError(f"{COOKBOOK_DATA}: recipes must be a non-empty list")
+
+ seen: set[str] = set()
+ for recipe in recipes:
+ required = ("id", "task", "label", "model", "source", "command")
+ missing = {key for key in required if not recipe.get(key)}
+ if missing:
+ raise ValueError(f"Cookbook recipe is missing: {', '.join(sorted(missing))}")
+ if recipe["id"] in seen:
+ raise ValueError(f"Duplicate cookbook recipe id: {recipe['id']}")
+ seen.add(recipe["id"])
+
+ source = (ROOT_DIR / recipe["source"]).resolve()
+ if not any(source.is_relative_to(root.resolve()) for root in COOKBOOK_SOURCE_ROOTS):
+ raise ValueError(f"Cookbook source is outside an approved directory: {recipe['source']}")
+ if not source.is_file():
+ raise ValueError(f"Cookbook source does not exist: {recipe['source']}")
+
+ source_text = source.read_text(encoding="utf-8")
+ if recipe["model"] not in source_text:
+ raise ValueError(f"Cookbook model is not present in {recipe['source']}: {recipe['model']}")
+ if recipe["source"] not in recipe["command"]:
+ raise ValueError(f"Cookbook command does not invoke its source: {recipe['id']}")
def fix_case(text: str) -> str:
@@ -536,6 +571,7 @@ def on_pre_build(config, **kwargs):
MkDocs hook to generate examples before building the documentation.
This function is called automatically by MkDocs' native hook system.
"""
+ validate_cookbook()
print("Generating example documentation...")
generate_examples(generate_main_index=True)
print("Example documentation generated successfully!")
@@ -549,6 +585,7 @@ def on_page_context(context, page, **kwargs):
if __name__ == "__main__":
+ validate_cookbook()
print("Generating example documentation...")
generate_examples(generate_main_index=True)
print("Example documentation generated successfully!")
diff --git a/docs/getting_started/advanced_tuning_guide.md b/docs/getting_started/advanced_tuning_guide.md
deleted file mode 100644
index 1f5ecd7b2..000000000
--- a/docs/getting_started/advanced_tuning_guide.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-hide:
-- toc
----
-
-
-
-
diff --git a/docs/getting_started/installation.md b/docs/getting_started/installation.md
index 4464afa47..6d5c29639 100644
--- a/docs/getting_started/installation.md
+++ b/docs/getting_started/installation.md
@@ -65,8 +65,7 @@ uv pip install flash-attn --no-build-isolation -v
## Next Steps
-Now that FastVideo is installed, head to the [Quick Start](quick_start.md) to generate your first video.
-
-!!! tip "Not sure which command to run?"
- - The [Quick Start](quick_start.md) page has an interactive Config Generator. Select your task, maintained model profile, and GPU count to get a ready-to-copy `fastvideo generate` command.
- - For fine-grained control over all parameters, use the [Advanced Tuning Guide](advanced_tuning_guide.md).
+- [Quick Start](quick_start.md) - Generate your first video
+- [Inference Cookbook](../cookbook/index.md) - Choose a maintained recipe
+- [Configuration](../inference/configuration.md) - Learn about configuration options
+- [Examples](../inference/examples/examples_inference_index.md) - Explore scripts and notebooks
diff --git a/docs/getting_started/quick_start.md b/docs/getting_started/quick_start.md
index bdc22e2bc..34701f3c8 100644
--- a/docs/getting_started/quick_start.md
+++ b/docs/getting_started/quick_start.md
@@ -23,26 +23,21 @@ Also optionally install flash-attn:
uv pip install flash-attn --no-build-isolation -v
```
-## ⚡ Generate Your Command
+## Choose a maintained recipe
-Select your task, model profile, and GPU count to get a ready-to-run command:
+The cookbook selects complete, checked-in recipes instead of mixing model,
+parallelism, offload, and attention settings independently.
-
-
-
+[Open the inference cookbook](../cookbook/index.md){ .md-button .md-button--primary }
!!! tip "Need more control?"
- Use the [Advanced Tuning Guide](advanced_tuning_guide.md) to tune all parameters — resolution, attention backend, memory offloading, and more.
+ Start from a maintained recipe, then use the
+ [configuration](../inference/configuration.md) and
+ [optimization](../inference/optimizations.md) guides for supported changes.
## Next Steps
-- [Advanced Tuning Guide](advanced_tuning_guide.md) - Fine-grained parameter tuning
+- [Inference Cookbook](../cookbook/index.md) - Choose a maintained recipe
- [Installation Guide](installation.md) - Detailed installation instructions
- [Configuration](../inference/configuration.md) - Learn about configuration options
- [Examples](../inference/examples/examples_inference_index.md) - Explore more
diff --git a/mkdocs.yml b/mkdocs.yml
index 70db2fd8b..02956aab3 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -78,7 +78,7 @@ plugins:
minify_js: true
minify_css: true
cache_safe: true
- js_files: [assets/copy-page.js, assets/config-generator.js]
+ js_files: [assets/copy-page.js, assets/cookbook.js]
css_files: [assets/custom.css]
- api-autonav:
modules: ["fastvideo"]
@@ -153,7 +153,7 @@ nav:
- Installation: getting_started/installation.md
- Quick Start: getting_started/quick_start.md
- V1 API: getting_started/v1_api.md
- - Advanced Tuning Guide: getting_started/advanced_tuning_guide.md
+ - Cookbook: cookbook/index.md
- Inference:
- Quick Start: inference/inference_quick_start.md
- Configuration: inference/configuration.md
@@ -238,4 +238,4 @@ extra_css:
# Custom JavaScript
extra_javascript:
- assets/copy-page.js
- - assets/config-generator.js
+ - assets/cookbook.js