SimpleExponentialScheduler
A noise schedule shaped like a smooth exponential drop
- model
- SIGMAS
SimpleExponentialScheduler is a scheduler node - the "how much noise gets removed per step" half of the sampling pair - that lays out a clean exponential drop from high to low noise. It's from the ComfyUI Extra Samplers pack by Clybius, and it outputs SIGMAS for a custom sampling chain. That's its entire job, and it does it in a way that's easy to reason about.
Quick refresher on why the schedule matters, because it's the part people skip. A sampler decides how noise is removed each step; the scheduler decides how much. A linear schedule removes a similar amount every step; an exponential schedule removes a lot early and a little late, following a smooth decay. On the curved trajectories of SD 1.5/SDXL models, schedules like this have real character - and the knowledge base is emphatic that on flow-matching models (Flux-style, near-straight trajectories), aggressively reshaped schedules like Karras are a universal failure, so conservative, smooth schedules are where you want to be. An exponential schedule is comparatively tame, but "conservative" is still the watchword there.
Mechanically, the node computes sigmas by sampling the model's own sigma range at steps points and multiplying by an exponential ramp (the source does torch.linspace(1, 0, steps + 1) inside an exp(log(...)) - an exponential decay from 1 to 0). The denoise input (0 to 1, default 1) trims the schedule to the tail, which is how you do img2img-style partial denoising: denoise 0.4 gives you the first 40% of the schedule, i.e. a lighter-touch pass. The code handles that by computing int(steps / denoise) total sigmas and slicing the last steps + 1 - so lower denoise effectively stretches the schedule.
The inputs that matter:
steps- how many sigmas. Default 20.denoise- the fraction of the schedule you actually run. 1.0 is full denoise; 0.4–0.6 is the classic refinement/upscale-pass range.model- required, because the schedule is derived from the loaded model's own sigma range (different architectures have different ranges).
Output: a SIGMAS tensor, wired into the sigmas input of a SamplerCustom-style node (or any custom sampler).
One practical note specific to this pack: the scheduler-side injection (add_schedulers()) is commented out in the pack's __init__.py, so this node exists as a standalone SIGMAS node rather than being added to the scheduler dropdown - you grab it from the node menu under the pack's scheduler category and wire it in directly. If you expected a new dropdown entry and can't find it, that's why.
Install is the shared pack routine - ComfyUI Manager → "ComfyUI Extra Samplers", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Clybius/ComfyUI-Extra-Samplers
then restart. No model downloads; dependency kornia. If your goal is just a controllable exponential-ish schedule for a hires pass, this node plus a low denoise is a clean way to get it without hunting through dropdowns.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| steps | INT | 201–10000 | — |
| denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |