Nucleus-Image Model Shift
The sigma shift knob — the one tuning dial flow-matching models actually care about
- model
- NUCLEUS_MODEL
On a flow-matching model, the knob that actually moves the needle is the timestep shift - the thing that decides how sampling effort splits between composition and fine detail. Nucleus-Image Model Shift is the pack's way of turning that knob. It sits between the Transformer Loader and the Sampler, takes a NUCLEUS_MODEL in, and hands a modified one out.
What it's overriding
Nucleus-Image's scheduler config (bundled in the pack) declares a base shift of 0.5 and a max shift of 1.15 - those are the model's intended defaults, and they're what the node's own default inputs happen to be. If you don't connect this node at all, the Sampler uses the scheduler's built-in defaults and you never think about it. Connect it, and you can override those two values.
The mechanism is almost embarrassingly simple: the node copies the model's scheduler_config dict and writes your base_shift and max_shift into it. That dict is what the Sampler reads when it builds its flow-matching noise schedule. The KB's flow-matching panel explains why this matters at all: with a straight noise-to-image trajectory, scheduler choice mostly stopped mattering, and shift became the real quality lever - but it's model-specific, and Nucleus-Image's defaults were already tuned by the authors.
Inputs and output
- model - required
NUCLEUS_MODELfrom the Transformer Loader. - base_shift - FLOAT, default 0.5, range 0–10.
- max_shift - FLOAT, default 1.15, range 0–10.
Output is a NUCLEUS_MODEL that feeds the Sampler (you can chain it with CFG Rescale before the Sampler, in either order).
The honest gotcha - read this before you tune
This is one of the three nodes the pack author flags as "passed code review, not runtime-tested," and there's a specific reason to be careful here. In the shipped code, the Sampler builds its schedule from the model's scheduler config, but the exact key it reads is shift - and the Model Shift node writes base_shift / max_shift, not shift. So on the checkout I looked at, turning this dial may not actually reach the sampling math. If you set a custom shift and the output is byte-for-byte identical, that's why. Check whether your clone has been updated, or test with a changed value and a fixed seed before you trust it.
If you're on a version where it does apply, the practical advice is short: leave it at the defaults (0.5 / 1.15) for standard resolutions. Shift tuning is for when you change resolution substantially and want to rebalance composition versus detail - not something to fiddle with while you're still dialing in cfg and prompts. When everything looks flat, raise max_shift a touch; when it looks smeared and over-sharpened, lower it. Small steps.
Installing
Standard pack install - ComfyUI Manager (search "Nucleus-Image") or:
cd ComfyUI/custom_nodes
git clone https://github.com/a180265/Nucleus-Image-comfyui-beta
restart. No model files of its own; it's a passthrough configurator. The heavy dependencies (torch 2.11+ with grouped_mm, diffusers 0.38+) are shared with the rest of the pack, and the README is your source for them.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | NUCLEUS_MODEL | — | |
| base_shiftopt | FLOAT | 0.500–10 | — |
| max_shiftopt | FLOAT | 1.150–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| NUCLEUS_MODEL | NUCLEUS_MODEL | — |