Nodes/Sage Utils/Model Shift Only
ComfyUI Node

Model Shift Only

The shift knob, without any of the FreeU baggage

By arcum42·Created 2 years ago·Updated 28 days ago· 33
Model Shift Only
    • model_shifts
    shift_typeNone
    shift3.00

    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, or x1000. This is the scale the shift value is interpreted on. x1 is 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. x1000 is 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.

    CategorySage Utils/model

    Inputs (2)

    NameTypeDefaultDescription
    shift_typeCOMBONoneThe type of shift to apply to the model. x1 for Auraflow and Lumina2, x1000 for other models.
    shiftFLOAT3.000–100How much shift to apply to the model.

    Outputs (1)

    NameTypeDescription
    model_shiftsMODEL_SHIFTSModel shift settings output for the loader.