MMH3 Ultimate Upscale: Tiled H3 Video Upscaling on Limited VRAM
A ComfyUI node upscales long, high-resolution MiniMax H3 video with temporal chunking and spatial tiling, keeping VRAM bounded to one tile — plus an experimental LTX-2.5 variant.
Why it matters
MiniMax H3 generates video as a nested latent that bundles 24-channel video and 32-channel audio in one tensor. Standard ComfyUI upscale nodes do not understand this structure, and re-sampling a finished clip at high resolution usually OOMs smaller GPUs: community member WiseDuck reports the original H3 upscaler workflow instantly runs out of memory at 4 MP, while the tiled node reached 2550×1920 (about 5 MP) at 18 seconds on the same machine — "and I can go even higher. I just haven't tested the limits yet. I bet 4K is possible."
How it works
MMH3 Ultimate Upscale wraps the whole temporal split → latent upscale → spatial split → per-tile sampling → spatial stitch → temporal stitch loop into a single node:
- Temporal chunking for long videos. A long clip is cut into overlapping time chunks; each chunk is processed independently and stitched back together. A frame-0 anchor replaces each chunk's first keyframe with the previous chunk's re-sampled boundary frame (
anchor_strength, default 0.999), and overlapping chunks are blended with a linear cross-fade so transitions are smooth rather than hard-cut. - Spatial tiling for bounded VRAM. Each chunk is split into tiles and only one tile is sampled at a time. The overlap strips shared with already-stitched neighbors are pre-filled from the accumulated result and locked with a
noise_mask, so the re-sample is only allowed to change the free interior; a masked write-back guarantees the already-consistent seam is never overwritten. - Two upscale modes. The H3 3D model-based upscaler (
MMH3 Latent Upscale with Model Params, using theminimax_h3_latent_upscaler_3d_*.safetensorscheckpoints), or a model-free interpolation path (MMH3 Latent Upscale Params) that resizes the latent spatially with no extra model — mirroring ComfyUI's Upscale Latent while keeping the nested AV structure. - Audio preserved. The audio portion of the latent is carried through unchanged on every chunk and stitch — it is never re-sampled.
- VRAM-friendly model management. The 3D upscaler is offloaded back to CPU after each use and the diffusion model is unloaded while the upscaler runs, so H3 and the upscaler are never resident at the same time.
- Optional stages.
latent_upscale_param,temporal_split_paramandspatial_split_paramare all optional — leave any unconnected to skip that stage.
LTX-2.5 support (experimental)
An August 25 update adds an experimental LTX25 Ultimate Upscale node built on the same pipeline, supporting LTX-2.5 nested audio-video latents (video [B,128,T,H,W] + audio [B,C,time,freq]) in a single node: temporal split → fixed 2× model upscale → interpolation to the target resolution → spatial split → per-tile sampling → stitch. The README flags these nodes as highly experimental — audio is still buggy, so use the original audio latent.
Install
Install via ComfyUI Manager (search for MMH3 Ultimate Upscale) or clone into ComfyUI/custom_nodes/:
git clone https://github.com/bbaudio-2025/Comfyui-MMH3-UltimateUpscale.gitThe node builds on two community projects: bbaudio-2025's Comfyui-MiniMax-H3-LatentSplit (temporal/spatial split, anchor and append mechanics) and LBH-123-AI's Comfyui_Minimax_h3_latent_Upscaler (the H3 3D upscaler network, covered earlier this month). The upscaler's own example below shows the kind of detail gain the latent path adds while scaling up:
Example from the underlying H3 3D latent upscaler (LBH-123-AI).
Comments
Sign in with GitHub to join the discussion.