2.2.5 — a chain that could refuse to start, an upscale that could eat the host, and one-click install from the Registry
Profil d'exécution
Description de la source
2.2.5 — a chain that could refuse to start, an upscale that could eat the host, and one-click install from the Registry
Fixed: chained shots could stall before the first sampling step
The auto-reserve learns how much activation pool a given shape needs by measuring it. On a chained render the later shots often load partially — the weights are already resident, so only part of them streams in. The old code discarded every partial measurement as untrustworthy, which meant a chained shot could never contribute what it learned. If the very first shot was also partial, the cache stayed empty forever, the fallback reserve was too small for the shape, and every subsequent attempt failed the same way. A render could sit there refusing to start with no error to point at.
Partial measurements are now kept when the pool is genuinely large, and clamped by a named floor ( _auto_cache_floor ) that only ever ratchets upward, never down. Verified live on a six-shot chain: offload dropped from 4308 MB to 638 MB once the cache started learning.
Commentaire généré par l’IA
Explication générée par l’IA à partir des détails de la source et de la configuration. Les suggestions sont clairement signalées.
Use this ComfyUI workflow to turn a story prompt or raw JSON shots separated by `---` into a chained MiniMax H3 video with audio; provide a checkpoint and text encoder, and it produces one continuous video with sound.
Work left to right: the writer expands your idea into shot prompts, or you can use passthrough mode to supply your own raw JSON shots.
With folder walking enabled, `start_index` selects a file and scripts are read in sorted order.
Optional anchors include a photo to open the first shot and a short voice clip to keep the speaker's voice consistent.
Install `comfyui-h3-multishot` through ComfyUI-Manager, or use the version zip, which includes the node packs, workflows, and documentation.
The H3_Seamless_Chain_v2 workflow lists `minimax_h3_audio_vae_fp32.safetensors`, `minimax_h3_video_vae_fp16.safetensors`, `MiniMax-H3-ref2va-curve-Q8_0.gguf`, and `qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors` as model files.
The H3_Seamless_Chain_v2 workflow also lists `comfyui-custom-scripts` and `comfyui-easy-use` as node packs.
With an upscaler selected, set `output_scale` to the final size you want; the workflow displays estimated dimensions and memory use before sampling.
For longer chains, the settings notes point to `memory_frames = 0`, `master_normalize = luma+contrast`, `pin_renorm = on`, and `chain_gain_control = flatten` as controls for limiting detail buildup; some drift can remain.
Suggestion · non vérifié
A video reference carries scene appearance, framing, camera distance, room contents, and color temperature; it does not make the subject copy movement. Only `ref2va` supports video references.
Before upscaling, review the displayed memory estimate: decoded frames build up in host RAM until the master is joined.
Suggestion · non vérifié
Faut-il modifier cela ?
Connectez-vous pour envoyer une demande de modification.
Sources
1 sourceExtraits de sources
1 extraitSource context: 10753 downloads · Type Workflows · Base model MiniMax H3
The warning that fires when a shot asks for far more pool than is available now distinguishes the two cases it was conflating. If this shape has been measured before, it says so and gives you the number. If it is the first run at this shape, it says that instead of implying something is broken.
Fixed: output_scale was documented backwards
With an upscale model selected, output_scale is not a multiplier on top of it — the model applies its own fixed factor (4x for the ESRGAN family) and output_scale is the final size you want, not an extra step. The tooltip said otherwise, in both samplers. Both are corrected, and upscale_model_name now explains the interaction rather than leaving you to discover it.
New: the upscale says what it will cost before it runs
Decoded frames accumulate in host RAM until the master is joined, so the bill is per-shot multiplied by shot count. A 1344x768 chain through a 4x model is 5376x3072 per frame, and an output_scale left at a value that looked harmless has taken machines down at the join — after all the sampling was already paid for.
Before sampling starts you now get the projected dimensions, MB per frame, GB per shot and GB total, measured against actual free RAM:
[H3Memory] upscale will produce 5376x3072 (4.0x): 198 MB per frame [H3Memory] WARNING: that will not fit. Frames are held in host RAM until the master is joined - lower output_scale to 1.60 or lower, or turn the upscaler off.
New: the folder walk prints which index is which file
Queueing a folder told you nothing about the mapping between EPISODE INDEX and the file it would pick, so a cancelled run left you doing off-by-one arithmetic against a single log line to work out where to restart. The ordered list now prints once per folder per session, and each job reports its own position and the index to set to resume there. It re-prints if the folder's file count changes, which is the one case where a remembered listing would mislead.
New: the writer warns when the dialogue does not fit the clip
The node already computed a real speakable word budget from the clip length — subtracting the airlock and replay on chained styles — and handed it to the model. Nothing checked that the model complied. Speech that overruns its clip renders crammed and garbled, and you found out by listening, forty minutes later.
Shots that overrun are now reported at generation time with the numbers. The check is deliberately symmetric: a script that comes back with no dialogue at all is also flagged, because that renders as a silent slideshow and was previously the one failure that passed without comment.
Changed: the story writer stops prescribing creativity
The system prompts had accumulated a five-beat dramatic arc, a banned-cliche list, a "land near seven shots" target and a dialogue quota. None of those are properties of the model — they are one person's taste, hardcoded, and they were flattening every brief toward the same shape.
They are gone. What remains is what the renderer actually needs: valid JSON, identity restated verbatim per shot so the room does not drift, literal physical description over mood language because abstract adjectives have nothing to render, and the note that audio is half the model. The story, its length, its tone and whether any given shot speaks are the model's call now.
Changed: the node menu no longer says "Rift"
Four nodes sat in a category called Rift , which means nothing to anyone who is not me. They are in H3/script now, the labels drop the prefix, and ten console messages say [H3 Multishot] — the name you actually installed — instead of [Rift] .
Saved workflows are unaffected. Categories are never written into a graph and display names resolve fresh on load. The underlying class names are deliberately unchanged , because those strings are written into every saved .json and renaming them would turn your nodes into red missing-node boxes.
New: installable from the ComfyUI Registry
The pack is published as comfyui-h3-multishot , so ComfyUI-Manager can find and update it without a manual clone. The zip on this page stays the complete bundle — both node packs, the workflows and the docs — and remains the right choice if you want everything in one drop.
The dependency list is deliberately empty. Every import this pack uses ( torch , torchaudio , psutil , av , numpy , PIL ) is already guaranteed by ComfyUI itself, and a custom node that declares torch can talk pip into replacing a working CUDA build with a CPU wheel.
Documentation: drift on long chains, and the dials that fight it
SETTINGS.md gains a measured section on why chained shots accrete detail — each conditions on the previous shot's own output, so invented texture compounds — and which controls actually counter it. Measured over ten shots at 960x544:
memory_frames = 0 is the big one. The bank's RECENT slots feed accreted output forward on top of the pin.
master_normalize = luma+contrast levels brightness and contrast of the finished chain.
pin_renorm = on holds each pinned latent at shot 1's sigma.
chain_gain_control = flatten on chains longer than about five shots — texture ratchets roughly 1.3x per join.
Residual with all of those on is about 1.02 per hop . Not zero. Long chains still drift, slowly. pin_noise is small, scene-dependent and gets worse above 0.10 ; it is not the fix it was described as in 2.1.5.
2.2.4 — references for more than one person, a folder you can queue, and video references
Four things people asked for or tripped over, plus the documentation that should have prevented two of the questions.
Fixed: reference images of different people blended into one face
If you gave the sampler reference pictures of two characters, it rendered something that resembled neither. That was not you holding it wrong. Internally every reference picture was declared to the model as is a reference photograph of — the same Subject 1, every time. With one character that is correct and it is why single-character references work well. With several you were telling the model that photographs of different people all showed one individual, and it produced the average.
There is a new reference_subjects field on the sampler. Leave it empty and nothing changes — every picture is one person, exactly as before. Fill in comma counts in picture order to group them:
reference_subjects: 3,3 pictures 1-3 are person A, 4-6 are person B reference_subjects: 2,2,2 three people, two pictures each
Each group is then declared its own subject, with an explicit instruction that it is never blended with the others. Only Subject 1 is described as speaking, because H3's voice conditioning is single-speaker.
New: point the prompt source at a folder and queue the whole thing
start_index has always selected a block inside one file. That works for LPFF-style prompt batches, where one file holds many prompts. It does not work for H3 scripts, because in an H3 script --- separates shots within one scene — concatenating scenes into one file would fuse them into a single enormous take.
Turn on the new walk_folder switch and start_index selects which file instead, walking the chosen folder in sorted order and emitting the whole script. Wire it to a Primitive set to increment , queue thirty times, and thirty finished scenes render unattended.
New: hand H3 an existing clip as a video reference
There is now a V2V REFERENCE lane in the workflow — Load Video into Get Video Components into the new H3 Reference Video node, then into two new sampler inputs. It ships muted; un-mute the three nodes to use it.
Read what this is before you wire it. H3 is told a video reference is "a clip from an earlier moment of this same continuous scene" and asked to keep its framing, camera distance, room contents and colour temperature. It is scene and appearance conditioning . It is not motion control — there is no pose, depth or optical flow path in H3, so your subject will not copy the movement in the clip. It borrows the place and the look, not the action.
Keep the window short. References are subsampled to 2 fps and then ride through every sampling step, so a 25-second clip is roughly 50 reference frames of permanent per-step cost. The H3 Reference Video node trims to a window and prints what that window will cost before you commit to it. Requires ref2va; fl2va has no reference rows and ignores video references entirely.
Fixed: an empty prompt dropdown that blamed the wrong thing
The prompt source finds .txt files through the inspire_prompts folder path, which is registered by comfyui-inspire-pack . Without that pack installed the path does not exist, so the dropdown came back empty however many prompt files you had, and the error blamed the prompts folder. It now tells you which of the three fixes applies: install the pack, register the path yourself in extra_model_paths.yaml , or set manual_path and ignore the dropdown. The dependency is written into INSTALL.md as well.
Documentation: what has to change between shots
Several people have hit chains where shot 3 comes back as a near-copy of shot 2. The prompting guide is partly responsible: rule 5 says to repeat descriptions word-for-word, and never said what must differ . Rule 5 is only about appearance and the room. It is not an instruction to restate the action, and when it gets read that way most of shot 3 is byte-identical to shot 2 — and the model is separately instructed to preserve the subject, the room and the colour temperature, so "keep everything the same" wins.
There is now a sixth rule covering it. The short version: each shot's action must leave the world in a state the previous shot's world was not in, physical and irreversible, not a mood or a camera move. If you can swap two shots' action lines and the script still reads correctly, the model cannot tell them apart either.
Documentation: fl2va is not a smaller file
Both this guide and INSTALL.md described fl2va as "lighter and faster", which everyone reasonably read as a size claim while choosing a file for a 24 GB card. It is not. fl2va and ref2va are exactly the same size at every quant level. "Lighter" only ever meant fewer tokens per sampling step, because there are no reference rows riding along.
What actually separates them was never written down: fl2va lands on a supplied frame and ref2va only nudges toward one. Measured against the same frame, 26.35 dB on fl2va versus 16.15 dB on ref2va with a keyframe at 6 turbo steps — and 16.81 dB at 20 stock steps, which rules out the sampler and leaves the checkpoint. fl2va can also take a first and a last frame and plan a camera move between them, which ref2va cannot do at all. So: ref2va when identity or voice must persist, fl2va when a shot must start exactly where the last one ended.
Improved: the story writer, for thin briefs and long shot counts
Give the writer a couple of characters and a genre with no plot, ask for...
Hardware and download-size estimates are not available yet.
Exigences
minimax_h3_audio_vae_fp32.safetensors
Fichier non vérifiéVAE · SAFETENSORS · Unknown
minimax_h3_video_vae_fp16.safetensors
Fichier non vérifiéVAE · SAFETENSORS · Unknown
MiniMax-H3-encoder-Q4_K_M.gguf
Non résoluText encoder · Unknown
MiniMax-H3-fl2va-Q5_1.gguf
Non résoluCheckpoint · Unknown