Nodes/Tenser Tensor/TT KSampler (Two Stages)
ComfyUI Node

TT KSampler (Two Stages)

Draft with one sampler, refine with another, in a single node

By tenser-tensor·Created 7 months ago·Updated 5 months ago· 0
TT KSampler (Two Stages)
  • model
  • positive
  • negative
  • latent
  • LATENT
seed0
cfg1.5
draft_steps25
refiner_steps25
draft_sampler_name
draft_scheduler
refiner_sampler_name
refiner_scheduler
draft_denoise0.70
refiner_denoise1.00

Back in the SDXL era, the "base model then refiner model" two-pass workflow was the thing. The pattern survived even after the refiner models faded: draw the picture coarsely with a fast sampler, then let a second sampler finish it off. TT KSampler (Two Stages) packages that exact idea into one node - two sampling passes with different samplers, schedulers, and step budgets, back to back, ending in a single LATENT.

It's from TenserTensor, the pack that exists to fold common node chains into single blocks. This is its sampler family's "automated draft + refine" entry.

How the two stages split

Everything you'd expect from a sampler is there - model, positive, negative, latent, seed, cfg - and then it forks:

  • Draft pass: draft_steps (default 25), draft_sampler_name, draft_scheduler. This is the fast, cheap pass that establishes composition. draft_denoise (default 0.7) sets how much of the latent's structure it keeps.
  • Refiner pass: refiner_steps (default 25), refiner_sampler_name, refiner_scheduler, refiner_denoise (default 1.0). This continues from where the draft left off.

Looking at the source, it's implemented as a continuous schedule: the draft runs steps 0 through draft_steps, then the refiner takes over from draft_steps to draft_steps + refiner_steps with its own sampler and scheduler. So it's not two independent generations - it's one denoising trajectory with a mid-course sampler swap. That's the honest description, and it's also why the two-pass trick works: you get cheap structure first, then a high-quality sampler polishes the details without re-rolling.

The classic setup

Fast draft, careful refine. Something like:

  • Draft: euler_ancestral or dpmpp_2m on a simple scheduler, 20 steps.
  • Refine: dpmpp_2m / dpmpp_2m_sde with karras, 20–25 steps.

Total steps = draft_steps + refiner_steps. If you set both to 25, you're running 50 steps of sampling, so budget accordingly - this node makes it easy to accidentally double your render time. The default draft_denoise of 0.7 versus refiner_denoise of 1.0 is a reasonable starting split: the draft doesn't fully commit, the refiner does.

Caveats and install

Honest take: on modern flow-matching models this old-school draft/refine pattern buys you less than it did on SDXL, and the community mostly moved to a single good sampler or a separate hires pass. It's still handy when you genuinely want two sampling strategies in one shot, or when you're replicating an old SDXL refiner-style workflow without the refiner model.

cd ComfyUI/custom_nodes
git clone https://github.com/tenser-tensor/ComfyUI-TenserTensor

or ComfyUI Manager → "TenserTensor" → install → restart. Deps: gguf, kornia.

One more standing note: it's a legacy V1 node. The pack migrated to ComfyUI's API V3 and parked V1 samplers in Deprecated/, removal planned for a future major release. It works today; just don't expect it to outlive the pack's V3 line. And when in doubt, remember the cfg default here is 1.5 - that's already tuned for modern guidance-distilled models, so resist the urge to crank it.

CategoryTenserTensor/Sampling

Inputs (14)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
seedINT00–18446744073709550000
cfgFLOAT1.50–100
draft_stepsINT251–10000
refiner_stepsINT251–10000
draft_sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
draft_schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
refiner_sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
refiner_schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
draft_denoiseFLOAT0.700–1
refiner_denoiseFLOAT1.000–1

Outputs (1)

NameTypeDescription
LATENTLATENT