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
LTX-2.5: the only shipped DiT declares use_keyframes_abs_pos_embedding=True and carries ZERO keyframe tensors, so #658's trained bias is unexercised by any render we can run #902
Found while verifying #880 end-to-end on dgx.casa (GB10) against the real NVFP4 weights. This is a measurement, not a code change.
What I measured
The capstone render for #658 ran on main at 98f8e046d — the merge commit of #880 — without--allow-unported, which is the flag that row exists to retire. It succeeded: 9 frames at 128x128 @ 24 fps plus 48 kHz stereo audio, zero refusals in the log (control: 12 log lines).
Then I compared it to the previous render, which used the pre-#880 binary (3ce5a1dc1, built 2026-08-14) with--allow-unported — that is, with use_keyframes_abs_pos_embedding force-cleared at ltx2_loader.cpp:1035. Same prompt, same seed 20260814, same resolution.
Byte-identical. Bias off and bias on produce the same pixels.
That contradicts the seam comment this row itself landed at src/vllm/multimodal/ltx2_video.cpp:1695-1697, which records the opposite as its motivating evidence: "five LTX-2.5 suites stayed GREEN while the rendered pixels moved — frame 0 went from a flat 127 to a flat 130."
The config declares the flag true. The file carries no keyframe tensor at all. So on this checkpoint the trained term has no weights to apply, keyframes_abs_pos_embedding stays default-constructed (ltx2.h:256-258), and the render is correct to be identical.
What this means for the row
Three separate things, and only the first is proven:
UNEXERCISED — the trained bias itself. No render we can run on this box touches ltx2_dit.cpp:527 / ltx2_device.cpp:817, because the only DiT on the NAS has no keyframe weights. The guarantee is covered by reduced-dimension fixtures only.
A checkpoint that declares use_keyframes_abs_pos_embedding = True while carrying no keyframe tensor is a contradiction between the declared config and the shapes, and Ltx2AdoptDeclaredDitParams is exactly the function that reconciles those two. Which way does it resolve, and is that the upstream behaviour?
It matters because the two arms differ sharply:
Resolves false from shapes — correct, and the render above is right. Then the seam VT_CHECK at ltx2_video.cpp:1707 never arms on this checkpoint, and neither does ltx2_dit.cpp:520.
Resolves true from the declared config — then ltx2_dit.cpp:520 (m.keyframes_mask == nullptr || keyframes_embedding != nullptr) should have refused this render, and it did not. That would be a live hole in the guard the row was written to add.
I did not determine which, so I am not asserting either. Whoever picks this up should answer it against upstream model.py:166-173 (supports_keyframes_abs_pos_embedding) rather than from our own code, and add the smallest test that enters through the loader with a declare-true/carry-nothing checkpoint — a shape our fixtures currently do not have.
Related: #658, #880, #886 (POLICY-NOTHING-LANDS-DEAD — a mechanism whose only driver is its own fixture is exactly the shape that policy names), #655 (the LTX oracle admissibility question).
Found while verifying #880 end-to-end on
dgx.casa(GB10) against the real NVFP4 weights. This is a measurement, not a code change.What I measured
The capstone render for #658 ran on
mainat98f8e046d— the merge commit of #880 — without--allow-unported, which is the flag that row exists to retire. It succeeded: 9 frames at 128x128 @ 24 fps plus 48 kHz stereo audio, zero refusals in the log (control: 12 log lines).Then I compared it to the previous render, which used the pre-#880 binary (
3ce5a1dc1, built 2026-08-14) with--allow-unported— that is, withuse_keyframes_abs_pos_embeddingforce-cleared atltx2_loader.cpp:1035. Same prompt, same seed20260814, same resolution.Byte-identical. Bias off and bias on produce the same pixels.
That contradicts the seam comment this row itself landed at
src/vllm/multimodal/ltx2_video.cpp:1695-1697, which records the opposite as its motivating evidence: "five LTX-2.5 suites stayed GREEN while the rendered pixels moved — frame 0 went from a flat 127 to a flat 130."Why: the weights are not in the file
Reading the safetensors header directly:
The config declares the flag true. The file carries no keyframe tensor at all. So on this checkpoint the trained term has no weights to apply,
keyframes_abs_pos_embeddingstays default-constructed (ltx2.h:256-258), and the render is correct to be identical.What this means for the row
Three separate things, and only the first is proven:
allow_unportedretired. That is feat(LTX25-KEYFRAMES-ABS-POS): the trained keyframe bias both shipped DiTs were refused over (#658) #880's user-visible claim and it holds end-to-end on real weights.ltx2_dit.cpp:527/ltx2_device.cpp:817, because the only DiT on the NAS has no keyframe weights. The guarantee is covered by reduced-dimension fixtures only.docs/FEATURES.mdand the feat(LTX25-KEYFRAMES-ABS-POS): the trained keyframe bias both shipped DiTs were refused over (#658) #880 subject say "both shipped DiTs". Only one DiT is on the NAS (lsshows a single 18.7 GB file). The second was not available to me, so I could neither confirm nor refute that half.The question this leaves open
A checkpoint that declares
use_keyframes_abs_pos_embedding = Truewhile carrying no keyframe tensor is a contradiction between the declared config and the shapes, andLtx2AdoptDeclaredDitParamsis exactly the function that reconciles those two. Which way does it resolve, and is that the upstream behaviour?It matters because the two arms differ sharply:
VT_CHECKatltx2_video.cpp:1707never arms on this checkpoint, and neither doesltx2_dit.cpp:520.ltx2_dit.cpp:520(m.keyframes_mask == nullptr || keyframes_embedding != nullptr) should have refused this render, and it did not. That would be a live hole in the guard the row was written to add.I did not determine which, so I am not asserting either. Whoever picks this up should answer it against upstream
model.py:166-173(supports_keyframes_abs_pos_embedding) rather than from our own code, and add the smallest test that enters through the loader with a declare-true/carry-nothing checkpoint — a shape our fixtures currently do not have.Related: #658, #880, #886 (
POLICY-NOTHING-LANDS-DEAD— a mechanism whose only driver is its own fixture is exactly the shape that policy names), #655 (the LTX oracle admissibility question).FOLLOWING_AGENTS_PROTOCOL