You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Regarding the plan, because the distilled pipeline is a two-stage generation pipeline. I think we will need to create a separate pipeline for distilled LTX2 (T2V & I2V)
I don't think we need to create a separate pipeline for this. This script shows how to use the distilled checkpoint in the two-stage setup, but we don't have to follow it like that. Both stages use the same denoising loop but different SIGMA values. I think that's the main change. Please correct me if my understanding in incorrect.
For the two stage pipeline we could do something like:
pipe= ... # this can be used for the stage 2 process but needs to use different sigmasupsampler_pipe= ...
video, audio=pipe(...) # stage 1upscaled_video_latent=upsampler_pipe(video) # upsamplefinal_video, _=pipe(upscaled_video_latent, ...) # stage 2 with different sigmas
Your points are right, in that case, the plan are not much differ from what you imagine
Suggested plan:
Run convert weight script and create new model repository for the weight.
The sigmas are hard-compute in current diffusers implementation for each call of the __call__ method so need to move the sigmas to __init__, then we could have the inference script like:
pipe= ... # this can be used for the stage 2 process but needs to use different sigmasupsampler_pipe= ...
video, audio=pipe(..., output_type="latents") # stage 1upscaled_video_latent=upsampler_pipe(video) # upsamplepipe.scheduler.sigmas=torch.tensor([0.909375, 0.725, 0.421875, 0.0]) # which is a subset of stage 1 distilled sigmasfinal_video, _=pipe(upscaled_video_latent, ...) # stage 2 with different sigmas
However, I think we should design a more clean solution, maybe we should manage the sigmas in two separate scheduler configs, then loading them during inference
pipe= ... # this can be used for the stage 2 process but needs to use different sigmasupsampler_pipe= ...
video, audio=pipe(..., output_type="latents") # stage 1upscaled_video_latent=upsampler_pipe(video) # upsamplepipe.scheduler.sigmas=FlowMatchEulerDiscreteScheduler.from_config(pipe.scheduler_stage2)
final_video, _=pipe(upscaled_video_latent, ...) # stage 2 with different sigmas
However, it's seems like storing an array of sigmas in scheduler config is uncommon in diffusers. Please tell me which solution you prefer
We could store the pre-defined sigmas in a utils.py stored under src/pipelines/ltx2/.
And then:
fromdiffusers.pipelines.ltx2.utilsimportDISTILL_SIGMASfinal_video, _=pipe(upscaled_video_latent, sigmas=DISTILL_SIGMAS, ...) # stage 2 with different sigmas
Activity
rootonchair commentedon Jan 8, 2026
Hi @sayakpaul, I would like to work on this issue
Regarding the plan, because the distilled pipeline is a two-stage generation pipeline. I think we will need to create a separate pipeline for distilled LTX2 (T2V & I2V)
sayakpaul commentedon Jan 8, 2026
I don't think we need to create a separate pipeline for this. This script shows how to use the distilled checkpoint in the two-stage setup, but we don't have to follow it like that. Both stages use the same denoising loop but different SIGMA values. I think that's the main change. Please correct me if my understanding in incorrect.
For the two stage pipeline we could do something like:
rootonchair commentedon Jan 8, 2026
Your points are right, in that case, the plan are not much differ from what you imagine
Suggested plan:
__call__method so need to move the sigmas to__init__, then we could have the inference script like:However, I think we should design a more clean solution, maybe we should manage the sigmas in two separate scheduler configs, then loading them during inference
However, it's seems like storing an array of sigmas in scheduler config is uncommon in diffusers. Please tell me which solution you prefer
sayakpaul commentedon Jan 8, 2026
Maybe we can allow passing
sigmasin the pipeline__call__?diffusers/src/diffusers/pipelines/flux/pipeline_flux.py
Line 664 in 8600b4c
We could store the pre-defined sigmas in a
utils.pystored undersrc/pipelines/ltx2/.And then:
WDYT?
rootonchair commentedon Jan 8, 2026
Perfect. That solves my concerns
Do you have any comment when we create a new model repository. If no, perhaps I could start working on this issue
sayakpaul commentedon Jan 8, 2026
I think we can host weights on your profile for now and then think about the transfer.
rootonchair commentedon Jan 8, 2026
Sure. I will start to work accordingly
sayakpaul commentedon Jan 9, 2026
@rootonchair just a heads up about #12933.