Nodes/ComfyUI Easy Use/EasyKsampler (Downscale Unet)
ComfyUI Node Runs on cloud

EasyKsampler (Downscale Unet)

Kohya Deep Shrink baked into the sampler

By yolain·Created 3 years ago·Updated 12 days ago· 2,647
EasyKsampler (Downscale Unet)
  • pipe
  • model
  • pipe
  • image
downscale_modeAuto
block_number3
downscale_factor2.000
start_percent0.000
end_percent0.350
downscale_after_skiptrue
downscale_method
upscale_method
image_outputPreview
link_id0
save_prefixComfyUI

This sampler is Easy-Use's packaged version of a trick most people know as Kohya Deep Shrink: shrink the UNet's working resolution for the first chunk of sampling steps, then let it expand back to full size for the rest. It sounds backwards - why would generating at a lower resolution first help a high-resolution image? - but it's a genuinely well-established fix for a specific problem: pushing a model well past the resolution it was trained on tends to produce duplicated features (extra limbs, repeated heads, that "two people fused together" look), because the model's internal receptive field gets confused about scale. Doing the early steps at something closer to native resolution establishes a sane overall composition before the detail pass runs at full size.

How it works

Rather than pairing a separate downscale-patch node with a plain sampler, this node folds the whole technique into one box, reading its base settings (model, prompts, latent) off the pipe like every other Easy-Use sampler. The mechanism itself: for the steps between 0% and your end_percent, the UNet's internal feature maps get shrunk by downscale_factor; once you pass that percentage, it upscales back to the original working size and finishes sampling normally. The community's plain-language description of the same underlying node holds here too - it downscales the empty latent by the given factor, runs the early portion of your steps at that smaller size, then upscales back and runs the rest at full size, and the payoff is fewer duplicate/extra features in the final image, particularly when you're generating well above a model's native training resolution.

The inputs and outputs that matter

  • pipe - the required wire carrying model, prompts, latent, and sampling settings.
  • downscale_mode - None, Auto, or Custom (default Auto). Auto picks sensible values for you; Custom hands you the block/factor/percent controls below directly.
  • block_number (default 3) - which UNet block the downscale patch targets. Leave at default unless you're specifically tuning this technique.
  • downscale_factor (default 2) - how much smaller the early steps run. 2 means half resolution during the shrink window.
  • start_percent (default 0) / end_percent (default 0.35) - the window, as a fraction of total steps, during which the downscale is active. The community's rule of thumb for this exact technique: end it somewhere in the 30-40% range so the composition-setting phase happens small and the detail-refining phase happens at full size.
  • downscale_after_skip (default true) and downscale_method / upscale_method (bicubic, nearest-exact, bilinear, area, bislerp) - the interpolation used going down and coming back up. Defaults are reasonable; touch these only if you're chasing a specific artifact.
  • image_output, link_id, save_prefix - the usual output-node plumbing shared across Easy-Use samplers.

Optional model input overrides the pipe's model at the last moment. Outputs: pipe (pass-through) and image.

Installing it

Ships with the base pack. ComfyUI Manager: search ComfyUI Easy Use, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use

then install.bat on Windows or pip install -r requirements.txt, restart. No extra models - this is a pure sampling-time technique on whatever checkpoint your pipe already has loaded.

Common issues & troubleshooting

Only reach for this above native resolution. The whole benefit is specific to pushing a model past what it was trained on (the classic case: generating well above 1024x1024 on an SDXL-class model). Running it at or below native resolution buys you nothing and just adds an unnecessary shrink/grow round-trip to your sampling - leave downscale_mode on None for normal-resolution generations.

End percent set too high or too low. Too low and the shrink window barely runs, so you don't get the composition-stabilizing benefit; too high and you're doing too much of the actual detail work at reduced resolution, which can leave the image visibly softer than a normal full-resolution pass. Start near the 0.3-0.4 default and adjust from there rather than guessing from scratch.

Combining this with ControlNet and getting weird results. This is a known rough edge with the underlying technique in general - a shrinking/growing UNet mid-sample doesn't always play nicely with spatial conditioning that expects a fixed resolution throughout. If you're layering ControlNet on top and results look off, try disabling the downscale step first to isolate whether it's the interaction causing the problem.

CategoryEasyUse/Sampler

Inputs (13)

NameTypeDefaultDescription
pipePIPE_LINE
downscale_modeCOMBOAuto3 options: None, Auto, Custom
block_numberINT31–32
downscale_factorFLOAT2.0000.1–9
start_percentFLOAT0.0000–1
end_percentFLOAT0.3500–1
downscale_after_skipBOOLEANtrue
downscale_methodCOMBO5 options: bicubic, nearest-exact, bilinear, area, bislerp
upscale_methodCOMBO5 options: bicubic, nearest-exact, bilinear, area, bislerp
image_outputCOMBOPreview6 options: Hide, Preview, Save, Hide&Save, Sender, Sender&Save
link_idINT00–9223372036854776000
save_prefixSTRINGComfyUI
modeloptMODEL

Outputs (2)

NameTypeDescription
pipePIPE_LINE
imageIMAGE