Loading...
--
-
- Model
- Loading...
- Workload
- Loading...
- Source configuration
- Loading...
- Expected output
- Loading...
Loading...
- diff --git a/.agents/skills/add-model-02-parity/SKILL.md b/.agents/skills/add-model-02-parity/SKILL.md index 5a96f34a5..a11341759 100644 --- a/.agents/skills/add-model-02-parity/SKILL.md +++ b/.agents/skills/add-model-02-parity/SKILL.md @@ -68,7 +68,7 @@ Copy `templates/component_parity_test.py` and fill every `TODO` marker. The template is distilled from: - `tests/local_tests/transformers/test_ltx2.py` -- `tests/local_tests/transformers/test_gamecraft_parity.py` +- `tests/local_tests/gen3c/test_gen3c.py` - `tests/local_tests/encoders/test_ltx2_gemma_parity.py` - `tests/local_tests/vaes/test_oobleck_vae_parity.py` - `tests/local_tests/sd35/test_sd35_component_parity.py` diff --git a/.agents/skills/add-model-02-parity/templates/component_parity_test.py b/.agents/skills/add-model-02-parity/templates/component_parity_test.py index 8d24e292a..c1137f298 100644 --- a/.agents/skills/add-model-02-parity/templates/component_parity_test.py +++ b/.agents/skills/add-model-02-parity/templates/component_parity_test.py @@ -87,7 +87,7 @@ def _load_official_model(device: torch.device, dtype: torch.dtype) -> torch.nn.M # TODO: import official class/factory and load real weights strictly. # Examples in-tree: # - LTX2: SingleGPUModelBuilder(...).build(device=device, dtype=dtype) - # - GameCraft: torch.load(...)["module"] -> official_model.load_state_dict(...) + # - GEN3C: torch.load(...)["state_dict"] -> official_model.load_state_dict(...) # - Oobleck: create_model_from_config(config) + ckpt state_dict OfficialClass = _import_or_skip(OFFICIAL_MODULE, OFFICIAL_CLASS) model = OfficialClass() # TODO: pass official config kwargs. diff --git a/.agents/skills/add-model-03-port-dit/SKILL.md b/.agents/skills/add-model-03-port-dit/SKILL.md index 028f6b346..4d185bda6 100644 --- a/.agents/skills/add-model-03-port-dit/SKILL.md +++ b/.agents/skills/add-model-03-port-dit/SKILL.md @@ -52,8 +52,8 @@ scaling constants, dtype casts, state-dict names, and every output head. - Loader path: `TransformerLoader` reads `transformer/config.json`, calls `dit_config.update_model_arch(config)`, resolves `_class_name` through `ModelRegistry`, and constructs the class with `config` and `hf_config`. -- Reference examples: `stable_audio.py`, `wanvideo.py`, `sd3.py`, `longcat.py`, - and `ltx2.py`. +- Reference examples: `stable_audio.py`, `wanvideo.py`, `sd3.py`, and + `ltx2.py`. - Layer guidance: `fastvideo/layers/AGENTS.md`. ## Implementation Rules diff --git a/.agents/skills/add-model-04-port-vae/SKILL.md b/.agents/skills/add-model-04-port-vae/SKILL.md index 16c50bc3f..14e8047f9 100644 --- a/.agents/skills/add-model-04-port-vae/SKILL.md +++ b/.agents/skills/add-model-04-port-vae/SKILL.md @@ -51,7 +51,7 @@ posterior behavior, encode/decode output objects, tiling flags, and cropping. - Loader path: VAE loaders resolve `_class_name` through `ModelRegistry` and load converted component weights from the VAE subdir. - Reference examples: `oobleck.py`, `autoencoder_kl.py`, `wanvae.py`, - `ltx2vae.py`, and `gamecraftvae.py`. + `ltx2vae.py`, and `hunyuanvae.py`. - Layer guidance: `fastvideo/layers/AGENTS.md`. ## Implementation Rules diff --git a/.agents/skills/add-model-07-conversion/SKILL.md b/.agents/skills/add-model-07-conversion/SKILL.md index 727b80f06..73d8f201b 100644 --- a/.agents/skills/add-model-07-conversion/SKILL.md +++ b/.agents/skills/add-model-07-conversion/SKILL.md @@ -43,11 +43,12 @@ from `../add-model/contracts/conversion_request.md`. - `scripts/checkpoint_conversion/stable_audio_to_diffusers.py`: monolithic `model.safetensors` split into transformer/VAE/conditioner, plus copied passthrough subfolders. Use this shape for single-checkpoint official repos. -- `scripts/checkpoint_conversion/convert_gamecraft_full.py`: separate official - sources for transformer, VAE, text encoders, tokenizers, scheduler, and root - `model_index.json`. -- `scripts/checkpoint_conversion/longcat_to_fastvideo.py`: fused QKV/KV split, - renamed native transformer weights, and copied existing Diffusers components. +- `scripts/checkpoint_conversion/convert_mmaudio_to_diffusers.py`: separate + official sources for transformer, VAE, encoders, and vocoder, assembled under + a root `model_index.json`. +- `scripts/checkpoint_conversion/convert_flux2_klein.py`: fused QKV split, + renamed native transformer weights, and copied passthrough text encoder, + tokenizer, and scheduler components. - `scripts/checkpoint_conversion/pt_to_safetensors.py`: simple `.pt` extraction helper for nested checkpoint dictionaries. diff --git a/.agents/skills/add-model-09-pipeline/SKILL.md b/.agents/skills/add-model-09-pipeline/SKILL.md index e91257b0a..1f3e55557 100644 --- a/.agents/skills/add-model-09-pipeline/SKILL.md +++ b/.agents/skills/add-model-09-pipeline/SKILL.md @@ -247,7 +247,7 @@ setup gap, not a pass. - `fastvideo/configs/pipelines/stable_audio.py` and `fastvideo/pipelines/basic/stable_audio/presets.py` for config/preset shape. - `fastvideo/registry.py` for `register_configs(...)` and preset registration. -- `tests/local_tests/pipelines/test_gamecraft_pipeline_parity.py` for latent +- `tests/local_tests/pipelines/test_lingbot_video_pipeline_parity.py` for latent parity structure. - `tests/local_tests/pipelines/test_stable_audio_pipeline_parity.py` for audio parity structure. diff --git a/.agents/skills/add-model/SKILL.md b/.agents/skills/add-model/SKILL.md index d7f83de23..674967140 100644 --- a/.agents/skills/add-model/SKILL.md +++ b/.agents/skills/add-model/SKILL.md @@ -413,7 +413,7 @@ matching `*secret*`. - `fastvideo/pipelines/basic/wan/` for standard T2V/I2V/DMD/Causal variants. - `fastvideo/pipelines/basic/ltx2/` for non-standard stages and audio/video patterns. -- `tests/local_tests/pipelines/test_gamecraft_pipeline_parity.py` for pipeline +- `tests/local_tests/pipelines/test_lingbot_video_pipeline_parity.py` for pipeline parity shape. - `tests/local_tests/transformers/test_ltx2.py`, `tests/local_tests/vaes/test_ltx2_vae.py`, and diff --git a/.agents/skills/seed-ssim-references/SKILL.md b/.agents/skills/seed-ssim-references/SKILL.md index ca2266ae1..851494605 100644 --- a/.agents/skills/seed-ssim-references/SKILL.md +++ b/.agents/skills/seed-ssim-references/SKILL.md @@ -105,8 +105,8 @@ Detect artefact type by inspecting the file's imports / helper call: - **pixel** (`.mp4`) — file imports `run_text_to_video_similarity_test` / `run_image_to_video_similarity_test` from `fastvideo.tests.ssim.inference_similarity_utils`, OR uses the - legacy custom-inline helper pattern (see `test_gamecraft`, - `test_longcat`, etc.). Default to pixel when both heuristics fail. + legacy custom-inline helper pattern (see `test_gen3c`). Default to pixel + when both heuristics fail. Record `ARTEFACT_TYPE ∈ {pixel, latent}` for use in step 4. Steps 2, 3, 5, and 6 are artefact-type-agnostic — `_iter_reference_files`, diff --git a/.github/scripts/plan_merge_ci.py b/.github/scripts/plan_merge_ci.py index eb6dfad58..0d4a01d06 100644 --- a/.github/scripts/plan_merge_ci.py +++ b/.github/scripts/plan_merge_ci.py @@ -12,6 +12,7 @@ from __future__ import annotations import argparse import fnmatch import re +from collections.abc import Iterable from dataclasses import dataclass, field from pathlib import Path from typing import TextIO @@ -130,11 +131,6 @@ class FamilyCoverage: FAMILY_COVERAGE = ( - FamilyCoverage( - re.compile(r"(^|[/_.-])dreamx(_world)?([/_.-]|$)"), - ("test_dreamx.py", ), - ("test_dreamx_world_similarity.py", ), - ), FamilyCoverage( re.compile(r"(^|[/_.-])flux[_-]?2([/_.-]|$)"), ("test_flux2_klein.py", ), @@ -145,21 +141,11 @@ FAMILY_COVERAGE = ( ("test_flux.py", ), ("test_flux_t2i_similarity.py", ), ), - FamilyCoverage( - re.compile(r"(^|[/_.-])(hunyuan)?gamecraft([/_.-]|$)"), - ("test_gamecraft.py", ), - ("test_gamecraft_similarity.py", ), - ), FamilyCoverage( re.compile(r"(^|[/_.-])gen3c([/_.-]|$)"), ("test_gen3c.py", ), ("test_gen3c_similarity.py", ), ), - FamilyCoverage( - re.compile(r"(^|[/_.-])glm[_-]?image([/_.-]|$)"), - ("test_glm_image.py", ), - ("test_glm_image_similarity.py", ), - ), FamilyCoverage( re.compile(r"(^|[/_.-])hunyuan(video)?15([a-z0-9_-]*)([/_.-]|$)"), (), @@ -175,11 +161,6 @@ FAMILY_COVERAGE = ( ("test_lingbot.py", ), ("test_lingbot_similarity.py", ), ), - FamilyCoverage( - re.compile(r"(^|[/_.-])longcat([/_.-]|$)"), - ("test_longcat.py", ), - ("test_longcat_similarity.py", ), - ), FamilyCoverage( re.compile(r"(^|[/_.-])ltx[_-]?2([/_.-]|$)"), ("test_ltx2.py", ), @@ -210,11 +191,6 @@ FAMILY_COVERAGE = ( ("test_stable_audio.py", ), ("test_stable_audio_similarity.py", ), ), - FamilyCoverage( - re.compile(r"(^|[/_.-])turbo(diffusion)?([/_.-]|$)"), - (), - ("test_turbodiffusion_similarity.py", ), - ), FamilyCoverage( re.compile(r"(^|[/_.-])wan(video|vae)?([/_.-]|$)"), ("test_wan_t2v.py", "test_wan_vae.py", "test_wan_causal.py", "test_wan_denoising.py"), @@ -225,11 +201,6 @@ FAMILY_COVERAGE = ( "test_wan_ti2v_similarity.py", ), ), - FamilyCoverage( - re.compile(r"(^|[/_.-])z[_-]?image([/_.-]|$)"), - ("test_zimage.py", ), - ("test_zimage_similarity.py", ), - ), ) @@ -325,16 +296,22 @@ def _select_output_coverage(plan: MergePlan, path: str) -> None: plan.add_ssim(SSIM_SMOKE_TESTS, reason=f"shared output SSIM smoke coverage: {path}") -def classify_paths(paths: list[str]) -> MergePlan: +def _normalize_path(raw_path: str) -> str: + path = raw_path.strip() + while path.startswith("./"): + path = path[2:] + return path + + +def classify_paths(paths: list[str], removed_paths: Iterable[str] = ()) -> MergePlan: + """Plan merge lanes for ``paths``. + + ``removed_paths`` lists changed paths that no longer exist at the PR head + (deleted files and rename sources); removed golden/SSIM tests are not run. + """ plan = MergePlan() - normalized_paths: list[str] = [] - for raw_path in paths: - path = raw_path.strip() - while path.startswith("./"): - path = path[2:] - if path: - normalized_paths.append(path) - normalized_paths = sorted(set(normalized_paths)) + normalized_paths = sorted({path for path in map(_normalize_path, paths) if path}) + removed = {path for path in map(_normalize_path, removed_paths) if path} if not normalized_paths: plan.require_all("changed-file list was empty; failing closed") return plan @@ -374,7 +351,10 @@ def classify_paths(paths: list[str]) -> MergePlan: if path.startswith("fastvideo/tests/golden_gate/"): name = Path(path).name if name.startswith("test_") and name.endswith(".py"): - plan.add_golden((name, ), reason=f"changed golden test: {path}") + if path in removed: + plan.reasons.append(f"removed golden test has nothing to run: {path}") + else: + plan.add_golden((name, ), reason=f"changed golden test: {path}") elif name in {"AGENTS.md", "README.md"}: plan.reasons.append(f"golden documentation only: {path}") else: @@ -385,7 +365,10 @@ def classify_paths(paths: list[str]) -> MergePlan: if path.startswith("fastvideo/tests/ssim/"): name = Path(path).name if name.startswith("test_") and name.endswith(".py"): - plan.add_ssim((name, ), reason=f"changed SSIM test: {path}") + if path in removed: + plan.reasons.append(f"removed SSIM test has nothing to run: {path}") + else: + plan.add_ssim((name, ), reason=f"changed SSIM test: {path}") elif path.endswith((".py", ".json", ".pt", ".png", ".mp4")): plan.ssim_all = True plan.add_lanes("ssim", reason=f"shared SSIM harness/reference: {path}") @@ -565,6 +548,7 @@ def _write_summary(output: TextIO, plan: MergePlan) -> None: def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--paths-file", type=Path, required=True) + parser.add_argument("--removed-paths-file", type=Path) parser.add_argument("--github-output", type=Path) parser.add_argument("--summary-file", type=Path) return parser.parse_args() @@ -573,7 +557,9 @@ def parse_args() -> argparse.Namespace: def main() -> int: args = parse_args() paths = args.paths_file.read_text(encoding="utf-8").splitlines() - plan = classify_paths(paths) + removed_paths = (args.removed_paths_file.read_text(encoding="utf-8").splitlines() + if args.removed_paths_file else []) + plan = classify_paths(paths, removed_paths) print(f"MERGE_TEST_PLAN={plan.encoded_lanes()}") print(f"MERGE_GOLDEN_TESTS={plan.encoded_golden_tests()}") print(f"MERGE_SSIM_TESTS={plan.encoded_ssim_tests()}") diff --git a/.github/workflows/ci-trigger-full-suite.yml b/.github/workflows/ci-trigger-full-suite.yml index 31102f683..bc8bfcc48 100644 --- a/.github/workflows/ci-trigger-full-suite.yml +++ b/.github/workflows/ci-trigger-full-suite.yml @@ -180,6 +180,8 @@ jobs: set -euo pipefail changed_json="$RUNNER_TEMP/merge-changed-files.json" changed_paths="$RUNNER_TEMP/merge-changed-paths.txt" + removed_paths="$RUNNER_TEMP/merge-removed-paths.txt" + : > "$removed_paths" if gh api --paginate --slurp \ "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/files?per_page=100" \ > "$changed_json"; then @@ -187,6 +189,10 @@ jobs: if [ "$observed" = "$EXPECTED_CHANGED_FILES" ]; then jq -r '.[][] | .filename, (.previous_filename // empty)' "$changed_json" \ | sort -u > "$changed_paths" + # Paths absent from the PR head, so the planner never selects a deleted test. + jq -r '.[][] | if .status == "removed" then .filename + elif .status == "renamed" then (.previous_filename // empty) else empty end' \ + "$changed_json" | sort -u > "$removed_paths" else echo "::warning::Changed-file API returned $observed of $EXPECTED_CHANGED_FILES paths; selecting all merge lanes." echo '__FASTVIDEO_CI_PLAN_ALL__' > "$changed_paths" @@ -202,6 +208,7 @@ jobs: run: | python3 .github/scripts/plan_merge_ci.py \ --paths-file "$RUNNER_TEMP/merge-changed-paths.txt" \ + --removed-paths-file "$RUNNER_TEMP/merge-removed-paths.txt" \ --github-output "$GITHUB_OUTPUT" \ --summary-file "$GITHUB_STEP_SUMMARY" diff --git a/.gitignore b/.gitignore index dc591b8cf..e4d9d47b0 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,6 @@ env *.log weights/ logs/ -/Z-Image/ official_weights/ converted_weights/ diff --git a/apps/infinite_livestream/infinite_livestream/backend.py b/apps/infinite_livestream/infinite_livestream/backend.py index 9a44bfe47..cd4f2b501 100644 --- a/apps/infinite_livestream/infinite_livestream/backend.py +++ b/apps/infinite_livestream/infinite_livestream/backend.py @@ -160,8 +160,8 @@ class FastH3Backend: Each clip length is a torch.compile shape, and the fullgraph regional route treats exceeding dynamo's recompile limit as a crash rather than a fallback. FastVideo's own imports lower it (`layers/lora/linear.py` - to 16, longcat's `bsa_interface.py` to 32), so this raises it again - and turns overflow back into a recompile. + to 16), so this raises it again and turns overflow back into a + recompile. One pinned clip length keeps every process far under even the lowered limit; a varied `warmup_lengths` is where this becomes the seatbelt it diff --git a/docs/assets/cookbook-recipes.json b/docs/assets/cookbook-recipes.json index 8e8cc4576..1497272e0 100644 --- a/docs/assets/cookbook-recipes.json +++ b/docs/assets/cookbook-recipes.json @@ -1,5 +1,5 @@ { - "version": 15, + "version": 16, "recipes": [ { "id": "fastwan21-t2v", @@ -161,53 +161,6 @@ "Native MLX FastMetal T2V on 36 GB+ unified memory. Same --fast, --fast-spatial, and --refine flags as the 1.3B script." ] }, - { - "id": "turbodiffusion-wan21-1-3b-t2v", - "family": "turbodiffusion", - "stage": "inference", - "task": "Text to video", - "label": "TurboWan2.1 1.3B", - "summary": "A TurboDiffusion-accelerated Wan2.1 1.3B text-to-video run from its maintained single-GPU example.", - "model": "loayrashid/TurboWan2.1-T2V-1.3B-Diffusers", - "source": "examples/inference/basic/basic_turbodiffusion.py", - "command": "python examples/inference/basic/basic_turbodiffusion.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 1, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "MP4 videos under video_samples_turbodiffusion/", - "related": ["turbodiffusion-wan21-14b-t2v", "turbowan22-i2v"] - }, - { - "id": "turbodiffusion-wan21-14b-t2v", - "family": "turbodiffusion", - "stage": "inference", - "task": "Text to video", - "label": "TurboWan2.1 14B", - "summary": "TurboDiffusion acceleration applied to the 14B Wan2.1 text-to-video checkpoint; the checked-in source is configured for two GPUs.", - "model": "loayrashid/TurboWan2.1-T2V-14B-Diffusers", - "source": "examples/inference/basic/basic_turbodiffusion_14b.py", - "command": "python examples/inference/basic/basic_turbodiffusion_14b.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 2, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "MP4 videos under video_samples_turbodiffusion_14B/", - "related": ["turbodiffusion-wan21-1-3b-t2v", "turbowan22-i2v"] - }, - { - "id": "turbowan22-i2v", - "family": "turbodiffusion", - "stage": "inference", - "task": "Image to video", - "label": "TurboWan2.2 A14B", - "summary": "A one-to-four-step image-to-video path using TurboDiffusion and the SLA attention backend from its maintained example.", - "model": "loayrashid/TurboWan2.2-I2V-A14B-Diffusers", - "source": "examples/inference/basic/basic_turbodiffusion_i2v.py", - "command": "python examples/inference/basic/basic_turbodiffusion_i2v.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 2, "evidence": "source-configured"}, - "evidence": "Source-backed", - "related": ["turbodiffusion-wan21-14b-t2v"] - }, { "id": "ltx2-distilled-t2v", "family": "ltx2", @@ -476,53 +429,6 @@ "expected_artifact": "PNG images under outputs/flux_dev/samples/", "limitations": ["FLUX.1 is loadable by ID but registers no model_family in fastvideo/registry.py; it is grouped under FLUX for documentation only."] }, - { - "id": "glm-image-t2i", - "family": "glm_image", - "stage": "inference", - "task": "Text to image", - "label": "GLM-Image", - "summary": "GLM-Image text-to-image generation from its maintained example.", - "model": "zai-org/GLM-Image", - "source": "examples/inference/basic/basic_glm_image.py", - "command": "python examples/inference/basic/basic_glm_image.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 1, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "PNG image at image_output/landscape.png", - "related": ["glm-image-edit"] - }, - { - "id": "glm-image-edit", - "family": "glm_image", - "stage": "inference", - "task": "Image editing", - "label": "GLM-Image editing", - "summary": "Edit an input image with an instruction prompt using GLM-Image, from its maintained editing example.", - "model": "zai-org/GLM-Image", - "source": "examples/inference/basic/edit_glm_image.py", - "command": "python examples/inference/basic/edit_glm_image.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 1, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "PNG image at image_output/edited.png (input: assets/images/couple.jpg)", - "related": ["glm-image-t2i"] - }, - { - "id": "zimage-turbo-t2i", - "family": "zimage", - "stage": "inference", - "task": "Text to image", - "label": "Z-Image Turbo", - "summary": "Z-Image Turbo text-to-image on a single GPU from its maintained example.", - "model": "Tongyi-MAI/Z-Image-Turbo", - "source": "examples/inference/basic/basic_zimage.py", - "command": "python examples/inference/basic/basic_zimage.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 1, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "PNG image at outputs/zimage/zimage_turbo.png" - }, { "id": "sd35-medium-t2i", "family": "sd35", @@ -914,38 +820,6 @@ ], "limitations": ["Supply a compatible FastH3 adapter. The script infers dense or VSA attention from the adapter payload unless you override it."] }, - { - "id": "longcat-t2v", - "family": "longcat", - "stage": "inference", - "task": "Text to video", - "label": "LongCat Video T2V", - "summary": "LongCat Video text-to-video at 480p (50 steps), with distilled and 720p refinement passes included in the same maintained script.", - "model": "FastVideo/LongCat-Video-T2V-Diffusers", - "source": "examples/inference/basic/basic_longcat_t2v.py", - "command": "python examples/inference/basic/basic_longcat_t2v.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 1, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "MP4 videos under outputs_video/longcat_t2v_basic/, longcat_t2v_distill/, and longcat_t2v_refine_720p/", - "related": ["longcat-i2v"] - }, - { - "id": "longcat-i2v", - "family": "longcat", - "stage": "inference", - "task": "Image to video", - "label": "LongCat Video I2V", - "summary": "LongCat Video image-to-video with optional distilled and refinement passes, from its maintained example.", - "model": "FastVideo/LongCat-Video-I2V-Diffusers", - "source": "examples/inference/basic/basic_longcat_i2v.py", - "command": "python examples/inference/basic/basic_longcat_i2v.py", - "gpu_types": ["NVIDIA"], - "hardware": {"gpu_count": 1, "evidence": "source-configured"}, - "evidence": "Source-backed", - "expected_artifact": "MP4 videos under outputs_video/longcat_i2v_basic/ and longcat_i2v_distill/", - "related": ["longcat-t2v"] - }, { "id": "stable-audio-open-t2a", "family": "stable_audio", diff --git a/docs/assets/logos/SOURCES.md b/docs/assets/logos/SOURCES.md index 21247b395..17b3907f4 100644 --- a/docs/assets/logos/SOURCES.md +++ b/docs/assets/logos/SOURCES.md @@ -9,18 +9,15 @@ plain typographic tile instead — that tile is a UI placeholder, not a logo. | --- | --- | --- | | `wan-ai.webp` | [Official Wan-AI Hugging Face organization avatar](https://huggingface.co/Wan-AI) | Wan family card and page header | | `ltx.webp` | [Official Lightricks Hugging Face organization avatar](https://huggingface.co/Lightricks) | LTX family card and page header | -| `tencent-hunyuan.webp` | [Official Tencent Hunyuan Hugging Face organization avatar](https://huggingface.co/Tencent-Hunyuan) | Hunyuan and GameCraft cards, Hunyuan page header | +| `tencent-hunyuan.webp` | [Official Tencent Hunyuan Hugging Face organization avatar](https://huggingface.co/Tencent-Hunyuan) | Hunyuan family card and page header | | `nvidia.webp` | [Official NVIDIA Hugging Face organization avatar](https://huggingface.co/nvidia) | Cosmos and GEN3C cards, Cosmos page header | | `kandinsky.webp` | [Official Kandinsky Lab Hugging Face organization avatar](https://huggingface.co/kandinskylab) | Kandinsky 5 and Kandinsky 6 cards and page headers | | `black-forest-labs.webp` | [Official Black Forest Labs Hugging Face organization avatar](https://huggingface.co/black-forest-labs) | FLUX family card and page header | | `minimax.webp` | [Official MiniMax Hugging Face organization avatar](https://huggingface.co/MiniMaxAI) | MiniMax H3 family card and page header | -| `tongyi.webp` | [Official Tongyi MAI Hugging Face organization avatar](https://huggingface.co/Tongyi-MAI) | Z-Image family card and page header | -| `zai.webp` | [Official Z.ai Hugging Face organization avatar](https://huggingface.co/zai-org) | GLM-Image family card and page header | | `stabilityai.webp` | [Official Stability AI Hugging Face organization avatar](https://huggingface.co/stabilityai) | Stable Diffusion and Stable Audio cards and page headers | -| `meituan-longcat.webp` | [Official Meituan LongCat Hugging Face organization avatar](https://huggingface.co/meituan-longcat) | LongCat family card and page header | -| `fastvideo.webp` | [Official FastVideo Hugging Face organization avatar](https://huggingface.co/FastVideo) | Matrix Game and MMAudio cards (converted weights published by this org), DreamX card | +| `fastvideo.webp` | [Official FastVideo Hugging Face organization avatar](https://huggingface.co/FastVideo) | Matrix Game and MMAudio cards (converted weights published by this org) | -Typographic tiles (no vendored image): TurboDiffusion ("Turbo"), HY-World -("HY"), LingBot ("LB"), MMAudio page header ("MMA"). These publishers have no +Typographic tiles (no vendored image): HY-World ("HY"), LingBot ("LB"), +MMAudio page header ("MMA"). These publishers have no single official mark appropriate for reuse in the catalog; add a licensed asset here if one becomes available. diff --git a/docs/assets/logos/meituan-longcat.webp b/docs/assets/logos/meituan-longcat.webp deleted file mode 100644 index f12949441..000000000 Binary files a/docs/assets/logos/meituan-longcat.webp and /dev/null differ diff --git a/docs/assets/logos/tongyi.webp b/docs/assets/logos/tongyi.webp deleted file mode 100644 index efd767aa1..000000000 Binary files a/docs/assets/logos/tongyi.webp and /dev/null differ diff --git a/docs/assets/logos/zai.webp b/docs/assets/logos/zai.webp deleted file mode 100644 index 93ceda24a..000000000 Binary files a/docs/assets/logos/zai.webp and /dev/null differ diff --git a/docs/contributing/env_vars.md b/docs/contributing/env_vars.md index 62b6c56d6..3bdf74996 100644 --- a/docs/contributing/env_vars.md +++ b/docs/contributing/env_vars.md @@ -304,36 +304,44 @@ longer exists also fails the test, so the fixing pull request deletes its entry. | `FASTVIDEO_TEST_WAN22_5B_ALLOW_LOW_MEMORY` | bool | `0` | test | Run the MLX Wan2.2 5B real-weights parity test on hosts with little memory. Deprecated names: `FASTVIDEO_WAN22_5B_ALLOW_LOW_MEMORY`. | | `FASTVIDEO_TEST_WAN22_5B_ROOT` | str | unset | test | Local Wan2.2 5B checkpoint for the MLX real-weights parity test. Deprecated names: `FASTVIDEO_WAN22_5B_ROOT`. | | `FASTVIDEO_TEST_GRADNORM_UPDATE` | bool | `0` | test | Gradient-norm regression tests update their references. Deprecated names: `FASTVIDEO_GRADNORM_UPDATE`. | -| `FASTVIDEO_TEST_DREAMX_WORLD_SSIM_MODEL_PATH` | str | `FastVideo/DreamX-World-5B-Cam-Diffusers` | test | Model for the DreamX-World camera SSIM test. Deprecated names: `DREAMX_WORLD_SSIM_MODEL_PATH`. | -| `FASTVIDEO_TEST_DREAMX_WORLD_AR_SSIM_MODEL_PATH` | str | `FastVideo/DreamX-World-5B-Diffusers` | test | Model for the DreamX-World autoregressive SSIM test. Deprecated names: `DREAMX_WORLD_AR_SSIM_MODEL_PATH`. | | `FASTVIDEO_TEST_FLUX_T2I_MODEL_DIR` | str | `black-forest-labs/FLUX.1-dev` | test | Model for the Flux text-to-image SSIM test. Deprecated names: `FLUX_T2I_MODEL_DIR`. | | `FASTVIDEO_TEST_FLUX_TRANSFORMER_PATH` | str | unset | test | Local Flux transformer for the Flux transformer test. Deprecated names: `FLUX_TRANSFORMER_PATH`. | -| `FASTVIDEO_TEST_GAMECRAFT_MODEL_PATH` | str | `FastVideo/HunyuanGameCraft-Diffusers` | test | Model for the HunyuanGameCraft SSIM test. Deprecated names: `GAMECRAFT_MODEL_PATH`. | | `FASTVIDEO_TEST_GEN3C_MODEL_PATH` | str | `FastVideo/GEN3C-Cosmos-7B-Diffusers` | test | Model for the GEN3C SSIM test. Deprecated names: `GEN3C_MODEL_PATH`. | | `FASTVIDEO_TEST_GEN3C_IMAGE_PATH` | str | unset | test | Input image for the GEN3C SSIM test. Deprecated names: `GEN3C_TEST_IMAGE_PATH`. | -| `FASTVIDEO_TEST_GLM_IMAGE_LOCAL_WEIGHTS_DIR` | str | unset | test | Local official GLM-Image weights for the GLM-Image SSIM test. Deprecated names: `GLM_IMAGE_LOCAL_WEIGHTS_DIR`. | -| `FASTVIDEO_TEST_GLM_IMAGE_MODEL_DIR` | str | unset | test | Model for the GLM-Image SSIM test. Deprecated names: `GLM_IMAGE_MODEL_DIR`. | | `FASTVIDEO_TEST_KANDINSKY5_E2E_NUM_GPUS` | int | `1` | test | GPUs for the Kandinsky5 nightly end-to-end overfit test. Deprecated names: `KANDINSKY5_E2E_NUM_GPUS`. | | `FASTVIDEO_TEST_KANDINSKY5_E2E_WRITE_REFERENCE` | bool | `0` | test | The Kandinsky5 nightly end-to-end test writes a missing reference video. Deprecated names: `KANDINSKY5_E2E_WRITE_REFERENCE`. | -| `FASTVIDEO_TEST_LONGCAT_MODEL_ROOT` | str | unset | test | Local LongCat-Video checkpoint for the golden-gate test. Deprecated names: `LONGCAT_MODEL_ROOT`. | | `FASTVIDEO_TEST_MINIMAX_H3_GATE_GOLDEN_DIR` | str | unset | test | Local directory of MiniMax-H3 golden-gate tensors. Deprecated names: `MINIMAX_H3_GATE_GOLDEN_DIR`. | | `FASTVIDEO_TEST_MINIMAX_H3_GATE_LAYER` | int | `0` | test | Transformer layer that the MiniMax-H3 golden-gate test checks. Deprecated names: `MINIMAX_H3_GATE_LAYER`. | | `FASTVIDEO_TEST_MINIMAX_H3_MODEL_ROOT` | str | unset | test | Local MiniMax-H3 checkpoint for the golden-gate test. Deprecated names: `MINIMAX_H3_MODEL_ROOT`. | | `FASTVIDEO_TEST_SD35_MODEL_DIR` | str | `stabilityai/stable-diffusion-3.5-medium` | test | Model for the Stable Diffusion 3.5 SSIM test. Deprecated names: `SD35_MODEL_DIR`. | | `FASTVIDEO_TEST_TAEH3_REFERENCE_DIR` | str | unset | test | Upstream taehv checkout for the MLX TAEH3 parity test. Deprecated names: `TAEH3_REFERENCE_DIR`. | | `FASTVIDEO_TEST_WAN_ANIMATE_MODEL_DIR` | str | unset | test | Local Wan2.2-Animate-14B checkpoint for the Wan-Animate weight tests. Deprecated names: `WAN_ANIMATE_MODEL_PATH`. | -| `FASTVIDEO_TEST_ZIMAGE_MODEL_DIR` | str | `Tongyi-MAI/Z-Image-Turbo` | test | Model for the Z-Image SSIM test. Deprecated names: `ZIMAGE_MODEL_DIR`. | -| `FASTVIDEO_TEST_ZIMAGE_MODEL_REVISION` | str | `f332072aa78be7aecdf3ee76d5c247082da564a6` | test | Hugging Face revision of the Z-Image model for its SSIM test. Deprecated names: `ZIMAGE_MODEL_REVISION`. | Variables that FastVideo no longer reads; setting one logs a warning: -| Deprecated variable | Reason | -| ----------------------------------------- | ---------------- | -| `FASTVIDEO_TARGET_DEVICE` | no code reads it | -| `FASTVIDEO_USE_PRECOMPILED` | no code reads it | -| `FASTVIDEO_RINGBUFFER_WARNING_INTERVAL` | no code reads it | -| `FASTVIDEO_ENGINE_ITERATION_TIMEOUT_S` | no code reads it | -| `FASTVIDEO_SERVER_DEV_MODE` | no code reads it | -| `FASTVIDEO_TEST_DYNAMO_FULLGRAPH_CAPTURE` | no code reads it | -| `FASTVIDEO_TRACE_FUNCTION` | no code reads it | +| Deprecated variable | Reason | +| ------------------------------------------------ | ---------------------------- | +| `FASTVIDEO_TARGET_DEVICE` | no code reads it | +| `FASTVIDEO_USE_PRECOMPILED` | no code reads it | +| `FASTVIDEO_RINGBUFFER_WARNING_INTERVAL` | no code reads it | +| `FASTVIDEO_ENGINE_ITERATION_TIMEOUT_S` | no code reads it | +| `FASTVIDEO_SERVER_DEV_MODE` | no code reads it | +| `FASTVIDEO_TEST_DYNAMO_FULLGRAPH_CAPTURE` | no code reads it | +| `FASTVIDEO_TRACE_FUNCTION` | no code reads it | +| `FASTVIDEO_TEST_DREAMX_WORLD_SSIM_MODEL_PATH` | DreamX World was removed | +| `DREAMX_WORLD_SSIM_MODEL_PATH` | DreamX World was removed | +| `FASTVIDEO_TEST_DREAMX_WORLD_AR_SSIM_MODEL_PATH` | DreamX World was removed | +| `DREAMX_WORLD_AR_SSIM_MODEL_PATH` | DreamX World was removed | +| `FASTVIDEO_TEST_GAMECRAFT_MODEL_PATH` | HunyuanGameCraft was removed | +| `GAMECRAFT_MODEL_PATH` | HunyuanGameCraft was removed | +| `FASTVIDEO_TEST_GLM_IMAGE_LOCAL_WEIGHTS_DIR` | GLM-Image was removed | +| `GLM_IMAGE_LOCAL_WEIGHTS_DIR` | GLM-Image was removed | +| `FASTVIDEO_TEST_GLM_IMAGE_MODEL_DIR` | GLM-Image was removed | +| `GLM_IMAGE_MODEL_DIR` | GLM-Image was removed | +| `FASTVIDEO_TEST_LONGCAT_MODEL_ROOT` | LongCat was removed | +| `LONGCAT_MODEL_ROOT` | LongCat was removed | +| `FASTVIDEO_TEST_ZIMAGE_MODEL_DIR` | Z-Image was removed | +| `ZIMAGE_MODEL_DIR` | Z-Image was removed | +| `FASTVIDEO_TEST_ZIMAGE_MODEL_REVISION` | Z-Image was removed | +| `ZIMAGE_MODEL_REVISION` | Z-Image was removed | diff --git a/docs/cookbook/cosmos.md b/docs/cookbook/cosmos.md index 89ad17313..4059bd659 100644 --- a/docs/cookbook/cosmos.md +++ b/docs/cookbook/cosmos.md @@ -5,7 +5,7 @@ hide: # Cosmos recipes -
-
- Maintained family · Inference
-GLM-Image from Z.ai supports both text-to-image generation and instruction-based image editing, each with a maintained example.
-Start with the result you want, then choose one of the runtimes FastVideo actually maintains for it.
-Loading recipe details...
-Exact device and memory details appear only when a recorded run supports them.
- -Loading...
- The generated commands expect a local clone:
-git clone https://github.com/hao-ai-lab/FastVideo.git
-cd FastVideo
- Use Configuration for supported Python and CLI settings, Optimizations for attention and memory tradeoffs, and the support matrix for the supported model and optimization surface.
-assets/images/couple.jpg from the repository root, so run it from a repo checkout rather than an arbitrary working directory.image_output/; pass --output to change them.All recipes on this page are Source-backed: their commands, model IDs, and flags were validated against the checked-in FastVideo sources listed above (static validation). No runtime GPU validation is recorded for these recipes, so GPU model fit, memory use, throughput, and runtime duration are Unknown and deliberately not claimed. Runtime buttons show only the GPU counts configured in checked-in sources.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Maintained family · Inference
-LongCat Video from Meituan covers text-to-video and image-to-video, and its maintained examples chain optional distilled and 720p refinement passes.
-Start with the result you want, then choose one of the runtimes FastVideo actually maintains for it.
-Loading recipe details...
-Exact device and memory details appear only when a recorded run supports them.
- -Loading...
- The generated commands expect a local clone:
-git clone https://github.com/hao-ai-lab/FastVideo.git
-cd FastVideo
- Use Configuration for supported Python and CLI settings, Optimizations for attention and memory tradeoffs, and the support matrix for the supported model and optimization surface.
-All recipes on this page are Source-backed: their commands, model IDs, and flags were validated against the checked-in FastVideo sources listed above (static validation). No runtime GPU validation is recorded for these recipes, so GPU model fit, memory use, throughput, and runtime duration are Unknown and deliberately not claimed. Runtime buttons show only the GPU counts configured in checked-in sources.
-Maintained family · Inference
-TurboDiffusion profiles accelerate Wan checkpoints with step-distilled sampling and the SLA attention backend. These recipes follow the registry's `turbodiffusion` model family.
-Start with the result you want, then choose one of the runtimes FastVideo actually maintains for it.
-Loading recipe details...
-Exact device and memory details appear only when a recorded run supports them.
- -Loading...
- The generated commands expect a local clone:
-git clone https://github.com/hao-ai-lab/FastVideo.git
-cd FastVideo
- Use Configuration for supported Python and CLI settings, Optimizations for attention and memory tradeoffs, and the support matrix for the supported model and optimization surface.
-loayrashid/TurboWan* checkpoints; availability is governed by those repos.FASTVIDEO_ATTENTION_BACKEND override in the same shell.All recipes on this page are Source-backed: their commands, model IDs, and flags were validated against the checked-in FastVideo sources listed above (static validation). No runtime GPU validation is recorded for these recipes, so GPU model fit, memory use, throughput, and runtime duration are Unknown and deliberately not claimed. Runtime buttons show only the GPU counts configured in checked-in sources.
-
-
- Maintained family · Inference
-Z-Image Turbo from Tongyi MAI is a fast text-to-image model. The maintained example runs it on a single GPU.
-Start with the result you want, then choose one of the runtimes FastVideo actually maintains for it.
-Loading recipe details...
-Exact device and memory details appear only when a recorded run supports them.
- -Loading...
- The generated commands expect a local clone:
-git clone https://github.com/hao-ai-lab/FastVideo.git
-cd FastVideo
- Use Configuration for supported Python and CLI settings, Optimizations for attention and memory tradeoffs, and the support matrix for the supported model and optimization surface.
-outputs/zimage/zimage_turbo.png; pass --output to redirect.huggingface-cli login and confirm you accepted the model's license on Hugging Face.All recipes on this page are Source-backed: their commands, model IDs, and flags were validated against the checked-in FastVideo sources listed above (static validation). No runtime GPU validation is recorded for these recipes, so GPU model fit, memory use, throughput, and runtime duration are Unknown and deliberately not claimed. Runtime buttons show only the GPU counts configured in checked-in sources.
-