๐ฒ Random (Model+Clip+Vae)
Randomly swap between full checkpoints, preloaded
- model_1
- clip_1
- vae_1
- model_2
- clip_2
- vae_2
- MODEL
- CLIP
- VAE
If you want to compare two, five, or ten checkpoints against the same prompt and settings, you could build ten parallel pipelines - or you could wire all of them into this one node and let it pick a full checkpoint at random each run. It takes complete MODEL+CLIP+VAE trios (not just filenames) and randomly forwards one of them downstream, keeping every checkpoint's own load-checkpoint node upstream, exactly as it was configured.
How it works
Set number_of_inputs to how many checkpoints you're comparing (2 to 10), and wire a separate Load Checkpoint node's MODEL, CLIP, and VAE outputs into each numbered trio (model_1/clip_1/vae_1, model_2/clip_2/vae_2, and so on as you raise the count). The node picks one full trio at random each run, using seed to control which - and forwards that trio's MODEL, CLIP, and VAE downstream as if it had been the only one connected.
The trade-off the author is explicit about in the README: because this node uses the standard core Load Checkpoint node upstream for each option, every checkpoint you wire in gets fully preloaded into VRAM, all at once, whether or not it's the one selected that run. That buys you instant switching - no disk read delay when the random pick changes - at the cost of VRAM scaling linearly with how many checkpoints you compare. If VRAM is tight and you'd rather load checkpoints from disk by name on demand instead of preloading all of them, the pack's separate Random Load Checkpoint (Model Selector) node is the lighter-weight alternative worth looking at - same idea, different memory trade-off.
One more limitation worth knowing before you build around this: since it's swapping fully generic MODEL/CLIP/VAE trios, it has no way to also swap per-checkpoint settings that should travel with a specific model - a CLIP Skip value tuned for one checkpoint, or a different VAE override for another. Everything downstream of this node ends up sharing one configuration regardless of which checkpoint got picked.
The inputs and outputs that matter
number_of_inputs(2โ10, default 2) - how many checkpoint trios to compare.model_N,clip_N,vae_Nfor each trio - wire these from separate Load Checkpoint nodes.seed(default 0) - controls which trio gets picked; use the standard control widget next to it for fixed vs. randomize behavior.- Outputs: MODEL, CLIP, VAE - the selected trio, ready to feed into your sampler and decoder as normal.
How to install it
Through ComfyUI Manager: search Bjornulf_custom_nodes, install, restart ComfyUI. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
cd into the folder, pip install -r requirements.txt (a venv is worth it), restart. No special dependency beyond the shared pack requirements - this node is pure graph-routing logic sitting on top of ComfyUI's own checkpoint loading.
Common issues
The one to plan for before you build this into anything is VRAM: with several full checkpoints wired in and preloaded simultaneously, you can hit an out-of-memory error well before you'd expect to, especially on cards with less headroom. If that happens, either reduce how many checkpoints you're comparing at once, or switch to the pack's Random Load Checkpoint (Model Selector) node instead, which loads by name rather than preloading everything.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| number_of_inputs | INT | 22โ10 | โ |
| model_1 | MODEL | โ | |
| clip_1 | CLIP | โ | |
| vae_1 | VAE | โ | |
| model_2 | MODEL | โ | |
| clip_2 | CLIP | โ | |
| vae_2 | VAE | โ | |
| seed | INT | 0 | โ |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | โ |
| CLIP | CLIP | โ |
| VAE | VAE | โ |