Nodes/MiniMax H3 Context Loop/MiniMax H3 Chain SelfLift Sampler — Experimental
ComfyUI Node

MiniMax H3 Chain SelfLift Sampler — Experimental

Most of the render at half size, then finish big

By ethanfel·Created 2 months ago·Updated a day ago· 516
MiniMax H3 Chain SelfLift Sampler — Experimental
  • state
  • model
  • positive
  • vae
  • latent
  • sampler
  • sigmas
  • negative
  • model_hires
  • highres_tiling
  • output
  • status
◄seed0►
◄cfg1.0►

Chain SelfLift Sampler is the drop-in replacement for the ordinary sampler inside a MiniMax H3 Context Loop scene body. Same sockets, same wiring, different arithmetic: it does most of the denoising steps on a half-size latent, lifts that latent with a learned upscaler, then spends the last couple of steps at the Plan's full resolution.

Why bother. H3 is a 33B omni-modal model that generates picture and stereo audio in one pass, and a multi-scene chain multiplies that cost by the scene count. Composition, blocking and lighting are mostly decided in the early, high-noise steps; the expensive late steps buy detail, not ideas. So run the ideas cheap and the detail at full size.

The catch is in the node's own display name: Experimental. The pack's docs are blunt that learned latent lifts can produce localized colored patches or blocky detail that weren't in the low-res latent, that this isn't fixed in 0.7, and that a clean low-res preview doesn't promise a clean final. Bilinear is a comparison option, not an equivalent.

How the two stages work

The node reads sigmas to get the scene's total step count, then splits it: total - high_resolution_steps steps run at lowres_scale of the Plan size, the latent lifter resizes that clean low-resolution endpoint up, and the remaining high-resolution steps run at full size. Both numbers live on the MiniMax H3 SelfLift Project node, not here - this node pulls them out of the chain state. With SelfLift off, it falls through to plain single-stage sampling and says so in status.

The lifter is whichever upscaler the project node selects: an installed LBH H3 3D-conv checkpoint from ComfyUI/models/latent_upscale_models, tridae (a fixed 2x FP32 model), or bilinear. Native AV masks, locked source audio, tagged references and guide continuation all keep working through both stages. It is not TST, and there's no latent-upscaler tiling here - the optional tiling is a separate node.

Inputs and outputs that matter

state, model, positive, vae, latent, sampler and sigmas come from the same chain wiring the stock sampler uses. You set two things by hand:

  • seed - the scene seed, same as ever.
  • cfg - default 1. H3 is guidance-distilled and CFG 1 is the correct setting, not a conservative one. Pushing it toward 7 is the classic way to cook a modern model.

negative is optional, falls back to the positive conditioning, and is inert at CFG 1 anyway. model_hires lets you finish the full-resolution steps with a second checkpoint - same sampler, sigmas, CFG, VAE and conditioning, and you connect its own LoRAs to it separately; leave it unconnected to reuse the main model. highres_tiling takes the settings object from MiniMax H3 SelfLift Tiling. Outputs are output (LATENT, into Segment + Checkpoint or the review gate) and status (STRING, the human-readable summary of which stages ran).

Install

ComfyUI Manager: search the pack title MiniMax H3 Contex Loop. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/seitanism/ComfyUI-H3-Motion-Context-MultiRef.git
git clone --branch main https://github.com/ethanfel/ComfyUI-MiniMaxH3-Context-Loop.git

Restart ComfyUI afterwards - fully, not just a refresh, since the pack installs H3 guide and mask patches. The registry entry keeps the older Contex Loop spelling.

There is no requirements.txt: no pip installs of its own. What you do need is a current ComfyUI with native Add Guide for MiniMax H3 support, the four H3 model files (diffusion model, text encoder, video VAE, audio VAE - none are bundled), ffmpeg on PATH for the review and assembly side, and the companion MultiRef pack for the maintained Motion Context node.

Where people get burned

Select tridae, bilinear, or an installed H3 latent-upscaler model on SelfLift Project, or turn SelfLift off means SelfLift is enabled but the upscaler dropdown is still none. The inverse error - high-resolution steps must be between 1 and N - means you asked for more finishing steps than the scene has steps.

Tr1dae is the fussy one: it's a genuine 2x model, so keep lowres_scale at 0.5 and make the final dimensions divisible by 64 (1920×1088 works, 1920×1080 doesn't). An incompatible grid is rejected before the low pass runs. The ~59 MB checkpoint downloads on first execution and is SHA-256 verified; nothing downloads when the node schema is merely loaded.

Switching to a second finishing checkpoint isn't free either: the pack refuses a model_hires that carries another dynamic denoise-mask patch, and if the base model has Chain Drift Control but the finishing checkpoint doesn't, connect the finishing model before its Chain Context patch.

And if you're tempted by the RES4LYF Radau route, read the pack's own limit: connect a ClownSampler, pick fully_implicit/radau_ia_2s (not IIA 3s) with eta 0 - plain ClownSampler only, no separate RES4LYF guides or schedule overrides.

Categorysampling/minimax/context_loop

Inputs (12)

NameTypeDefaultDescription
stateH3_CHAIN_STATE—
modelMODEL—
positiveCONDITIONING—
vaeVAE—
latentLATENT—
samplerSAMPLER—
sigmasSIGMAS—
seedINT00–18446744073709550000—
cfgFLOAT1.00–100—
negativeoptCONDITIONING—
model_hiresoptMODELOptional compatible H3 diffusion checkpoint for the final full-resolution steps. Unconnected: reuse model. Same sampler, sigmas, CFG, VAE and conditioning; connect desired LoRAs to this model separately. Ignored when SelfLift is off.
highres_tilingoptH3_SELFLIFT_TILINGOptional SelfLift Tiling settings for the final high-resolution denoising steps only. Off/unconnected preserves full-frame sampling. Not TST or latent-upscaler tiling.

Outputs (2)

NameTypeDescription
outputLATENT—
statusSTRING—