# Lightricks/LTX-2.5-Diffusers — vLLM serving recipe

> 19B diffusion transformer for joint video and synchronized audio generation, served via vLLM-Omni

Configuration: hardware `b300` (8× B300) · variant `default` (BF16) · task `full_one_stage_t2v`

- Interactive page: https://vllm-recipes-cimvhk5sf-inferact-inc.vercel.app/Lightricks/LTX-2.5-Diffusers
- This configuration as JSON: https://vllm-recipes-cimvhk5sf-inferact-inc.vercel.app/Lightricks/LTX-2.5-Diffusers.json?hardware=b300

The commands below were rendered for exactly this configuration and take precedence over any example in the guide.

## Other configurations

Change the query string (the same parameters as the page URL) and fetch this URL again. Unknown or incompatible values fall back to the recipe default, so check the Configuration line.

- `hardware`: `h100`, `h200`, `b200`, `gb200`, `b300`, `gb300`, `rtx_pro_6000`, `mi300x`, `mi325x`, `mi355x`
- `variant`: `default`, `fp8`
- `task`: `full_one_stage_t2v`, `full_one_stage_i2v`, `distilled_one_stage_t2v`, `distilled_one_stage_i2v`, `distilled_two_stage_t2v`, `distilled_two_stage_i2v`, `full_two_stage_t2v`, `full_two_stage_i2v`

## Install

Requires vLLM >= 0.27.0.

```bash
uv venv
source .venv/bin/activate
uv pip install -U vllm --torch-backend auto
```

Extra dependencies:

- LTX-2.5 support is provided by current vLLM-Omni main.

```bash
uv pip install git+https://github.com/vllm-project/vllm-omni.git
```

## Serve

vLLM-Omni recipe — the generation endpoints and request examples are in the guide below.

```bash
vllm serve Lightricks/LTX-2.5-Diffusers \
  --model-class-name LTX2Pipeline \
  --diffusion-attention-backend CUDNN_ATTN \
  --port 8000 \
  --omni
```

## Guide

> Background reference. Commands in it are examples and may target another configuration — use the Serve section above.

### Overview

[LTX-2.5-Diffusers](https://huggingface.co/Lightricks/LTX-2.5-Diffusers)
is a dense 19B diffusion transformer for video with synchronized 48 kHz
stereo audio. vLLM-Omni supports T2V and first-frame I2V through four
pipeline classes:

| Pipeline | Mode | Default size | Schedule |
|----------|------|------------|----------|
| `LTX2Pipeline` | Full/SFT one-stage | 960x544 | 30 steps |
| `LTX2TwoStagePipeline` | Full/SFT two-stage | 1920x1088 | 30 + 3 steps |
| `LTX2DistilledOneStagePipeline` | Distilled one-stage | 960x544 | 8 steps |
| `LTX2DistilledTwoStagePipeline` | Distilled two-stage | 1920x1088 | 8 + 3 steps |

Select the class with `--model-class-name`; no `--task-type` flag is needed.
The supported model ID is `Lightricks/LTX-2.5-Diffusers`. The gated raw
`Lightricks/LTX-2.5` repository only supplies official two-stage sidecars and
is not directly loadable with `--model`.

### Quantization

Choose **BF16** to keep the original weights, or **FP8** to add online
`--quantization fp8` and reduce memory use. The command builder disables a
quantization option when it is not available on the selected hardware. FP8
is available on the listed NVIDIA Hopper and Blackwell profiles; AMD uses
BF16. B200, GB200, B300, and GB300 use cuDNN attention for both options.

### Prerequisites

- Accept both Lightricks model licenses and run `hf auth login`.
- Use current vLLM-Omni main, targeting vLLM 0.27+.
- Ensure `ffmpeg` and `ffprobe` are on `PATH`.
- I2V requires PyAV with the `libx264` encoder.

### Installation

```bash
uv venv && source .venv/bin/activate
uv pip install git+https://github.com/vllm-project/vllm-omni.git
hf auth login
```

### Offline inference

Choose `PIPELINE`, `WIDTH`, `HEIGHT`, and `STEPS` from the table. This example
selects the distilled two-stage path:

```bash
export MODEL=Lightricks/LTX-2.5-Diffusers
export PIPELINE=LTX2DistilledTwoStagePipeline
export WIDTH=1920 HEIGHT=1088 STEPS=8

python examples/offline_inference/text_to_video/text_to_video.py \
  --model "${MODEL}" --model-class-name "${PIPELINE}" \
  --prompt "A cinematic red fox walking through a snowy forest at dawn." \
  --width "${WIDTH}" --height "${HEIGHT}" --num-frames 121 \
  --num-inference-steps "${STEPS}" --frame-rate 24 --fps 24 --seed 42 \
  --output ltx25-t2v.mp4
```

For first-frame I2V, use the generic image-to-video example with the same
pipeline values and one image:

```bash
python examples/offline_inference/image_to_video/image_to_video.py \
  --model "${MODEL}" --model-class-name "${PIPELINE}" \
  --image /absolute/path/to/first-frame.png \
  --prompt "The red fox walks forward while the camera tracks alongside." \
  --width "${WIDTH}" --height "${HEIGHT}" --num-frames 121 \
  --num-inference-steps "${STEPS}" --frame-rate 24 --fps 24 --seed 42 \
  --output ltx25-i2v.mp4
```

### Online serving

```bash
vllm serve "${MODEL}" \
  --omni \
  --model-class-name "${PIPELINE}"
```

Use the task presets on this page for complete T2V and I2V requests. Restart
the server after changing `PIPELINE`.

### Constraints

- Online `width`, `height`, `num_frames`, `fps`, and
  `num_inference_steps` are optional and use the selected pipeline defaults
  when omitted. `seed` is optional and random when omitted.
- `num_frames` must be `8k+1` when overridden.
- One-stage dimensions must be divisible by 32; two-stage final dimensions
  must be divisible by 64.
- Distilled pipelines are positive-only and reject negative prompts.
- I2V accepts exactly one initial RGB image per prompt and uses the official
  CRF-18 conditioning path by default.

### References

- [LTX-2.5 Diffusers model card](https://huggingface.co/Lightricks/LTX-2.5-Diffusers)
- [Official LTX-2 repository](https://github.com/Lightricks/LTX-2)
- [vLLM-Omni LTX-2.5 recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/LTX/LTX-2.5.md)
