diff --git a/docs/cookbook/diffusion/FLUX/FLUX.mdx b/docs/cookbook/diffusion/FLUX/FLUX.mdx index 05c0c4deb..37759b52b 100644 --- a/docs/cookbook/diffusion/FLUX/FLUX.mdx +++ b/docs/cookbook/diffusion/FLUX/FLUX.mdx @@ -40,7 +40,7 @@ FLUX models are optimized for high-quality image generation. The recommended lau ### 3.2 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--vae-path`: Path to a custom VAE model or HuggingFace model ID (e.g., fal/FLUX.2-Tiny-AutoEncoder). If not specified, the VAE will be loaded from the main model path. - `--num-gpus`: Number of GPUs to use @@ -193,6 +193,14 @@ sglang serve --model-path black-forest-labs/FLUX.1-dev - `--vae-cpu-offload`: Use CPU offload for VAE. - `--pin-cpu-memory`: Pin memory for CPU offload. Only added as a temp workaround if it throws "CUDA error: invalid argument". +#### 4.2.3 Known LoRA examples + +Use `--lora-path` at startup or the [LoRA management API](/docs/sglang-diffusion/api/openai_api#lora-management) to load an adapter. Known FLUX examples include: + +- [`dvyio/flux-lora-simple-illustration`](https://huggingface.co/dvyio/flux-lora-simple-illustration) +- [`XLabs-AI/flux-furry-lora`](https://huggingface.co/XLabs-AI/flux-furry-lora) +- [`XLabs-AI/flux-RealismLora`](https://huggingface.co/XLabs-AI/flux-RealismLora) + ## 5. Benchmark ### 5.1 Speedup Benchmark diff --git a/docs/cookbook/diffusion/Krea/Krea-2.mdx b/docs/cookbook/diffusion/Krea/Krea-2.mdx index 725d2dc1f..1048c80ec 100644 --- a/docs/cookbook/diffusion/Krea/Krea-2.mdx +++ b/docs/cookbook/diffusion/Krea/Krea-2.mdx @@ -44,7 +44,7 @@ The step count and guidance scale are **request-time** settings (see [API Usage] ### 3.2 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--num-gpus`: Number of GPUs to use. - Multi-GPU (tensor and/or sequence parallelism): see [Section 3.3](#3-3-multi-gpu-tensor-and-sequence-parallelism). diff --git a/docs/cookbook/diffusion/MOVA/MOVA.mdx b/docs/cookbook/diffusion/MOVA/MOVA.mdx index fb0053ac9..d6d7779ee 100644 --- a/docs/cookbook/diffusion/MOVA/MOVA.mdx +++ b/docs/cookbook/diffusion/MOVA/MOVA.mdx @@ -41,7 +41,7 @@ import { MOVADeployment } from '/src/snippets/diffusion/mova-deployment.jsx' ### 3.2 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--num-gpus`: Number of GPUs to use - `--tp`: Tensor parallelism size (should not be larger than 1 if text encoder offload is enabled, as layer-wise offload plus prefetch is faster) diff --git a/docs/cookbook/diffusion/Qwen-Image/Qwen-Image-Edit.mdx b/docs/cookbook/diffusion/Qwen-Image/Qwen-Image-Edit.mdx index 50d0d82b5..101f697db 100644 --- a/docs/cookbook/diffusion/Qwen-Image/Qwen-Image-Edit.mdx +++ b/docs/cookbook/diffusion/Qwen-Image/Qwen-Image-Edit.mdx @@ -35,7 +35,7 @@ Qwen-Image-Edit-2511 is a 20B parameter model optimized for image editing tasks. ### 3.2 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--vae-path`: Path to a custom VAE model or HuggingFace model ID (e.g., fal/FLUX.2-Tiny-AutoEncoder). If not specified, the VAE will be loaded from the main model path. - `--num-gpus`: Number of GPUs to use @@ -189,6 +189,13 @@ sglang serve --model-path Qwen/Qwen-Image-Edit-2511 - `--vae-cpu-offload`: Use CPU offload for VAE. - `--pin-cpu-memory`: Pin memory for CPU offload. Only added as a temp workaround if it throws "CUDA error: invalid argument". +#### 4.2.3 Known LoRA examples + +Use `--lora-path` at startup or the [LoRA management API](/docs/sglang-diffusion/api/openai_api#lora-management) to load an adapter. Known Qwen-Image-Edit examples include: + +- [`ostris/qwen_image_edit_inpainting`](https://huggingface.co/ostris/qwen_image_edit_inpainting) +- [`lightx2v/Qwen-Image-Edit-2511-Lightning`](https://huggingface.co/lightx2v/Qwen-Image-Edit-2511-Lightning) + ## 5. Benchmark Test Environment: diff --git a/docs/cookbook/diffusion/Qwen-Image/Qwen-Image.mdx b/docs/cookbook/diffusion/Qwen-Image/Qwen-Image.mdx index b73d47a21..9a0fac5c6 100644 --- a/docs/cookbook/diffusion/Qwen-Image/Qwen-Image.mdx +++ b/docs/cookbook/diffusion/Qwen-Image/Qwen-Image.mdx @@ -95,7 +95,7 @@ also tested on this profile and did not improve steady-state latency. ### 3.3 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--vae-path`: Path to a custom VAE model or HuggingFace model ID (e.g., fal/FLUX.2-Tiny-AutoEncoder). If not specified, the VAE will be loaded from the main model path. - `--num-gpus`: Number of GPUs to use @@ -249,6 +249,15 @@ sglang serve --model-path Qwen/Qwen-Image - `--vae-cpu-offload`: Use CPU offload for VAE. - `--pin-cpu-memory`: Pin memory for CPU offload. Only added as a temp workaround if it throws "CUDA error: invalid argument". +#### 4.2.3 Known LoRA examples + +Use `--lora-path` at startup or the [LoRA management API](/docs/sglang-diffusion/api/openai_api#lora-management) to load an adapter. Known Qwen-Image examples include: + +- [`lightx2v/Qwen-Image-Lightning`](https://huggingface.co/lightx2v/Qwen-Image-Lightning) +- [`flymy-ai/qwen-image-realism-lora`](https://huggingface.co/flymy-ai/qwen-image-realism-lora) +- [`prithivMLmods/Qwen-Image-HeadshotX`](https://huggingface.co/prithivMLmods/Qwen-Image-HeadshotX) +- [`starsfriday/Qwen-Image-EVA-LoRA`](https://huggingface.co/starsfriday/Qwen-Image-EVA-LoRA) + ## 5. Benchmark Test Environment: diff --git a/docs/cookbook/diffusion/README.mdx b/docs/cookbook/diffusion/README.mdx index c26aaa21c..df988182c 100644 --- a/docs/cookbook/diffusion/README.mdx +++ b/docs/cookbook/diffusion/README.mdx @@ -69,4 +69,4 @@ validation then catches MDX, navigation, and internal-link problems. For runtime concepts and platform support, see the [SGLang Diffusion documentation](/docs/sglang-diffusion/index) and -[compatibility matrix](/docs/sglang-diffusion/compatibility_matrix). +[supported model catalog](/docs/sglang-diffusion/compatibility_matrix). diff --git a/docs/cookbook/diffusion/Wan/Wan2.2.mdx b/docs/cookbook/diffusion/Wan/Wan2.2.mdx index b3dddb0d1..6dad57d92 100644 --- a/docs/cookbook/diffusion/Wan/Wan2.2.mdx +++ b/docs/cookbook/diffusion/Wan/Wan2.2.mdx @@ -15,6 +15,12 @@ import { Wan22Deployment } from '/src/snippets/diffusion/wan22-deployment.jsx'; Choose the A14B MoE checkpoints for maximum T2V or I2V capacity and the 5B TI2V model for a smaller unified 720p-at-24-fps path. MoE reduces active compute relative to total capacity but does not remove the memory cost of loading expert weights, so hardware selection still matters. + +The Wan2.2 TI2V 5B checkpoint currently has known quality issues when it is used +for image-to-video generation. Use `Wan-AI/Wan2.2-I2V-A14B-Diffusers` when I2V +quality is the priority. + + ## 2. SGLang-diffusion Installation SGLang-diffusion offers multiple installation methods. You can choose the most suitable installation method based on your hardware platform and requirements. @@ -35,7 +41,7 @@ The Wan2.2 series offers models in various sizes, architectures and input types, ### 3.2 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--vae-path`: Path to a custom VAE model or HuggingFace model ID (e.g., fal/FLUX.2-Tiny-AutoEncoder). If not specified, the VAE will be loaded from the main model path. - `--num-gpus {NUM_GPUS}`: Number of GPUs to use diff --git a/docs/cookbook/diffusion/Z-Image/Z-Image-Turbo.mdx b/docs/cookbook/diffusion/Z-Image/Z-Image-Turbo.mdx index 7196cda2d..e4e5b7e12 100644 --- a/docs/cookbook/diffusion/Z-Image/Z-Image-Turbo.mdx +++ b/docs/cookbook/diffusion/Z-Image/Z-Image-Turbo.mdx @@ -35,7 +35,7 @@ Z-Image-Turbo is optimized for high-quality image generation with only 8 inferen ### 3.2 Configuration Tips -Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix). +See [Performance Optimization](/docs/sglang-diffusion/performance-optimization) for acceleration features and their runtime requirements. - `--vae-path`: Path to a custom VAE model or HuggingFace model ID (e.g., fal/FLUX.2-Tiny-AutoEncoder). If not specified, the VAE will be loaded from the main model path. - `--num-gpus`: Number of GPUs to use @@ -189,6 +189,13 @@ sglang serve --model-path Tongyi-MAI/Z-Image-Turbo - `--vae-cpu-offload`: Use CPU offload for VAE. - `--pin-cpu-memory`: Pin memory for CPU offload. Only added as a temp workaround if it throws "CUDA error: invalid argument". +#### 4.2.3 Known LoRA examples + +Use `--lora-path` at startup or the [LoRA management API](/docs/sglang-diffusion/api/openai_api#lora-management) to load an adapter. Known Z-Image-Turbo examples include: + +- [`tarn59/pixel_art_style_lora_z_image_turbo`](https://huggingface.co/tarn59/pixel_art_style_lora_z_image_turbo) +- [`wcde/Z-Image-Turbo-DeJPEG-Lora`](https://huggingface.co/wcde/Z-Image-Turbo-DeJPEG-Lora) + ## 5. Benchmark Test Environment: diff --git a/docs/custom.css b/docs/custom.css index 97ce17aa9..25f40a9f2 100644 --- a/docs/custom.css +++ b/docs/custom.css @@ -83,70 +83,97 @@ html.dark table tbody tr:nth-child(even) td, background-color: rgba(255,255,255,0.05); } -.sgd-model-table-wrap { - margin: 1rem 0 1.5rem; - overflow-x: auto; - border: 1px solid rgba(17, 24, 39, 0.12); - border-radius: 8px; - background: rgba(255, 255, 255, 0.55); - scrollbar-width: thin; +.sgd-model-catalog { + margin: 16px 0 24px; + border-top: 1px solid rgb(226, 232, 240); } -.sgd-model-table-wrap::-webkit-scrollbar { - width: 8px; - height: 8px; +.sgd-model-entry { + display: grid; + grid-template-columns: minmax(138px, 0.34fr) minmax(0, 1fr); + column-gap: 28px; + min-width: 0; + padding: 17px 0; + border-bottom: 1px solid rgb(226, 232, 240); } -.sgd-model-table { - min-width: 760px; - table-layout: auto; - border-collapse: separate; - border-spacing: 0; - font-size: 0.875rem; +.sgd-model-entry-meta { + min-width: 0; } -.sgd-model-table thead tr { - border-bottom: none; +.sgd-model-entry-meta h3 { + margin: 0; + color: rgb(15, 23, 42); + font-size: 0.9rem; + font-weight: 650; + letter-spacing: 0; + line-height: 1.4; } -.sgd-model-table thead th { - padding: 11px 14px; - border-bottom: 1px solid rgba(213, 88, 22, 0.24); - background: rgba(213, 88, 22, 0.08) !important; - color: rgb(124, 45, 18); +.sgd-model-entry-ids { + min-width: 0; } -.sgd-model-table tbody td { - padding: 12px 14px; - vertical-align: top; - border-bottom: 1px solid rgba(17, 24, 39, 0.08); - background: transparent !important; +.sgd-model-id { + min-width: 0; + padding: 2px 0; +} + +.sgd-model-entry .sgd-model-id code { + display: block; + min-width: 0; + padding: 0; + border: 0; + background: transparent; + box-shadow: none; + color: rgb(51, 65, 85); + font-size: 0.78rem; + font-weight: 500; + line-height: 1.5; + overflow-wrap: anywhere; + white-space: normal; +} + +.sgd-model-entry-note { + margin: 7px 0 0; + color: rgb(100, 116, 139); + font-size: 0.76rem; line-height: 1.45; } -.sgd-model-table tbody tr:last-child td { - border-bottom: none; +.sgd-model-entry-link { + display: inline-flex; + gap: 4px; + align-items: center; + margin-top: 7px; + color: rgb(194, 65, 12); + font-size: 0.74rem; + font-weight: 600; + text-decoration: none; } -.sgd-model-table tbody td:first-child { - width: 18%; - font-weight: 650; - color: rgb(31, 41, 55); +.sgd-model-entry-link:hover { + text-decoration: underline; } -.sgd-id-list { - display: flex; - flex-wrap: wrap; - gap: 6px; -} +@media (max-width: 620px) { + .sgd-model-entry { + grid-template-columns: minmax(0, 1fr); + row-gap: 9px; + padding: 15px 0; + } -.sgd-id-list code { - display: inline-block; - max-width: 100%; - white-space: normal; - overflow-wrap: anywhere; - font-size: 0.78rem; - line-height: 1.4; + .sgd-model-entry-meta { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 16px; + } + + .sgd-model-entry-link { + flex: none; + margin-top: 0; + } } .sgd-chip { @@ -841,32 +868,32 @@ html.dark .sgd-command-builder, [data-theme="dark"] .sgd-command-builder { } -.sgd-muted { - color: rgb(107, 114, 128); - font-size: 0.85rem; +html.dark .sgd-model-catalog, +[data-theme="dark"] .sgd-model-catalog, +html.dark .sgd-model-entry, +[data-theme="dark"] .sgd-model-entry { + border-color: rgba(148, 163, 184, 0.2); } -html.dark .sgd-model-table-wrap, -[data-theme="dark"] .sgd-model-table-wrap { - border-color: rgba(255, 255, 255, 0.12); - background: rgba(255, 255, 255, 0.025); +html.dark .sgd-model-entry-meta h3, +[data-theme="dark"] .sgd-model-entry-meta h3 { + color: rgb(241, 245, 249); } -html.dark .sgd-model-table thead th, -[data-theme="dark"] .sgd-model-table thead th { - border-bottom-color: rgba(213, 88, 22, 0.32); - background: rgba(213, 88, 22, 0.16) !important; - color: rgb(254, 215, 170); +html.dark .sgd-model-entry .sgd-model-id code, +[data-theme="dark"] .sgd-model-entry .sgd-model-id code { + background: transparent; + color: rgb(203, 213, 225); } -html.dark .sgd-model-table tbody td, -[data-theme="dark"] .sgd-model-table tbody td { - border-bottom-color: rgba(255, 255, 255, 0.08); +html.dark .sgd-model-entry-note, +[data-theme="dark"] .sgd-model-entry-note { + color: rgb(148, 163, 184); } -html.dark .sgd-model-table tbody td:first-child, -[data-theme="dark"] .sgd-model-table tbody td:first-child { - color: rgb(243, 244, 246); +html.dark .sgd-model-entry-link, +[data-theme="dark"] .sgd-model-entry-link { + color: rgb(251, 146, 60); } html.dark .sgd-chip, @@ -883,11 +910,6 @@ html.dark .sgd-model-tags .sgd-chip, color: rgb(199, 210, 254); } -html.dark .sgd-muted, -[data-theme="dark"] .sgd-muted { - color: rgb(156, 163, 175); -} - /* Bold text (**text**) */ .prose strong, .prose b { font-weight: 600; diff --git a/docs/docs/sglang-diffusion/compatibility_matrix.mdx b/docs/docs/sglang-diffusion/compatibility_matrix.mdx index 4f3ed83fd..2fa577948 100644 --- a/docs/docs/sglang-diffusion/compatibility_matrix.mdx +++ b/docs/docs/sglang-diffusion/compatibility_matrix.mdx @@ -1,944 +1,24 @@ --- -title: "Supported Models and Optimization Compatibility" -description: "Check supported SGLang Diffusion models and their optimization compatibility." +title: "Supported Models" +description: "Browse model families and public checkpoints supported by SGLang Diffusion." --- -This page tracks supported SGLang Diffusion model families and their optimization compatibility. It also covers long-tail models that do not yet have dedicated cookbook recipes. -For model-specific usage recipes, start from the [Diffusion Cookbook](/cookbook/diffusion/intro). Cookbook pages cover the primary models with examples; this page keeps the compact support and compatibility inventory. +import { DiffusionModelCatalog } from '/src/snippets/diffusion/model-catalog.jsx'; -## Supported model inventory - -Pass the `Hugging Face Model ID` to `--model-path` for `sglang generate` or `sglang serve`. Python API users can pass the same ID to SGLang Diffusion model-loading helpers. - -Missing checkpoint aliases do not imply that a model family is unsupported. The runtime registry may also accept detector-based aliases or local model directories that match the same family. - -Rows are grouped when a family shares the same runtime path or optimization support. Use the detailed matrix below when you need per-optimization compatibility. +Use a listed checkpoint as `--model-path` with `sglang generate` or +`sglang serve`. This registry-backed list contains known public entry points; +family detection may also support compatible local directories. Open the linked +Cookbook recipe for launch commands, optimizations, adapters, and model-specific +notes. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Model familyModel IDs
FLUX
black-forest-labs/FLUX.1-devblack-forest-labs/FLUX.2-devblack-forest-labs/FLUX.2-dev-NVFP4black-forest-labs/FLUX.2-klein-4Bblack-forest-labs/FLUX.2-klein-9Bblack-forest-labs/FLUX.2-klein-base-4Bblack-forest-labs/FLUX.2-klein-base-9B
Z-Image
Tongyi-MAI/Z-ImageTongyi-MAI/Z-Image-Turbo
Qwen-Image
Qwen/Qwen-ImageQwen/Qwen-Image-2512Qwen/Qwen-Image-EditQwen/Qwen-Image-Edit-2509Qwen/Qwen-Image-Edit-2511Qwen/Qwen-Image-Layered
LongCat-Image
meituan-longcat/LongCat-Imagemeituan-longcat/LongCat-Image-Editmeituan-longcat/LongCat-Image-Edit-Turbo
SD3 / SD3.5
stabilityai/stable-diffusion-3-mediumstabilityai/stable-diffusion-3-medium-diffusersstabilityai/stable-diffusion-3.5-mediumstabilityai/stable-diffusion-3.5-medium-diffusersstabilityai/stable-diffusion-3.5-largestabilityai/stable-diffusion-3.5-large-diffusers
SANA
Efficient-Large-Model/SANA1.5_1.6B_1024px_diffusersEfficient-Large-Model/SANA1.5_4.8B_1024px_diffusersEfficient-Large-Model/Sana_1600M_1024px_diffusersEfficient-Large-Model/Sana_600M_1024px_diffusersEfficient-Large-Model/Sana_1600M_512px_diffusersEfficient-Large-Model/Sana_600M_512px_diffusers
FireRed-Image
FireRedTeam/FireRed-Image-Edit-1.0FireRedTeam/FireRed-Image-Edit-1.1
JoyAI-Image
jdopensource/JoyAI-Image-Edit-Diffusers
Other image pipelines
zai-org/GLM-Imagetencent/Hunyuan3D-2baidu/ERNIE-Imagebaidu/ERNIE-Image-Turboideogram-ai/ideogram-4-fp8ideogram-ai/ideogram-4-nf4Comfy-Org/Ideogram-4fal/ideogram-v4-fastfal/ideogram-v4-instant
-
+ + - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Model familyModel IDsResolution / modeOptimization support
FastWan
FastVideo/FastWan2.1-T2V-1.3B-DiffusersFastVideo/FastWan2.2-TI2V-5B-FullAttn-DiffusersFastVideo/FastWan2.2-TI2V-5B-Diffusers
480p / 720pVSA
SANA-Video
Efficient-Large-Model/SANA-Video_2B_480p_diffusers
T2V, 480pNo dedicated optimization listed
LingBot Video MoE
robbyant/lingbot-video-moe-30b-a3b
T2V, 480pNo dedicated optimization listed
Wan2.2
Wan-AI/Wan2.2-TI2V-5B-DiffusersWan-AI/Wan2.2-T2V-A14B-Diffusersnvidia/Wan2.2-T2V-A14B-Diffusers-NVFP4Wan-AI/Wan2.2-I2V-A14B-Diffusers
TI2V / T2V / I2V, 480p / 720pSageLaserBSARain Fusion
LongLive 2.0
Rabinovich/LongLive-2.0-5B-Diffusers
T2V / I2V, 480p / 720pNo dedicated optimization listed
HunyuanVideo
hunyuanvideo-community/HunyuanVideoFastVideo/FastHunyuan-diffusers
720×1280 / 544×960TileSageSVG2
Wan2.1
Wan-AI/Wan2.1-T2V-1.3B-DiffusersWan-AI/Wan2.1-T2V-14B-DiffusersWan-AI/Wan2.1-I2V-14B-480P-DiffusersWan-AI/Wan2.1-I2V-14B-720P-Diffusers
T2V / I2V, 480p / 720pTeaCacheTileSageSVG2LaserBSARain Fusion
TurboWan
IPostYellow/TurboWan2.1-T2V-1.3B-DiffusersIPostYellow/TurboWan2.1-T2V-14B-DiffusersIPostYellow/TurboWan2.1-T2V-14B-720P-DiffusersIPostYellow/TurboWan2.2-I2V-A14B-Diffusers
480p / 720pTeaCacheSLASageSLA
MOVA
OpenMOSS-Team/MOVA-360pOpenMOSS-Team/MOVA-720p
Video-audio, 360p / 720p; local MOVA detector aliases are also supported.No dedicated optimization listed
MiniMax-H3
MiniMaxAI/MiniMax-H3Checkpoint formats
T2VA / FL2VA / Ref2VA, 768p at 24 fps with synchronized audioCache-DiTSageOnline FP8GGUF
FastH3
FastVideo/FastVideo-FastH3-4-step-Preview-v1-VSA-DataFree
T2VA only, 4-step distilled, 768p at 24 fps with synchronized audioVSA-H3
Wan2.1 Fun
weizhou03/Wan2.1-Fun-1.3B-InP-Diffusers
480p inpaintingTeaCacheTileSageSVG2
Helios
BestWishYsh/Helios-BaseBestWishYsh/Helios-MidBestWishYsh/Helios-Distilled
720pNo dedicated optimization listed
LTX-2
Lightricks/LTX-2Lightricks/LTX-2.3
One-stage, two-stage, TI2V, HQNo dedicated optimization listed
LTX-2.5
Lightricks/LTX-2.5-Diffusers
One-stage, two-stage, TI2V, auto-duration, diffusion decodeNo dedicated optimization listed
Cosmos3
nvidia/Cosmos3-Nanonvidia/Cosmos3-Supernvidia/Cosmos3-Super-Text2Imagenvidia/Cosmos3-Super-Image2Video
T2V / I2V / T2INo dedicated optimization listed
-
+ + - -
- - - - - - - - - - - - - - - - - - - - -
Model familyModel IDs / detectorNotes
LingBotWorld
robbyant/lingbot-world-fast-diffusers
Realtime world model with causal state and control tokens.
SANA-WM
Efficient-Large-Model/SANA-WM_bidirectionalEfficient-Large-Model/SANA-WM_streaming
World-model pipeline with bidirectional and streaming checkpoints.
-
+ +
- - -Wan2.2 TI2V 5B currently has known quality issues when used for I2V generation. - - -## Optimization compatibility - -The detailed video matrix uses these symbols: - -- ✅ = Full compatibility -- ❌ = No compatibility -- ⭕ = Does not apply to this model - - - -### Video Generation Models - -Optimization columns are abbreviated to keep the matrix readable: - -- `Tea` = TeaCache -- `Tile` = Sliding Tile Attention -- `Sage` = Sage Attention -- `VSA` = Video Sparse Attention -- `SLA` = Sparse Linear Attention -- `SageSLA` = Sage Sparse Linear Attention -- `SVG2` = Sparse Video Gen 2 -- `LA` = Laser Attention -- `BSA` = Block Sparse Attention -- `RF` = Rain Fusion Attention - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Model NameHugging Face Model IDResolutionTeaTileSageVSASLASageSLASVG2LABSARF
FastWan2.1 T2V 1.3B`FastVideo/FastWan2.1-T2V-1.3B-Diffusers`480p
SANA-Video 2BEfficient-Large-Model/SANA-Video_2B_480p_diffusers480p
LingBot Video MoE 30B-A3Brobbyant/lingbot-video-moe-30b-a3b480p
FastWan2.2 TI2V 5BFastVideo/FastWan2.2-TI2V-5B-FullAttn-Diffusers
FastVideo/FastWan2.2-TI2V-5B-Diffusers
720p
Wan2.2 TI2V 5B`Wan-AI/Wan2.2-TI2V-5B-Diffusers`720p
LongLive 2.0 5BRabinovich/LongLive-2.0-5B-Diffusers480p
720p
Wan2.2 T2V A14BWan-AI/Wan2.2-T2V-A14B-Diffusers
nvidia/Wan2.2-T2V-A14B-Diffusers-NVFP4
480p
720p
Wan2.2 I2V A14B`Wan-AI/Wan2.2-I2V-A14B-Diffusers`480p
720p
HunyuanVideo`hunyuanvideo-community/HunyuanVideo`720×1280
544×960
FastHunyuan`FastVideo/FastHunyuan-diffusers`720×1280
544×960
Wan2.1 T2V 1.3B`Wan-AI/Wan2.1-T2V-1.3B-Diffusers`480p
Wan2.1 T2V 14B`Wan-AI/Wan2.1-T2V-14B-Diffusers`480p, 720p
Wan2.1 I2V 480P`Wan-AI/Wan2.1-I2V-14B-480P-Diffusers`480p
Wan2.1 I2V 720P`Wan-AI/Wan2.1-I2V-14B-720P-Diffusers`720p
TurboWan2.1 T2V 1.3B`IPostYellow/TurboWan2.1-T2V-1.3B-Diffusers`480p
TurboWan2.1 T2V 14B`IPostYellow/TurboWan2.1-T2V-14B-Diffusers`480p
TurboWan2.1 T2V 14B 720P`IPostYellow/TurboWan2.1-T2V-14B-720P-Diffusers`720p
TurboWan2.2 I2V A14B`IPostYellow/TurboWan2.2-I2V-A14B-Diffusers`720p
Wan2.1 Fun 1.3B InPweizhou03/Wan2.1-Fun-1.3B-InP-Diffusers480p
Helios BaseBestWishYsh/Helios-Base720p
Helios MidBestWishYsh/Helios-Mid720p
Helios DistilledBestWishYsh/Helios-Distilled720p
LTX-2 (one/two-stage/TI2V)Lightricks/LTX-2768×512
1536×1024
MiniMax-H3 (T2VA / FL2VA / Ref2VA image, audio, video/V2V)MiniMaxAI/MiniMax-H3768p · 24 fps
FastH3 4-step (T2VA only)FastVideo/FastVideo-FastH3-4-step-Preview-v1-VSA-DataFree768p · 24 fps
LTX-2.3 (one/two-stage/TI2V/HQ)Lightricks/LTX-2.3768×512
1536×1024
1920×1088 (HQ default)
LTX-2.5 (one/two-stage/TI2V)Lightricks/LTX-2.5-Diffusers960×544 (default)
1920×1088 (two-stage)
Cosmos3-Nano (T2V / I2V / T2I)nvidia/Cosmos3-Nano720p · 480p
1024×1024 (T2I)
Cosmos3-Super (T2V / I2V / T2I)nvidia/Cosmos3-Super
nvidia/Cosmos3-Super-Text2Image
nvidia/Cosmos3-Super-Image2Video
720p · 480p
1024×1024 (T2I)
- -**Note**: - -1. Wan2.2 TI2V 5B has some quality issues when performing I2V generation. We are working on fixing this issue. -2. SageSLA is based on SpargeAttn. Install it first with `pip install git+https://github.com/thu-ml/SpargeAttn.git --no-build-isolation` -3. LTX pipeline selection: - - One-stage: `--pipeline-class-name LTX2Pipeline` - - Two-stage: `--pipeline-class-name LTX2TwoStagePipeline` - - Two-stage HQ: `--pipeline-class-name LTX2TwoStageHQPipeline` (HQ defaults to 1920×1088; you can still override `--width/--height`) - - LTX-2 and LTX-2.3 support both T2V and TI2V (`--image-path`) on one-stage and two-stage pipelines (including HQ). - - The spatial upsampler and distilled LoRA are auto-resolved from the model snapshot by default, and can still be overridden with `--spatial-upsampler-path` and `--distilled-lora-path`. - - For LTX models, the `Resolutions` column uses output video `width×height` semantics, matching `sglang generate --width ... --height ...`. -4. LTX-2 / LTX-2.3 two-stage also supports `--ltx2-two-stage-device-mode {original,resident}`: - - `original` keeps official two-stage semantics without the premerged stage-2 transformer path. - - `resident` usually provides the best latency/throughput but uses much more VRAM. - - Default is auto: `resident` on H200/high-memory CUDA GPUs, otherwise `original`. -5. Cosmos3 ships in two sizes — `nvidia/Cosmos3-Nano` (16B) and - `nvidia/Cosmos3-Super` (64B). Both share the same pipeline; the only - difference is transformer depth and width, picked up from - `transformer/config.json` at load time. A single checkpoint serves T2V, - I2V (`--image-path`), and T2I (`--num-frames 1`). -6. FastH3's VSA column refers to the dedicated `video_sparse_attn_h3` (VSA-H3) - backend. Dense backends that run on base MiniMax-H3 also run on the FastH3 - weights. - FastH3 serves `t2va` only and rejects `--model-variant` and - `quality: "high"`. - -
- -## Supported Components - -SGLang Diffusion supports overriding individual pipeline components with -`---path`. The value can be either a Hugging Face repo ID or a local -component directory. - -The same overrides can also be provided in config files through -`component_paths.`. - -Component path overrides are generic, but quantized checkpoint support is -loader-specific. Native SGLang loaders that only materialize plain state dicts -reject detected quantization metadata before weight loading instead of silently -casting the checkpoint into an unquantized module. Library-managed components -inherit the corresponding Transformers or Diffusers support. See -[Quantized Component Repositories](./quantization#quantized-component-repositories). - -### Common Syntax - -CLI: - -```bash Command -sglang generate \ - --model-path black-forest-labs/FLUX.2-dev \ - --vae-path black-forest-labs/FLUX.2-small-decoder \ - --transformer-path /models/flux2/transformer -``` - -Config file: - -```yaml Config -model_path: black-forest-labs/FLUX.2-dev -component_paths: - vae: black-forest-labs/FLUX.2-small-decoder - transformer: /models/flux2/transformer -``` - -Use the component name from the pipeline's `model_index.json` or the native pipeline's registered module name: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Component TypeSupported KeysNotes
VAEvae, video_vae, audio_vaevae is the common image-generation override
Transformer / DiTtransformer, video_dit, audio_dittransformer is the standard override for the main denoiser
Text / Preprocesstext_encoder, text_encoder_2, tokenizer, processor, image_processorReplacement encoders often need matching preprocessing assets
Auxiliaryscheduler, spatial_upsampler, vocoder, connectors, dual_tower_bridge, image_encoder, vision_language_encoderOnly valid for pipelines that expose these components
- -### Known Component Repos - -The table below lists concrete Hugging Face component repos that are already used in SGLang Diffusion docs or tests. It is not an exhaustive catalog of all compatible component repos. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Base ModelOverride KeyExample RepoNotes
black-forest-labs/FLUX.2-devvaeblack-forest-labs/FLUX.2-small-decoderDecoder-only FLUX.2 VAE override
black-forest-labs/FLUX.2-devvaefal/FLUX.2-Tiny-AutoEncoderExisting tested custom VAE path
- -### VAE - -- `--vae-path` is the common image-generation override. -- `--video-vae-path` and `--audio-vae-path` are only relevant for pipelines with separate video or audio VAEs. - -### Transformer / DiT - -- `--transformer-path` is the standard override for the main denoising transformer. -- For a pre-quantized main transformer, prefer `--transformer-path` or `--transformer-weights-path`; see [Quantization](./quantization). -- `--video-dit-path` and `--audio-dit-path` are only for pipelines that split denoisers by modality. - -### Text Encoders and Preprocessors - -- `--text-encoder-path` and `--text-encoder-2-path` override primary and secondary text encoders. -- `--tokenizer-path`, `--processor-path`, and `--image-processor-path` are useful when the replacement encoder requires matching preprocessing assets. - -### Auxiliary Components - -- `--scheduler-path` is only relevant when the pipeline exposes a scheduler component. -- `--spatial-upsampler-path` is mainly for two-stage pipelines such as `LTX2TwoStagePipeline`. -- `--vocoder-path`, `--connectors-path`, `--dual-tower-bridge-path`, `--image-encoder-path`, and `--vision-language-encoder-path` are only valid for pipelines that expose those components. - -### Notes - -1. Component overrides are only valid when the target pipeline actually uses - that component. -2. The override key should match the component name in the pipeline's - `model_index.json` or the native pipeline's registered module name. -3. An override path does not enable quantization by itself. A pre-quantized - component must include metadata for a format supported by its selected - loader. `--quantization` overrides the transformer loader; other component - checkpoints select their serialized format through their own metadata. - -## Verified LoRA Examples - -This section lists example LoRAs that have been explicitly tested and verified with each base model in the **SGLang Diffusion** pipeline. - - -LoRAs that are not listed here are not necessarily incompatible. -In practice, most standard LoRAs are expected to work, especially those following common Diffusers or SD-style conventions. -The entries below simply reflect configurations that have been manually validated by the SGLang team. - - -### Verified LoRAs by Base Model - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Base ModelSupported LoRAs
MiniMax-H3`larryvrh/MiniMax-H3-Turbo-Lora`
`lightx2v/Minimax-h3-Turbo`
`fal/MiniMax-H3-Realism-People-LoRA`
Wan2.2`lightx2v/Wan2.2-Distill-Loras`
`Cseti/wan2.2-14B-Arcane_Jinx-lora-v1`
Wan2.1`lightx2v/Wan2.1-Distill-Loras`
Z-Image-Turbo`tarn59/pixel_art_style_lora_z_image_turbo`
`wcde/Z-Image-Turbo-DeJPEG-Lora`
Qwen-Image`lightx2v/Qwen-Image-Lightning`
`flymy-ai/qwen-image-realism-lora`
`prithivMLmods/Qwen-Image-HeadshotX`
`starsfriday/Qwen-Image-EVA-LoRA`
Qwen-Image-Edit`ostris/qwen_image_edit_inpainting`
`lightx2v/Qwen-Image-Edit-2511-Lightning`
Flux`dvyio/flux-lora-simple-illustration`
`XLabs-AI/flux-furry-lora`
`XLabs-AI/flux-RealismLora`
- -## Special requirements - -### Sliding Tile Attention - -- Currently, only Hopper GPUs (H100s) are supported. - -### Cube Sparse Attention - -- Available only for MiniMax-H3 (`--component-attention-backends transformer=cube_sparse_attn`). It sparsifies only the packed sequence's 3D visual streams; text, audio, standalone reference images, and the text-only token refiner remain dense. -- Requires `--attention-backend-config` with both `local_cube_size` and `topk_ratio_list`. `topk_ratio_list` must have one entry per denoise step, each in `(0, 1]`. See the [MiniMax-H3 cookbook](/cookbook/diffusion/MiniMax/MiniMax-H3) for a worked example. -- Runs on pure PyTorch plus FlexAttention, so it has no third-party kernel dependency. diff --git a/docs/docs/sglang-diffusion/dynamic_batching.mdx b/docs/docs/sglang-diffusion/dynamic_batching.mdx index 3fbd54089..cd1ac61a7 100644 --- a/docs/docs/sglang-diffusion/dynamic_batching.mdx +++ b/docs/docs/sglang-diffusion/dynamic_batching.mdx @@ -45,7 +45,7 @@ Use `--batching-config /path/to/batching_config.json` to load JSON rules when a ## Compatibility -An initial implementation of dynamic batching for T2I and T2V models can be found in [#18764](https://github.com/sgl-project/sglang/pull/18764). The current compatibility grid is below and will be updated as more coverage is added. See [Supported Models and Optimization Compatibility](./compatibility_matrix) for common model IDs and optimization support. +An initial implementation of dynamic batching for T2I and T2V models can be found in [#18764](https://github.com/sgl-project/sglang/pull/18764). The current compatibility grid is below and will be updated as more coverage is added. See [Supported Models](./compatibility_matrix) for common model IDs. `✅` means supported, `❌` means not currently supported, `?` means untested, and `-` means not applicable. diff --git a/docs/docs/sglang-diffusion/index.mdx b/docs/docs/sglang-diffusion/index.mdx index 0d2c54795..69af9138f 100644 --- a/docs/docs/sglang-diffusion/index.mdx +++ b/docs/docs/sglang-diffusion/index.mdx @@ -30,7 +30,7 @@ sglang serve --model-path Qwen/Qwen-Image --port 30010 ## Start Here - [Installation](/docs/sglang-diffusion/installation): install SGLang Diffusion and platform dependencies -- [Supported Models and Optimization Compatibility](/docs/sglang-diffusion/compatibility_matrix): check supported model families, long-tail coverage, and optimization support +- [Supported Models](/docs/sglang-diffusion/compatibility_matrix): browse supported model families, tasks, and public checkpoints - [CLI](/docs/sglang-diffusion/api/cli): run one-off generation jobs or launch a persistent server - [OpenAI-Compatible API](/docs/sglang-diffusion/api/openai_api): send image and video requests to the HTTP server - [Performance Overview](/docs/sglang-diffusion/performance-optimization): choose speed, memory, parallelism, caching, and quality-tradeoff levers diff --git a/docs/docs/sglang-diffusion/realtime_models.mdx b/docs/docs/sglang-diffusion/realtime_models.mdx index 9e2fe4121..cbe903713 100644 --- a/docs/docs/sglang-diffusion/realtime_models.mdx +++ b/docs/docs/sglang-diffusion/realtime_models.mdx @@ -41,7 +41,7 @@ details: - [SANA-WM](/cookbook/diffusion/SANA-WM/SANA-WM) For the complete model list, see -[Supported Models and Optimization Compatibility](./compatibility_matrix). +[Supported Models](./compatibility_matrix). ## Causal Cache Controls diff --git a/docs/docs/sglang-diffusion/ring_sp_performance.mdx b/docs/docs/sglang-diffusion/ring_sp_performance.mdx index c81c025d0..a8dbce0d5 100644 --- a/docs/docs/sglang-diffusion/ring_sp_performance.mdx +++ b/docs/docs/sglang-diffusion/ring_sp_performance.mdx @@ -303,8 +303,9 @@ See [Encoder Parallelism](/docs/sglang-diffusion/encoder_parallel). Cross-node ring support is model-specific, not a property of the launch -flags alone — see [Supported Models and Optimization Compatibility](/docs/sglang-diffusion/compatibility_matrix) -for which models have it. Passing `--ring-degree > 1` for a model that only +flags alone. Confirm support in the model cookbook and see +[Parallelism](/docs/sglang-diffusion/parallelism) for topology requirements. +Passing `--ring-degree > 1` for a model that only has single-node Ulysses may either raise or, in some cases, silently compute incorrect output; check the model's cookbook page before assuming cross-node scaling is supported. diff --git a/docs/docs/sglang-diffusion/support_new_models.mdx b/docs/docs/sglang-diffusion/support_new_models.mdx index 114623367..1ad630beb 100644 --- a/docs/docs/sglang-diffusion/support_new_models.mdx +++ b/docs/docs/sglang-diffusion/support_new_models.mdx @@ -456,8 +456,9 @@ implementation. baseline. 5. If the model supports LoRA, CFG parallelism, or disaggregation, test each feature explicitly. -6. Add or update docs, examples, or the compatibility matrix when users need a - new launch command. +6. Add or update the cookbook, examples, and + [Supported Models](./compatibility_matrix) catalog when users need a new + launch command. Common failure points: diff --git a/docs/src/snippets/diffusion/model-catalog.jsx b/docs/src/snippets/diffusion/model-catalog.jsx new file mode 100644 index 000000000..1df6cf37c --- /dev/null +++ b/docs/src/snippets/diffusion/model-catalog.jsx @@ -0,0 +1,291 @@ +// Keep explicit model IDs aligned with multimodal_gen/registry.py. The unit +// test for this component reports registry entries missing from the catalog. +export const DiffusionModelCatalog = ({ category }) => { + const MODEL_CATALOG = { + image: [ + { + name: "FLUX", + modelIds: [ + "black-forest-labs/FLUX.1-dev", + "black-forest-labs/FLUX.2-dev", + "black-forest-labs/FLUX.2-dev-NVFP4", + "black-forest-labs/FLUX.2-klein-4B", + "black-forest-labs/FLUX.2-klein-9B", + "black-forest-labs/FLUX.2-klein-base-4B", + "black-forest-labs/FLUX.2-klein-base-9B", + ], + cookbook: "/cookbook/diffusion/FLUX/FLUX", + }, + { + name: "Qwen-Image", + modelIds: [ + "Qwen/Qwen-Image", + "nvidia/Qwen-Image-NVFP4", + "Qwen/Qwen-Image-2512", + ], + cookbook: "/cookbook/diffusion/Qwen-Image/Qwen-Image", + }, + { + name: "Qwen-Image Edit / Layered", + modelIds: [ + "Qwen/Qwen-Image-Edit", + "Qwen/Qwen-Image-Edit-2509", + "Qwen/Qwen-Image-Edit-2511", + "Qwen/Qwen-Image-Layered", + ], + cookbook: "/cookbook/diffusion/Qwen-Image/Qwen-Image-Edit", + }, + { + name: "Z-Image", + modelIds: ["Tongyi-MAI/Z-Image", "Tongyi-MAI/Z-Image-Turbo"], + cookbook: "/cookbook/diffusion/Z-Image/Z-Image-Turbo", + }, + { + name: "Krea-2", + modelIds: ["krea/Krea-2"], + cookbook: "/cookbook/diffusion/Krea/Krea-2", + }, + { + name: "LongCat-Image", + modelIds: [ + "meituan-longcat/LongCat-Image", + "meituan-longcat/LongCat-Image-Edit", + "meituan-longcat/LongCat-Image-Edit-Turbo", + ], + cookbook: "/cookbook/diffusion/LongCat/LongCat-Image", + }, + { + name: "Stable Diffusion 3 / 3.5", + modelIds: [ + "stabilityai/stable-diffusion-3-medium", + "stabilityai/stable-diffusion-3-medium-diffusers", + "stabilityai/stable-diffusion-3.5-medium", + "stabilityai/stable-diffusion-3.5-medium-diffusers", + "stabilityai/stable-diffusion-3.5-large", + "stabilityai/stable-diffusion-3.5-large-diffusers", + ], + }, + { + name: "SANA", + modelIds: [ + "Efficient-Large-Model/SANA1.5_1.6B_1024px_diffusers", + "Efficient-Large-Model/SANA1.5_4.8B_1024px_diffusers", + "Efficient-Large-Model/Sana_1600M_1024px_diffusers", + "Efficient-Large-Model/Sana_600M_1024px_diffusers", + "Efficient-Large-Model/Sana_1600M_512px_diffusers", + "Efficient-Large-Model/Sana_600M_512px_diffusers", + ], + }, + { + name: "Ideogram 4", + modelIds: [ + "ideogram-ai/ideogram-4-fp8", + "ideogram-ai/ideogram-4-nf4", + "Comfy-Org/Ideogram-4", + "fal/ideogram-v4-fast", + "fal/ideogram-v4-instant", + ], + cookbook: "/cookbook/diffusion/Ideogram/Ideogram4", + }, + { + name: "ERNIE-Image", + modelIds: ["baidu/ERNIE-Image", "baidu/ERNIE-Image-Turbo"], + cookbook: "/cookbook/diffusion/Ernie-Image/Ernie-Image", + }, + { + name: "FireRed-Image", + modelIds: [ + "FireRedTeam/FireRed-Image-Edit-1.0", + "FireRedTeam/FireRed-Image-Edit-1.1", + ], + }, + { + name: "JoyAI-Image", + modelIds: ["jdopensource/JoyAI-Image-Edit-Diffusers"], + }, + { + name: "GLM-Image", + modelIds: ["zai-org/GLM-Image"], + note: "Resolved by the GLM-Image family detector.", + }, + { + name: "Hunyuan3D 2", + modelIds: ["tencent/Hunyuan3D-2"], + }, + ], + video: [ + { + name: "Wan 2.1", + modelIds: [ + "Wan-AI/Wan2.1-T2V-1.3B-Diffusers", + "Wan-AI/Wan2.1-T2V-14B-Diffusers", + "Wan-AI/Wan2.1-I2V-14B-480P-Diffusers", + "Wan-AI/Wan2.1-I2V-14B-720P-Diffusers", + "weizhou03/Wan2.1-Fun-1.3B-InP-Diffusers", + ], + cookbook: "/cookbook/diffusion/Wan/Wan2.1", + }, + { + name: "Wan 2.2", + modelIds: [ + "Wan-AI/Wan2.2-TI2V-5B-Diffusers", + "Wan-AI/Wan2.2-T2V-A14B-Diffusers", + "nvidia/Wan2.2-T2V-A14B-Diffusers-NVFP4", + "Wan-AI/Wan2.2-I2V-A14B-Diffusers", + ], + cookbook: "/cookbook/diffusion/Wan/Wan2.2", + }, + { + name: "FastWan / TurboWan", + modelIds: [ + "FastVideo/FastWan2.1-T2V-1.3B-Diffusers", + "FastVideo/FastWan2.2-TI2V-5B-FullAttn-Diffusers", + "FastVideo/FastWan2.2-TI2V-5B-Diffusers", + "IPostYellow/TurboWan2.1-T2V-1.3B-Diffusers", + "IPostYellow/TurboWan2.1-T2V-14B-Diffusers", + "IPostYellow/TurboWan2.1-T2V-14B-720P-Diffusers", + "IPostYellow/TurboWan2.2-I2V-A14B-Diffusers", + ], + cookbook: "/cookbook/diffusion/Wan/Wan2.2", + }, + { + name: "LTX 2 / 2.3", + modelIds: ["Lightricks/LTX-2", "Lightricks/LTX-2.3"], + cookbook: "/cookbook/diffusion/LTX/LTX2 & LTX2.3", + }, + { + name: "LTX 2.5", + modelIds: ["Lightricks/LTX-2.5-Diffusers"], + cookbook: "/cookbook/diffusion/LTX/LTX2.5", + }, + { + name: "HunyuanVideo", + modelIds: [ + "hunyuanvideo-community/HunyuanVideo", + "FastVideo/FastHunyuan-diffusers", + ], + }, + { + name: "LongLive 2.0", + modelIds: [ + "Rabinovich/LongLive-2.0-5B-Diffusers", + "Efficient-Large-Model/LongLive-2.0-5B", + ], + cookbook: "/cookbook/diffusion/LongLive/LongLive-2.0", + }, + { + name: "MiniMax-H3", + modelIds: ["MiniMaxAI/MiniMax-H3", "MiniMax/MiniMax-H3"], + cookbook: "/cookbook/diffusion/MiniMax/MiniMax-H3", + }, + { + name: "FastH3", + modelIds: [ + "FastVideo/FastVideo-FastH3-4-step-Preview-v1-VSA-DataFree", + ], + cookbook: "/cookbook/diffusion/MiniMax/MiniMax-H3#6-fasth3-4-step-distilled-preview", + }, + { + name: "MOVA", + modelIds: ["OpenMOSS-Team/MOVA-360p", "OpenMOSS-Team/MOVA-720p"], + note: "Resolved by the MOVA resolution detector.", + cookbook: "/cookbook/diffusion/MOVA/MOVA", + }, + { + name: "JoyAI-Echo", + modelIds: ["jdopensource/JoyAI-Echo"], + cookbook: "/cookbook/diffusion/JoyEcho/JoyEcho", + }, + { + name: "SANA-Video", + modelIds: ["Efficient-Large-Model/SANA-Video_2B_480p_diffusers"], + cookbook: "/cookbook/diffusion/SANA-Video/SANA-Video", + }, + { + name: "LingBot Video MoE", + modelIds: ["robbyant/lingbot-video-moe-30b-a3b"], + note: "Resolved by the LingBot Video MoE family detector.", + cookbook: "/cookbook/diffusion/LingBot-Video/LingBot-Video-MoE", + }, + { + name: "Helios", + modelIds: [ + "BestWishYsh/Helios-Base", + "BestWishYsh/Helios-Mid", + "BestWishYsh/Helios-Distilled", + ], + }, + ], + world: [ + { + name: "Cosmos 3", + modelIds: [ + "nvidia/Cosmos3-Nano", + "nvidia/Cosmos3-Nano-Policy-DROID", + "nvidia/Cosmos3-Super", + "nvidia/Cosmos3-Super-Text2Image", + "nvidia/Cosmos3-Super-Image2Video", + "nvidia/Cosmos3-Edge", + ], + cookbook: "/cookbook/diffusion/Cosmos/Cosmos3", + }, + { + name: "LingBotWorld", + modelIds: [ + "IPostYellow/lingbot-world-fast-diffusers", + "robbyant/lingbot-world-fast-diffusers", + ], + cookbook: "/cookbook/diffusion/LingBot-World/LingBot-World", + }, + { + name: "LingBotWorld 2.0", + modelIds: ["robbyant/lingbot-world-v2-14b-causal-fast-diffusers"], + cookbook: "/cookbook/diffusion/LingBot-World/LingBot-World-2.0", + }, + { + name: "SANA-WM", + modelIds: [ + "Efficient-Large-Model/SANA-WM_bidirectional", + "Efficient-Large-Model/SANA-WM_streaming", + ], + cookbook: "/cookbook/diffusion/SANA-WM/SANA-WM", + }, + { + name: "Pi0.5", + modelIds: ["lerobot/pi05_base", "lerobot/pi05_libero_base"], + cookbook: "/cookbook/vla/OpenPI/Pi0.5", + }, + ], + }; + + const models = MODEL_CATALOG[category] || []; + + return ( +
+ {models.map((model) => ( +
+
+

{model.name}

+ {model.cookbook && ( + + Cookbook + + )} +
+
+ {model.modelIds.map((modelId) => ( +
+ {modelId} +
+ ))} + {model.note &&

{model.note}

} +
+
+ ))} +
+ ); +}; diff --git a/python/sglang/multimodal_gen/test/unit/test_model_catalog.py b/python/sglang/multimodal_gen/test/unit/test_model_catalog.py new file mode 100644 index 000000000..c0c675c95 --- /dev/null +++ b/python/sglang/multimodal_gen/test/unit/test_model_catalog.py @@ -0,0 +1,55 @@ +import ast +import re +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parents[5] +REGISTRY_PATH = REPO_ROOT / "python/sglang/multimodal_gen/registry.py" +CATALOG_PATH = REPO_ROOT / "docs/src/snippets/diffusion/model-catalog.jsx" + + +def _registered_model_ids() -> set[str]: + tree = ast.parse(REGISTRY_PATH.read_text()) + model_ids = set() + + for node in ast.walk(tree): + if not isinstance(node, ast.Call): + continue + if not isinstance(node.func, ast.Name) or node.func.id != "register_configs": + continue + + paths = next( + ( + keyword.value + for keyword in node.keywords + if keyword.arg == "hf_model_paths" + ), + None, + ) + if not isinstance(paths, (ast.List, ast.Tuple)): + continue + + model_ids.update( + item.value + for item in paths.elts + if isinstance(item, ast.Constant) and isinstance(item.value, str) + ) + + return model_ids + + +def _catalog_model_ids() -> set[str]: + source = CATALOG_PATH.read_text() + model_id_arrays = re.findall(r"modelIds:\s*\[(.*?)\]", source, re.DOTALL) + return { + model_id + for model_id_array in model_id_arrays + for model_id in re.findall(r'"([^"]+)"', model_id_array) + } + + +def test_explicit_registry_model_ids_are_documented(): + missing_model_ids = _registered_model_ids() - _catalog_model_ids() + assert not missing_model_ids, ( + "Add newly registered model IDs to the Supported Models catalog: " + f"{sorted(missing_model_ids)}" + )