Downloads · 30 days
0
yitongl/minimax-h3-deltaquant-nvfp4
minimax-h3-deltaquant-nvfp4 is a machine learning model from yitongl. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for minimax-h3. The card lists the license as other.
DeltaQuant ("4-bit Video Diffusion Models with Spatiotemporal Delta Smoothing", CVPR 2026) implemented as an NVFP4 Triton kernel for sm120 and run end to end on MiniMax-H3, a 33 B dense omni video model the paper did…
Downloads · 30 days
0
Access
Public
Updated Aug 9, 2026
Repo size
99.9 MB
Likes
0
Public
Click a slice to open those files.
.mp486.1 MB · 86%
From the Hugging Face model README
DeltaQuant ("4-bit Video Diffusion Models with Spatiotemporal Delta Smoothing", CVPR 2026) implemented as an NVFP4 Triton kernel for sm_120 and run end to end on MiniMax-H3, a 33 B dense omni video model the paper did not target. Compared against BF16 and against nunchaku's SVDQuant NVFP4 W4A4 — the paper's own headline competitor.
All 18 clips (3 scenes x 3 arms x {6, 50} steps) on one RTX 5090, 768x1344, 124 frames, seed 1101,
on an otherwise idle GPU. metrics.json records the GPU's other tenants for every run; they are
empty.
| scene | steps | video latent PSNR<br>nunchaku / DeltaQuant | audio latent PSNR<br>nunchaku / DeltaQuant |
|---|---|---|---|
| cats | 6 | 25.82 / 25.74 | 21.24 / 24.75 |
| cats | 50 | 21.67 / 21.12 | 19.36 / 21.67 |
| weld | 6 | 21.17 / 21.37 | 25.64 / 25.84 |
| weld | 50 | 18.68 / 18.62 | 22.71 / 24.45 |
| reentry | 6 | 24.55 / 24.21 | 23.69 / 23.40 |
| reentry | 50 | 21.52 / 21.76 | 25.04 / 25.46 |
Video: nunchaku takes 4 of 6, every margin under 0.55 dB — a tie. Audio: DeltaQuant takes 5 of 6.
Watch the videos. sbs-<scene>-s<steps>.mp4 puts BF16 | nunchaku | DeltaQuant side by side.
End-to-end PSNR is confounded by the sampler: under a shared seed any perturbation moves the sample to a different basin. Teacher-forced fidelity removes that — BF16's per-step transformer inputs are dumped and replayed through each quantizer, so only the quantization error remains.
| scene | video rel-L2<br>nunchaku / DeltaQuant | audio rel-L2<br>nunchaku / DeltaQuant |
|---|---|---|
| cats | 0.1384 / 0.1160 | 0.1590 / 0.1385 |
| weld | 0.2340 / 0.2711 | 0.1569 / 0.1543 |
| reentry | 0.1921 / 0.2011 | 0.1349 / 0.1232 |
Video: nunchaku ahead by 4% on the mean, sign flips by scene. Audio: DeltaQuant 3/3, 7.7% better. The arms are not rank-matched (DeltaQuant 128, nunchaku 32), so a video tie is a mild disappointment rather than a neutral result.
At 50 steps all three arms are indistinguishable blind — same subject, style and detail, different camera framing. Pixel PSNR of 13–15 dB is measuring framing, not damage: the weld 6-step grid holds three excellent photoreal welding shots that score 11 dB against each other. DeltaQuant's weld frames carry more legible fine structure than either other arm; its reentry frames are the one place it is visibly softer than BF16, where nunchaku is soft too. No banding, colour drift, flicker or mush anywhere in 18 clips.
Read the 6-step rows, and even those only weakly. The 50-step rows show overall character only.
The method assumes tokens inside a spatiotemporal cube are similar enough that one core plus small
deltas represents them. Measured across depth and timestep on H3, delta/|x| is 0.639 — the
core absorbs only ~36% of the magnitude. A tie is what that predicts.
(An earlier single-layer probe reported 0.811; that point turned out to be the worst layer in the model. 0.639 is the figure measured across blocks 0/12/25/37/49 and 18 timesteps.)
This is a finding about transferring the method to a packed-sequence omni model, not a
refutation of the paper. H3 differs from Wan2.2/LTX-Video in ways that plausibly matter: full
self-attention over [text | refs | audio | video] with no cross-attention at all, and a video
grid whose T is prime.
Non-video rows decompose better than video rows: delta/|x| 0.476 vs 0.639. H3 packs audio
channel-major, so cover_remaining's 1-D cubes group consecutive latent frames of a single
channel — a better neighbourhood than the paper's 3-D video cube gets on this grid. That is the
mechanism behind the audio result, and it is a property of this port rather than of the method.
Whole denoise, 50 steps, all three arms re-measured solo on one RTX 5090, zero neighbours (1344x768, 124 frames, seed 1101, cats prompt):
| arm | denoise (s) | hot step (s) | vs BF16 |
|---|---|---|---|
| BF16 reference (pinned + prefetched offload) | 888.6 | 18.14 | 1.00x |
| DeltaQuant (this repo, rank 128, paper cube schedule) | 797.2 | 14.89 | 1.115x |
| nunchaku SVDQuant W4A4 (rank 32) | 631.3 | 12.88 | 1.407x |
Correction — an earlier version of this page reported DeltaQuant at 2.42x over BF16. Withdrawn. That figure was inflated by a defect in the reference, not by anything about the quantizer. Our BF16 path used diffusers'
enable_group_offload(use_stream=False), which never pins host memory and does a synchronous device→host copy into freshly allocated pageable memory for every block on every step — 38.5 GB per step at a measured 2.27 GB/s, against 24.2 GB/s for a straight copy on the same card. Pinning the host copies and prefetching one block ahead (which is what SGLang's--dit-offload-prefetch-size 1does) takes the same BF16 run from 1901.9 s to 888.6 s with bit-identical latents, and the honest ratio is 1.115x. The kernel-level results below are unaffected: they never involved offload.
Per hot step DeltaQuant is 1.219x; the whole-denoise figure is lower because the Triton autotuner costs ~61 s once per process (first evaluation 45.2 s, plus 46.5 s when the cube size changes) and a 49-evaluation run cannot amortize it. Against a hypothetical resident BF16 the earlier profile predicted 1.15x by subtracting the streaming term — the measured 1.115x agrees within 3%.
In-situ category split (sums to the whole within 0.005%; its three quantization-independent categories match an independent nunchaku profile to 0.3%):
| ms | share | |
|---|---|---|
| attention | 10,201 | 69.5% |
| quantized linears | 3,778 | 25.8% |
| glue | 493 | 3.4% |
| SwiGLU | 174 | 1.2% |
Attention dominates and is unquantizable, so further kernel work has little left to buy: DeltaQuant's linears are 2.12x slower than nunchaku's, and that buys nunchaku only 1.19x end to end. The step cache — which skips whole blocks including attention — is the remaining lever.
Isolated-Linear speed at the paper configuration: 1.89–2.14x over eager bf16, 1.80–2.15x over
torch.compiled bf16.
A short run pays a 60.7 s one-off Triton autotune (once per cube size). That fixed cost, not any per-step defect, is the entire gap between the isolated 2.1x and a 5-step run's 1.34x.
position_ids (measured (37,15,27)), never hardcoded.n_cubes
identical across all 49 steps, saturation identical, x0 check bit-exact. Geometry is driven by a
transformer-level hook that fires once per step regardless of block skipping.rel_l2 = 0.0) using x0 = x_t + (1−t)·v — the
+ matters, H3's transformer predicts x0 − eps, the opposite of the usual convention, and
a minus sign yields something plausible-looking and wrong. See x0-stages-*.png: layout is fixed
by step 10, only detail arrives after.act_global was derived from a bound (|x − core| ≤ 2·max|x|) rather than measured on real deltas.
The live runs validate it: 0 saturated NVFP4 groups out of 9.88 x 10^11, every timestep, three
prompts, both step counts. Counted at runtime, not assumed.
transformer_minimax_h3.py:159); text rows use the same projections as video.tl.dot_scaled cannot carry an fp32-per-64 scale. Cost 4–9%.[1, 37736, 5376], not the 2-D packed sequence this repo and
nunchaku's wrapper both assumed. The 3-D branch re-entered forward and double-counted itself,
inflating the first profile 2x. Caught because the instrumentation logged 100 calls/step against
50 blocks.torch.compile comparison is on an isolated nn.Linear, which gives inductor nothing to
fuse. A whole-block comparison has not been made, and on another model in this project a
hand-written Triton stack was 18.5% slower than deleting it and letting inductor fuse. Not a
closed question.REPORT.md (988 lines) has the full method, deviations, correctness and benchmark detail; its §11
indexes every evidence file. All 44 correctness checks pass.