Model Shift Only
The shift knob, without any of the FreeU baggage
- model_shifts
If you've been on the newer generation of models - the flow-matching ones - you've probably seen a shift setting and wondered what it actually does. Short version: it controls where in the denoising process your sampling effort gets spent, between establishing composition early and refining detail later. Model Shift Only is Sage Utils' clean little node for setting that one knob, with nothing else attached. It produces a model_shifts bundle that the pack's Load Models node applies to your model automatically.
The "Only" in the name is doing the work: this is the shift-only slice of the pack's model tuning. If you want shift and FreeU in one node, that's the combined Model Shifts node. This one is for when shift is all you're after.
How it works
Two inputs:
shift_type- a dropdown with three options:None,x1, orx1000. This is the scale the shift value is interpreted on.x1is for models that work in a 0–1 timestep range - AuraFlow and Lumina 2 are the named cases, straight from the node's own tooltip.x1000is for everything else, which is most models you'll meet.shift- how much shift to apply (default 3, range 0–100).
The node packages those into a model_shifts bundle, and when you connect it to the model_shifts input on Load Models, the loader inserts the shift patch into the model before sampling. That's the whole mechanism - you're adjusting the timestep schedule of the model, not adding a second model or an extra pass.
What shift actually buys you
From the flow-matching playbook: shift is model-specific, and the default of 3 is a guess that isn't right for every model. Some models want a lot more - the Z-Image family, for example, has a well-known preference for shift around 7 rather than 3. When a model's documentation or a community thread recommends a shift value, this is where you type it in. When you don't know, 3 is a reasonable starting point, and the whole point of having this as a separate knob is that you can dial it while everything else stays put.
Wiring it up
Sage_ModelShiftOnly ──model_shifts──▶ Sage_LoadModelFromInfo ──model──▶ sampler
That's the entire integration: shift node → loader's model_shifts input → patched model out.
Installing
Standard Sage Utils install:
cd ComfyUI/custom_nodes
git clone https://github.com/arcum42/ComfyUI_SageUtils.git
cd ComfyUI_SageUtils && pip install -r requirements.txt
Restart ComfyUI, or grab "Sage Utils" via ComfyUI Manager. No models to download - shift is pure scheduling logic.
Where people get burned
The big one: shift only matters for flow-matching / rectified-flow models. If you're running an SD 1.5 or SDXL checkpoint, this knob does almost nothing and you're better off without it. And there's a classic scheduler gotcha - some schedulers (the community calls out bong_tangent specifically) apply their own sigma shift and ignore the one you set here. If you turn the dial and nothing changes, that's not this node lying to you; check your scheduler before you conclude shift is broken. One more: x1 vs x1000 is not a quality choice, it's a unit system. Using x1000 with a value meant for x1 (or vice versa) makes your shift value astronomically off, so match the scale to the model family.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| shift_type | COMBO | None | The type of shift to apply to the model. x1 for Auraflow and Lumina2, x1000 for other models. |
| shift | FLOAT | 3.000–100 | How much shift to apply to the model. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model_shifts | MODEL_SHIFTS | Model shift settings output for the loader. |