MiniMax H3 Learned Latent Upscale / H3学习型潜空间放大 (Advanced)
Real detail on the video, native audio left untouched
- av_latent
- av_latent
- width
- height
- report_json
The Latent Upscale by 32 node in this pack is a plain resample - it makes pixels bigger and keeps them aligned. This one is the different animal: it runs a learned 24-channel 3D latent-resizer checkpoint on your H3 latent, meaning a small trained model actually invents plausible detail instead of just interpolating. In upscaling terms, this is the difference between "more pixels" and "more detail," and the KB's upscaling essay is right that those are two different jobs - this node is firmly in the second camp.
Where it gets clever is what it doesn't touch: it upscales only the video part of the joint AV latent and preserves the native joint audio latent as-is. H3 generates audio and video as one condition, and the last thing you want from an upscaler is a resampled audio clock that no longer syncs. So: new detail on the picture, untouched sound.
How it works
You feed it an av_latent and pick model_name from your models/latent_upscale_models folder - the learned checkpoint is the whole payload here, and without it the node has nothing to run. It operates on the 24-channel video latent with the model's precision (fp16 default), and the output pixel dimensions are guaranteed divisible by 32, because on H3 everything has to be.
Sizing is handled through size_mode (scale_by default, with target_megapixels/target_width/target_height available as alternatives) and aspect_policy (preserve_source default - the safe one; honor_dimensions_exp permits different X/Y scales but still enforces max_anisotropy, default 1.05). If you're not deliberately testing anamorphic scaling, leave preserve_source alone.
One design choice the README calls out explicitly: resolutions above the official 1920×1088 reference area are allowed and reported as a memory risk rather than blocked. That's a deliberate trust-the-user policy - 1920×1088 is the official high-res reference, not a hard ceiling, and the node will happily let you climb past it while warning you.
The inputs that matter
model_name- required; nothing works until this checkpoint is inmodels/latent_upscale_models.scale_by(default 2) ortarget_*- how big. 2 is the sane default.precision-fp16default; leave it unless your card and checkpoint both justify otherwise.release_policy-offload_afteris the default and it's the right one for a 16GB card: it keeps a CPU cache but releases GPU weights after every run without unloading your H3 models.clear_afteralso drops the CPU cache;keep_loadedis opt-in VRAM retention.
Outputs
av_latent (upscaled video + untouched audio), width and height, and report_json - check the report for the memory-risk note when you go above the official reference area.
Installing it
Pack install (Manager → "MiniMax H3 Audio T8", or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into ComfyUI/custom_nodes, restart), plus the learned upscale checkpoint into ComfyUI/models/latent_upscale_models. The pack doesn't download it for you. No mandatory pip deps beyond that.
Common issues
model_name dropdown is empty. The checkpoint isn't in models/latent_upscale_models, or ComfyUI hasn't been restarted since you dropped it there.
OOM above 1920×1088. The node warned you. offload_after keeps GPU pressure low between runs, but the upscale itself still needs working memory at that size - drop back under the reference area or reduce frames.
Output detail looks smeared. Learned upscalers can't invent detail that isn't in the source; if your source is soft, this node makes soft bigger. It's not SeedVR2's job being done here - it's a latent-space resizer.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| av_latent | LATENT | — | |
| model_name | COMBO | 0 options: | |
| size_mode | COMBO | scale_by | 3 options: scale_by, target_megapixels, target_dimensions |
| scale_by | FLOAT | 2.001–4 | — |
| target_megapixels | FLOAT | 0.700.01–8 | — |
| target_width | INT | 115232–4096 | — |
| target_height | INT | 64032–4096 | — |
| aspect_policy | COMBO | preserve_source | preserve_source is the safe default. honor_dimensions_exp permits different X/Y scales but still enforces max_anisotropy. |
| max_anisotropy | FLOAT | 1.051–2 | — |
| precision | COMBO | fp16 | 3 options: fp16, bf16, fp32 |
| release_policy | COMBO | offload_after | offload_after keeps a CPU cache but releases GPU weights; clear_after also removes the CPU cache; keep_loaded is opt-in and retains GPU memory. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| av_latent | LATENT | — |
| width | INT | — |
| height | INT | — |
| report_json | STRING | — |