ComfyUI Node

Model Scale SDXL

The SDXL block scaler that started this pack's merge family

By easygoing0114·Created 12 months ago·Updated 5 days ago· 5
Model Scale SDXL
  • model
  • MODEL
time_embed.1.00
label_emb.1.00
input_blocks.01.00
input_blocks.11.00
input_blocks.21.00
input_blocks.31.00
input_blocks.41.00
input_blocks.51.00
input_blocks.61.00
input_blocks.71.00
input_blocks.81.00
middle_block.01.00
middle_block.11.00
middle_block.21.00
output_blocks.01.00
output_blocks.11.00
output_blocks.21.00
output_blocks.31.00
output_blocks.41.00
output_blocks.51.00
output_blocks.61.00
output_blocks.71.00
output_blocks.81.00
out.1.00

Block-wise model scaling isn't new - the community has been zeroing and amplifying SDXL UNet blocks since 2023 - but it's a technique that usually ships in giant all-purpose packs where it's one node among two hundred. Model Scale SDXL is the focused version, and it's the natural entry point to this pack's whole merge family: if you understand this node, every other Model Scale in the pack is the same idea with a different architecture's layer names.

The pitch: SDXL's UNet isn't one blob, it's a sequence of input_blocks, a middle_block, and output_blocks, and different parts do different jobs. Early input blocks handle coarse structure and composition; later blocks and the output side carry fine detail, textures, and style. Scaling a band of blocks lets you selectively reshape what the model produces without retraining a thing - it's the cheap, deterministic cousin of merging, and it's why the README names this node as the anchor of the pack's model-merging section.

How it works

Clone the model, match every weight to the longest widget prefix, multiply by your slider value via add_patches. 1.0 leaves a block untouched, 0.0 zeroes it out entirely, and values up to 2.0 amplify. Everything defaults to 1.0, so the node is a faithful pass-through until you move something. model in, one scaled MODEL out - wire it straight into your sampler.

The inputs that matter

Twenty-four sliders, but they group into five regions:

  • time_embed. and label_emb. - the conditioning inputs. Scaling these is drastic; treat as the "how hard does this prompt hit" master knobs.
  • input_blocks.0input_blocks.8 - the downsampling encoder. Early blocks hold composition and semantics. Want the model to follow your prompt more literally? Slightly amplify the early input blocks.
  • middle_block.0middle_block.2 - the bottleneck. Small scale changes here echo through the whole image; usually leave near 1.0.
  • output_blocks.0output_blocks.8 - the decoder. Late output blocks carry texture and style. Dialing these down is how people get a softer, more stylized render without touching the composition.
  • out. - the final projection. Zeroing it produces noise; don't.

What's worth trying

The classic first experiment: set output_blocks.5output_blocks.8 to ~0.8 and sample the same seed - you'll usually see composition hold while texture softens. Or amplify input_blocks.0input_blocks.2 to 1.2 for stricter prompt adherence and compare against a baseline at the same seed. One region per test, a few seeds each, and let the pack's Image Difference Checker put numbers on what changed.

Install

Search Easygoing in the ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/easygoing0114/ComfyUI-easygoing-nodes.git

Restart ComfyUI. No pip extras; requires a current ComfyUI with the V3 node API.

What to watch

Widget names here use the internal key layout (input_blocks.0, not the original file's names), which matches how ComfyUI's SDXL model is actually structured - so the sliders land. Two honest caveats: the effect is live-in-graph only (save the workflow, or route through the pack's save-with-original nodes for a persistent file), and aggressive zeroing makes models fall apart fast. This is a precision tool, not a "max everything" one - and it's the best way to learn the pattern before you touch the bigger architectures in the rest of the pack.

Categoryadvanced/model_merging/model_specific

Inputs (25)

NameTypeDefaultDescription
modelMODEL
time_embed.FLOAT1.000–2
label_emb.FLOAT1.000–2
input_blocks.0FLOAT1.000–2
input_blocks.1FLOAT1.000–2
input_blocks.2FLOAT1.000–2
input_blocks.3FLOAT1.000–2
input_blocks.4FLOAT1.000–2
input_blocks.5FLOAT1.000–2
input_blocks.6FLOAT1.000–2
input_blocks.7FLOAT1.000–2
input_blocks.8FLOAT1.000–2
middle_block.0FLOAT1.000–2
middle_block.1FLOAT1.000–2
middle_block.2FLOAT1.000–2
output_blocks.0FLOAT1.000–2
output_blocks.1FLOAT1.000–2
output_blocks.2FLOAT1.000–2
output_blocks.3FLOAT1.000–2
output_blocks.4FLOAT1.000–2
output_blocks.5FLOAT1.000–2
output_blocks.6FLOAT1.000–2
output_blocks.7FLOAT1.000–2
output_blocks.8FLOAT1.000–2
out.FLOAT1.000–2

Outputs (1)

NameTypeDescription
MODELMODEL