sum_load_MiniMaxH3
The one-node loader that stands up a full MiniMax H3 stack
- context
- model
- clip
- vae
- audio_vae
MiniMax H3 is a multimodal video model, which in ComfyUI terms means it doesn't behave like a checkpoint you can just drop on the canvas. You need a UNet, a text encoder, a video VAE and an audio VAE, plus a sampler config - that's normally four or five separate loader nodes and a pile of wires. sum_load_MiniMaxH3 collapses all of it into one node. In the pack's "Loader → Controller → Sampler" framework, this is the Loader for the H3 stack: it loads everything, hands you a ready-made RUN_CONTEXT pipe, and lets the controller nodes (AD_MiniMax_guide, AD_MiniMax_Ref2V) do the conditioning.
It's part of the pack's sum_load_adv loader family (the code sets NAME = "sum_load_adv"), but this variant is specialized for H3 and shows up in the node list under its own class name, sum_load_MiniMaxH3. The universal loaders in the same family handle SD/SDXL/Flux-style checkpoints; this one handles the H3 UNet + dual-VAE stack.
How it works
Internally it reuses ComfyUI's standard UNETLoader, CLIPLoader, and VAELoader - no custom inference code. The interesting parts are the conveniences:
- GGUF support. If your UNet or CLIP file ends in
.gguf, it loads through the pack's GGUF wrapper. The README is explicit: to load GGUF you need ComfyUI-GGUF installed, and the pack also wantsggufandprotobuf(both are in its requirements). Without it you'll get a clear "GGUF not installed" error, not a silent fail. - Model caching. Loaded (unet, clip) pairs are cached by a hash of the filenames and weight dtype, and the cache is cleared on the next different model load. Re-running the same workflow doesn't re-read the weights from disk - a real timesaver for H3, which is heavy.
- Sampler defaults ride along.
steps,cfg,sampler(44 choices, full KSampler list), andschedulerare set here and packed into the context so downstream sampler nodes pick them up. Defaults are 20 steps, cfg 8, euler/simple - tune them.
Inputs and outputs
All inputs are optional, which is the loaders' deliberate design:
- unet_name - from
models/unetandmodels/unet_gguf.Noneskips model loading (useful withclip1only, or when something upstream overrides). - unet_Weight_Dtype -
None,default, or the fp8 variants (fp8_e4m3fn,fp8_e4m3fn_fast,fp8_e5m2). fp8 is how you fit H3 on a smaller card. - clip_type - 29 options (wan, hidream, sd3, ltxv…); pick the one matching your H3 text encoder.
- clip1, vae, audio_vae - model files for each.
- steps / cfg / sampler / scheduler - sampling defaults packed into the context.
Outputs: context (RUN_CONTEXT), model, clip, vae, audio_vae. The context is the pack's pipe - a single wire that carries all of it down to the controller and sampler.
Installing it
Part of ComfyUI-Apt_Preset:
cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset
# install.bat or pip install -r requirements.txt, restart
Or Manager → search "ComfyUI-Apt_Preset". For GGUF loading, also install ComfyUI-GGUF.
Where people get burned
Missing GGUF support is the top one - you load an .gguf UNet and it errors until ComfyUI-GGUF is present. Wrong clip_type is second: H3 needs its own text-encoder type, and picking the wrong one either errors or produces garbage conditioning, so double-check against the model you downloaded.
And the cache has one gotcha worth knowing: because the loader caches aggressively and clears on the next different model, hot-swapping between two H3 configs in one session means a reload each switch. That's by design, not a bug - but don't be surprised by the pause when you change files mid-session. Finally, None everywhere produces a context full of Nones; that's valid for building a partial pipeline, but if you wire a sampler into an empty model you'll get a runtime error that reads like the sky is falling.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_nameopt | COMBO | 0 options: | |
| unet_Weight_Dtypeopt | COMBO | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 | |
| clip_typeopt | COMBO | 28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22 | |
| clip1opt | COMBO | 0 options: | |
| vaeopt | COMBO | 0 options: | |
| audio_vaeopt | COMBO | 0 options: | |
| stepsopt | INT | 201–999999 | — |
| cfgopt | FLOAT | 8.00–100 | — |
| sampleropt | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduleropt | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| context | RUN_CONTEXT | — |
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| audio_vae | VAE | — |