Bubba Model Compare Loader
Fork one workflow into four, each with a different checkpoint
- pipe
- pipe_1
- pipe_2
- pipe_3
- pipe_4
- info
Comparing checkpoints fairly is the classic ComfyUI chore: build one workflow, duplicate it four times, and pray you changed exactly one thing in each copy. Bubba Model Compare Loader is the node that makes that honest. It takes an optional source pipe - your latent, image, prompts, and metadata - and forks it into up to four independent pipes, each loaded with a different checkpoint. Same seed, same latent, same prompt, different weights. That's the only comparison that tells you anything.
The mechanical trick is the fork. In a stock graph, "same seed to four samplers" means four seed nodes or a lot of careful wiring, and even then the latent is easy to get wrong - each branch needs the identical empty latent, and if one branch's latent differs by a pixel the comparison is contaminated. This loader forks the pipe first, so every branch starts from the same latent, image, mask, and prompt text. You don't wire four copies; you wire one pipe in and four pipes out.
The inputs
model_1throughmodel_4- checkpoint dropdowns. Leave unused slots atNone(the default). This is how you compare two checkpoints: set 1 and 2, leave 3 and 4 off.replace_clip/replace_vae- booleans, both default true. This is the subtle one: when true, each branch uses its checkpoint's bundled CLIP/VAE. When false, the branch preserves the CLIP/VAE from the incoming pipe - which is exactly what you want when comparing checkpoints that share a base, because swapping in each one's bundled (and possibly broken) VAE contaminates the comparison. The rule: for pure model comparison, disable both and supply one known-good VAE/CLIP upstream.pipe- the optional source pipe to fork. It's what carries the shared latent, image, mask, prompt text, and generation metadata into every branch.
The outputs are pipe_1 through pipe_4, plus an info string. Each pipe is a full branch: model loaded, everything else inherited from the source. If no source pipe is connected, the loader still creates fresh pipes with just the models - you'd then wire prompts and latents to each branch yourself.
The workflow shape
The pack's recommended model-comparison recipe is a good skeleton:
Bubba Seed ControlandBubba Sampler Controlsnear the branch point, so one seed and one set of sampler settings fan out to every branch - that's the "same seed" guarantee made structural.- This loader forks the pipe with the four checkpoints.
- A prompt builder and a sampler per branch (the prompts are inherited from the fork, so you only edit one).
Bubba Model Compare Sheetcollects the four completed pipes and composes the labeled grid.
That's the honest comparison harness: identical everything except the checkpoint. If you compare checkpoints with different prompts or seeds, you're not comparing checkpoints.
Install and gotchas
Bubba Nodes, one pack:
cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/Bubba_Nodes
or ComfyUI Manager → search "Bubba Nodes", restart. ComfyUI 0.27.0+ required, no extra dependencies.
The two things that bite people: forgetting that replace_clip/replace_vae default to true (so a comparison you thought was model-only is actually also swapping VAEs - disable them for a clean test), and expecting the loader to load all four checkpoints at once into VRAM. Four SDXL checkpoints won't fit side by side on most cards; the pack handles the loading, but expect memory pressure, and don't be surprised if the first run takes a while as it loads and unloads models.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model_1 | COMBO | None | 1 options: None |
| model_2 | COMBO | None | 1 options: None |
| model_3 | COMBO | None | 1 options: None |
| model_4 | COMBO | None | 1 options: None |
| replace_clip | BOOLEAN | true | — |
| replace_vae | BOOLEAN | true | — |
| pipeopt | BUBBA_PIPE | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| pipe_1 | BUBBA_PIPE | — |
| pipe_2 | BUBBA_PIPE | — |
| pipe_3 | BUBBA_PIPE | — |
| pipe_4 | BUBBA_PIPE | — |
| info | STRING | — |