Nodes/comfyui-rapidfire/MultiModelCheckpointIteratorFirst
ComfyUI Node

MultiModelCheckpointIteratorFirst

Sweep the First Model, Keep the Rest Fixed

By Zeks·Created 2 years ago·Updated 10 months ago· 3
MultiModelCheckpointIteratorFirst
  • latent_image
  • LATENT
  • prompt
  • seed
  • lora
  • settings
  • used_ckpt_name
used_model_count2
ckpt_name1_list
ckpt_name2
ckpt_name3
positive
negative
lora_name
noise_seed0
rescaled_steps8
rescale_multiplier0.70
total_steps_original25
total_steps_shift_second0
total_steps_shift_third0
sampler_name
scheduler
starting_cfg8.0
cfg_shift0.0
steps_end_first15
steps_shift_second0
steps_end_second0
steps_shift_third0
token_normalization
weight_interpretation
detached_seedfalse
detached_checkpointfalse
stop_at_step0
load_settings

MultiModelCheckpointIterator sweeps the middle model of a three-model chain. This sibling node sweeps the first one. You paste a list of checkpoints into ckpt_name1_list, keep models 2 and 3 as fixed dropdowns, and every queue run the chain starts from the next model on the list.

Since the first model does the composition work - the steps that decide what's actually in the frame - this is the natural tool when you're testing "which base model gives me the composition I want, finished by my usual detail checkpoint?" Each run produces a full image from a different starting model, and the node tells you which one it used.

How it works

Mechanically it's the Advanced sampler's chaining pipeline (rescaled-CFG warm-up, model 1's pass to steps_end_first, then models 2 and 3) with the iteration moved to slot one. ckpt_name1_list is newline-separated; each execution picks the next entry, advances the internal index, and uses that as ckpt_name1 for the run. detached_checkpoint is what activates list iteration. There's also detached_seed (keep your seed input authoritative even when loading settings) and stop_at_step for early-stopping a run partway.

The important addition over its sibling: this node returns used_ckpt_name - the string of the checkpoint that actually ran this time, cleaned down to the filename. The sibling leaves you to dig it out of the settings JSON; here it's a first-class output you can wire straight into a saver for per-image filenames or into a text logger.

The inputs that matter

  • ckpt_name1_list - one checkpoint per line; the sweep list.
  • ckpt_name2 / ckpt_name3 - fixed dropdowns for the rest of the chain.
  • detached_checkpoint - on to iterate the list.
  • detached_seed / stop_at_step - seed authority and early-stop controls.

Outputs: LATENT, prompt, seed, lora, settings, and used_ckpt_name.

Install and gotchas

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.

Same state caveat as its sibling, worth repeating: the sweep index lives on the node instance, so reloading the workflow or restarting ComfyUI resets your position. And if you're sweeping just to compare single models, remember this is still a chaining sampler - the model-2/3 slots will run too. Set used_model_count to 1 if you truly want first-model-only runs; otherwise you're paying for three models per image.

Categorysampling

Inputs (28)

NameTypeDefaultDescription
used_model_countINT21–3
ckpt_name1_listSTRING
ckpt_name2COMBO0 options:
ckpt_name3COMBO0 options:
positiveSTRING
negativeSTRING
lora_nameSTRING
noise_seedINT00–18446744073709550000
rescaled_stepsINT80–100
rescale_multiplierFLOAT0.700–1
total_steps_originalINT251–100
total_steps_shift_secondINT0-50–100
total_steps_shift_thirdINT0-50–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
starting_cfgFLOAT8.00–100
cfg_shiftFLOAT0.0-10–100
steps_end_firstINT150–100
steps_shift_secondINT0-20–100
steps_end_secondINT00–100
steps_shift_thirdINT0-20–100
token_normalizationCOMBO4 options: none, mean, length, length+mean
weight_interpretationCOMBO5 options: comfy, A1111, compel, comfy++, down_weight
detached_seedBOOLEANfalse
detached_checkpointBOOLEANfalse
stop_at_stepINT00–100
latent_imageLATENT
load_settingsoptSTRING

Outputs (6)

NameTypeDescription
LATENTLATENT
promptSTRING
seedINT
loraSTRING
settingsSTRING
used_ckpt_nameSTRING