Nodes/ComfyUI_MiniMaxH3_Director/MiniMax H3 Director SelfLift
ComfyUI Node

MiniMax H3 Director SelfLift

Sample the boring part small, finish big

By AIMixer·Created 2 months ago·Updated about 5 hours ago· 1,952
MiniMax H3 Director SelfLift
  • bd_grp_selflift_sample
  • bd_grp_selflift_lift
  • bd_grp_selflift_tile
  • model_hires
  • selflift
split_modehighres_steps
highres_steps2
transition_step6
lowres_scale0.50
sampler_modeeuler
native_low_carrytrue
latent_upscale_model(将 3D 权重放入 models/latent_upscale_models)
latent_upsamplebilinear
rho0.00
w_min0.50
w_max1.00
enable_latent_chunkingfalse
enable_tilingfalse
tile_count2
tile_overlap128

Most of a diffusion run goes into building composition. The last few steps are where texture shows up. This node is the pack's way of charging you different prices for the two halves.

Where it sits in the workflow

MiniMax H3 is MiniMax's 33B omni-modal video model - video and stereo audio generated in one pass, not an audio pass bolted onto a silent generator. MiniMax H3 Director puts a multi-shot timeline in front of it: you wire in the official H3 UNET, a Qwen3-VL text encoder (CLIPLoader type minimax) and both VAEs, lay out shots, and it runs the official chain for you.

MiniMax H3 Director SelfLift isn't a sampler. Nothing samples when it executes; it packages settings into a selflift socket that wires into the Director's selflift input, just above refine. Unconnected, the Director behaves exactly as before. Connected, its first pass is rewritten.

That's the reason to care. A default H3 run is 864×480, 124 frames at 24fps, 25 steps - heavy. The classic hi-res fix samples small, then again at size: simple, VRAM-hungry. SelfLift does that inside one sigma schedule, lifting the latent with a learned 3D (space and time) H3 upscaler instead of a VAE round trip. The canvas never changes; only the order of work does.

How it actually works

