Nodes/MiniMax H3 Audio T8/MiniMax H3 Learned Latent Upscale / H3学习型潜空间放大 (Advanced)
ComfyUI Node

MiniMax H3 Learned Latent Upscale / H3学习型潜空间放大 (Advanced)

Real detail on the video, native audio left untouched

By T8mars·Created 20 days ago·Updated a day ago· 807
MiniMax H3 Learned Latent Upscale / H3学习型潜空间放大 (Advanced)
  • av_latent
  • av_latent
  • width
  • height
  • report_json
model_name
size_modescale_by
scale_by2.00
target_megapixels0.70
target_width1152
target_height640
aspect_policypreserve_source
max_anisotropy1.05
precisionfp16
release_policyoffload_after

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 in models/latent_upscale_models.
  • scale_by (default 2) or target_* - how big. 2 is the sane default.
  • precision - fp16 default; leave it unless your card and checkpoint both justify otherwise.
  • release_policy - offload_after is 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_after also drops the CPU cache; keep_loaded is 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.

CategoryT8/MiniMax H3/Latent/Experimental

Inputs (11)

NameTypeDefaultDescription
av_latentLATENT
model_nameCOMBO0 options:
size_modeCOMBOscale_by3 options: scale_by, target_megapixels, target_dimensions
scale_byFLOAT2.001–4
target_megapixelsFLOAT0.700.01–8
target_widthINT115232–4096
target_heightINT64032–4096
aspect_policyCOMBOpreserve_sourcepreserve_source is the safe default. honor_dimensions_exp permits different X/Y scales but still enforces max_anisotropy.
max_anisotropyFLOAT1.051–2
precisionCOMBOfp163 options: fp16, bf16, fp32
release_policyCOMBOoffload_afteroffload_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)

NameTypeDescription
av_latentLATENT
widthINT
heightINT
report_jsonSTRING