Nodes/MiniMax H3/MiniMax H3 KSampler
ComfyUI Node

MiniMax H3 KSampler

MiniMax H3 KSampler — the engine, and the node where VRAM meets its match

By xiaolibai-sys·Created about a month ago·Updated 29 days ago· 10
MiniMax H3 KSampler
  • model
  • positive
  • negative
  • latent
  • teacache_args
  • block_swap_args
  • latent
  • stats
seed0
steps30
cfg1.0
sampler_nameeuler
scheduler_namenormal
shift_video12.00
shift_audio3.00
denoise1.00
use_adaln_cachefalse
adaln_prebake_batch3

Everything in this pack exists to feed this node. The KSampler is where H3's 33B DiT actually denoises the packed audio-video latent - steps, guidance, samplers, schedulers, and the optional TeaCache and BlockSwap accelerators all live here. It's the node that eats your VRAM, and it's the node where the community's biggest H3 complaint - "can my card run this?" - gets answered one way or the other.

How it works

Unlike a vanilla ComfyUI KSampler, this one runs a dual schedule: H3's flow-matching uses separate sigma shift values for the video stream and the audio stream (shift_video and shift_audio), because the audio latent is sampled in its own regime. The sampler is built on k-diffusion and ships 44 samplers and 10 schedulers - euler/normal being the sane defaults. The stats output is genuinely useful: it reports steps, swap hits/loads, peak VRAM in MiB, and the BlockSwap stage - so when you're tuning for your card, this node tells you the truth about what actually happened.

Two acceleration paths plug into the optional sockets: teacache_args (skip near-identical block runs between steps) and block_swap_args (offload DiT blocks to CPU/disk). Neither is required. For low-VRAM users, BlockSwap is the difference between "won't run" and "runs slowly" - the README explicitly says it's designed for low-VRAM use with a CPU home pool and optional disk prefetch.

The inputs that matter

  • model (required) - MINIMAX_H3_MODEL from the streaming Loader (optionally LoRA-patched).
  • positive (required) and negative (optional) - from Conditioning. At cfg = 1.0 (default) negative guidance is off; raise cfg above 1 and the negative socket becomes required.
  • latent - listed as optional in the schema, but the README is clear: a missing latent raises a clear error. It's optional only so the negative socket can appear above it in the UI. Connect Conditioning's latent output. Always.
  • steps - default 30. seed - default 0. Standard fare.
  • sampler_name / scheduler_name - default euler / normal. H3 is flow-based; these defaults are what the pack ships for it.
  • shift_video (default 12) / shift_audio (default 3) - the dual-schedule shifts. The defaults are tuned for H3; drop them only if you're experimenting.
  • use_adaln_cache - pre-bakes AdaLN modulations and skips those weights during sampling. dpm_adaptive stays on the eager path because its sigma schedule is model-adaptive.
  • adaln_prebake_batch - how many AdaLN blocks get baked per GPU batch during prebake (default 3).

Outputs: latent (the MINIMAX_H3_LATENT, feeding Decode AV) and stats (a STRING you can read or pipe to a display node).

Installing it

Pack-wide routine - ComfyUI Manager search "MiniMax H3", or:

cd ComfyUI/custom_nodes
git clone https://github.com/xiaolibai-sys/ComfyUI-MiniMaxH3
pip install -r requirements.txt

then restart. No model downloads for the node itself - it consumes what the loaders feed it.

Common issues

  • "latent input is required." You skipped the latent. Wire Conditioning's latent into it; that's the error the README promises.
  • OOM. The real H3 experience. A plain bf16 DiT is ~42 GB; community VRAM math (the "3060 will run it?" threads) is exactly why BlockSwap and quantized weights exist. Quantize the checkpoint, wire in BlockSwap Args, lower resolution.
  • Nothing about negatives happens. cfg is 1.0. That's by design - H3 defaults to no negative guidance.
  • Slow but stable. That's BlockSwap working, not broken. Check the stats output for peak VRAM and swap loads to see how hard it's thrashing; tune block_to_swap accordingly.
CategoryMiniMax-H3/sampling

Inputs (16)

NameTypeDefaultDescription
modelMINIMAX_H3_MODEL
positiveMINIMAX_H3_COND
seedINT00–18446744073709550000
stepsINT301–200
cfgFLOAT1.01–30Classifier-free guidance scale. 1.0 disables negative guidance; values above 1.0 require a negative conditioning input.
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
scheduler_nameCOMBOnormal10 options: flow_uniform, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
shift_videoFLOAT12.001–100
shift_audioFLOAT3.001–100
denoiseFLOAT1.000–1
use_adaln_cacheBOOLEANfalsePre-bake AdaLN modulations and skip AdaLN weights during sampling. dpm_adaptive keeps the eager AdaLN path because its sigma schedule is model-adaptive.
adaln_prebake_batchINT31–16Number of AdaLN blocks baked per GPU batch during prebake.
negativeoptMINIMAX_H3_COND
latentoptMINIMAX_H3_LATENT
teacache_argsoptMINIMAX_H3_TEACACHE
block_swap_argsoptMINIMAX_H3_SWAP

Outputs (2)

NameTypeDescription
latentMINIMAX_H3_LATENT
statsSTRING