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.
What is ported and what is not
Ltx2Res2sStep/Ltx2Res2sSdeCoeff(
src/vllm/model_executor/models/ltx2_pipeline.cpp:307-345) mirrorRes2sDiffusionStep.get_sde_coeffand.step(
packages/ltx-core/src/ltx_core/components/diffusion_steps.py:118-190) and aregated 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 noneof the following exists here:
phi(j, z)andget_res2s_coefficients(h, phi_cache, c2)(utils/res2s.py:1-60) — zero hitsfor
phi/a21/b1/b2insrc/orinclude/;sub_sigma = sqrt(sigma * sigma_next)(samplers.py:315, 380-386). Our denoiseloop (
src/vllm/multimodal/ltx2_video.cpp:1810-1855) evaluates the DiT ONCEper step;
samplers.py:357-364), gated onh < 0.5 and sigma > 0.03;Ltx2StepperKindenumerator 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
TI2VidTwoStagesPipelinein exactly three things: it passesstepper=Res2sDiffusionStep(), it passesloop=res2s_audio_video_denoising_loopto BOTH stages (
:285, 292, 319, 335), and it takesLTX_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
## Owedin.agents/specs/ltx25-resolution-envelope.md(row
LTX25-RESOLUTION-ENVELOPE), which mirrors the geometry half and explicitlydoes NOT take the sampler. Sibling of #644.