π Flow Match Scheduler
One shift knob, any flow-matching model
- SIGMAS
Every flow-matching model - Z-Image, Flux, SD3, SD3.5 - shares the same underlying trick: a straight-line sigma schedule you can bend with one parameter, usually called shift. Push it up and the model spends more of its steps at high noise, working out composition before it commits to detail; push it down and it moves through the low-noise, detail-heavy end faster. FlowMatchScheduler is that single knob, exposed as a plain node so you're not locked into whatever your checkpoint's built-in loader defaults to.
Why a generic scheduler, when the pack also ships a Z-Image-specific one
This pack's other scheduler, ZImageTurboScheduler, is Z-Image-Turbo only - it hardcodes the linear schedule that model was distilled on. FlowMatchScheduler is the general-purpose version underneath it: at shift = 1.0 it produces that same linear curve, so the two are mathematically equivalent for Z-Image-Turbo. Where this node earns its keep is everywhere else - SD3, SD3.5, or Flux, where the "right" shift isn't 1.0 at all. The node's own tooltip gives you the map straight out: 1.0 for Z-Image, 3.0 for SD3, and 2β6 for Flux depending on resolution. Higher shift roughly means "spend more time on composition, less on fine detail" - the node description puts it as "more time at high noise = better composition."
If you already know which model you're targeting and it isn't Z-Image, this is the node to reach for instead of hunting through a model-specific loader.
The inputs and outputs that matter
Two required inputs, both plain numeric widgets:
steps(INT, default 20, range 1β1000) - how many sigma values the schedule produces. 20 is a reasonable SD3-ish default; drop it for a distilled/turbo-style model and raise it for a full-quality one.shift(FLOAT, default 1.0, range 0.1β10, step 0.1) - the composition/detail split. The tooltip is the cheat sheet: 1.0 = Z-Image, 3.0 = SD3 default, 2β6 = Flux (resolution-dependent - see this pack'sFlowMatchSchedulerDynamicif you want that computed for you automatically).
One output, SIGMAS, wired the same way as every other scheduler in this pack: into the sigmas input on SamplerCustom / SamplerCustomAdvanced, next to your model, sampler, and noise.
How to install it
Via ComfyUI Manager, search "ComfyUI-ZImageTurbo-FlowSampler" and install. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/ComfyUI-ZImageTurbo-FlowSampler
Restart ComfyUI afterward. No extra dependencies, no model downloads - it's a scheduler function, not a model loader.
Common issues & troubleshooting
Picking a shift value that ignores your resolution on Flux. Flux's own official shift interpolates between a low value at small images and a higher one at large images - the 2β6 range this node's tooltip quotes isn't one fixed number, it moves with resolution. If you're on Flux and don't want to eyeball it, use FlowMatchSchedulerDynamic from this same pack instead, which computes the number for you.
Confusing this shift with a model's built-in guidance/CFG value. They're unrelated knobs. Shift reshapes where in the noise trajectory the model spends its steps; CFG (or a distilled model's baked-in guidance) controls how strongly it follows your prompt. Changing one won't fix a problem caused by the other.
Using Karras-style expectations on the step count. Because this schedule is a straight-line flow-matching curve, not a curved DDPM one, don't assume more steps behaves the way it does on SD1.5/SDXL. Flow-matching models compress meaningfully into far fewer steps than that intuition expects - check your model's own recommended step count rather than defaulting to "more is safer."
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| steps | INT | 201β1000 | β |
| shift | FLOAT | 1.00.1β10 | 1.0=Z-Image, 3.0=SD3, 2-6=Flux (resolution dependent) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | β |