Nodes/ComfyUI Impact Pack/KSampler (Advanced/pipe)
ComfyUI Node Runs on cloud

KSampler (Advanced/pipe)

Step-controlled sampling off a BASIC_PIPE

By ltdrdata·Created 3 years ago·Updated 4 months ago· 3,242
KSampler (Advanced/pipe)
  • basic_pipe
  • latent_image
  • scheduler_func_opt
  • BASIC_PIPE
  • LATENT
  • VAE
add_noisetrue
noise_seed0
steps20
cfg8.00
sampler_name
scheduler
start_at_step0
end_at_step10000
return_with_leftover_noisefalse

KSampler (Advanced/pipe) is the advanced KSampler wired for Impact Pack's pipe workflow. It takes its model, prompts, and VAE from a single basic_pipe bundle, and instead of a plain denoise slider it gives you the advanced controls: exact start and end steps, whether to add noise, and whether to keep leftover noise for the next stage. If you're building multi-pass pipelines and want to hand a latent from one sampler to another mid-denoise, this is the node for it.

The everyday KSampler thinks in terms of denoise strength; the advanced one thinks in terms of which steps run. That distinction is what makes staged sampling possible - a base model runs steps 0–N, then a refiner picks up at step N and finishes. Impact Pack's version keeps that power but feeds it from a BASIC_PIPE (built with ToBasicPipe), so it slots cleanly into a graph that's already routing model/clip/vae/prompts down one wire to detailers and upscalers.

The inputs that matter

Standard advanced-KSampler controls, pipe-fed:

  • basic_pipe - the bundle carrying model, clip, vae, positive, negative. Replaces four separate inputs.
  • latent_image - what you're sampling.
  • add_noise (default true) - whether to inject fresh noise at the start. Turn it off when you're continuing another sampler's partially-denoised latent rather than starting clean.
  • start_at_step / end_at_step - the step window this sampler covers. This is the whole reason to use the advanced node: base does 0→20, refiner does 20→30, and so on.
  • return_with_leftover_noise (default false) - set true when a later sampler will finish the job, so this one hands off a latent that isn't fully denoised yet.
  • steps, cfg, sampler_name, scheduler, noise_seed - the usual dials.

The three controls that actually make this "advanced" - add_noise, start_at_step/end_at_step, and return_with_leftover_noise - only earn their complexity when you're chaining samplers. For a single self-contained pass, the plain KSampler (pipe) is simpler and you should use that instead.

The outputs

Same helpful trio as the basic pipe sampler: BASIC_PIPE passed straight through (keep chaining without re-wiring), LATENT (the result, possibly with leftover noise if you asked for it), and VAE pulled out for a convenient decode. Handing you the VAE directly saves a FromBasicPipe every time you want to look at the image - a small thing that adds up across a big graph.

The classic use: base + refiner

The textbook reason to reach for the advanced sampler is the two-model handoff. First instance runs start_at_step 0, end_at_step partway, return_with_leftover_noise true - it does the early, structure-defining steps and passes an unfinished latent along. Second instance runs add_noise false (don't re-noise what's already going), start_at_step where the first left off, end_at_step to the end - it finishes with the refiner. Get the step numbers to line up across the two and it's seamless; get them wrong and you'll see it immediately.

That step alignment is the single thing to be careful about. A gap or an overlap between where one sampler ends and the next begins produces mush or double-processing. Match end_at_step on the first exactly to start_at_step on the second.

Common issues

Two. First, the pipe requirement: you need an actual BASIC_PIPE from ToBasicPipe - loose model/vae wires won't connect. Second, the noise handoff: forgetting add_noise false on the continuing sampler re-noises a latent that was already partway denoised, which wrecks the result. If a base+refiner chain looks scrambled, check add_noise and the step boundaries before anything else. Outside a chaining setup, honestly, don't use this - reach for KSampler (pipe) and save yourself the extra knobs.

Installing it

The node ships with ComfyUI Impact Pack. Install via ComfyUI-Manager (search ComfyUI Impact Pack, Install, restart), or manually: cd ComfyUI/custom_nodes && git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack, then install the pack's requirements.txt in ComfyUI's Python environment (portable build: ..\..\..\python_embeded\python.exe -m pip install -r requirements.txt), and restart. Auto-install was removed in v7.6, so a manual clone needs the requirements step or the pack won't load. Impact Pack is ltdrdata's - the same maintainer as ComfyUI-Manager - so it's well-supported, and this sampler pulls in no models or heavy libraries of its own.

CategoryImpactPack/sampling

Inputs (12)

NameTypeDefaultDescription
basic_pipeBASIC_PIPEbasic_pipe input for sampling
add_noiseBOOLEANtrueWhether to add noise
noise_seedINT00–18446744073709550000Random seed to use for generating CPU noise for sampling.
stepsINT201–10000total sampling steps
cfgFLOAT8.000–100classifier free guidance value
sampler_nameCOMBOsampler
schedulerCOMBOnoise schedule
latent_imageLATENTinput latent image
start_at_stepINT00–10000The starting step of the sampling to be applied at this node within the range of 'steps'.
end_at_stepINT100000–10000The step at which sampling applied at this node will stop within the range of steps (if greater than steps, sampling will continue only up to steps).
return_with_leftover_noiseBOOLEANfalseWhether to return the latent with noise remaining if the noise has not been completely removed according to the noise schedule, or to completely remove the noise before returning it.
scheduler_func_optoptSCHEDULER_FUNC[OPTIONAL] Noise schedule generation function. If this is set, the scheduler widget will be ignored.

Outputs (3)

NameTypeDescription
BASIC_PIPEBASIC_PIPEpassthrough input basic_pipe
LATENTLATENTresult latent
VAEVAEVAE in basic_pipe