Nodes/ComfyUI-NS-Util/NS Micro Conditioning Schedule
ComfyUI Node

NS Micro Conditioning Schedule

Walk SDXL's perceived resolution from giant to normal mid-run

By NakamuraShippo·Created about a year ago·Updated 4 months ago· 5
NS Micro Conditioning Schedule
  • model
  • MODEL
start_original_size4096
end_original_size1024
start_crop_offset0
end_crop_offset0
interpolation
switch_step0.50

SDXL's micro-conditioning - the embedded original_size and crop values it uses to describe its own canvas - is normally fixed at prompt-encode time. NS Micro Conditioning Schedule makes it a moving target. It patches the model so that during sampling, the size and crop SDXL thinks it's working at smoothly interpolate from one value to another. Default: start the run believing it's generating a 4096px image, and ease down to 1024px as sampling progresses.

Why would you ever do that? The reasoning is a known SDXL quirk turned into a feature: conditioning SDXL as if it were working at a much larger resolution tends to bias generation toward finer detail and better structure in the early, composition-forming steps - because that's what the model learned a big image should look like. Then, as the run progresses and detail is being committed, you step it back down to the resolution you're actually rendering at, so the final result isn't a 1024px image haunted by a 4096px conditioning. It's the schedule version of the pack's Micro-Conditioning Guidance idea - same lever, moving instead of fixed.

How it works

This is a MODEL patch. It wraps the UNet's forward pass and, on every step, converts the current sigma to a progress value (0.0 at the start of sampling, 1.0 at the end), interpolates the size and crop between their start and end values, then rebuilds the y vector with the interpolated micro-conditioning using the model's own timestep embedder. The interpolation modes are:

  • linear - straight ramp.
  • cosine - eased ramp (slower at both ends).
  • step - no ramp at all: start value until switch_step (default 0.5), then the end value. A hard cut, for when you want a staged change.

So start_original_size 4096 → end_original_size 1024, and you get the "thinks it's huge, settles into normal" arc. start_crop_offset/end_crop_offset (defaults 0) do the same for the crop values - mostly you'll leave them at 0.

Inputs and output

  • model - your SDXL-family model.
  • start_original_size / end_original_size (64–8192, defaults 4096/1024) - the perceived size ramp.
  • start_crop_offset / end_crop_offset (0–2048, defaults 0) - the crop ramp.
  • interpolation - linear / cosine / step.
  • switch_step (0–1) - only meaningful for step mode.

Output is a patched MODEL. It's SDXL-only: feed it anything else and it prints a warning and returns the model unpatched - a soft, friendly failure.

The honest cost and gotchas

This one runs the model once per step (the patch just edits the conditioning y before the forward pass), so unlike the Guidance variant it adds almost no compute. The real cost is tuning. The 4096 → 1024 default is aggressive and opinionated; on some checkpoints it produces noticeably sharper early composition, on others it just makes the run different, not better. Start with the defaults, then widen or narrow the gap. If you flip to step mode, remember switch_step is where the cut lands - and there's no warning if you set it to something silly; it just behaves how it behaves.

Also keep the era in mind: this whole micro-conditioning bag of tricks is SDXL-family territory. On the flow-matching models that dominate 2026 the y-vector concept doesn't apply, and the node's soft fallback means it quietly does nothing rather than telling you loudly.

Installing it

Part of ComfyUI-NS-Util:

cd ComfyUI/custom_nodes
git clone https://github.com/NakamuraShippo/ComfyUI-NS-Util

or ComfyUI Manager → Install via Git URL with the same URL, restart. No model downloads; light dependencies.

The honest take

It's an experiment with a plausible theory behind it, and the "thinks it's rendering huge, then settles down" default is exactly the kind of weird-but-tractable idea that makes this pack interesting. Expect to spend a few runs deciding whether you even like the effect - the difference is real but it's not night and day. And since the pack ships a FlexPreset entry with sane values for this node, that's the easiest way to A/B it.

CategoryNS/Conditioning

Inputs (7)

NameTypeDefaultDescription
modelMODEL
start_original_sizeINT409664–8192
end_original_sizeINT102464–8192
start_crop_offsetINT00–2048
end_crop_offsetINT00–2048
interpolationCOMBO3 options: linear, cosine, step
switch_stepFLOAT0.500–1

Outputs (1)

NameTypeDescription
MODELMODEL