Nodes/comfy-switch-samplers/CrossMultiStepKSampler
ComfyUI Node

CrossMultiStepKSampler

Three Different Models, One Generation

By azazeal04·Created 11 months ago·Updated 11 months ago· 4
CrossMultiStepKSampler
  • model1
  • positive1
  • negative1
  • vae1
  • model2
  • positive2
  • negative2
  • vae2
  • model3
  • positive3
  • negative3
  • vae3
  • latent_image
  • LATENT
seed0
steps_stage110
steps_stage210
steps_stage310
sampler_stage1
sampler_stage2
sampler_stage3
scheduler_stage1
scheduler_stage2
scheduler_stage3
cfg_stage17.5
cfg_stage27.5
cfg_stage37.5
denoise_stage11.00
denoise_stage21.00
denoise_stage31.00

If CrossStepSwitchKSampler is the two-stage cross-model node, CrossMultiStepKSampler is the three-model kitchen sink. The README's example pipeline tells you everything: SDXL for base composition → Flux for style transfer → Qwen Image for final polish. Three architectures, three VAEs, three conditioning pairs, one generation.

It's the answer to a question people have been asking since early 2024 - "is there a node that lets you schedule different models mid-generation?" - for the case where those models aren't even the same family. The author tested it against Flux, Qwen Image and Wan models, and it shows in the code.

How it works

Three chained KSampler calls. Each stage has its own model, VAE, positive/negative conditioning, step count, sampler, scheduler, CFG and denoise. Between stages, if the VAE changes, it decodes the previous latent to pixels and re-encodes it with the next stage's VAE (the latent bridge); same VAE, the latent flows straight through. The bridge snaps dimensions to multiples of 8 and has video-tensor handling for Wan-style models. Seed ticks up per stage - seed, seed + 1, seed + 2.

Because the conditioning is per-stage, each stage gets text from the right encoder for its model - SDXL's CLIP, Flux's CLIP-L + T5, Qwen's own stack. That's the thing that makes three architectures in one run actually work.

The inputs that matter

There are a lot of inputs. Buckets, not a shopping list:

  • model1/2/3, vae1/2/3, positive1/2/3, negative1/2/3 - three full stacks. This is the whole point and the whole cost.
  • steps_stage1/2/3 - how long each model works. All three stages always run (min 1 step each); you can't skip one from the UI.
  • sampler_stage1/2/3, scheduler_stage1/2/3, cfg_stage1/2/3, denoise_stage1/2/3 - per-stage recipes, and yes, the denoise rule applies again: later stages at 1.0 restart instead of refining. Keep stage 2 and 3 below 1.0 for a real progressive pipeline.
  • seed and latent_image - the usual.

Output: one LATENT, into a VAE Decode like any sampler.

Installing it

Same one-line install as the rest of the pack, and it's dependency-free - no requirements.txt, no model downloads, just ComfyUI core:

cd ComfyUI/custom_nodes
git clone https://github.com/azazeal04/comfyui-switch-samplers.git

Restart ComfyUI, or search comfyui-switch-samplers in ComfyUI Manager. It lives under Azazeal / Switch Samplers.

The honest takes

  • This node is a lot. A huge schema, a huge wiring job, and if you don't have a real three-model recipe you're paying the complexity tax for nothing. Start with CrossStepSwitchKSampler; graduate here when the workflow actually needs a third model.
  • VRAM is the real limit. Three architectures, three VAEs, three text encoders, all resident. On consumer cards you'll want fp8 weights and to accept some offloading. This is a slow, hungry pipeline by construction - three sampling runs plus two VAE bridges.
  • Two bridges, two lossy round trips. Every VAE encode/decode costs detail, and this node does two of them per generation. The final stage does the visible work, so put the detail-oriented model last - which is presumably why "Qwen for final polish" works as a recipe (its decoder is tuned for crisp text).
  • Same seed behavior as the whole pack - each stage increments the seed, so the split points are part of your reproducibility equation.

Reach for this when you genuinely want three models collaborating - SDXL structure, Flux texture, Qwen finish, or a video pipeline ending in Wan. It's not subtle and it's not cheap, but it's the one node that keeps a three-architecture generation in a single box.

CategoryAzazeal / Switch Samplers

Inputs (29)

NameTypeDefaultDescription
model1MODEL
positive1CONDITIONING
negative1CONDITIONING
vae1VAE
model2MODEL
positive2CONDITIONING
negative2CONDITIONING
vae2VAE
model3MODEL
positive3CONDITIONING
negative3CONDITIONING
vae3VAE
seedINT00–18446744073709550000
steps_stage1INT10
steps_stage2INT10
steps_stage3INT10
sampler_stage1COMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
sampler_stage2COMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
sampler_stage3COMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
scheduler_stage1COMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
scheduler_stage2COMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
scheduler_stage3COMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
cfg_stage1FLOAT7.50–100
cfg_stage2FLOAT7.50–100
cfg_stage3FLOAT7.50–100
denoise_stage1FLOAT1.000–1
denoise_stage2FLOAT1.000–1
denoise_stage3FLOAT1.000–1
latent_imageLATENT

Outputs (1)

NameTypeDescription
LATENTLATENT