Skip to content

LTX-2.5: the res_2s DENOISING LOOP is unported, so TI2VidTwoStagesHQPipeline cannot be served — only its per-step arithmetic exists #921

Description

@localai-bot

What is ported and what is not

Ltx2Res2sStep / Ltx2Res2sSdeCoeff
(src/vllm/model_executor/models/ltx2_pipeline.cpp:307-345) mirror
Res2sDiffusionStep.get_sde_coeff and .step
(packages/ltx-core/src/ltx_core/components/diffusion_steps.py:118-190) and are
gated by test_ltx2_pipeline's "ltx2 Res2s diffusion step reproduces upstream"
against per-arm goldens.

That is the SDE injection for ONE substep. It is not the sampler. The sampler is
res2s_audio_video_denoising_loop
(packages/ltx-pipelines/src/ltx_pipelines/utils/samplers.py:208-447), and none
of the following exists here:

  • the exponential-integrator coefficients phi(j, z) and
    get_res2s_coefficients(h, phi_cache, c2) (utils/res2s.py:1-60) — zero hits
    for phi/a21/b1/b2 in src/ or include/;
  • the SECOND transformer evaluation per step, at
    sub_sigma = sqrt(sigma * sigma_next) (samplers.py:315, 380-386). Our denoise
    loop (src/vllm/multimodal/ltx2_video.cpp:1810-1855) evaluates the DiT ONCE
    per step;
  • the bong anchor refinement (samplers.py:357-364), gated on
    h < 0.5 and sigma > 0.03;
  • the Ltx2StepperKind enumerator to select any of it — the enum is
    {kEuler, kEulerAncestral} (include/vllm/model_executor/models/ltx2_pipeline.h:521).

Why this blocks the HQ pipeline specifically

TI2VidTwoStagesHQPipeline (packages/ltx-pipelines/src/ltx_pipelines/ti2vid_two_stages_hq.py:59-340)
differs from TI2VidTwoStagesPipeline in exactly three things: it passes
stepper=Res2sDiffusionStep(), it passes loop=res2s_audio_video_denoising_loop
to BOTH stages (:285, 292, 319, 335), and it takes LTX_2_3_HQ_PARAMS
(utils/constants.py:95-115: 15 steps, 544x960 -> 1088x1920, STG off,
rescale 0.45/1.0).

The sampler IS the HQ variant. Serving the HQ preset's parameters on the Euler
loop would render a plausible clip that is quietly not HQ, at roughly half the
model evaluations the preset was tuned for. So this arm must refuse by name until
the loop lands, rather than substitute the first-order sampler.

Owner

Listed under ## Owed in .agents/specs/ltx25-resolution-envelope.md
(row LTX25-RESOLUTION-ENVELOPE), which mirrors the geometry half and explicitly
does NOT take the sampler. Sibling of #644.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions