Nodes/ComfyUI Minimax H3 Latent Upscaler/MiniMax H3 Latent Upscaler Provider (3D) [Experimental]
ComfyUI Node

MiniMax H3 Latent Upscaler Provider (3D) [Experimental]

The MiniMax H3 upscaler node that does nothing by itself (on purpose)

By xmarre·Created 21 days ago·Updated 4 days ago· 9
MiniMax H3 Latent Upscaler Provider (3D) [Experimental]
    • learned_upscaler
    model_name
    devicecuda
    precisionfp16
    offload_after_upscalefalse

    This node will feel broken the first time you run it, because it produces nothing. No LATENT pops out the side, no image appears, nothing gets upscaled on screen. That is the design. MinimaxH3LatentUpscaler3DProvider doesn't do the upscaling - it's a configuration object that you hand to a compatible consumer node, which then applies the learned upscale internally at exactly the right moment in a progressive MiniMax H3 workflow.

    The pack it ships in (xmarre's ComfyUI MiniMax H3 Latent Upscaler) is about replacing naive interpolation of MiniMax H3's 24-channel video latents with a trained neural upscaler, skipping the expensive VAE decode → pixel upscale → VAE encode round-trip that image upscalers force on you. The standalone 2D/3D nodes in the pack are ordinary LATENT → LATENT upscalers you drop straight into a graph. This Provider is the odd one out: it exists for "progressive handoff" setups like the Flow-Aligned Regenerate path, where a sampler is regenerating a video chunk by chunk and needs to transfer a clean low-res latent estimate onto a bigger target grid mid-sampling.

    Here's what the node actually does. It builds an immutable provider record - think "API version 1, kind minimax_h3_learned_latent_upscaler" - carrying your checkpoint, device, precision, and offload choices. When a consumer node with an H3_LATENT_UPSCALER input (like a progressive-handoff Target Input) pulls that object, it calls the provider to apply exactly one learned 3D transform to the consumer's clean B×24×T×H×W video estimate at the consumer's already-resolved target latent H/W. Batch, channels, and frame count are preserved; audio never touches it, and it never runs an H3 sampling pass. That last part is the point: it adds roughly a second of learned inference per physical chunk and zero extra H3 denoising steps.

    The inputs are few, because there's no latent to size or mode to pick:

    • model_name - dropdown that scans ComfyUI/models/latent_upscale_models/. If it shows the "(place models in: …)" placeholder, the checkpoint isn't there yet, and the node will refuse to build.
    • device (cuda/cpu) and precision (fp32/fp16/bf16, default fp16) - the same device/precision policy as the pack's 3D node. fp16 and bf16 are both fine; the author's own validation runs bf16 at ~0.6–0.9 s per chunk.
    • offload_after_upscale (default false) - moves the cached learned model to CPU after each handoff to reclaim VRAM. Leave it off unless you're genuinely bumping the ceiling on repeated runs; otherwise you pay a CPU↔GPU reload every physical chunk.

    The single output is learned_upscaler, type H3_LATENT_UPSCALER. Wire it into a consumer node that advertises that input and select that consumer's learned-transfer mode. If nothing in your graph accepts H3_LATENT_UPSCALER, this node is dead weight - reach for the pack's standalone 3D upscaler instead.

    Install is the usual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/xmarre/Comfyui_Minimax_h3_latent_Upscaler.git
    

    Restart ComfyUI after cloning. The only real dependency beyond stock ComfyUI is einops, which a normal install already ships; weights are not in the repo, so grab the learned checkpoint from huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler and drop it in ComfyUI/models/latent_upscale_models/.

    Where people get burned: the CUDA error. The provider never silently falls back - if it's set to cuda and CUDA isn't available, it throws rather than quietly dropping to CPU, so pick CPU explicitly on a CPU-only box. And if you add this node and see no output at all, that's expected: it's a side-input, not a processing node. One honest caveat beyond the node itself: MiniMax H3's local weights carry a license that excludes the US, EU, UK and Korea, so check your region before building a whole progressive workflow around it. Experimental it says, and experimental it is - the author is explicit that handoff quality has to be judged on decoded media per prompt, not assumed from the training range. Treat it as the sharp tool for aggressive progressive transitions that it is.

    Categoryvideo/MinimaxH3

    Inputs (4)

    NameTypeDefaultDescription
    model_nameCOMBO1 options: (place models in: /tmp/ComfyUI/models/latent_upscale_models)
    deviceCOMBOcuda2 options: cuda, cpu
    precisionCOMBOfp163 options: fp32, fp16, bf16
    offload_after_upscaleBOOLEANfalseMove the cached learned upscaler to CPU after each handoff. Leave off for repeated chunks/runs when VRAM is available.

    Outputs (1)

    NameTypeDescription
    learned_upscalerH3_LATENT_UPSCALER