Instructions to use Lightricks/LTX-2.5 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusion Single File
How to use Lightricks/LTX-2.5 with Diffusion Single File:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- LTX-2
How to use Lightricks/LTX-2.5 with LTX-2:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --extra natten
# Download weights from this repo # Substitute filenames from this repo's "Files and versions" if they differ hf download Lightricks/LTX-2.5 \ diffusion_models/<distilled-transformer>.safetensors \ text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ vae/<video-vae>.safetensors \ vae/<audio-vae>.safetensors \ latent_upscale_models/<spatial-upsampler>.safetensors \ latent_upscale_models/<temporal-upsampler>.safetensors \ --local-dir models/LTX-2.5 # DFR requires the detailing IC-LoRA (separate repo; strength is fixed at 0.5) hf download Lightricks/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler --local-dir models/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler# Distilled LTX-2.5 pipeline (fast) uv run python -m ltx_pipelines.distilled \ --transformer-path models/LTX-2.5/diffusion_models/<distilled-transformer>.safetensors \ --text-encoder-path models/LTX-2.5/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ --video-vae-path models/LTX-2.5/vae/<video-vae>.safetensors \ --audio-vae-path models/LTX-2.5/vae/<audio-vae>.safetensors \ --spatial-upsampler-path models/LTX-2.5/latent_upscale_models/<spatial-upsampler>.safetensors \ --num-frames 121 \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8# DFR pipeline (higher detail fidelity; optional temporal 2x/4x) uv run python -m ltx_pipelines.dfr_pipeline \ --transformer-path models/LTX-2.5/diffusion_models/<distilled-transformer>.safetensors \ --text-encoder-path models/LTX-2.5/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ --video-vae-path models/LTX-2.5/vae/<video-vae>.safetensors \ --audio-vae-path models/LTX-2.5/vae/<audio-vae>.safetensors \ --spatial-upsampler-path models/LTX-2.5/latent_upscale_models/<spatial-upsampler>.safetensors \ --temporal-upsampler-path models/LTX-2.5/latent_upscale_models/<temporal-upsampler>.safetensors \ --detailing-lora models/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler/ltx-2.5-22b-ic-lora-pixel-spatial-upscaler-x2-1.0.safetensors \ --spatial-upscalings 1 \ --temporal-upscalings 1 \ --height 1088 \ --width 1920 \ --num-frames 121 \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For 4K: --spatial-upscalings 2 --width 3840 --height 2176 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Notebooks
- Google Colab
- Kaggle
Banding induced by standard LTX 2.5 VAE Decode
Trying to set up a 10 bit workflow I discovered banding in highly saturated areas of my videos.
So I set up a simple test after reading that setting the VAE encode and decode to float32 could help.
[1]. Just load a video with a VHS-Loader and directly save it
[2]. Load a video, convert it to latent with the standard encoder, decode it with the standard decoder and save it . (both the standard [2.1] bf16 and the [2.2] conv version)
[3]. replace the VAE Encode and Decode with the ANDRO nodes set to float32
[1| looks just fine
[2.1] serious banding
[2.2]much less banding, but in my actual production workflow, the convolutional version introduces a lot of noise
[3] no difference to the stock nodes
Can anyone point me to a solution for using the newer standard 2.5 VAE without introducing as much banding? Or a starting point for further reading?
Workflow in Comfy
Stock LTX 2.5 VAEs https://huggingface.co/Lightricks/LTX-2.5/tree/main/vae
Technically the force float32 node is there to solve just this, just connect it to the vae before encode/decode nodes
Unless you already start comfyui with the flag that ensures vae runs at fp32 the above node (or equivalent) is necessary, don't download the already bf16 var, just use the one in the checkpoint.
Thanks for your answer.
I already tried the force float node. I didn´t comment on that because the ANDRO node I mentioned under [3] does the same.
The force float node does not change anything, the output stays the same.
I have to add that for this test I work on log/flat footage and add contrast in post. And it is a very saturated color on a wall.
Nevertheless the banding also shows up if I work with the same footage already with a LUT applied from the start.
@Lordenpropf as I mentioned above, you must pull the full precision fp32 vae from the checkpoint, you're using a bf16 (already downsized precision file), no amount of "forcing" will give it more precision, it's "baked" in bf16 already so you will always have the banding if you use that bf16 safetensors file.
I didn't find a fp32 checkpoint for the LTX 2.5 video vae. Am I missing something?
I read that upcasting in comfy to fp32 (--fp32-vae) could help, but it didn't change anything.
Edit: The one checkpoint I found states bf16 for the VAE Decoder part
https://huggingface.co/Lightricks/LTX-2.5-Pre-Trained
@Lordenpropf as I mentioned above, you must pull the full precision fp32 vae from the checkpoint, you're using a bf16 (already downsized precision file), no amount of "forcing" will give it more precision, it's "baked" in bf16 already so you will always have the banding if you use that bf16 safetensors file.
So they should download one of the two 42GB checkpoints and use the VAE from that? Wouldn't it be better if LTX provided a separate fp32 video VAE?
@oumoumad Same here — I couldn't find an fp32 video VAE anywhere either. I checked the safetensors headers directly:
- LTX-2.5/vae/ltx-2.5-video-vae-bf16.safetensors → all 396 tensors BF16
- LTX-2.5/vae/ltx-2.5-video-vae-conv-bf16.safetensors → all BF16
- LTX-2.5-Pre-Trained/ltx-2.5-22b-pt-bf16.safetensors → vae.* tensors (396) are all BF16, identical to the standalone file
- The 42GB dev/distilled transformer files in diffusion_models/ don't contain a VAE at all
So as far as I can tell, there's no checkpoint with an fp32 VAE to pull from. Could you point us to it, or release a separate fp32 video VAE? Thanks!
I stand corrected, you don't need a float32 precision weights to conserve your pixels at fp32 precision,
@Lordenpropf are you sure you don't have any other node in between? even a resize node? can you share your workflow ?




