MultiModelCheckpointIterator
Sweep Every Model in Your Folder, One Run at a Time
- latent_image
- LATENT
- settings
MultiModelAdvancedKsampler lets you chain three checkpoints. This is the version that automates the boring part: instead of picking a second checkpoint by hand and queueing runs, you paste a whole list of checkpoints into ckpt_name2_list and each queue run uses the next one. Model 1 and model 3 stay fixed; the middle of the chain is the sweep variable.
If you've ever found yourself manually swapping a checkpoint between every queue run while testing "which anime merge works with my base?", this node removes the hands. It's the grid-search sampler - the tool for building a model comparison sheet without touching the workflow between runs.
How it works
Same chaining machinery as the Advanced sampler: optional rescaled-CFG warm-up, model 1 samples up to steps_end_first, then the selected model 2 takes over, then model 3 finishes. The difference is the iterator. ckpt_name2_list takes one checkpoint filename per line, and on each execution the node picks the next entry (cycling with % len), holding its position in node state so the next run continues down the list. Two toggles shape the sweep:
- detached_checkpoint - required for iterating at all; it's the switch that says "use the list, not a fixed model."
- random_checkpoint - when on, it picks a random entry instead of sequential. There's also reset_rng to reset the iteration index back to the start.
The chosen checkpoint is baked into the settings output (serialized as ckpt_name2), so your saver records exactly which model produced each image. Note the settings output is the only model-identity signal here - unlike the "First" variant, this node doesn't expose a used_ckpt_name string, so route the settings into MultiModelPromptSaver to keep the mapping honest.
The inputs that matter
- ckpt_name1 / ckpt_name3 - the fixed bookends of the chain (dropdowns).
- ckpt_name2_list - one checkpoint per line; the sweep list.
- detached_checkpoint / random_checkpoint / reset_rng - iteration behavior.
- load_settings - replay a full configuration from a previous
settingsoutput, exactly like the Advanced node.
Outputs: LATENT (decode as usual) and settings (the serialized config for this run).
Install and the trap
Part of comfyui-rapidfire, no extra dependencies. Install via ComfyUI Manager (search "comfyui-rapidfire") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Zeks/comfyui-rapidfire
then restart.
The trap: iteration state lives on the node instance. If you reload the workflow or restart ComfyUI, the index resets and your sweep starts over - and if the list changes length mid-sweep, % len silently skips or repeats. For reproducible sweep runs, either leave random_checkpoint on (order stops mattering) or plan to run the sweep in one sitting. Also remember this is a chaining sampler: if you only want to compare single models, a plain KSampler batch is the simpler tool, and this node only earns its complexity when model 2 is genuinely the middle of a three-model chain.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| used_model_count | INT | 21–3 | — |
| ckpt_name1 | COMBO | 0 options: | |
| ckpt_name2_list | STRING | — | |
| ckpt_name3 | COMBO | 0 options: | |
| positive | STRING | — | |
| negative | STRING | — | |
| lora_name | STRING | — | |
| noise_seed | INT | 00–18446744073709550000 | — |
| rescaled_steps | INT | 80–100 | — |
| rescale_multiplier | FLOAT | 0.700–1 | — |
| total_steps_original | INT | 251–100 | — |
| total_steps_shift_second | INT | 0-50–100 | — |
| total_steps_shift_third | INT | 0-50–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| starting_cfg | FLOAT | 8.00–100 | — |
| cfg_shift | FLOAT | 0.0-10–100 | — |
| steps_end_first | INT | 150–100 | — |
| steps_shift_second | INT | 0-20–100 | — |
| steps_end_second | INT | 00–100 | — |
| steps_shift_third | INT | 0-20–100 | — |
| token_normalization | COMBO | 4 options: none, mean, length, length+mean | |
| weight_interpretation | COMBO | 5 options: comfy, A1111, compel, comfy++, down_weight | |
| detached_seed | BOOLEAN | false | — |
| detached_checkpoint | BOOLEAN | false | — |
| reset_rng | BOOLEAN | false | — |
| random_checkpoint | BOOLEAN | false | — |
| latent_image | LATENT | — | |
| load_settingsopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |
| settings | STRING | — |