KSampler (Efficient)
KSampler (Efficient)
- model
- positive
- negative
- latent_image
- optional_vae
- script
- MODEL
- CONDITIONING+
- CONDITIONING-
- LATENT
- VAE
- IMAGE
This is a regular KSampler with two of the most common downstream nodes folded in. Instead of wiring KSampler → VAE Decode → Preview Image every single time, this one samples and shows you the picture. That's the whole pitch, and honestly it's a good one. Once you've built the same three-node tail forty times you start to appreciate a node that just does it.
It comes from the Efficiency Nodes pack, whose entire reason for existing is collapsing those repeated multi-node sequences into single compact nodes so your graph stays readable. This is the one people actually came for.
Why you'd reach for it
Two reasons. First, the built-in preview: you can watch the latent evolve step by step, or have it VAE-decode the final image right on the node, without a separate branch cluttering the canvas. Second, and this is the sneaky-important one, it's the sampler that runs the pack's scripts - XY Plot, HiRes-Fix, and the rest. Those don't sample on their own; they hand this node a SCRIPT and it executes them. If you want the famous XY grid comparisons, you need one of these Efficient samplers underneath.
The inputs that actually matter
Most of the sockets are the standard KSampler set - model, positive, negative, latent_image, seed, steps, cfg, sampler_name, scheduler, denoise - and they behave exactly like they do on the vanilla node. The two you're here for:
preview_method-auto,latent2rgb,taesd,vae_decoded_only, ornone.latent2rgbandtaesdare cheap approximations that let you eyeball progress;vae_decoded_onlygives you the real thing but costs a full decode.vae_decode-true,true (tiled), orfalse. Set it totrueand the node emits a finishedIMAGEdirectly. Usetrue (tiled)when a big decode would blow up your VRAM.
Heads up on sampler_name: this pack ships a huge list (44 of them). Plenty are exotic solvers pulled from other packs, and not all of them suit every model. Sampler choice is architecture-dependent - the old "DPM++ 2M Karras for everything" habit only really holds for SD1.5/SDXL-family models, and aggressive Karras schedules actively misbehave on newer flow-matching models. Pick for your base, don't cargo-cult.
The outputs are generous pass-throughs: MODEL, CONDITIONING+, CONDITIONING-, LATENT, VAE, and IMAGE. That means you can daisy-chain a second sampler for a refiner or hires pass without re-dragging everything from the loader - the model, conditioning and VAE all come straight out the back. The optional_vae input lets you feed a VAE in if your loader didn't bake one; script is where the script nodes connect.
Installing it
Through ComfyUI Manager, search Efficiency Nodes for ComfyUI and install. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/jags111/efficiency-nodes-comfyui
Restart ComfyUI afterward. No models needed just for the sampler itself.
Common issues
The pack's number-one gotcha is import failure - the classic symptom is IMPORT FAILED in the console with a message about pip freeze returning a non-zero exit status. The pack runs a pip check when it loads, so a wonky Python environment takes the whole thing down with it, sampler included. The fix is boring but real: update ComfyUI and your packages, update the node to the latest, and make sure your pip is healthy.
The other recurring one is breakage right after a ComfyUI update - this pack has a long history of lagging Comfy's frontend changes. Maintainer jags111's own standing advice is to update ComfyUI and all dependencies first, then update the node, before you go filing a bug. Nine times out of ten a fresh node update sorts it.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 7.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 13 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +7 | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| denoise | FLOAT | 1.000–1 | — |
| preview_method | COMBO | 5 options: auto, latent2rgb, taesd, vae_decoded_only, none | |
| vae_decode | COMBO | 3 options: true, true (tiled), false | |
| optional_vaeopt | VAE | — | |
| scriptopt | SCRIPT | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CONDITIONING+ | CONDITIONING | — |
| CONDITIONING- | CONDITIONING | — |
| LATENT | LATENT | — |
| VAE | VAE | — |
| IMAGE | IMAGE | — |