MiniMax H3 Progressive Sampler / 渐进分辨率首采 (EXP/T8)
The H3 sampler that skipped 37% of my render time
- model
- positive
- negative
- av_latent
- sampler
- sigmas
- av_latent
- report_json
Most of a video sampler's cost is spent at the resolution you can least afford. Hires fix already taught image people the answer - do the structure small, grow, then finish - and this node is that idea applied to H3's joint audio/video latent. Six steps at half scale, a learned latent upscale, two more steps at full size. Same 8-step schedule you'd run anyway, roughly a third off the clock on the author's test box.
Note what it isn't, because the pack has three things that look similar. It's not a pixel upscaler, and it's not the VDN 8+4 second pass you might already use. Those run after a completed first pass and lock or reuse its audio. This one replaces the first pass from step zero, and the audio keeps being sampled all the way through.
The mechanism
You feed it the empty AV latent from your Conditioning → Setup branch, and it splits the schedule itself. The first low_evaluations steps (default 6 of your 8) run on a latent scaled by low_scale (default 0.5, snapped to a 32-pixel multiple). Then the learned H3 latent upscaler takes the latent to full geometry, renoises for the remaining steps - using seed+1 for that high-resolution renoise, which is worth knowing if you're chasing reproducibility - and finishes with the untouched, full-resolution conditioning.
That conditioning split is deliberate: for I2VA the low-resolution pass gets a scaled-down first frame, while the full-resolution pass gets your original image. It never re-encodes a downgraded reference.
The upscaler is a real file, models/latent_upscale_models/minimax_h3_latent_upscaler_3d_fp16.safetensors, and if it's missing the node errors out rather than quietly falling back to interpolation. Good. A silent bilinear fallback would produce plausible mush you'd blame on the model.
Inputs and outputs
Most of the socket list is just "connect what the native Setup already gives you": model, positive, negative, sampler (plain euler - not dual_clock_euler), sigmas (the complete 1→0 schedule, at least 2 steps), av_latent (must be the empty AV latent; not a sampled result, not a masked one).
Then the four you actually think about. upscaler_model, chosen explicitly. low_evaluations, which is the split point - 6 of 8 leaves 2 for the finish, and 8 of 8 is not allowed because at least one step has to happen after the upscale. low_scale, the first-pass size ratio; the tooltip is blunt that 0.5 does not mean four times faster, and it's right, because the upscale switch, decode and save don't shrink at all. task is t2va or i2va. seed, cfg, precision (the upscaler's precision only, not the model's) and reserve_vram_mib are for tuning and diagnostics.
Outputs are av_latent, which goes into your normal native AV decode, and report_json. The report records actual callback counts and network forwards, so you can verify the "6+2" really happened instead of trusting the progress bar.
Does it actually help?
On the author's RTX 4060 Ti 16GB with a 73-frame 1024×512 clip, warm runs: T2VA went 126.15s → 79.03s and I2VA 139.41s → 86.50s, about 37% off end-to-end including load, decode and save. The hot outputs were byte-identical to the earlier cold runs, which is a decent smell test that the pipeline isn't just doing less work in a lossy way. Quality was reviewed as comparable, with the recurring caveat that one game-audio test group still sounded lighter than native. Nobody outside the author has posted numbers for this node, so treat those figures as the only data set you get.
And no, it is not a VRAM saving. The card uses cudaMallocAsync, the author says so explicitly, and "progressive" here buys time, not memory.
Install
Manager → search MiniMax H3 Audio T8, or clone and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
The pack's requirements.txt installs nothing extra - Torch, NumPy and safetensors come from ComfyUI. You do need a ComfyUI new enough to expose the native H3 AV sampling path this relies on; if the node goes red, update ComfyUI core, the frontend and Manager, then fully quit and restart. The upscaler weights are not bundled and not auto-downloaded.
Where it bites
Only T2VA and single-first-frame I2VA are supported. Multiple references, last-frame, region control or locked audio all fall outside the current contract, and the node says so rather than degrading. Mixing it with VDN, SLA, VSA, SPEED or FastH3 is refused - and when it refuses, keep your original nodes and branch to a separate native model rather than deleting the global Sage flag or unpicking things until the check goes green; you'd be disabling the guard, not the conflict.
If VRAM is your hard wall, look elsewhere. reserve_vram_mib (1024 by default) is a check at phase boundaries and in the sampling callback, not a running peak monitor, and the author is upfront that it can still OOM.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| av_latent | LATENT | — | |
| sampler | SAMPLER | 连接原生 Setup 的 euler,不使用 dual_clock_euler。 | |
| sigmas | SIGMAS | 完整首采时间表:从 1 到 0,至少 2 步。 | |
| upscaler_model | COMBO | models/latent_upscale_models 内的 H3 学习型潜空间放大模型。必须显式选择。 | |
| seed | INT | 202609090–18446744073709550000 | — |
| cfg | FLOAT | 1.00–100 | — |
| low_evaluations | INT | 61–999 | 小画幅的步数。例:完整 8 步中选 6,则放大后还采 2 步。至少留 1 步。 |
| low_scale | FLOAT | 0.500.25–0.99 | 小画幅宽高比例,按 32 像素对齐;0.5 不是保证 4 倍加速。 |
| task | COMBO | t2va | 2 options: t2va, i2va |
| precision | COMBO | fp16 | 3 options: fp16, bf16, fp32 |
| reserve_vram_mib | INT | 1024512–32768 | 阶段边界和采样回调检查的显存余量,不代表峰值预测或不会 OOM。 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| av_latent | LATENT | — |
| report_json | STRING | — |