[diffusion] chore: refresh docs, retire stale knobs, and fix nightly attribution (#34663)
This commit is contained in:
@@ -230,17 +230,16 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-video --dataset vbench --task t2v --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task text-to-image --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
```text Output
|
||||
================= Serving Benchmark Result =================
|
||||
Backend: sglang-image
|
||||
Model: black-forest-labs/FLUX.1-dev
|
||||
Dataset: vbench
|
||||
Task: t2v
|
||||
Task: text-to-image
|
||||
--------------------------------------------------
|
||||
Benchmark duration (s): 50.97
|
||||
Request rate: inf
|
||||
@@ -317,17 +316,16 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task t2v --num-prompts 20 --max-concurrency 20
|
||||
--dataset vbench --task text-to-image --num-prompts 20 --max-concurrency 20
|
||||
```
|
||||
|
||||
**Result** :
|
||||
|
||||
```text Output
|
||||
================= Serving Benchmark Result =================
|
||||
Backend: sglang-image
|
||||
Model: black-forest-labs/FLUX.1-dev
|
||||
Dataset: vbench
|
||||
Task: t2v
|
||||
Task: text-to-image
|
||||
--------------------------------------------------
|
||||
Benchmark duration (s): 111.79
|
||||
Request rate: inf
|
||||
|
||||
@@ -67,8 +67,6 @@ For two-stage pipelines, `--ltx2-two-stage-device-mode` controls transformer res
|
||||
| `resident` | Best latency on high-VRAM GPUs because both DiTs can stay resident. |
|
||||
| `original` | Closest to the original two-stage switching semantics. |
|
||||
|
||||
`snapshot` is kept only as a deprecated compatibility alias for `original` and may be removed after two release cycles; use `original` or `resident` in new configs.
|
||||
|
||||
Other deployment flags:
|
||||
|
||||
- `--lora-path`: Preload a community LoRA adapter.
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
---
|
||||
title: LingBot Video MoE
|
||||
description: Serve the native LingBot Video MoE 30B-A3B text-to-video model with SGLang Diffusion.
|
||||
metatags:
|
||||
description: "Run robbyant/lingbot-video-moe-30b-a3b text-to-video generation with SGLang Diffusion."
|
||||
---
|
||||
|
||||
import { DiffusionModelTags } from '/src/snippets/diffusion/model-tags.jsx';
|
||||
|
||||
<DiffusionModelTags tags={["video", "text-to-video", "mixture-of-experts"]} />
|
||||
|
||||
## 1. Model introduction
|
||||
|
||||
[LingBot Video MoE 30B-A3B](https://huggingface.co/robbyant/lingbot-video-moe-30b-a3b)
|
||||
is a text-to-video mixture-of-experts model. SGLang Diffusion provides a native
|
||||
pipeline for the public checkpoint:
|
||||
|
||||
| Model ID | Task | Default output |
|
||||
| --- | --- | --- |
|
||||
| `robbyant/lingbot-video-moe-30b-a3b` | Text to video | 480x480, 81 frames at 16 FPS |
|
||||
|
||||
The checkpoint expects a structured JSON caption rather than an unexpanded
|
||||
natural-language prompt. The JSON is passed as the request's `prompt` string;
|
||||
it is not an `extra_params` object.
|
||||
|
||||
## 2. Installation
|
||||
|
||||
Install SGLang with the diffusion dependencies:
|
||||
|
||||
```bash Command
|
||||
uv pip install "sglang[diffusion]" --prerelease=allow
|
||||
```
|
||||
|
||||
See the [SGLang Diffusion installation guide](/docs/sglang-diffusion/installation)
|
||||
for platform-specific setup.
|
||||
|
||||
## 3. Serve LingBot Video MoE
|
||||
|
||||
Start the server with the Hugging Face model ID:
|
||||
|
||||
```bash Command
|
||||
sglang serve \
|
||||
--model-path robbyant/lingbot-video-moe-30b-a3b \
|
||||
--port 30010
|
||||
```
|
||||
|
||||
## 4. Generate a video
|
||||
|
||||
The following request uses the compact 17-frame, 12-step smoke-test profile.
|
||||
Use the model defaults of 81 frames and 40 steps for the released generation
|
||||
profile.
|
||||
|
||||
```python Python
|
||||
import json
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import requests
|
||||
|
||||
base_url = "http://127.0.0.1:30010"
|
||||
prompt = json.dumps(
|
||||
{
|
||||
"comprehensive_description": {
|
||||
"scene_content_description": (
|
||||
"A small silver robot arm on a white table slowly reaches "
|
||||
"toward a red cube. The background is a softly lit laboratory wall."
|
||||
),
|
||||
"camera_movement_description": (
|
||||
"The camera is static at eye level in a medium shot."
|
||||
),
|
||||
},
|
||||
"camera_info": {
|
||||
"color": "Neutral",
|
||||
"frame_size": "Medium",
|
||||
"shot_type_angle": "Eye level",
|
||||
"lens_size": "Medium",
|
||||
"composition": "Center",
|
||||
"lighting": "Soft light",
|
||||
"lighting_type": "Artificial light",
|
||||
},
|
||||
"world_knowledge": [],
|
||||
"prominent_elements": [
|
||||
{
|
||||
"name": "robot arm",
|
||||
"description": "A small silver robot arm with a two-finger gripper.",
|
||||
"actions": [
|
||||
{
|
||||
"timestamp": "[0.0s - 1.0s]",
|
||||
"action": "reaches toward the red cube",
|
||||
}
|
||||
],
|
||||
"location": "center of the frame",
|
||||
"relative_size": "dominant",
|
||||
"shape_and_color": "articulated silver metal arm",
|
||||
"texture": "brushed metal",
|
||||
"appearance_details": "two-finger gripper and visible joints",
|
||||
"relationship": "reaching toward the red cube on the table",
|
||||
"orientation": "upright, base on the table",
|
||||
"pose": "reaching",
|
||||
}
|
||||
],
|
||||
},
|
||||
separators=(",", ":"),
|
||||
)
|
||||
|
||||
response = requests.post(
|
||||
f"{base_url}/v1/videos",
|
||||
json={
|
||||
"model": "robbyant/lingbot-video-moe-30b-a3b",
|
||||
"prompt": prompt,
|
||||
"size": "640x384",
|
||||
"num_frames": 17,
|
||||
"fps": 16,
|
||||
"num_inference_steps": 12,
|
||||
"guidance_scale": 6.0,
|
||||
"flow_shift": 3.0,
|
||||
"seed": 0,
|
||||
},
|
||||
timeout=60,
|
||||
)
|
||||
response.raise_for_status()
|
||||
video_id = response.json()["id"]
|
||||
|
||||
while True:
|
||||
job = requests.get(f"{base_url}/v1/videos/{video_id}", timeout=30).json()
|
||||
if job["status"] == "completed":
|
||||
break
|
||||
if job["status"] == "failed":
|
||||
raise RuntimeError(job.get("error") or "Video generation failed")
|
||||
time.sleep(1)
|
||||
|
||||
video = requests.get(
|
||||
f"{base_url}/v1/videos/{video_id}/content",
|
||||
timeout=300,
|
||||
)
|
||||
video.raise_for_status()
|
||||
Path("lingbot_video_moe.mp4").write_bytes(video.content)
|
||||
```
|
||||
|
||||
## 5. Request constraints
|
||||
|
||||
- `num_frames` must be `1` or `4n+1`; examples include 17 and 81.
|
||||
- Width and height must both be multiples of 16.
|
||||
- The native defaults are `guidance_scale=6.0`, `flow_shift=3.0`,
|
||||
`num_inference_steps=40`, and `fps=16`.
|
||||
- Keep the prompt as serialized JSON. Raw free text is outside the
|
||||
checkpoint's expected caption format.
|
||||
@@ -220,17 +220,16 @@ sglang serve --model-path Qwen/Qwen-Image-Edit-2511 --port 30000
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task ti2i --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task image-to-image --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
```text Output
|
||||
================= Serving Benchmark Result =================
|
||||
Backend: sglang-image
|
||||
Model: Qwen/Qwen-Image-Edit-2511
|
||||
Dataset: vbench
|
||||
Task: ti2i
|
||||
Task: image-to-image
|
||||
--------------------------------------------------
|
||||
Benchmark duration (s): 35.31
|
||||
Request rate: inf
|
||||
@@ -254,17 +253,16 @@ Peak Memory Median (MB): 47959.35
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task ti2i --num-prompts 20 --max-concurrency 20
|
||||
--dataset vbench --task image-to-image --num-prompts 20 --max-concurrency 20
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
```text Output
|
||||
================= Serving Benchmark Result =================
|
||||
Backend: sglang-image
|
||||
Model: Qwen/Qwen-Image-Edit-2511
|
||||
Dataset: vbench
|
||||
Task: ti2i
|
||||
Task: image-to-image
|
||||
--------------------------------------------------
|
||||
Benchmark duration (s): 286.11
|
||||
Request rate: inf
|
||||
|
||||
@@ -237,7 +237,7 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task text-to-image --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task text-to-image --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
@@ -317,7 +317,7 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task text-to-image --num-prompts 20 --max-concurrency 20 --port 30000
|
||||
--dataset vbench --task text-to-image --num-prompts 20 --max-concurrency 20 --port 30000
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
title: SANA-Video
|
||||
description: Serve the native SANA-Video 2B 480p text-to-video model with SGLang Diffusion.
|
||||
metatags:
|
||||
description: "Run Efficient-Large-Model/SANA-Video_2B_480p_diffusers text-to-video generation with SGLang Diffusion."
|
||||
---
|
||||
|
||||
import { DiffusionModelTags } from '/src/snippets/diffusion/model-tags.jsx';
|
||||
|
||||
<DiffusionModelTags tags={["video", "text-to-video"]} />
|
||||
|
||||
## 1. Model introduction
|
||||
|
||||
[SANA-Video 2B 480p](https://huggingface.co/Efficient-Large-Model/SANA-Video_2B_480p_diffusers)
|
||||
is a text-to-video model with a native SGLang Diffusion pipeline.
|
||||
|
||||
| Model ID | Task | Default output |
|
||||
| --- | --- | --- |
|
||||
| `Efficient-Large-Model/SANA-Video_2B_480p_diffusers` | Text to video | 832x480, 81 frames at 16 FPS |
|
||||
|
||||
## 2. Installation
|
||||
|
||||
Install SGLang with the diffusion dependencies:
|
||||
|
||||
```bash Command
|
||||
uv pip install "sglang[diffusion]" --prerelease=allow
|
||||
```
|
||||
|
||||
See the [SGLang Diffusion installation guide](/docs/sglang-diffusion/installation)
|
||||
for platform-specific setup.
|
||||
|
||||
## 3. Serve SANA-Video
|
||||
|
||||
```bash Command
|
||||
sglang serve \
|
||||
--model-path Efficient-Large-Model/SANA-Video_2B_480p_diffusers \
|
||||
--port 30010
|
||||
```
|
||||
|
||||
## 4. Generate a video
|
||||
|
||||
The following request uses the compact 17-frame, 8-step profile covered by
|
||||
server CI. Use the model defaults of 81 frames and 50 steps for the released
|
||||
generation profile.
|
||||
|
||||
```python Python
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import requests
|
||||
|
||||
base_url = "http://127.0.0.1:30010"
|
||||
response = requests.post(
|
||||
f"{base_url}/v1/videos",
|
||||
json={
|
||||
"model": "Efficient-Large-Model/SANA-Video_2B_480p_diffusers",
|
||||
"prompt": (
|
||||
"A red tram moves slowly through a sunlit city square while "
|
||||
"pedestrians cross behind it. motion score: 30."
|
||||
),
|
||||
"size": "832x480",
|
||||
"num_frames": 17,
|
||||
"fps": 16,
|
||||
"num_inference_steps": 8,
|
||||
"guidance_scale": 6.0,
|
||||
"seed": 42,
|
||||
},
|
||||
timeout=60,
|
||||
)
|
||||
response.raise_for_status()
|
||||
video_id = response.json()["id"]
|
||||
|
||||
while True:
|
||||
job = requests.get(f"{base_url}/v1/videos/{video_id}", timeout=30).json()
|
||||
if job["status"] == "completed":
|
||||
break
|
||||
if job["status"] == "failed":
|
||||
raise RuntimeError(job.get("error") or "Video generation failed")
|
||||
time.sleep(1)
|
||||
|
||||
video = requests.get(
|
||||
f"{base_url}/v1/videos/{video_id}/content",
|
||||
timeout=300,
|
||||
)
|
||||
video.raise_for_status()
|
||||
Path("sana_video.mp4").write_bytes(video.content)
|
||||
```
|
||||
|
||||
## 5. Request constraints
|
||||
|
||||
- The default profile uses `832x480`, 81 frames, 50 inference steps, and 16 FPS.
|
||||
- Frame counts are aligned to `4n+1`; for example, a request for 80 frames is
|
||||
adjusted to 77.
|
||||
- Use width and height values divisible by 16.
|
||||
- The prompt supports an optional `motion score: N.` suffix to express the
|
||||
desired amount of motion.
|
||||
@@ -200,7 +200,7 @@ You can use the built-in SGLang diffusion benchmark script to evaluate Wan2.1 pe
|
||||
|
||||
```bash Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-video --dataset vbench --task text-to-video --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task text-to-video --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
@@ -304,7 +304,7 @@ You can use the built-in SGLang diffusion benchmark script to evaluate Wan2.1 pe
|
||||
|
||||
```bash Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-video --dataset vbench --task text-to-video --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task text-to-video --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
@@ -270,16 +270,15 @@ Test Environment:
|
||||
**Benchmark Command**:
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-video --dataset vbench --task t2v --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task text-to-video --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
```text Output
|
||||
================= Serving Benchmark Result =================
|
||||
Backend: sglang-video
|
||||
Model: Wan-AI/Wan2.2-T2V-A14B-Diffusers
|
||||
Dataset: vbench
|
||||
Task: t2v
|
||||
Task: text-to-video
|
||||
--------------------------------------------------
|
||||
Benchmark duration (s): 630.43
|
||||
Request rate: inf
|
||||
@@ -372,17 +371,16 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-video --dataset vbench --task t2v --num-prompts 20 --max-concurrency 20
|
||||
--dataset vbench --task text-to-video --num-prompts 20 --max-concurrency 20
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
```text Output
|
||||
================= Serving Benchmark Result =================
|
||||
Backend: sglang-video
|
||||
Model: Wan-AI/Wan2.2-T2V-A14B-Diffusers
|
||||
Dataset: vbench
|
||||
Task: t2v
|
||||
Task: text-to-video
|
||||
--------------------------------------------------
|
||||
Benchmark duration (s): 5163.21
|
||||
Request rate: inf
|
||||
|
||||
@@ -225,7 +225,7 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task text-to-image --num-prompts 1 --max-concurrency 1
|
||||
--dataset vbench --task text-to-image --num-prompts 1 --max-concurrency 1
|
||||
```
|
||||
|
||||
**Result**:
|
||||
@@ -305,7 +305,7 @@ Test Environment:
|
||||
|
||||
```shell Command
|
||||
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
|
||||
--backend sglang-image --dataset vbench --task text-to-image --num-prompts 20 --max-concurrency 20
|
||||
--dataset vbench --task text-to-image --num-prompts 20 --max-concurrency 20
|
||||
```
|
||||
|
||||
**Result**:
|
||||
|
||||
@@ -80,6 +80,12 @@ Video models denoise a bounded latent video sequence for each request. Use these
|
||||
href="/cookbook/diffusion/LTX/LTX2 & LTX2.3"
|
||||
img="/cards/logos/ltx.svg"
|
||||
/>
|
||||
<Card
|
||||
title="SANA-Video"
|
||||
mode="card"
|
||||
href="/cookbook/diffusion/SANA-Video/SANA-Video"
|
||||
img="/cards/logos/sana.png"
|
||||
/>
|
||||
<Card
|
||||
title="JoyAI-Echo"
|
||||
mode="card"
|
||||
@@ -98,6 +104,12 @@ Video models denoise a bounded latent video sequence for each request. Use these
|
||||
href="/cookbook/diffusion/MiniMax/MiniMax-H3"
|
||||
img="/cards/logos/minimax.png"
|
||||
/>
|
||||
<Card
|
||||
title="LingBot Video MoE"
|
||||
mode="card"
|
||||
href="/cookbook/diffusion/LingBot-Video/LingBot-Video-MoE"
|
||||
img="/cards/logos/inclusionai.png"
|
||||
/>
|
||||
</CardGroup>
|
||||
|
||||
## Realtime / World Models
|
||||
|
||||
Reference in New Issue
Block a user