Nodes/ComfyUI-UtilsCollection/Sigmoid Offset Scheduler
ComfyUI Node

Sigmoid Offset Scheduler

The S-curve that made Chroma sing

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
Sigmoid Offset Scheduler
  • model
  • SIGMAS
steps30
square_k1.00
base_c0.50
start_sigma1.000

Some models just don't like a plain linear schedule. UC_SigmoidOffsetScheduler builds a sigmoid-shaped denoising curve - gentle at the start, aggressive in the middle, gentle at the end - with two knobs to shape how sharp and where the action sits. It was built for the Chroma model, and it's a great reminder that the noise schedule is a real creative input, not just a sampler's behind-the-scenes detail.

The mechanism

A scheduler decides how much noise to remove at each step. Linear removes a constant amount; Karras concentrates the work in the middle. Sigmoid offset is another member of that reshaped-curve family: it produces an S-curve over the denoising trajectory, so the first and last steps make only small changes while the middle steps do the heavy lifting. The shape is controlled by two inputs:

  • square_k (0–10, default 1) - the sharpness of the transition. Higher values make the denoising transition sharper, closer to a step function.
  • base_c (−5 to 5, default 0.5) - where the curve sits. Negative shifts more denoising early, positive pushes it later.

There's also start_sigma (0–1, default 1), which adjusts the initial denoising strength - 1 leaves it unchanged, and per the pack README this scheduler "retains its model-specific start_sigma adjustment," so it's tuned per model rather than being a global denoise. steps defaults to 30 (range 1–10000), and the node takes a model input because it reads the model's own model_sampling object to build a schedule calibrated to that checkpoint's sigma range - you can't just guess sigmas for a model you haven't inspected.

Output is a single SIGMAS feed, wired into SamplerCustom or any custom-sampling chain (ModelSampling → this → SamplerCustom). For img2img, drop UC_SigmaRescale after it to set your start noise level.

When to reach for it

The README is blunt about provenance: originally made for Chroma. If you're on a flow-matching or Chroma-family checkpoint and a straight schedule leaves you wanting more mid-trajectory definition - or you're chasing that particular look - this is the knob. It's a niche tool, honestly; if you don't have a model that rewards a reshaped curve, the default linear schedule is fine and you're not missing anything. But when a model "feels" wrong at low steps, trying a sigmoid offset is a classic fix before you start blaming the sampler.

Install

Part of ComfyUI-UtilsCollection:

cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection

Restart, or install via ComfyUI Manager (search "UtilsCollection"). No model downloads.

Gotchas

This node is the migration target for the old standalone ComfyUI_SigmoidOffsetScheduler pack - the README explicitly says to remove that pack before accepting ComfyUI's "replace workflow" prompt, or you'll get duplicate/conflicting nodes. The migrated scheduler also registers under the core-compatible ID sigmoid_offset, so it can appear in Core's scheduler selector dropdowns too. And remember: a reshaped sigma curve helps some architectures and actively hurts others - the KB's notes on flow matching warn that aggressive schedules distort straight flow-matching trajectories, so test before you standardize on it.

Categorysampling/custom_sampling/schedulers

Inputs (5)

NameTypeDefaultDescription
modelMODEL
stepsINT301–10000
square_kFLOAT1.000–10Higher values make the denoising transition sharper.
base_cFLOAT0.50-5–5Move more denoising earlier or later.
start_sigmaFLOAT1.0000–1Adjust initial denoising strength. 1 leaves it unchanged.

Outputs (1)

NameTypeDescription
SIGMASSIGMAS