MiniMax H3 Video VAE Optimization Lands in ComfyUI 0.36.0
ComfyUI 0.36.0 speeds up the MiniMax H3 video VAE with comfy-kitchen kernels, and the official Comfy-Org repo now hosts the compact int8 convrot VAE.
What changed in the VAE path
Every edit lives in comfy/ldm/minimax/vae.py and comfy/ops.py. The kernels come from comfy-kitchen #167, merged September 13.
- Fused encoder passes.
group_norm_silu_pad3druns per-frame GroupNorm, SiLU and reflect/causal padding in a single pass and outputs NDHWC so cuDNN runs without layout conversions. The PR describes this step as lossless and always on. - fp16 accumulate.
ck.fp16_conv3dandck.fp16_linearuse CUTLASS fp16-accumulate kernels with bias and residual folded into the epilogue. They engage under--fastwith fp16 accumulation, and launches too small to fill the GPU are handed back to cuBLAS. - Int8 decoder. Int8-quantized decoders route through
ck.int8_attentionand an int8 GEMM whose epilogue carries the residual, withrms_norm/swiglufolded into the activation quantizer and a wave-quantization guard between the 128x256 and 128x128 tiles. - Batched tile decode.
tiled_decodenow decodes up to four tiles at a time, clamped by free memory, so tiled runs no longer serialize frame by frame. - Dynamic VRAM compatible. Weights and normalization parameters arrive through
cast_bias_weight, so all of the above keeps working under ComfyUI's dynamic VRAM loading.
If comfy-kitchen or a specific kernel is missing, the code falls back to the previous eager sequence, so older installs are unaffected.
Measured effect
The kernel PR reports end-to-end comfy.sd.VAE calls at 1344x768 over 362 frames, measured on a 5090:
| Path | Before | After |
|---|---|---|
| Encode (fp16) | 46.6 s | 32.0 s |
Encode (--fast, fp16 accumulation) | 47.2 s | 21.2 s |
| Decode (fp16) | 34.6 s | 31.1 s |
Decode (--fast) | 27.7 s | 23.2 s |
| Decode (int8) | 18.7 s | 12.9 s |
Quality was measured against the exact path: 68 dB for the fp16-accumulate encode and 67.7 dB for the int8 decode, while the VAE's own reconstruction floor is around 38 dB. A follow-up core commit (PR #16332) lowers MiniMax VAE memory use a little further.
The int8 convrot VAE moves to the official repo
The file to use is vae/minimax_h3_video_vae_int8_convrot.safetensors in Comfy-Org/MiniMax-H3, uploaded September 15 at 2.81 GB. Asked in the Reddit thread how it differs from the earlier experimental int8 VAE (3.17 GB) circulated for H3, Kijai answered that the encoder is stored in fp16 instead of fp32 now: it ran at fp16 by default anyway, so the two decode identically and the smaller file is the one to keep.
A MiniMax H3 reference-to-video run with three reference images at the maximum resolution the author's card allows, posted alongside the Reddit report on the updated VAE (u/Chiduck99).
What users are seeing on smaller cards
The change surfaced through a Reddit report from an RTX 3060 12 GB user whose previous ceiling with H3 was 0.8 MP at 10 seconds. With the updated VAE on the same card, they report 1 MP at 10 seconds and 0.7 MP at 15 seconds, with no visible quality loss. Kijai's reply in that thread ties the upload to the kernel work: the optimized custom kernels in comfy-kitchen speed up the int8 VAE and the original fp16 VAE alike, and they are always on as long as ComfyUI and comfy-kitchen are up to date.
Availability
Both parts are part of ComfyUI 0.36.0 (September 15). The VAE path comes through PR #16187 and comfy-kitchen 0.2.34 is pinned in that tag's requirements.txt (0.2.35 on current master), so an updated install needs nothing extra. Video VAE, audio VAE and the decoder are all picked up automatically by existing MiniMax H3 workflows.
Comments
Sign in with GitHub to join the discussion.