Stable Diffusion 3 Sigma Scheduler
The SD3 Medium schedule, finally pinned to its source
- sigmas
- schedule_info
If you still run original SD3 Medium, you've probably noticed the settings are a mess. Every workflow seems to pair it with a different scheduler and a different shift, and the results disagree enough that people write the model off as inconsistent. This node is the anti-mess: it hands you the sigma schedule, and it tells you exactly which source it came from instead of hoping a generic BasicScheduler picks something close enough.
SD3 is a rectified-flow MMDiT, and on flow-matching models the sigma schedule does most of the work. Reshaping it aggressively - Karras, exponential - tends to distort a trajectory that's already near-straight, which is why the flow-model advice is "leave the schedule alone." The catch is that "leave it alone" isn't well-defined for SD3, because the publisher's reference recipe and what ComfyUI/Diffusers actually shipped aren't the same thing. That's the whole reason this node exists.
How it works
Sigmax.SD3SigmaScheduler builds the schedule with a clean-room FlowMatch construction and a direct_ratio_shift. The key input is mode, with two source-qualified lanes:
- Publisher Reference (1.0) - the original SD3 Medium recipe: shift ratio 1.0, reference 50 steps.
- Comfy/Diffusers Fixed (3.0) - the pinned ComfyUI/Diffusers surface: shift ratio 3.0, reference 28 steps.
You pick one explicitly. The node never silently falls back between them. The README's recommendation: publisher lane at 50 steps, or the fixed lane at 28. For the official recipe, leave strict_source on (its default is off, so flip it) - the README warns to keep strict source modes enabled for official variants.
The other inputs are the usual utility set: steps, plus start_step/end_step to slice a subset (leave end_step at -1 for the full schedule) and already_shifted for when your model has been time-shifted upstream.
Outputs and wiring
sigmas(SIGMAS) - the schedule itself. Wire it into the custom-sampling path that accepts external sigmas, replacingBasicScheduler. The node does not replace the sampler and does not load the model.schedule_info(STRING) - a JSON provenance report: profile id, shift ratio, fingerprints, guidance (the recipe's suggested CFG is 5.0 on the publisher lane, 7.0 on the fixed lane), and any warnings. It's the author's own receipt for what got built - worth a glance when results look off.
One thing to know: this covers original SD3 Medium only. SD3.5, the Turbo variants, and ControlNet paths are explicitly out of scope. Don't expect it to babysit a newer model.
Install
From ComfyUI Manager, search for ComfyUI-Sigmax and install, then restart. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI-Sigmax comfyui-sigmax
Restart ComfyUI. No model downloads, no pip dependencies - the pack's dependencies list is empty by design. You just need Python 3.10+ and ComfyUI 0.29.0+.
Where people get burned
The one real trap is stacking: Sigmax bakes the shift into the sigmas, so don't pass the output through another scheduler or add a separate time shift - that's the README's "schedule appears shifted twice" failure mode. Connect the SIGMAS once, straight into your sampling path. And if you change steps away from the recipe's reference counts, the schedule becomes "modified" - the node still builds it, but schedule_info flags it, and honestly on SD3 Medium you're usually better off trusting the pinned numbers than improvising.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | 2 options: Publisher Reference (1.0), Comfy/Diffusers Fixed (3.0) | |
| steps | INT | 281–10000 | — |
| strict_source | BOOLEAN | false | — |
| start_step | INT | 00–9999 | — |
| end_step | INT | -1-1–10000 | — |
| already_shifted | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |
| schedule_info | STRING | — |