Nodes/MultiModel/Model Parameters Pipe
ComfyUI Node

Model Parameters Pipe

One node that is your whole checkpoint + sampler setup

By FaberVS·Created about a year ago·Updated about a year ago· 4
Model Parameters Pipe
  • vae_override
  • MODEL
  • CLIP
  • VAE
  • steps
  • cfg
  • sampler_name
  • scheduler
  • positive_tag
  • negative_tag
  • params_pipe
positive_tag
negative_tag
ckpt_name
steps20
cfg7.0
sampler_name
scheduler
clip_skip-2

In a stock ComfyUI txt2img you build your scene from three or four nodes: a checkpoint loader, a KSampler with steps/CFG/sampler widgets, a text encoder. MultiModel's whole argument is that you can pack all of that into one node and then hand it around as a single wire. ModelParamsPipe is that node - the "Model Parameters Pipe" that gives the pack its name.

It loads a checkpoint and bundles it together with every sampling parameter you'd normally set on a KSampler - steps, CFG, sampler, scheduler - plus your prompt tags, into one PARAMS_PIPE. You build several of these, switch between them, and let the pack's sampler read whichever pipe is live. That's the multi-model workflow in a nutshell: the checkpoint and its settings travel together, so "swap the model" also swaps the sampler preset it shipped with.

The inputs that actually matter

  • ckpt_name - dropdown populated from your ComfyUI/models/checkpoints folder. No typing, just pick.
  • steps, cfg, sampler_name, scheduler - these come straight from ComfyUI's own KSampler.SAMPLERS and SCHEDULERS lists, so the 44 sampler choices and 9 schedulers match exactly what you'd see on the core node. Same names, same behavior.
  • clip_skip - defaults to -2, which is the setting most SD1.5 users reach for. It's applied to the pipe's CLIP when the node runs, so you don't need a separate ClipSkip node in the chain.
  • positive_tag / negative_tag - multiline strings that ride along inside the pipe for the pack's prompt builder to use.
  • vae_override (optional) - plug in a VAE and it replaces the checkpoint's baked-in one.

The node also exposes all of that as individual outputs (MODEL, CLIP, VAE, steps, cfg, sampler_name, scheduler, tags) plus the combined params_pipe. So even if you only want the model, you don't need a pipe-and-unpack round trip.

How it works

Under the hood it calls ComfyUI's load_checkpoint_guess_config, clones the CLIP and applies your clip_skip to the clone, swaps in the VAE override if you gave one, then packs everything into a 4-element tuple: (model, clip, vae, params_dict). That tuple is the pipe. It's not some special object you can't inspect - ParamsPipeUnpack exists to pull it apart again.

Why you'd reach for it

Two reasons. First, decluttering: one node replaces a loader plus a pile of sampler widgets, which is the same "Efficiency Nodes" consolidation philosophy the community already loves. Second, A/B testing: build several of these, switch between them with MySwitchIndex or ActiveModel, and the sampler downstream just renders whatever pipe you routed to it. Lock the seed, flip pipes, compare - that's the whole workflow.

One trap: the settings live inside the pipe. If you wire that pipe into a node that isn't from this pack, you'll get a type error. Use ParamsPipeUnpack to get plain values out if you need to feed a stock KSampler instead.

Installing

Search MultiModel in ComfyUI Manager and install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/FaberVS/MultiModel

Then restart ComfyUI. No extra Python dependencies beyond what ComfyUI already ships (the pack imports ComfyUI's own modules plus PyYAML), and no model files to download - it reads whatever's already in your checkpoints folder.

CategoryMultiModel

Inputs (9)

NameTypeDefaultDescription
positive_tagSTRING
negative_tagSTRING
ckpt_nameCOMBO0 options:
stepsINT201–10000
cfgFLOAT7.00–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
clip_skipINT-2-12–0
vae_overrideoptVAE

Outputs (10)

NameTypeDescription
MODELMODEL
CLIPCLIP
VAEVAE
stepsINT
cfgFLOAT
sampler_nameeuler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2
schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
positive_tagSTRING
negative_tagSTRING
params_pipePARAMS_PIPE