- One number decides it: 80GB or more of VRAM, or 32GB for distilled variants with quantization. Everything else on this page is solvable.
- Install is two commands and a gated HuggingFace download, but the frame rule bites first. Counts must satisfy
(F-1) % 8 == 0, which is why the quick start uses 121 frames and not 120. - Self-hosting is the wrong choice for more teams than pick it. Use the hosted API until your bill makes the hardware look cheap, then reconsider.
On-premise deployment of LTX-2.5 has one hard gate, worth knowing before anything else: the open-source codebase is pure PyTorch, is tested with CUDA 12.7 or newer, and targets NVIDIA GPUs with 80GB or more of VRAM, with distilled variants supported on 32GB when quantization is enabled. Everything else here is solvable. That number decides whether self-hosting is realistic for you.
Clear it and you get no API meter and no data exposure, with the LTX Model License free for organizations under $10M annual revenue. Miss it and the hosted LTX API runs the same model family on managed GPUs, billed per second of generated video.
Why deploy on-premise?
On-premise deployment answers three requirements a metered service cannot. IP sensitivity, where footage is under contract and cannot be uploaded anywhere. Cost structure at volume, because a self-hosted license carries no per-generation charge, so you pay for infrastructure rather than output. And fine-tuning, which requires the weights themselves. The open-weights distribution of LTX-2.5 includes a pretrained non-SFT base specifically for deep adaptation.
Hardware you actually need
Hardware requirements come in three line items, and only the first is a real gate.
GPU and VRAM
GPU capacity is the binding constraint: 80GB or more of VRAM is the documented target, with distilled variants supported on 32GB when quantization is enabled. Two mechanisms push that floor lower. FP8 quantization reduces the transformer's memory footprint, available as fp8-cast for bf16 checkpoints and fp8-scaled-mm for FP8 checkpoints on Hopper and newer GPUs with native FP8 support. Blockwise FP8/FP6 and NVFP4 policies are also implemented. Separately, block streaming runs the full model on machines that cannot hold all its weights at once, streaming transformer blocks through a small rolling set of GPU buffers from pinned CPU memory or directly from disk.
Disk and bandwidth
Disk is set by the component download. The quick-start component set for LTX-2.5 is roughly 66 GiB, and weights are published one file per component, so you pull only the parts your pipeline needs. Plan bandwidth accordingly.
What the components are
Components ship separately. The transformer comes in two variants: a full dev transformer used by the guided two-stage pipelines, and a distilled transformer that runs in far fewer steps. A custom Gemma 4 12B text encoder, fine-tuned for LTX with the text projection bundled in, is required by every pipeline.
Video and audio VAEs are separate, and the video VAE offers two decoders: a diffusion decoder with better quality at the cost of longer decode time and more VRAM, and a lighter convolutional decoder needing no extra dependencies. A latent spatial upscaler is required by the two-stage pipelines. Optional pieces include a temporal upscaler, a distilled LoRA, a detailing IC-LoRA, and a duration head that predicts clip length from the prompt so you can omit --num-frames.
One detail to settle before downloading: Google's stock Gemma 4 release is not a substitute. Loading checks the encoder's version against the one the checkpoint was trained with, gemma4-12b-ltx-v1.
Software prerequisites
Software prerequisites are a supported CUDA stack, PyTorch, and an attention backend. Backends are selected automatically at runtime from whatever is installed, and forcing a specific one is a Python-side option rather than a CLI flag.
What you install depends on your GPU generation. On datacenter Blackwell GPUs such as the B200, install FlashAttention 4 manually with uv pip install 'flash-attn-4==4.0.0b9'. That revision is the one verified against torch 2.9.1+cu128, and newer betas have known issues on consumer Blackwell. On Hopper GPUs, install the FlashAttention 3 wheel. On other CUDA GPUs, PyTorch SDPA is used automatically and you install nothing.
The natten extra is the fastest backend for the diffusion video decoder and is Linux plus CUDA only. On Windows and macOS it is skipped automatically and decoding falls back to Triton or eager, so the same install command works everywhere.
How do you install LTX-2.5?
Installation is two commands: clone the repository from the Lightricks/LTX-2 project on GitHub, then run uv sync --extra natten from the repository root. If you would rather work in a node-based interface than a command line, ComfyUI integration is available through a separate plugin repository.
Downloading the weights
Weights live on Hugging Face and are pulled with the Hugging Face CLI, which preserves the repository's folder layout under your local directory. That is why documented paths carry diffusion_models/ and vae/ prefixes. Authenticate with hf auth login, then download the distilled transformer, the Gemma 4 text encoder, both VAEs and the spatial upscaler into models/ltx-2.5.
Two failure modes account for most of the trouble here. The repository is gated, so a 401 or 403 means you have not accepted the model terms or are not logged in with a Read token, and fine-grained tokens need the "read gated repos" scope enabled explicitly.
Your first generation
Generation validates the whole install in one command. Run uv run python -m ltx_pipelines.distilled, passing the path to each component you downloaded plus --num-frames 121, --seed 42, --output-path output.mp4 and a prompt.
That frame count is not arbitrary, and it is the constraint that trips up most first deployments. The Video VAE requires frame count to satisfy (F-1) % 8 == 0, so 121 is valid and 120 is not. Other valid counts include 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89 and 97. If you plan durations in seconds, validate the frame count before you plan the shot.
Prompt structure matters more on a first run than people expect. The documented guidance is a detailed, chronological description of actions and scenes in a single flowing paragraph, starting directly with the action and staying within 200 words. The LTX-2.5 prompt guide goes deeper.
Can you run it on 32GB?
Yes. 32GB is a documented configuration for distilled variants with quantization enabled, and two flags do most of the work. Add --quantization fp8-cast to downcast bf16 checkpoints on the fly, and --offload cpu or --offload disk to move weights out of GPU memory between stages.
Beyond the flags, choose lighter components. The convolutional video decoder is lighter than the diffusion decoder and needs no extra dependencies. TI2VidOneStagePipeline generates in a single stage when high resolution is not required. And DistilledPipeline runs with 8 predefined sigmas, 8 steps in stage 1 and 4 in stage 2, the fastest documented path. Our guide to quantization formats covers the tradeoffs.
Air-gapped deployments
Air-gapped deployment is the case self-hosting exists for, and the open weights support it by construction: once the files are on your disk, generation requires no outbound network call. The operational work is front-loaded. Download and verify the component set on a connected machine, transfer it into the isolated environment, and pin dependency versions, because you will not be resolving packages later.
One pinning detail is worth copying down: the natten extra pins natten==0.21.7+torch2130cu132 with torch==2.13.0 (cu132), and older PyTorch or NVIDIA stacks can hit illegal memory access inside NATTEN on large volumes. Our overview of private deployment for AI video models covers the wider enterprise picture.
What does self-hosting cost?
Self-hosting costs infrastructure, not output. Under the LTX Model License, use is free for organizations with under $10M in annual revenue. Above that threshold a commercial license is required, which includes the full model weights plus engineering support for production deployment on your own infrastructure, with pricing on request.
The structural point is that a license carries no API meter. You pay for GPUs, power and time, so cost per generation falls as volume rises. Read the actual terms rather than any summary, including this one.
When not to self-host
Self-hosting is the wrong choice for more teams than choose it. Low or bursty volume leaves fixed infrastructure idle while per-second billing stays cheaper. No GPU at the documented tier means the setup work buys nothing. And if nobody owns the environment, the install that worked last quarter will break next quarter, because model versions ship and dependency pins move. Use the hosted API until your bill makes the hardware look cheap. Our API pricing breakdown has the numbers.
Summary
On-premise deployment of LTX-2.5 targets NVIDIA GPUs with 80GB or more of VRAM, with distilled variants supported on 32GB when quantization is enabled. The codebase is pure PyTorch and is tested with CUDA 12.7 or newer, with CUDA 13 recommended, and the quick-start component set is roughly 66 GiB on disk. Installation is a repository clone plus uv sync --extra natten, followed by a gated Hugging Face download needing a Read token with the read-gated-repos scope. Frame counts must satisfy (F-1) % 8 == 0, which is why the documented quick start uses 121 frames rather than 120. The LTX Model License is free under $10M annual revenue, with a commercial license required above that and pricing on request.
