MiniMax-H3 INT8 Lean ConvRot
This repository contains a quality-oriented mixed-precision ComfyUI derivative
of MiniMaxAI/MiniMax-H3.
The released checkpoints cover both the FL2VA and Ref2VA diffusion
transformers. Each is designed as a first 24 GiB GPU candidate while preserving
more of the original model than the corresponding official pruned INT8
checkpoint.
These are not official MiniMax or ComfyOrg checkpoints. They use the standard
MiniMax-H3 adaln_t_table format and load in an unmodified ComfyUI.
Included files
| Path | Purpose |
|---|---|
FL2VA/minimax-h3-fl2va-int8-lean-convrot-table-k16-g4097-quality21.safetensors |
Stock-compatible FL2VA diffusion transformer, 20.940 GiB |
Ref2VA/minimax-h3-ref2va-int8-lean-convrot-table-k16-g4097-quality21.safetensors |
Stock-compatible Ref2VA diffusion transformer, 20.940 GiB |
vae/minimax_h3_video_vae_fp16.safetensors |
Stock ComfyUI MiniMax-H3 visual VAE, FP16, 4.850 GiB |
vae/minimax_h3_audio_vae_fp32.safetensors |
Stock ComfyUI MiniMax-H3 stereo audio VAE, FP32, 0.564 GiB |
reports/layer_policy.json / layer_policy_ref2va.json |
Exact per-layer precision policies |
reports/validation.json / validation_ref2va.json |
Structural, numerical, and CPU-load results |
reports/mm_quant_profile_fl2va.json |
Row-sampled reconstruction profile for all 200 main matrices |
reports/mm_quant_profile_ref2va.json |
Matching Ref2VA reconstruction profile |
This repository intentionally does not include the MiniMax-H3 text encoder. It is being prepared as a separate repository. ComfyUI does not require the Diffusers scheduler, tokenizer, processor, or remote-code Python bundles as separate downloads: a standard workflow needs one selected diffusion model, the two included VAEs, and a compatible MiniMax-H3 text encoder.
What was changed
The original FL2VA and Ref2VA Diffusers shards each contain 50 transformer blocks with separate Q, K, and V tensors. The converter streams the selected variant directly and performs the layout changes required by current ComfyUI MiniMax-H3 support:
- packs attention rows as global
cat(Q, K, V); - swaps the two
fc1halves from[value, gate]to[gate, value]; - stores 170 selected main attention/MLP matrices as INT8 ConvRot with group size 256 and per-row FP32 scales;
- keeps 30 high-error main matrices as exact BF16 copies;
- keeps the two-block token refiner, norms, Q/K norms, and condition projection at their source precision;
- keeps patch projections and video/audio output heads in source FP32;
- evaluates the original FP32 time embedder offline and stores its smooth one-dimensional output curve as a dense FP32 table with 4,097 rows and 16 coordinates;
- replaces only the redundant input width of the 51 large AdaLN projections, while keeping every block and final AdaLN projection separate in FP32.
Each checkpoint contains 872 tensor entries: 170 INT8 weights, 170 quantization configuration blobs, 250 BF16 entries, and 282 FP32 entries.
Precision policy
Every DiT block has four main matrices: QKV, attention output, MLP fc1, and
MLP fc2, for 200 matrices total per checkpoint. The quality21 profile stores
170 in INT8 and 30 in BF16.
The BF16 island is:
- attention output projections in blocks 0โ15, 17, 19, 20, 27, 38, 43โ47, and 49 (27 matrices);
- MLP
fc2in blocks 39, 45, and 49 (3 matrices).
These were selected from deterministic reconstruction audits using 64 output
rows and every input column of each matrix. Ref2VA independently selected the
same 30-layer set as FL2VA, with a per-layer error correlation of 0.999676.
Attention output projections were the most error-prone family and are
considerably cheaper to retain in BF16 than QKV or fc1. The exact
machine-readable lists are in reports/layer_policy.json
and reports/layer_policy_ref2va.json.
Time conditioning and the AdaLN table
The time embedder maps the current diffusion timestep/noise level to a 2,688-dimensional signal. Every transformer block turns this signal into its own AdaLN shifts, scales, and gates, telling the network which denoising stage is being evaluated.
At inference this frozen mapping traces a smooth one-dimensional curve because its input is a single scalar timestep. This release evaluates the original FP32 time MLP offline, projects the curve onto a shared 16-dimensional basis, and stores those coordinates at 4,097 evenly spaced points:
u(t) = SiLU(original_time_embedder(t))
table[j] = project(u(j / 4096))
AdaLN_i(t) = linear_i(interpolate(table, t))
Each of the 50 block AdaLN projections and the final AdaLN projection remains a different FP32 linear layer. Only their shared input curve is compressed.
On 19 validation timesteps, the relative AdaLN output error against the raw HF
weights was 3.04e-7 to 3.82e-7 for FL2VA and 3.42e-7 to 4.46e-7 for
Ref2VA across blocks 0, 24, 49, and the final layer. For context, the official
pruned rank-8 FP16 tables measured about 0.016%โ0.021% on the same
projections. This comparison covers only the time/AdaLN path, not end-to-end
generation quality.
Comparison with official ComfyOrg files
| Checkpoint | Size | Main matrices | Time/AdaLN representation |
|---|---|---|---|
| Official regular INT8 ConvRot | about 31.70 GiB | 200 INT8 | full AdaLN weights |
| Official pruned INT8 ConvRot | 19.530 GiB | 200 INT8 | FP16 rank-8 table |
Each quality21 release |
20.940 GiB | 170 INT8 + 30 BF16 | FP32 rank-16 table, 4,097 rows |
Each file is about 1.410 GiB (7.22%) larger than its official pruned INT8 counterpart. The added space is intentionally spent on a much denser, higher-precision time curve and a BF16 island for the most sensitive main matrices.
The full 200-matrix sampled reconstruction proxies produced:
| Variant | Official-style absmax INT8 | This profile |
|---|---|---|
| FL2VA | 0.9345% | 0.7639% |
| Ref2VA | 0.9345% | 0.7639% |
For these profiles, selected BF16 matrices count as zero storage reconstruction error. On the remaining 170 INT8 matrices, searched scales reduced the mean proxy from about 0.9109% to 0.8987%. The approximately 18.25% overall reduction is a sampled weight reconstruction result, not a perceptual or generation benchmark.
ComfyUI installation
- Use a current ComfyUI checkout with MiniMax-H3 and native INT8 ConvRot
support. This release was CPU-load-tested on a clean, unmodified ComfyUI
commit
14b05228cef127ce529bc0c08660770d4af3e9a8. - Place the FL2VA and/or Ref2VA safetensors file in
ComfyUI/models/diffusion_models/. FL2VA is for text/image first-last-frame workflows; Ref2VA is for reference image/video/audio workflows. - Place both files from
vae/inComfyUI/models/vae/. - Load one diffusion checkpoint and both VAEs with the standard loaders in the matching MiniMax-H3 FL2VA or Ref2VA workflow. Supply a compatible text encoder separately.
ComfyUI/models/
|-- diffusion_models/
| |-- minimax-h3-fl2va-int8-lean-convrot-table-k16-g4097-quality21.safetensors
| `-- minimax-h3-ref2va-int8-lean-convrot-table-k16-g4097-quality21.safetensors
|-- vae/
| |-- minimax_h3_video_vae_fp16.safetensors
| `-- minimax_h3_audio_vae_fp32.safetensors
`-- text_encoders/
`-- <MiniMax-H3 text encoder from its separate repository>
No custom node or core patch is required for either checkpoint.
Validation status
Completed:
- safetensors structure, shapes, dtypes, and all 170 ConvRot descriptors;
- SHA-256: FL2VA
ad0cf8b50ba92068b5a4477527d5da73412a22db99cded35b07195504e78cf6a; Ref2VAf4b2a8b4a53446f5d696a39deb693b09ac7ce37013793a8b19340644e38b154f; - BF16 main island: 30/30 matrices bitwise equal to raw HF;
- FL2VA: 871/871 tensors outside the time representation preserved bit-for-bit during the final stock-table conversion;
- Ref2VA: 258/258 direct source-copy tensors (4,146,503,680 bytes) bitwise equal to raw HF;
- FP32 table interpolation checked at every one of the 4,096 interval
midpoints; FL2VA grid rows reproduced exactly, and the independent Ref2VA
FP64-SVD rebuild differed by at most
4.55e-13; - full CPU load through a clean, unmodified ComfyUI as
ModelPatcher -> MiniMaxH3Model, table mode(4097, 16), for both diffusion checkpoints; - both companion VAE files fully loaded on CPU through the same clean ComfyUI:
MiniMaxH3VideoVAEin FP16 with native internal tiling, andMiniMaxH3AudioVAEin FP32 with 32 kHz stereo output; - companion VAE SHA-256 checksums match the official Comfy-Org repackaged files:
7c1f131492e7eddacaac9069a61b81bdd39de5cc96561e677c5eab1cdce5e522(video) and8e505d95dd1561d47abd43d4238fd40d9bb1ae9e147ed0a4cba778d76ae4db48(audio).
Not completed at release time:
- CUDA/GPU loading of these exact checkpoints;
- peak VRAM measurement for a target resolution and frame count;
- end-to-end FL2VA or Ref2VA generation;
- same-seed visual/audio A/B against BF16 and official pruned variants.
Therefore, 20.940 GiB is the on-disk tensor payload, not a promise that every workflow will remain under 24 GiB. Activations, runtime buffers, resolution, frame count, batch size, and offloading policy determine peak VRAM.
Conversion provenance
The converter reads the original top-level transformer/ or transformer_ref/
Diffusers shards from MiniMaxAI directly; it does not create a 61+ GiB merged
BF16 intermediate. The nested task-specific transformer folders were not used
because their already-packed QKV is head-major, while current ComfyUI expects
global cat(Q,K,V) packing.
The official FL2VA and Ref2VA pruned files,
minimax_h3_fl2va_pruned_int8_convrot.safetensors
and
minimax_h3_ref2va_pruned_int8_convrot.safetensors,
were used only as layout references and as the sources of the corresponding
FP32 rope.inv_freq tensors absent from the raw Diffusers state dicts.
The two files under vae/ are unmodified, bit-identical copies of the standard
Comfy-Org/MiniMax-H3
repackages. The original remote-code VAE bundles are more complicated: the
visual VAE constructs a causal 3D-CNN encoder and 36-layer ViT decoder from
Python and configuration files, while the audio VAE constructs a DAC-lineage
encoder and BigVGAN decoder. ComfyUI implements both architectures natively.
The single-file visual repack casts all 560 source weight tensors from FP32 to
FP16 and embeds the latent statistics; the audio repack preserves 743 tensors,
folds 172 weight-normalized pairs into ordinary FP32 weights, and embeds its
latent statistics. No remote Python code or external VAE config is required.
Limitations and intended use
This release is intended for research and local ComfyUI inference. It is a new, structurally validated operating point, not a completed quality benchmark. Both variants were profiled separately. Their independently selected quality21 BF16 islands are identical, but this does not establish perceptual quality without end-to-end A/B generation.
License
This derivative is distributed under the
MiniMax H3 Community License Agreement. The license limits use and
distribution to its defined Applicable Territory, excludes the European Union,
United Kingdom, Republic of Korea, and United States, and includes additional
use and redistribution conditions. Read the full license and NOTICE
before downloading, using, or redistributing these files.
Links
Model tree for DmitryDB/MiniMax-H3-INT8-Lean-ConvRot
Base model
MiniMaxAI/MiniMax-H3