CapitanZiT Linear Sigma (for Z-Image Turbo)
The one-line sigma node that taught Z-Image Turbo to behave
- SIGMAS
Z-Image Turbo is a picky eater. It's a distilled flow-matching model trained for 8–9 steps at CFG 1, and it's happiest when you feed it back the same even, linear noise schedule it saw in training. CapitanZiT Linear Sigma is the node that does exactly that: it emits a SIGMAS ramp from 1.0 (full noise) straight down to 0.0 (clean), one entry per step plus a terminal zero. It's the original node in the ComfyUI-CapitanZiT-Scheduler pack, and honestly, it's the reason the pack exists at all.
Why bother? Because the noise schedule is a real knob on flow-matching models, just not in the way SDXL taught you. Karras and friends concentrate denoising effort in the middle of the trajectory, which is a correction on a curved DDPM path and a straight-up distortion on a near-straight flow trajectory. Distilled models were trained with a specific schedule, and feeding them noise levels they never saw is how you get that "looks close but wrong" low-step output. A flat linear ramp is about the most conservative thing you can feed a flow model - which is exactly what Turbo's distilled pipeline (the DMDR / rectified-flow approach in the Diffusers implementation) was built on.
The mechanism is a single line of PyTorch: torch.linspace(1.0, 0.0, steps + 1). That's it. The whole node is maybe fifty lines of code, has no dependencies beyond what ComfyUI already ships, and downloads nothing. There's no magic here, and the author doesn't pretend otherwise.
The honest take: you can reproduce this with shift = 1 on ComfyUI's own simple scheduler - someone pointed that out on Reddit the week the pack shipped, and they weren't wrong. The node's real value is convenience: the same pack registers capitanZiT as a named scheduler in every KSampler's dropdown, so you get plug-and-play without building custom sampling at all.
What you actually set
The node takes exactly one input - steps, default 9, range 1–100 - and returns a single SIGMAS output (length steps + 1, so [1.0, 0.875, …, 0.0] at 9 steps). Two ways to run it:
- The easy path: KSampler, sampler
euler, schedulercapitanZiT, steps 8–9, CFG 1. - The flexible path: CapitanZiT Linear Sigma → SIGMAS into
SamplerCustomAdvancedorSamplerCustom, with the sampler of your choice.
If you want this to pair with the pack's own Minimal Change Flow sampler, take the second path - that's the whole point of a standalone sigma node.
Install
Either route works, and there's nothing heavy attached:
cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/ComfyUI-CapitanZiT-Scheduler
then restart ComfyUI. Or use ComfyUI Manager → Custom Nodes Manager → search "ComfyUI-CapitanZiT-Scheduler" → Install. No requirements.txt, no model downloads, no new Python packages - the pack is pure code.
Where people get burned
- CFG 1 is not a suggestion. Turbo is guidance-distilled; set CFG 7 and you're applying the correction twice and burning the image. At CFG 1 your negative prompt field does nothing - that's normal.
- Pair it with ModelSamplingAuraFlow at shift ~7, not ComfyUI's default 3. The community's big Turbo sweeps converge on that.
- Keep it at 8–9 steps. The linear schedule works at other counts, but the distilled model was tuned for the low single digits of steps, and 4 is undershooting it.
- Don't expect it to fix seed sameness. Turbo's near-identical outputs across seeds is a model trait (Base fixed it, not any scheduler), so a linear ramp won't bring variety back.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| steps | INT | 91–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |