Nodes/MiniMax H3 Context Loop/MiniMax H3 LMS Upscale Guide (Experimental)
ComfyUI Node

MiniMax H3 LMS Upscale Guide (Experimental)

Let the model redraw your upscaled scene, not a tile grid

By ethanfel·Created 2 months ago·Updated a day ago· 516
MiniMax H3 LMS Upscale Guide (Experimental)
  • state
  • clip
  • video_vae
  • images
  • video
  • positive
  • latent
  • width
  • height
  • raw_frames
  • status
◄promptEnhance this video with sharp, crisp details while preserving a natural photorealistic appearance.►

Most video upscaling arguments are two people doing different jobs. The upscaling essay splits it cleanly: more pixels is interpolation, more detail is generation, and "more pixels over time" is the unsolved one. This node is squarely the third job, and it picks a side - instead of tiling a still-image upscaler across frames, it hands the whole enlarged scene back to H3 as a guide and lets the model re-denoise it at that size with LMS.

It is marked Experimental in the display name for a reason. Read the memory section before you queue it.

The mechanism

You take one complete enlarged RAW scene - from DLSS5 or any other frame-preserving upscaler - and this node encodes it with the H3 video VAE into a native H3 video guide, wiring it as a minimax_keyframes entry at frame zero. Alongside it, the node allocates a fresh empty joint AV latent at exactly the same width, height and frame count. So you are not re-noising the source; you are sampling a new video that is conditioned on the enlarged frames, at full length, in one pass.

Three details matter. Only the enhancement caption goes to Qwen - no visual references, no Ref2VA cache reconstruction, no images pushed into the text encoder. Geometry is pinned: the encoded guide must come out as exactly (1, 24, (raw - 5) // 17 * 5 + 2, h // 16, w // 16), the H3 token grid for that frame count, and a mismatch is an error rather than an implicit resize. And where ComfyUI's native AddGuide would push the batch through an unconditional PIL/Lanczos resize, this node encodes your pixels unchanged and builds the same keyframe payload itself.

Inputs and outputs that matter

  • state - the current scene, from a pixel Upscale Adapter. Its RAW frame clock has to match the guide exactly, and the backend must be pixel.
  • clip and video_vae - the H3 Qwen encoder and the H3 video VAE.
  • prompt - the enhancement caption, defaulting to "Enhance this video with sharp, crisp details while preserving a natural photorealistic appearance." Changing it is how you steer sharpness versus plasticity.
  • images or video - exactly one. images is your enlarged RAW scene as an IMAGE batch; video is a file-backed route for a video upscaler at 24 fps. Both are decoded as one full scene in RAM.

On the way out: positive (caption plus the full-length guide) goes to your Guider; latent is the fresh AV target for the sampler; width, height and raw_frames keep downstream nodes honest; status states the guide route, the memory warning and the audio contract - send it to Preview Any.

The recipe is not the low-denoise CAT recipe. Use RandomNoise, denoise 1, and LMS (the author's minimax_h3_lms_v1.0_r64 LoRA) plus Ref2V Turbo on the model. Do not use Pass-2 AV Prepare. Split the sampled latent and decode video only: the sampled audio is deliberately discarded, and Upscale Segment Save restores the original checkpoint's sound.

Install

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, then grab the weights this workflow assumes: the H3 Ref2VA model, matching video VAE and Qwen encoder from Comfy-Org's MiniMax-H3 repo, the Ref2V Turbo 4-step v0.1 LoRA, the LMS LoRA from Alissonerdx's H3 repo, and the DLSS5 pack if you want the example's upscaler. Nothing is downloaded for you. ComfyUI Manager lists the pack as MiniMax H3 Context Loop.

Where it bites

Memory, first and loudest. This is full-scene H3 guide sampling, not a tiled CAT replacement, and it holds the guide and the target video tokens at once. The pack's own worked figure: a 362-frame 2016×1152 float32 RGB batch is about 9.4 GiB before VAE work, weights, latents and attention. Processing scene by scene avoids allocating a whole chapter; it does not promise one scene fits.

ComfyUI version. The node imports ComfyUI's native EmptyMiniMaxH3LatentAV and MiniMaxH3AddGuide lazily and raises a plain "update ComfyUI" error if they're missing. An old install fails here, not in the graph.

Silent geometry drift. A fractional upscale like 1.5x can leave you off a multiple of 32, and then an aspect-compatible source simply errors out. Adjust the upscaler or align its output before the guide; there is no hidden resize, and a different output size than already-completed scenes in the profile is refused.

Profiles. Use a new profile for this recipe, start_clip to resume mid-branch, and never mix CAT results and LMS results under one profile. Existing media is never resized for you.

Categoryconditioning/minimax/context_loop/upscale

Inputs (6)

NameTypeDefaultDescription
stateH3_CHAIN_UPSCALE_STATECurrent scene from a pixel Upscale Adapter. Its RAW frame clock must match the guide exactly.
clipCLIPH3 Qwen text encoder. Only the enhancement caption is encoded; no visual refs/cache are used.
video_vaeVAEH3 video VAE for encoding the enlarged guide.
promptSTRINGEnhance this video with sharp, crisp details while preserving a natural photorealistic appearance.—
imagesoptIMAGEOne complete enlarged RAW scene from DLSS5 or another frame-preserving upscaler. Connect images OR video, not both. No trim or resampling.
videooptVIDEOAlternative RAW 24 fps guide from a VIDEO upscaler. Decoded as ONE FULL SCENE in RAM, not streamed. Its audio is ignored.

Outputs (6)

NameTypeDescription
positiveCONDITIONINGCaption plus a full-length native H3 video guide at frame zero.
latentLATENTFresh empty joint AV target. Use RandomNoise, denoise=1 and LMS + Ref2VA Turbo on the model; do not use Pass-2 AV Prepare.
widthINTActual guide width.
heightINTActual guide height.
raw_framesINTUnchanged RAW frame count.
statusSTRINGGuide route, memory warning and audio preservation contract.