Nodes/Restart Sampling/KSampler With Restarts (Simple)
ComfyUI Node

KSampler With Restarts (Simple)

The no-brainer on-ramp to restart sampling

By ssitu·Created 3 years ago·Updated 9 months ago· 89
KSampler With Restarts (Simple)
  • model
  • positive
  • negative
  • latent_image
  • LATENT
seed0
steps20
cfg8.00
sampler_name
scheduler
denoise1.00
segmentsdefault

Restart sampling sounds more exotic than it is. You're denoising your latent step by step, same as always - then at a couple of chosen points you deliberately add noise back, push the latent up the noise ladder again, and re-denoise through that stretch. The idea, from the 2023 paper "Restart Sampling for Improving Generative Processes," is that revisiting high-noise territory forces the model to re-commit to coherent structure instead of blindly following the first path it found. In practice it buys you extra quality for a known cost in extra steps.

KSampler With Restarts (Simple) is the least intimidating way to try it: it's a stock KSampler with exactly one new input, a segments string, and the restart segments reuse the same scheduler you already picked. No second dropdown to learn. If you're new to this pack, start here.

Honest positioning, though: this is a 2024-era technique. It had a genuine moment - the creator of the RES4LYF sampler pack first surfaced in the community posting restart-sampled Stable Cascade images - then mostly faded as better samplers showed up. It's still a legitimate tool, just a specialist's tool, not a new default.

Where it belongs: restart sampling is built around ODE samplers. The README is blunt that it's "not supposed to be used with SDE samplers," and the pack notes that SDE or momentum samplers with restarts is "likely not an improvement over normal sampling." So you want converging samplers - euler, heun, dpmpp_2m, dpm_2, lms - on DDPM-style checkpoints (SD 1.5, SDXL and their finetunes). For flow-matching models (Flux, Z-Image, anything rectified-flow), skip this entirely; re-injecting noise fights a near-straight trajectory.

The one field that matters: segments

Set segments to default and you're done - that expands to the pack's recommended [3,2,0.06,0.30],[3,1,0.30,0.59]. Each bracket is one restart segment with four values:

  • N_Restart - how many times denoising restarts
  • K - how many passes each restart runs
  • t_min - the low-noise end of the segment (where the restart kicks in)
  • t_max - the high-noise end (how far back up the ladder you re-noise)

Each segment adds (N_Restart - 1) * K steps to your total. So default on a 20-step run costs four extra steps - cheap enough to just try.

You can also write a1111 to mimic A1111 WebUI's restart behavior, or define your own segments. The t values accept three forms: a positive number is a sigma, a negative number between -0 and -1000 is a timestep, and a quoted "25%" is a percentage of sampling. You can mix them in one string, e.g. [2, 2, -500, "10%"], [3, 2, 5.3, -3].

Everything else is a KSampler

model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise - all standard. One quirk worth knowing: on this Simple node the scheduler dropdown only lists the seven restart-compatible schedulers (normal, karras, exponential, simple, ddim_uniform, sgm_uniform, simple_test), because those same schedulers are reused for the restart stretches. Output is a single LATENT that wires into your VAE decoder exactly like any KSampler's.

Installing

Manager → Custom Nodes Manager → search "Restart Sampling" → Install, then restart ComfyUI. Or from the command line:

cd ComfyUI/custom_nodes
git clone https://github.com/ssitu/ComfyUI_restart_sampling

Then restart ComfyUI. That's the whole install: this pack has no requirements.txt, no model downloads, no heavy dependencies - a rarity in an ecosystem where most nodes drag a dependency tree behind them.

Where people get burned

Wrong output usually means an SDE sampler got left in the dropdown - swap to euler or heun. If nothing seems to restart, check the console: invalid or overlapping segments are ignored with a warning, because segments are matched to their nearest sigma in the schedule and two segments with close t_min values can overwrite each other. And if you want to see exactly what it's planning, set COMFYUI_VERBOSE_RESTART_SAMPLING=1 before launching ComfyUI - the node will print every step and restart to the console.

Categorysampling

Inputs (11)

NameTypeDefaultDescription
modelMODEL
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.000–100
sampler_nameCOMBO24 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +18
schedulerCOMBO7 options: normal, karras, exponential, simple, ddim_uniform, sgm_uniform, +1
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
denoiseFLOAT1.000–1
segmentsSTRINGdefault

Outputs (1)

NameTypeDescription
LATENTLATENT