MD: GITS Scheduler (Boomerang)
The tanh 'boomerang' schedule that clusters steps where the model is moving fastest
- model
- sigmas
- plot
- schedule_info
Schedulers decide where your sampling steps actually go. A dumb schedule spreads them evenly; a smart one concentrates them where the image is changing most. GITS ("gradient-informed timestep scaling") is the pack's smart one - it warps the schedule with a tanh curve so steps cluster in the high-curvature middle of denoising, where most of the detail actually gets decided, and thins out over the stable early and late regions.
The "boomerang" in the category name is the shape: the tanh curve spends a burst of steps mid-flight and comes back. The core file describes it exactly that way - "GITS 'Boomerang' (tanh) S-Curve Schedule Generation."
How it works
Feed it a model and it auto-detects that model's native sigma range (max/min noise limits), which the tooltip insists on - it's how the schedule ends up mathematically correct instead of guessed. You pick a steps count and a curvature_preset, and it returns three outputs: sigmas (wire into your KSampler's scheduler slot), plot (a rendered image of the schedule so you can actually see where steps landed), and schedule_info (an analytics string).
The curvature presets are the dial:
- Linear (0.0) - no clustering.
- Standard (1.0) - balanced for the usual 20–30 steps.
- Heavy (2.0) - made for 8–12 step Lightning/Turbo workflows. The tooltip is explicit: use Heavy for distilled models.
- Extreme (3.5) - ultra-low step counts only.
- Custom - activates the
curvature_scaleslider (0–5) for manual clustering intensity.
If that language sounds familiar, it's the same intuition behind AuraFlow's shift and the flow-matching schedulers the ecosystem is converging on: effort distribution is model-specific, and a schedule tuned to a distilled 8-step model is a different beast from one for a 30-step run. GITS is this pack's take on that knob.
The inputs that matter
steps- 8–12 with Heavy, 20–30 with Standard. The tooltip gives you the pairing directly.denoise- truncates the schedule for img2img. 1.0 for txt2img, 0.4–0.7 for refinement. Lowering it slices from the start, which preserves the low-noise steps - the opposite of how some people expect it to work.sigma_override_max/sigma_override_min- manual noise-range overrides. Leave at 0 (auto) unless you know why; the tooltip warns overrides can cause burn-in.
Why you'd bother
If your images are a mess at low steps, the fix is often not "more steps" but "put the steps in the right place." That's the whole argument for this node. It's also unusually debug-friendly for a scheduler - the plot output shows you the schedule shape, and debug_mode (with an "Analytics Report" option) prints step-density metrics, so you can actually see where the steps went instead of trusting a formula.
The honest caveat: it's a niche tool from a niche pack. If you're happy with the built-in schedulers plus a standard shift node, GITS is solving a problem you may not feel. But for distilled checkpoints and for anyone who wants the schedule visible, it's a thoughtful alternative.
Installing
It's part of MD Nodes:
cd path/to/ComfyUI/custom_nodes
git clone https://github.com/MDMAchine/ComfyUI_MD_Nodes.git
cd ComfyUI_MD_Nodes && pip install -r requirements.txt
Or via ComfyUI Manager (search MD Nodes), then restart. As with the whole pack, the install is heavier than the node warrants - audio libraries, matplotlib, and client SDKs all come along.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | MODEL INPUT • Purpose: Auto-detects native sigma range (max/min noise limits). • Requirement: Absolute necessity for mathematically accurate scheduling. • Output: Generates sigmas tuned specifically to this model. | |
| steps | INT | 201–10000 | TOTAL STEPS • Purpose: Number of denoising iterations to divide the schedule into. • Range: 4 (Turbo/Lightning) to 50+ (High Quality). • Trade-offs: Lower steps require 'Heavy' curvature to cluster math properly. ⭐ Recommended: 8-12 with 'Heavy' preset, or 20-30 with 'Standard' preset. |
| curvature_preset | COMBO | Standard (1.0) | CURVATURE PRESET • Purpose: Controls the 'Boomerang' (tanh) intensity of step clustering. • Standard (1.0): Balanced for standard 20-30 steps. • Heavy (2.0): Optimized specifically for 8-12 step workflows. • Extreme (3.5): Use only for ultra-low step counts. ⭐ Recommended: Use 'Heavy' for Lightning/Turbo models. |
| denoise | FLOAT | 1.000–1 | DENOISE STRENGTH • Purpose: Truncates the schedule for Img2Img or refinement workflows. • Range: 0.0 (None) to 1.0 (Full Generation). • Trade-offs: Lowering this slices from the start, preserving low-noise steps. ⭐ Recommended: 1.0 for Txt2Img, 0.4 - 0.7 for Img2Img. |
| curvature_scaleopt | FLOAT | 1.00–5 | CUSTOM CURVATURE • Purpose: Manual control of clustering intensity. • Requirement: Active ONLY when Preset is set to 'Custom'. • Effect: Higher values tightly cluster steps in the middle noise regions. ⭐ Recommended: 1.0 |
| sigma_override_maxopt | FLOAT | 0.00–1000 | SIGMA MAX OVERRIDE • Purpose: Manually force the starting noise level. • Trade-offs: Overrides native model detection. Can cause burn-in. ⭐ Recommended: 0.0 (Auto-detect). |
| sigma_override_minopt | FLOAT | 0.0000–1000 | SIGMA MIN OVERRIDE • Purpose: Manually force the ending noise level. • Trade-offs: Setting too low risks numerical instability. ⭐ Recommended: 0.0 (Auto-detect). |
| debug_modeopt | COMBO | 0 - Silent | LOGGING VERBOSITY • Purpose: Controls console output and structural profiling. • Options: 0 (Production), 1 (Analytics Report), 2 (Full trace). ⭐ Recommended: 1 - Info to visualize step density metrics. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |
| plot | IMAGE | — |
| schedule_info | STRING | — |