---
license: other
license_name: ltx-2
license_link: https://github.com/Lightricks/LTX-2/blob/main/LICENSE
tags:
- video
- vae
- decoder
- ltx
- ltx-2.3
- pruned
- diffusers
- image-to-video
- text-to-video
library_name: diffusers
base_model: diffusers/LTX-2.3-Diffusers
pipeline_tag: text-to-video
---
[](https://github.com/PrunaAI/pruna)
[](https://twitter.com/PrunaAI)
[](https://www.linkedin.com/company/pruna-ai)
[](https://discord.com/invite/JFQmtFKCjd)
[](https://dashboard.pruna.ai/login?utm_source=huggingface&utm_medium=org_card&utm_campaign=hf_traffic)
⚡ PrunaVAED
A drop-in replacement decoder for LTX-2.3
1.7× faster
·
~50% lower peak VRAM
·
Near-original visual quality
**PrunaVAED directly replaces the video VAE decoder in
[`diffusers/LTX-2.3-Diffusers`](https://huggingface.co/diffusers/LTX-2.3-Diffusers).
The encoder and latent format remain unchanged, making it a drop-in upgrade
for faster, more memory-efficient LTX-2.3 decoding.**
## Examples
Both columns decode the same LTX-2.3 latent from the distilled pipeline.
| LTX-2.3 decoder |
⚡ PrunaVAED |
|
|
|
|
|
|
More side-by-side comparisons
| LTX-2.3 decoder |
⚡ PrunaVAED |
|
|
|
|
|
|
|
|
## Benchmark
Metrics compare videos decoded from the **same latents** by the LTX-2.3 VAED and PrunaVAED. Two set of latents were
generated with the full
[`ti2vid_two_stages`](https://github.com/Lightricks/LTX-2/blob/main/packages/ltx-pipelines/src/ltx_pipelines/ti2vid_two_stages.py)
pipeline and the
[`distilled`](https://github.com/Lightricks/LTX-2/blob/main/packages/ltx-pipelines/src/ltx_pipelines/distilled.py)
pipeline (recommended).
| Setting | Value |
| Model | PrunaVAED |
| Precision | bfloat16 |
| Batch size | 1 |
| Device | NVIDIA H100 80GB |
| Decode | Full (no tiling / rolling / torch.compile) |
| Clip length | LTX-2.3 VAED | PrunaVAED | Speedup |
| 5 s @ 720p | 841.3 ms | 500.2 ms | 1.68× |
| 10 s @ 720p | 1670.7 ms | 998.0 ms | 1.67× |
| 5 s @ 1080p | 1959.3 ms | 1152.1 ms | 1.7× |
| 10 s @ 1080p | 4903 ms* | 2356 ms | 2.08× |
\* Tiling required on H100; 14533ms otherwise
| Latent set | Clips | PSNR ↑ | LPIPS ↓ | SSIM ↑ | Δ-frame PSNR ↑ |
| Distilled two-stage · 720p | 200 | 39.23 | 0.0087 | 0.9811 | 38.32 |
| TI2Vid two-stage · 720p | 200 | 40.34 | 0.0094 | 0.9823 | 40.06 |
| Distilled two-stage · 1080p | 200 | 41.06 | 0.0052 | 0.9876 | 40.43 |
**Δ-frame PSNR** is PSNR on consecutive-frame
differences (temporal consistency).
## Quickstart
End-to-end smoke demo: generate a short video with the diffusers LTX-2.3
**distilled** two-stage pipeline, then decode the same latent with the stock
LTX-2.3 VAE and with PrunaVAED. Writes two mp4s and prints decode time (ms).
Needs a **CUDA GPU**.
```bash
# 1. Install the Hugging Face CLI
pip install hf
# 2. Download this repo
hf download PrunaAI/PrunaVAED --local-dir PrunaVAED
cd PrunaVAED
# 3. Install dependencies
pip install -r requirements-demo.txt
# 4. Run the demo (~1080p, ~5 s @ 24 fps)
python demo/demo_distilled_decode.py
```
Outputs land in `outputs/demo_distilled/` (`ltx23.mp4`, `prunavaed.mp4`).
Edit `PROMPT` / resolution at the top of `demo/demo_distilled_decode.py` if needed.
## Architecture
PrunaVAED is bitwise identical to LTX 2.3 VAED from `conv_in` to `up_blocks.0`. Pruning starts
at `up_blocks.1`.
| Stage | Channel reduction |
|---|---:|
| `up_blocks.0` | unchanged |
| `up_blocks.1` | 25% |
| `up_blocks.2` | 50% |
| `up_blocks.3` | 50% |
| | Teacher (LTX-2.3) | PrunaVAED |
|---|---:|---:|
| Encoder params | 318.9 M | 318.9 M (unchanged) |
| Decoder params | 407.2 M | 345.0 M (−15%) |
| **Total VAE params** | **726.1 M** | **663.9 M** |
`prunavaed/patch_diffusers.py` provides the required compatibility shim for
the pinned diffusers version.
## Limitations
- Evaluated on 4-second clips at 24 fps.
- Benchmarked on one H100 80GB with bfloat16 and batch size 1.
- Speed and VRAM vary with hardware, resolution, batch size, and software.
- Evaluated only on two differents pipeline of LTX 2.3 ([`ti2vid_two_stages`](https://github.com/Lightricks/LTX-2/blob/main/packages/ltx-pipelines/src/ltx_pipelines/ti2vid_two_stages.py)
pipeline and the
[`distilled`](https://github.com/Lightricks/LTX-2/blob/main/packages/ltx-pipelines/src/ltx_pipelines/distilled.py))
- The weights can be adapted to the custom [`LTX-2`](https://github.com/Lightricks/LTX-2) library without retraining, but no implementation is provided for this yet.
## What this is not
- Not a full T2V model.
- Not a replacement for the LTX denoiser/generator.
- Not compatible with arbitrary VAE latents.
- Not bit-exact with the original decoder.
## License
PrunaVAED is a derivative of LTX-2.3 and is distributed under the
**[LTX-2 Community License Agreement](LICENSE)**. Review its use restrictions
and commercial terms before using or redistributing the model.
Helper code adapted from Hugging Face diffusers retains its Apache-2.0
attribution; see [`NOTICE`](NOTICE).
## What's next?
- **Use PrunaVAED to speed up LTX-2.3 decoding.**
- Compress your own models with [Pruna](https://github.com/PrunaAI/pruna) and give us a ⭐️ for more efficiency!
- Want to use our optimized video model right away? Check
[P-Video](https://www.pruna.ai/p-video) and
[P-Video documentation](https://docs.pruna.ai/en/stable/docs_pruna_endpoints/performance_models/p-video.html).
Try our models