Merge Image Batch
Put the frames back together, in order
- part_1
- part_2
- part_3
- part_4
- part_5
- part_6
- part_7
- part_8
- images
- info
Merge Image Batch is the bookend to this pack's Split Image Batch: Split cuts your video frames into chunks for per-GPU upscale branches, and Merge takes the upscaled parts and concatenates them back into a single IMAGE batch, in the original order. It's the most boring node in the pack, and that's exactly what you want - the whole multi-GPU trick collapses if reassembly isn't trivially correct.
What it does
After Split Image Batch splits N frames into parts, each part goes through its own Upscale Image (Model + Start) branch on its own card. Merge then does torch.cat along the batch dimension on whatever parts you hand it, skipping empty ones, and hands you one continuous batch of frames ready for Create Video → Save Video.
Wire it up with a 1:1 correspondence back to the split:
Split Image Batch
part_1 → Upscale (Model + Start) gpu 0 → Merge part_1
part_2 → Upscale (Model + Start) gpu 1 → Merge part_2
...
Because the merge is plain concatenation, order is preserved - as long as you keep the wiring in the same order you split it. Wire part_1's branch into merge's part_2 socket and your frames come out scrambled with no error message to warn you. That's the one place beginners trip.
Inputs and outputs
- part_1 - required, IMAGE. Everything starts from here.
- part_2 … part_8 - optional, IMAGE. Leave unused ones disconnected; the node also skips any zero-length parts, so a split that produced fewer chunks than 8 doesn't cause trouble.
Outputs: images (the merged IMAGE batch) and info (a STRING like merged 4 parts → 120 frames that's handy for confirming your part count matches expectations).
The one real failure mode
Merge validates that all non-empty parts share the same height, width, and channels, and raises if they don't. That error is a feature: if part_2's branch upscaled with a different model, or a different scale, the shapes won't match and it tells you loudly instead of silently producing a corrupt batch. If you hit it, check every branch is running the same upscale model at the same scale. The other error - "no non-empty parts to merge" - just means you disconnected everything; don't do that.
Install
Same pack, same recipe:
# ComfyUI Manager → Install Custom Nodes → search "32GPU Video Upscale"
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/WhyNotNN/ComfyUI-32GPU-Video-Upscale.git
# restart ComfyUI
No extra pip dependencies; it rides ComfyUI's torch stack. Needs a recent ComfyUI with async node support for the parallel branches to overlap.
Honest notes
There's nothing to tune here - no parameters, no mode switch, just wire order. If you're only upscaling a few images, Split/Merge is overkill and you'd be better served by the pack's single-node Parallel Upscale (Multi-GPU). And the usual new-pack caveat applies: this is an early, barely-adopted release (single commit, template README), so check the repo if behavior seems off.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| part_1 | IMAGE | — | |
| part_2opt | IMAGE | — | |
| part_3opt | IMAGE | — | |
| part_4opt | IMAGE | — | |
| part_5opt | IMAGE | — | |
| part_6opt | IMAGE | — | |
| part_7opt | IMAGE | — | |
| part_8opt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| info | STRING | — |