Row: LTX25-A24-VIDEO-VAE-BF16
AccumulateTemporalGroup in src/vllm/model_executor/models/ltx2_video_vae_tiled.cpp
multiplies the three 1-D trapezoidal masks together and scales the decoded tile
once:
const float mth = mt * MaskAt(tile.out_h, hi);
const float m = mth * MaskAt(tile.out_w, wi);
... decoded.data[...] * m ...
Upstream's scale_by_masks_1d (Lightricks/LTX-2 @ fd4ded7f,
packages/ltx-core/src/ltx_core/tiling.py:423-435) applies them ONE AXIS AT A
TIME, in axis order, so the arithmetic is ((x * mt) * mh) * mw and not
x * ((mt * mh) * mw). The two disagree in the last bit.
At f32 the difference is a relative ~1e-7 and sits far under the suite's 5e-6
golden band, which is why every existing tiling case is green. At upstream's own
bfloat16 it is a whole word: measured on a shallow tiling fixture, upstream
re-run with the port's fused product lands max|diff| = 0.001953125 from
upstream's own answer, which is exactly the distance the port sits at.
The weights denominator is not affected: it accumulates the same masks over a
tensor of ones, and ((1 * mt) * mh) * mw is bit-identical to (mt * mh) * mw.
Found while adding the bf16 gate the fresh review of #2808 asked for, and fixed
in the same flow there.
Row:
LTX25-A24-VIDEO-VAE-BF16AccumulateTemporalGroupinsrc/vllm/model_executor/models/ltx2_video_vae_tiled.cppmultiplies the three 1-D trapezoidal masks together and scales the decoded tile
once:
Upstream's
scale_by_masks_1d(Lightricks/LTX-2 @ fd4ded7f,packages/ltx-core/src/ltx_core/tiling.py:423-435) applies them ONE AXIS AT ATIME, in axis order, so the arithmetic is
((x * mt) * mh) * mwand notx * ((mt * mh) * mw). The two disagree in the last bit.At f32 the difference is a relative ~1e-7 and sits far under the suite's 5e-6
golden band, which is why every existing tiling case is green. At upstream's own
bfloat16 it is a whole word: measured on a shallow tiling fixture, upstream
re-run with the port's fused product lands
max|diff| = 0.001953125fromupstream's own answer, which is exactly the distance the port sits at.
The weights denominator is not affected: it accumulates the same masks over a
tensor of ones, and
((1 * mt) * mh) * mwis bit-identical to(mt * mh) * mw.Found while adding the bf16 gate the fresh review of #2808 asked for, and fixed
in the same flow there.