DEV Community

AI-KSK
AI-KSK

Posted on Originally published at youtube.com

MiniMax H3 Two-Stage Enhancement: Three Supplied Video Graphs

Three MiniMax H3 graphs ship with this episode. They look similar at a glance — same family, same "two-stage" vocabulary — but they do three different jobs, and reading the actual node values changes how you should use each one.

One thing up front: none of these files contains a plain KSampler. Sampling goes through SamplerCustomAdvanced with KSamplerSelect, BasicScheduler, and a MiniMax-specific sigma shift. So this article quotes the saved chain and widget values instead of inventing "8 steps at CFG 3.5" style numbers you'd have to unlearn.

Graph Job Nodes Links Groups LoRA
01 FL2VA Text / first frame / last frame to video 39 51 7 8-step turbo @ 1.0
02 Two-stage repaint Take an existing clip and re-render it at higher resolution 28 45 5 4-step 768p turbo @ 1.0
03 Ref2VA Multi-reference generation 59 101 10 8-step turbo @ 1.0

No inference was run for this release. There is no render, no timing, no VRAM number and no visual comparison in this article — the graphs are described from their saved connections.

What "two-stage" actually means here

All three files follow the same spine. A first pass generates (or injects) a low-resolution audio-video latent. That latent goes through a learned 3D upscaler — minimax_h3_latent_upscaler_3d_fp16.safetensors, configured as a 2x scale on CUDA in fp16. High-resolution conditioning is rebuilt at the doubled size, and a second, short, low-noise sampler refines the upscaled latent. Audio and video are decoded separately and recombined.

That is a structural description, not a quality claim. A learned upscaler is a model component; whether it improves your particular clip is something you have to look at frame by frame.

Two supporting details are consistent across the files: sigma shift is 12 for video and 3 for audio, and the sampler selector is euler with the simple scheduler. The H3SigmaRefiner node is present in all three but is switched off with extra_steps=0 in every saved file — it exists in the graph, it is not doing extra work in this export.

01 — FL2VA: one graph, three input modes

The FL2VA file keeps both a first-frame and a last-frame input wired in. In the underlying node both are optional, which gives you four behaviours from one file:

  • disconnect both frames → text-to-video
  • keep the first frame only → first-frame image-to-video
  • keep the last frame only → last-frame image-to-video
  • keep both → first/last-frame video

The saved state is the last option. If you want plain text-to-video, you don't need a different workflow; you need to disconnect two links.

Resolution comes from a single ResolutionSelector: 9:16 portrait, 0.5 megapixels, multiple of 32. With the size table saved in the graph, that implies a 544×960 first-pass canvas and a 1088×1920 second-pass canvas. The duration control is 5 seconds. Output is written by SaveVideo with the prefix video/AIKSK_H3_FL2VA_RH at 24 fps.

The loader chain is minimax_h3_fl2va_pruned_int8_convrot.safetensors plus minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors at strength 1, with the qwen3vl text encoder. If your LoRA filename doesn't match exactly, the graph will not silently find a substitute — audit the loader before you queue.

02 — HD repaint: inject a clip, then upscale it

This is the file people will misread. The output prefix still says FL2VA, and the group names mention FL2VA, but the graph is not a first/last-frame generator. It loads an existing video, sizes the base latent to that clip (1344×768, 124 frames in the saved state), and injects the video latent with H3InjectVideoLatent. Then the 3D upscaler doubles the latent, the second conditioning stage is rebuilt, and one low-noise refinement pass runs.

The saved source window is 0–5 seconds at 24 fps with "maintain aspect ratio". The refinement sampler uses simple with 4 steps and denoise 0.65, and the sigma refiner is active here with a nonzero extra_steps — unlike graphs 01 and 03. Output goes through VHS_VideoCombine as h264 mp4 at crf 19, 24 fps, with the original audio re-attached through MiniMaxH3NativeAudioLock.

Practical consequence: this graph preserves motion because it starts from your footage, not because of a prompt. The high-resolution prompt asks for preserved identity, composition and camera movement, but prompts steer; they don't guarantee. Check the saved 5-second window against your clip before queueing — a mismatch there is the most common way this graph produces a truncated or repeated result.

03 — Ref2VA: the bays are there, the videos are bypassed

The Ref2VA export reserves the full reference layout: six image bays, three reference-video bays, three paired video-audio crops, three standalone audio inputs. That is what the note at the top of the graph describes.

The saved state is narrower than the note. Five reference images are wired to ref_image_0 through ref_image_4 and are active. The sixth image bay exists but has no link. The three reference-video loaders, their paired audio crops, and the three standalone audio loaders are all saved with mode=4, which means bypassed, with empty file selections.

So if you enable this graph believing the video and audio references are already configured, you'll be wrong. Start from the five images and the prompt; wire the video/audio bays yourself if you want them.

There is a second mismatch worth flagging: the graph's own Markdown note names minimax_h3_ref2va_pruned_int8_convrot.safetensors as the base and a 4-step LoRA, while the actual loader nodes select minimax_h3_hybrid_fl2va_ref2va_b25-49-int8.safetensors and the 8-step turbo LoRA. I'm quoting the loader nodes, because that is what will run; the note is preserved in the file as the author's note, not silently repaired.

Controls: global reference duration 5 seconds, global audio start 0, ref_image_size set to match (the note says match is the distillation-consistent choice, max may trade consistency for range). The duration control is 10 seconds, converted to a frame count with a 17N+5 expression.

Before you queue anything

  • Resolve every asset filename from the JSON against your own installation. None of the weights, LoRAs or example media are bundled.
  • Check which nodes are active versus bypassed; these files mix both, and the note text does not always match the saved state.
  • Keep the distillation-matched sampler settings unless you are deliberately retuning the LoRA. Changing the scheduler or sigma shift while keeping a turbo LoRA is a common source of mush.
  • Look at the stage-1 canvas before the stage-2 canvas. The second pass doubles the latent; if the first canvas is the wrong aspect, the second one is wrong at twice the resolution.
  • These are 24 fps graphs. Don't read the frame rate off the preview widget if you've changed it.

What this is not

It is not a benchmark. No clip was rendered for this package, no timing was taken, and the video's framing about "stage-two enhancement", "3D latent space upscaling" and "4+4 high/low-noise speedup" belongs to the author, not to a test run here.

It is also not an installation guide. The graphs reference custom nodes and specific weight filenames; whether your install has them, and whether they are the same versions, is outside what these files can tell you.

Getting the workflows

Published by this channel. The graphs are free; weights, LoRAs and example media are not bundled and carry their own terms.

Verify workflow, node, model, footage, image and voice rights separately. No blanket commercial or redistribution license is asserted for the graphs or the example media.

Top comments (0)