LowStep Sigma Scheduler
Six steps, shift already baked in
- model
- SIGMAS
The name is the whole pitch. LowStepSigmaScheduler is a scheduler node - the thing that produces the SIGMAS a custom sampler walks down - tuned for the 4-8 step world where flow-matching models actually live. It ships in the SA-ODE pack alongside a low-step sampler, and its selling point is that the timestep shift is already baked into the sigmas it hands you. You don't need a separate ModelSampling node and a scheduler choice and a prayer; you set two numbers and feed the result straight into a sampler.
Why that matters is worth one paragraph, because it's the reason this node exists at all. Flow-matching models (Flux, Z-Image, Wan 2.2, everything new since 2024) are trained to follow a near-straight path from noise to image. A straight path can be crossed in a handful of big jumps - that's why steps collapsed from 20-50 to 4-8 - and it's also why the old scheduler advice stopped working. Karras and exponential redistribute denoising effort to correct a curved DDPM path, and on a straight path that's a distortion, not a correction. What replaced scheduler-shape tuning is a single shift knob that decides how effort splits between composition and detail. This node gives you exactly that knob, directly.
How it works
Grounded in the actual source, it's delightfully small. The node takes linear timesteps t from 0 to 1, sets sigmas = 1 - t (so pure noise at 1, clean at 0), then applies the standard flow-matching rescale:
sigma = shift * sigma / (1 + (shift - 1) * sigma)
and forces the final sigma to exactly 0. That's the same shift family as ModelSamplingAuraFlow and friends, except here the shift is applied to the sigmas themselves rather than read from a separate node - which neatly dodges the classic trap where a scheduler like bong_tangent ignores your workflow's shift entirely. There's nothing for the shift to ignore here.
The three inputs, quickly
Only three, and a beginner sets two of them:
- model (
MODEL) - not a knob. The node reads your model'smodel_samplingobject so the sigmas land on the right device and scaling. Feed it the same MODEL that goes into your sampler. - steps (
INT, 1-20, default 6) - your step count. Six is the designed operating point; that's the "low step" the node is named for. - shift (
FLOAT, 1-10, default 3) - the composition-vs-detail balance. 3 is ComfyUI's usual default; some models want more (Z-Image Turbo wants roughly 7). If your low-step output is mushy, nudge this up; if it's over-cooked, nudge down. One step at a time.
The single output is SIGMAS, and it wires into the sigmas input of CustomSampler or SamplerCustom next to a SAMPLER node - this pack's own SAODELowStepSampler is the obvious pairing.
Installing it
Nothing special, and unusually for a custom node, nothing heavy:
cd ComfyUI/custom_nodes
git clone https://github.com/WangDianhui/ComfyUI-SA-ODE_Sampler
Then restart ComfyUI. Or just search "SA-ODE" in ComfyUI Manager. There's no requirements.txt, no model files to download, no venv drama - the whole pack is two small Python files that only import torch and ComfyUI internals. This is the rare custom node that can't break your dependency tree, because it barely has one.
Where people get burned
The honest caveat: this pack has one star on GitHub and hasn't been touched since October 2025 - it looks like a two-day project that shipped and got abandoned. The code is simple enough to read and trust, but there's no maintenance, and the pack reaches into ComfyUI internals to register itself, so a future ComfyUI update could break it with nobody around to fix it.
Two practical notes. First, installing the pack also registers lowstep as a scheduler name in the stock KSampler dropdown - same schedule, usable without ever touching this node. Second, this is a flow-matching schedule. On a DDPM-style checkpoint (SD 1.5/SDXL and their finetunes like Illustrious or Pony), low-step flow-matching thinking doesn't apply and you should stick with what that model family likes. Check what your checkpoint is built on before you trust the 6-step default.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| steps | INT | 61–20 | — |
| shift | FLOAT | 3.01–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |