MiniMax H3 Model Loader (Streaming)
The streaming MiniMax H3 loader — picks your DiT file, doesn't actually load it yet
- attn_backend
- model
MiniMax H3 is the 33B open-weight omni model that puts video and audio in one latent, and the thing that decides whether it runs on your GPU at all is how the weights get handled. This node is the front door: it points the workflow at your H3 DiT checkpoint and builds a lazy streaming handle - no weights actually go to VRAM at this step. The "(Streaming)" in the display name isn't marketing. The DiT is streamed in from disk block by block when the sampler asks for it, and the BlockSwap layout (how much lives on GPU vs. CPU vs. disk) is decided later by the KSampler's block_swap_args socket, not here.
How it works
The loader returns a MINIMAX_H3_MODEL handle that wraps the checkpoint path plus an attention override. When you drag it in, nothing heavy happens - no "Loading model..." hang, no VRAM spike. The actual weights get read lazily during sampling, which is what makes a 42 GB-class model feel workable on mid-range cards at all.
The file detection is genuinely nice: supported DiT formats (plain bf16/fp16, plus fp8, int8, nvfp4, and the community's beloved convrot quants) are picked up automatically from checkpoint metadata. No flag to flip, no "is this file valid" guessing - if it's a supported H3 checkpoint, the node sees it. The README calls out bf16/fp16 as the plain baseline; if you're on a 3060-class card you're almost certainly feeding it a quantized build, which the metadata detection handles without complaint.
The inputs and outputs
Only two inputs, and you'll set one:
model_name- dropdown of every.safetensorsinComfyUI/models/diffusion_models/. Pick your H3 DiT. This is the only required input.attn_backend- optional socket for aMINIMAX_H3_ATTNobject from the Attention Config node. Leave it empty and you get the default (sageattn2); wire in an Attention Config if you need to force a specific backend.
One output, model, which feeds the LoRA Loader and the KSampler. That's the whole graph start: Loader → LoRA (optional) → KSampler.
Installing it
Same story as every node in this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/xiaolibai-sys/ComfyUI-MiniMaxH3
pip install -r requirements.txt
then restart ComfyUI. Or use ComfyUI Manager and search "MiniMax H3". Dependencies are refreshingly light - torch>=2.1, safetensors, numpy - nothing exotic to fight with.
The real install is the model file. Put the DiT checkpoint in ComfyUI/models/diffusion_models/. And keep the H3 Community License in view: it excludes the US, EU, UK and South Korea from running the local weights - the pack is fine to install anywhere, but the model itself is geofenced.
Where people get burned
- The model isn't in the dropdown. It's only a dropdown, so the file must be in
diffusion_models/before ComfyUI starts (or refresh the node). A checkpoint sitting inmodels/checkpoints/won't show up. - Expecting a load to happen. Nothing loads here. If your KSampler then fails, it's downstream - check your VAE/text encoder setup, not this node.
- Gigabyte math. A plain bf16 checkpoint is ~42 GB on disk. First sampling pass streams it off disk, so an SSD makes a real difference; a slow HDD turns BlockSwap into a bottleneck.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | MiniMax H3 DiT checkpoint (plain bf16/fp16 safetensors) | |
| attn_backendopt | MINIMAX_H3_ATTN | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MINIMAX_H3_MODEL | — |