MiniMax-H3 SVDQuant FP4 + PDD 8-Step (Baked, Curve AdaLN)
A merged checkpoint for MiniMax-H3 (33B single-stream audio-video DiT, FL2VA) combining SVDQuant 4-bit quantization (rank 128) with the official PDD 8-step distillation (alibaba-pai/MiniMax-H3-Acc-LoRAs).
- The trunk LoRA (rank 64) is baked into the SVDQuant low-rank branches (global rank 128β320), so it adds zero runtime overhead; the PDD head bank switches the distilled output heads per sigma, enabling 8-step sampling.
- The AdaLN modulation tables use the curve parameterization (same as the Comfy-Org pruned
release: one shared
adaln_t_table+ per-block[96768, 8]projections) instead of the raw bf16 tables. The PDD AdaLN LoRA is rebased into curve space (rebase_adaln_to_curvefrom the PDD package). This alone removes ~24GB from the checkpoint.
Result: 14GB checkpoint β 30% smaller than the official int8 (20GB), 3.4x faster than bf16.
Benchmarks (RTX PRO 6000 96GB, ComfyUI, 1344Γ768 Γ 141 frames @ 24fps, fixed seed)
| Configuration | Time / video (warm) | Peak VRAM | Checkpoint size |
|---|---|---|---|
| bf16 pruned, 20 steps (reference) | 375s | 60GB+ | 38GB |
| Official int8 (Comfy-Org), 20 steps + sage | 231s | 42GB | 20GB |
| Official int8 + PDD 8-step + sage | 106s | 45.5GB | 20GB |
| This model (fp4 r128 + PDD 8-step baked + sage) | 111s | 41.0GB | 14GB |
| This model, ~34GB VRAM budget | 177s | 22.3GB | 14GB |
| This model, ~32GB VRAM budget (5090-class) | 129s | 31.1GB | 14GB |
| This model, ~18GB VRAM budget | 910s | 15.6GB | 14GB |
| This model, ~12GB VRAM budget | 1891s | 12.3GB | 14GB |
| Official int8 + PDD 8-step, ~32GB VRAM budget | 205s | 32.9GB β οΈ | 20GB |
3.4x faster than the bf16 baseline. Constrained-budget rows are measured on the 96GB card with
ComfyUI's --reserve-vram capping the budget. With a 32GB (RTX 5090) budget this model runs in
129s at a 31.1GB peak, while the official int8 peaks at 32.9GB β beyond a 5090's physical 32GB,
so it forces deeper offload there. The model keeps working down to a 12GB budget via block
streaming, trading speed for memory.
Quality note: PDD 8-step distillation changes the sampling trajectory β the output is "another good
video", not a frame-level approximation of the 20-step reference (LPIPS 0.52 against bf16 is
inherent to distillation, not quantization). Against the same-recipe int8+PDD baseline the LPIPS is
**0.37** with identical composition and no artifacts; the difference lives in fine texture detail.
RTX 5090 32GB measured (ComfyUI 0.34, sage, 1344Γ768 Γ 141 frames, seed 12345)
| Configuration | Time / video | Peak VRAM | DiT residency |
|---|---|---|---|
| This model, plain (PDD 8-step baked) | 249 s | 22.7 GB | 14.6/14.6 GB fully resident by default |
| This model + KJ low-VRAM patches + budget override | 149 s (110 s warm) | 21.0 GB | fully resident |
The 32GB card fits the 14GB checkpoint by default; the extra 1.7Γ comes from the patch nodes (memory-frugal sage attention + head-chunked attention + chunked FFN), not from residency. The same recipe on the int4 sibling at 24GB (4090) is even more dramatic (838 s β 189 s) because only the 14GB checkpoint can stay fully resident there β see 1ronman1993/MiniMax-H3-SVDQuant-int4-pdd8.
Timing note: our benchmarks used a remote text-encoder service (TE ~3 s). With a local qwen3vl-32B nvfp4 TE on a 24GB card, add roughly +130 s on the first run (weight load + dequant encode; measured 8.6 s + 122 s on a 4090D) and ~10-40 s when the TE has to swap back in for a new prompt; repeated runs with the same prompt skip TE entirely via conditioning cache. All compared stacks share the same TE cost, so the speed ratios are unaffected.
Recipe (KJNodes experimental MiniMax patches, SVDQuant-compatible build bundled in this repo as
comfyui_kj_minimax_patches.py; if you also run full KJNodes, its upstream MiniMax nodes conflict
by name β use one or the other):
MiniMaxH3MemoryEfficientSageAttentionPatch β MiniMaxLowVRAMAttention (head_chunks 4) β
MiniMaxChunkFeedForward (chunks 2) β ModelMemoryUsageFactorOverride (0.06; measured on ComfyUI 0.34 β
if your build estimates differently, tune by the load_models_gpu log line: raise if you OOM, lower until
the DiT reports fully resident).
Wired-up workflow: minimax_h3_fp4_pdd8_workflow_24gb_api.json. Single-file plugin:
comfyui_kj_minimax_patches.py β drop into ComfyUI/custom_nodes/.
Sample comparisons
Same prompt, same seed (12345), 1344Γ768 Γ 141 frames. The int8+PDD and this model share the exact same 8-step recipe, so their columns are directly comparable; the bf16 column is the 20-step undistilled reference (different trajectory β see the quality note above).
Prompt 1: "A golden retriever runs across a sunlit beach, splashing through the shallow waves."
| bf16 Β· 20 steps (reference) | int8 + PDD 8-step (official) | fp4 + PDD 8-step (this model) |
|---|---|---|
Prompt 2: "A steam locomotive crosses a stone viaduct over a misty valley at dawn, whistle echoing."
| bf16 Β· 20 steps (reference) | int8 + PDD 8-step (official) | fp4 + PDD 8-step (this model) |
|---|---|---|
Files
svdq-fp4_r128-minimax-h3-curveadaln-pdd8.safetensorsβ main model βComfyUI/models/diffusion_models/minimax_h3_fl2va_pdd_acc_8step_comfyui.safetensorsβ PDD head bank βComfyUI/models/pdd_acc/(ComfyUI conversion of the alibaba-pai release; the PDD node switches distilled output heads per sigma)comfyui-nunchaku-minimax-h3.tar.gzβ the ComfyUI-nunchaku plugin build with MiniMax-H3 support (NunchakuMinimaxH3DiTLoader); unpack intoComfyUI/custom_nodes/ComfyUI-nunchaku/minimax_h3_fp4_pdd8_workflow_api.jsonβ ComfyUI API-format workflow (plain)minimax_h3_fp4_pdd8_workflow_24gb_api.jsonβ ComfyUI API-format workflow (24GB/32GB-optimized, see benchmarks)comfyui_kj_minimax_patches.pyβ SVDQuant-compatible KJNodes MiniMax patch nodes (standalone single-file plugin)
Requirements
ComfyUI β₯ 0.33 (post MiniMax-H3 carried-audio rework)
The bundled ComfyUI-nunchaku plugin (see above). It additionally requires the
nunchakuPython package with MiniMax-H3 support β this is not in upstream yet, so build it from the fork (needs a CUDA toolkit withnvcc; ~10 min build):git clone https://github.com/cage1993/nunchaku.git -b feat/minimax-h3 cd nunchaku && git submodule update --init --recursive NUNCHAKU_INSTALL_MODE=FAST pip install -e . --no-build-isolationPlugin python deps (
pip install -r requirements.txtin the plugin folder) are only needed for the plugin's other model families; for MiniMax-H3 alone,diffusers,transformers,safetensorsandacceleratesuffice.ComfyUI-MiniMax-H3-PDD-Acc (provides
MiniMaxH3PDDAccApply/MiniMaxH3SigmaShift)Remaining components from Comfy-Org/MiniMax-H3:
text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensorsβComfyUI/models/text_encoders/vae/minimax_h3_video_vae_fp16.safetensorsandvae/minimax_h3_audio_vae_fp32.safetensorsβComfyUI/models/vae/
sageattention(used by the patch nodes in the 24GB/32GB recipe)
Sampling recipe (must follow exactly)
- Sampler
euler+ sigmas from theMiniMaxH3PDDAccApplynode output (8 steps), CFG = 1.0 MiniMaxH3SigmaShift: shift_video = 12, shift_audio = 3MiniMaxH3PDDAccApply:lora_strength = 0(trunk LoRA already baked into this checkpoint),head_strength = 1.0,nfe = 8- Do NOT stack block-caching nodes (TeaCache / EasyCache / β¦) or other distillation LoRAs
License
- Derived weights of MiniMax-H3 β subject to the original model's license
- PDD Acc LoRA: alibaba-pai, Apache-2.0
comfyui_kj_minimax_patches.pyvendors nodes from kijai/ComfyUI-KJNodes, Apache-2.0
- Downloads last month
- 138