docs_new/cookbook/diffusion/LongLive/LongLive-2.0.mdx
LongLive 2.0 is a distilled few-step text-to-video and image-to-video model from NVIDIA, built on Wan2.2-TI2V-5B. SGLang serves the Diffusers-format conversion for single-prompt and multi-shot video generation.
For more details, check the LongLive 2.0 paper and LongLive 2.0 GitHub. The model weights are released under the NVIDIA Open Model License.
Please refer to the official SGLang-diffusion installation guide for installation instructions.
sglang serve --model-path Rabinovich/LongLive-2.0-5B-Diffusers
If the GPU runs out of memory, move the text encoder, VAE, and DiT to CPU between stages:
sglang serve \
--model-path Rabinovich/LongLive-2.0-5B-Diffusers \
--dit-cpu-offload \
--text-encoder-cpu-offload \
--vae-cpu-offload
Rabinovich/LongLive-2.0-5B-Diffusers is the Diffusers-format conversion of the official Efficient-Large-Model/LongLive-2.0-5B weights.
Generate one clip without starting a server:
sglang generate \
--model-path Rabinovich/LongLive-2.0-5B-Diffusers \
--prompt "A quiet street at dusk" \
--num-frames 61 \
--save-output \
--output-path outputs
61 frames is 16 latent frames, which is two causal blocks of 8.
Multi-shot prompts are sampling parameters, so pass them through the Python API:
from sglang import DiffGenerator
gen = DiffGenerator.from_pretrained("Rabinovich/LongLive-2.0-5B-Diffusers")
result = gen.generate(sampling_params_kwargs={
"shot_prompts": [
"A husky walks down a sunlit hallway.",
"The husky turns and looks at the camera.",
"Two dogs play together on a carpet.",
],
"chunks_per_shot": 4,
"num_frames": 381, # 3 shots x 4 chunks x 8 = 96 latent frames -> 381 frames
"scene_cut_prefix": "The scene transitions. ",
"multi_shot_sink": True,
"multi_shot_rope_offset": 8.0,
"save_output": True,
"output_path": "outputs",
})
Each shot runs for chunks_per_shot causal blocks before the next prompt is used. The multi-shot defaults mirror the original LongLive prompt-block settings.
These are SGLang request parameters. Original LongLive configs use latent-frame num_output_frames; SGLang exposes output-video num_frames.
num_frames: 61 in the examples. This maps to 16 latent frames, while the original release config defaults to 128 latent frames.num_inference_steps: 4, matching original sampling_steps.guidance_scale: 1.0, matching the original inference config.height / width: 704 / 1280 by default, matching original latent H/W 44 / 80 with 16x spatial compression.shot_prompts, chunks_per_shot, scene_cut_prefix, multi_shot_sink, and multi_shot_rope_offset: SGLang request fields for the original prompt-block and multi-shot behavior.Pass a first frame with --image-path to condition the clip on an image:
sglang generate \
--model-path Rabinovich/LongLive-2.0-5B-Diffusers \
--prompt "A quiet street at dusk" \
--image-path first_frame.png \
--num-frames 61 \
--save-output \
--output-path outputs
The image is used as the first-frame condition.
num_frames must map to a whole number of causal blocks. The latent frame count is (num_frames - 1) / 4 + 1 and must be divisible by 8. For example, 61, 125, and 189 frames give 16, 32, and 48 latent frames.num_frames to match len(shot_prompts) * chunks_per_shot * 8 latent frames, that is num_frames = (len(shot_prompts) * chunks_per_shot * 8 - 1) * 4 + 1.