The first pass becomes three moves: sample a low-res prefix (canvas × lowres_scale, snapped to H3's ×32 canvas stride) for the first k sigmas, lift that latent to the full canvas with the 3D network, then run the remaining sigmas - the high-res tail - at full size. split_mode decides where the cut lands. highres_steps (default) makes the last N steps high-res: 8 steps with the default highres_steps=2 is 6 low + 2 high. transition_step is the paper's own k, and the author's note says an 8-step turbo run wants 6.

Euler only, both stages - enforced, not suggested. Set sampler_mode to follow_director and it raises if your Director sampler isn't Euler.

The inputs that matter

Five fields do the real work; the rest stay tucked away until VRAM is the wall.

  • lowres_scale (0.5) - the whole point. The prefix runs at a quarter of the pixels. Set it to 1.0 and SelfLift politely does nothing.
  • split_mode, then highres_steps or transition_step - how much of the run is expensive. The tooltip's own suggestion: keep high-res around 25% of total steps.
  • latent_upscale_model - the 3D latent upscaler, from ComfyUI/models/latent_upscale_models/ (the folder Refine also uses). Required at the default rho=0; rho is the optional pixel-anchor path, which means a VAE round trip, so leave it alone.
  • native_low_carry (on) - with the Director's segment guidance enabled, it writes the previous shot's native low-res tail into the current prefix so seams don't flicker. Off, the prefix is just a downgraded tail and seams go soft.
  • model_hires - optional MODEL for the high-res stage only. Turbo LoRA on the cheap prefix, something else for the finish.

Also on the node: enable_latent_chunking (temporal chunks inside the lift) and enable_tiling / tile_count / tile_overlap (spatial tiling of the high-res tail only). One output: selflift.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/AIMixer/ComfyUI_MiniMaxH3_Director.git
pip install -r ComfyUI_MiniMaxH3_Director/requirements.txt

Or Manager → Install via Git URL with the same repo. You need ComfyUI 0.30.0+: the official H3 nodes landed in PR #15224 / #15228. requirements.txt pulls opencv-python-headless, imageio-ffmpeg, scenedetect and ultralytics - the last one is only for the Director's FaceRefine, and installs regardless.

Models come separately: pruned int8-convrot H3 UNETs (fl2va for t2v/i2v/fl2v, ref2va for r2v/v2v/rv2v), a ~32B Qwen3-VL text encoder, both VAEs, plus the 3D upscaler this node needs. The author bundles weights and workflows on comfyit.cn (article 506); Comfy-Org/MiniMax-H3 on Hugging Face is the official mirror. Two caveats: H3's community licence excludes the US, EU, UK and South Korea; and the docs are Chinese-first - the Director toolbar has an EN toggle, but this node's tooltips stay Chinese.

Where people get burned

Missing 3D weights fail softly. The dropdown shows a placeholder when models/latent_upscale_models/ is empty, and if the lift still fails at runtime it logs a warning and falls back to plain bilinear interpolation. You get mush instead of an error - so grep the console for SelfLift 3D lift failed before blaming the model.

More high-res steps than you have steps is a silent no-op. Ask for 8 high-res on an 8-step run and the cut clamps to k=1: everything is expensive and you saved nothing.

Chunking and tiling are VRAM savers with seams. Temporal chunks don't match a full forward pass, per the tooltip. And TST isn't bundled - with temporal-stability nodes, patch Director.model upstream.

Last thing: mute the node. Bypassing it restores the plain single-stage first pass, which is the only fair A/B against whatever SelfLift bought you.

CategoryMiniMaxH3

Inputs (19)

NameTypeDefaultDescription
bd_grp_selflift_sampleBDGROUP渐进采样
split_modeCOMBOhighres_stepshighres_steps = 高清收尾步数(8 步默认 2,即低清 6 + 高清 2)。transition_step = SelfLift 论文的 k(8 步默认 6)。
highres_stepsINT21–64仅 split_mode=highres_steps。高清阶段步数,建议约为总步数的 25%。
transition_stepINT61–200仅 split_mode=transition_step。低清前缀步数 k。8 步 turbo 用 6。
lowres_scaleFLOAT0.500.25–1低清画布 = 导演台画布 × 该倍率,再对齐 ×32。1.0 = 不渐进,走原来的一采。
sampler_modeCOMBOeuler默认 euler:SelfLift 两阶段都用 Euler(论文路径,s_churn=0)。不改导演台采样器。follow_director = 跟导演台,但必须也是 euler,否则直接报错。
native_low_carryBOOLEANtrue段间把上一段 native 低清尾写入当前低清前缀(与高清 pin 一起)。关掉则低清前缀只是高清尾再降格,接缝容易闪/糊。导演台未开段间引导时无效。
bd_grp_selflift_liftBDGROUP提升 / 3D
latent_upscale_modelCOMBO(将 3D 权重放入 models/latent_upscale_models)H3 3D latent 放大权重,与 Refine 同一目录:ComfyUI/models/latent_upscale_models/。rho=0(默认)时必选。
latent_upsampleCOMBObilinear降格 cond / 升采样过渡态 x 的插值。干净端点 x0 走 3D 网。
rhoFLOAT0.000–1论文像素锚混合。0 = 只用 3D lift(推荐,避免 VAE 往返)。>0 时解码低清 x0、lanczos 放大像素再编码,按 w_min/w_max 混进 3D 结果。真正的 3D 权重在上面的 latent_upscale_model。
w_minFLOAT0.500–1仅 rho>0。低频区域的像素锚权重。
w_maxFLOAT1.000–1仅 rho>0。高频残差区域的像素锚权重。
enable_latent_chunkingBOOLEANfalse3D lift 时间分块(省显存,默认关)。接缝可能和整段前向不同。
bd_grp_selflift_tileBDGROUP高清分块
enable_tilingBOOLEANfalse仅高清收尾空间分块(默认关)。低清阶段不分块。音频不切空间。
tile_countINT21–8高清分块数量。1 等同不分块。
tile_overlapINT1280–2048块间重叠,单位为输出像素。
model_hiresoptMODEL可选高清阶段 UNET。不接则低清/高清都用导演台主模型。适合低清挂 Turbo、高清换一套。

Outputs (1)

NameTypeDescription
selfliftMMX_DIR_SELFLIFT