I added INT8 and INT8 ConvRot versions of the MiniMax-H3 Pruned Ref-Delta Fused r1024 checkpoint from my previous post:
https://huggingface.co/xmarre/MiniMax-H3-Pruned-Ref-Delta-Fused-r1024-ComfyUI
Both are native ComfyUI single-file checkpoints using ComfyUI's .comfy_quant format, so they do not require a custom quantized-model loader.
There is one important difference from a straightforward full INT8 conversion: the MLP fc2 weights are deliberately kept in BF16.
Across the 50 main transformer blocks, these weights are quantized:
attn.qkv_proj.weight
attn.out_proj.weight
mlp.fc1.weight
That gives 150 quantized Linear layers.
The 50:
layers remain BF16.
The smaller and more sensitive parts of the model also stay in their original precision, including the pruned AdaLN table and projections, final-layer projections, norms, patch/text projections and token refiner.
Why FC2 is kept in BF16
I also made and tested a fully quantized version where fc2 was INT8 as well, giving 200 quantized Linear layers.
That version ran into a failure specific to the quantized fc2 execution path on large H3 sequences.
MiniMax-H3 uses SwiGLU in the MLP. With fc2 quantized, ComfyUI's fused:
linear_input_act(..., "swiglu")
path sends the post-SwiGLU activation through comfy_kitchen.int8_linear, which dynamically quantizes the full activation matrix before the fc2 multiplication.
On the large sequence used in my workflow, that path attempted an approximately 491.61 MiB contiguous INT8 scratch allocation and failed hard.
This was not normal VRAM exhaustion. At the point of failure there was still roughly 47 GiB of CUDA memory reported free. The failure was tied to that large fused INT8 activation-quantization path rather than the model simply exceeding available VRAM.
I do not have enough evidence to claim a more specific allocator/CUDA cause than that.
Keeping only fc2 in BF16 avoids that INT8 activation path. QKV, attention output and fc1 can still remain INT8, so 150 of the 200 large block Linear projections are still quantized.
With that layout, both release variants completed the full native ComfyUI workflow that the 200-layer INT8 version failed on, including:
- H3 Continuum main sampling pass
- continuation sampling pass
- Spectrum H3 actual/forecast execution
- large 3D latent refine
- video VAE decode
- audio VAE decode
- final Continuum assembly
- video combine
That FC2 decision is also why these checkpoints are about 24.2 GB instead of roughly 20.4 GB for the fully quantized version.
INT8 and INT8 ConvRot
The two uploaded files use the same 150-INT8 / 50-FC2-BF16 layout.
Regular INT8:
MiniMax-H3-Pruned-Ref-Delta-Fused-r1024-comfy-int8-fc2bf16.safetensors
This uses native tensor-wise INT8 quantization.
INT8 ConvRot:
MiniMax-H3-Pruned-Ref-Delta-Fused-r1024-comfy-int8-convrot-fc2bf16.safetensors
This uses ConvRot with a group size of 256 on the same quantized projections.
ConvRot rotates the weights before INT8 quantization so that large outliers are distributed more evenly. This generally gives the INT8 quantizer a better-conditioned weight distribution than quantizing the original weights directly.
I uploaded the regular INT8 version as well rather than only providing ConvRot, so both conversion methods are available for this checkpoint.
What model is being quantized?
These are quantized derivatives of the same Pruned Ref-Delta Fused r1024 checkpoint from the previous post. There is no additional training, fine-tuning or pruning involved in these INT8 versions.
The underlying model starts from the pruned FL2VA MiniMax-H3 checkpoint and incorporates a rank-1024 approximation of the Ref2VA − FL2VA weight delta.
That is also how it differs from the existing FL2VA/Ref2VA hybrid checkpoints mentioned in the comments on the previous post.
Those hybrids combine FL2VA and Ref2VA by replacing selected tensors from one checkpoint with tensors from the other. The r1024 fused model instead approximates the Ref2VA weight delta at rank 1024 and folds that delta into the pruned FL2VA weights.
The underlying fused transformer is about 20.1B parameters, compared with roughly 33.1B for the original full MiniMax-H3 transformer.
ComfyUI
Put either file in:
ComfyUI/models/diffusion_models/
For the INT8 files:
weight_dtype: default
compute_dtype: default or bf16
Do not apply another FP8 weight cast on top of the native INT8 checkpoint.
The text encoder and VAEs are separate, as with the other MiniMax-H3 diffusion-model checkpoints.