Video / Lightricks

LTX 2.5

LTX 2.5 from Lightricks. Source-based hardware guidance from its published configuration.

EstimatedRepository opened Jul 23, 2026Source checked 9/24/2026Version: 5e6e7101
LOCALRENTED GPUOPEN WEIGHTS

At a glance

Architecture
unknown
License
ltx-2.x-community-license-agreement
Software
Diffusers
View the model source
MY HARDWARE

Will it run on your machine?

Save your machine to see a personalized rating and its reasoning.

Add my hardware

Ways to run it

Diffusers · See official guide

Repository-specific command in publisher documentation; confirm dependencies and hardware in the source.

import torch from diffusers import LTX2ImageToVideoPipeline, LTX2LatentUpsamplePipeline from diffusers.pipelines.ltx2.latent_upsampler import LTX2LatentUpsamplerModel from diffusers.pipelines.ltx2.utils import ( DEFAULT_NEGATIVE_PROMPT, DISTILLED_SIGMA_VALUES, STAGE_2_DISTILLED_SIGMA_VALUES, ) from diffusers.utils import encode_video, load_image MODEL_ID = "Lightricks/LTX-2.5-Diffusers" # Stage 1 resolution; stage 2 runs at 2x this. HEIGHT, WIDTH, NUM_FRAMES, FRAME_RATE = 544, 960, 121, 24.0 pipe = LTX2ImageToVideoPipeline.from_pretrained(MODEL_ID, dtype=torch.bfloat16) pipe.enable_model_cpu_offload() pipe.vae.enable_tiling() # stage 2 decodes at 2x latent_upsampler = LTX2LatentUpsamplerModel.from_pretrained( MODEL_ID, subfolder="latent_upsampler", dtype=torch.bfloat16 ).to("cuda") upsample_pipe = LTX2LatentUpsamplePipeline(vae=pipe.vae, latent_upsampler=latent_upsampler) generator = torch.Generator("cuda").manual_seed(42) shared = dict( image=load_image("path/to/first_frame.jpg"), prompt="The camera slowly dollies out as wind moves through the grass", negative_prompt=DEFAULT_NEGATIVE_PROMPT, frame_rate=FRAME_RATE, guidance_scale=1.0, audio_guidance_scale=1.0, stg_scale=0.0, audio_stg_scale=0.0, modality_scale=1.0, audio_modality_scale=1.0, generator=generator, return_dict=False, ) stage_1_latents, audio_latents = pipe( height=HEIGHT, width=WIDTH, num_frames=NUM_FRAMES, sigmas=DISTILLED_SIGMA_VALUES, output_type="latent", **shared, ) upsampled_latents = upsample_pipe( latents=stage_1_latents, output_type="latent", return_dict=False )[0] # Stage 2 takes its size from the upsampled latents, so pass no height/width. video, audio = pipe( num_frames=NUM_FRAMES, sigmas=STAGE_2_DISTILLED_SIGMA_VALUES, latents=upsampled_latents, audio_latents=audio_latents, noise_scale=STAGE_2_DISTILLED_SIGMA_VALUES[0], output_type="np", **shared, ) encode_video( video[0], fps=int(FRAME_RATE), output_path="output_i2v_two_stage.mp4", audio=audio[0].float().cpu(), audio_sample_rate=pipe.vocoder.config.output_sampling_rate, )
Official instructions

Keep exploring