Commit a1cc5cf
committed
spec(ltx-2.5): record two findings that a port would otherwise assume
Both came out of the campaign rather than the reading, and both are the kind of
thing that produces a finite, correctly-shaped, WRONG result. Recording them in
the spec so they cannot be rediscovered the expensive way.
1.4 — text conditioning is a MULTI-LAYER aggregate, not the last hidden state.
feature_extractor.py normalizes hidden states shaped [B, T, D, L] and
concatenates ACROSS THE LAYER dimension. The real TE checkpoint confirms it: the
two caption projections take 94080 input features, and 94080 = 1920 x 49, the
model's per-layer width across its 48 layers plus one. There are two
normalization variants (per-batch masked mean/range with an 8x scale, and
per-token RMS "for V2 models") and the right one is selected from config, never
guessed. Get the variant, the mask handling, the reduction axes or the layer
order wrong and the model renders a plausible video for the WRONG PROMPT, which
no shape or finiteness check catches.
Two loader facts measured alongside it: the tokenizer ships EMBEDDED AS A TENSOR
(tokenizer_json, ~32 MB) rather than as a sibling file, so a loader that looks
for tokenizer.json fails on this checkpoint; and the TE is quantized with
torchao NVFP4, not compressed-tensors as H3's arm is, so L6 must verify the
layout rather than assume the two are the same.
1.5 — the audio VAE is NOT end-to-end causal. L4 measured this instead of
assuming it: its first causality probes failed and upstream agreed with the
failure. causality_axis governs the convolutions, but the AttnBlocks attend over
the whole (time, mel) map, so a last-frame perturbation reaches every output
frame. The Conv video decoder is not causal either, for an unrelated reason: a
one-group GroupNorm whose statistics span time. "Causal" is precisely the
property a port assumes and never checks, so both are now gated in two parts,
with upstream supplying the expected windows.
Issue: #435
FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]1 parent d9a1c7b commit a1cc5cf
1 file changed
Lines changed: 56 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
130 | 186 | | |
131 | 187 | | |
132 | 188 | | |
| |||
0 commit comments