ComfyUI Node

Load LoRA (Block)

Per-block LoRA weights — the SDXL fine-tuning dial

By nova452·Created 3 months ago·Updated 27 days ago· 509
Load LoRA (Block)
  • model
  • model
model_typeSDXL
lora_name
strength1.00
block_vector1, 1,1,1,1,1,1,1,1,1, 1,1,1, 1,1,1,1,1,1,1,1,1, 1, 1

A standard LoRA loader gives you one knob: strength. Sometimes that's genuinely all you want. But a lot of the time the LoRA is mostly good and one part of it is fighting your prompt - the style weights crush your composition, or the character weights flatten the background. Load LoRA (Block) from the Rebalance Pack is the version that gives you a knob per SDXL block group. It loads a LoRA and applies it to the model with a separate weight for each of the 24 SDXL blocks, so you can keep the character layers full-blast while dialing the style layers to zero.

It's squarely aimed at people who have felt the SDXL block-weight itch but didn't want to learn a dedicated block-weighting framework. The trade is that it's SDXL-only (model_type is a single-choice combo), and you express your weights as a 24-number comma string rather than a friendly UI - but the order is documented and the defaults work.

How it works

SDXL's UNet is conventionally split into 24 groups in the ModelMergeSDXL order, and this node mirrors that exactly: base (time + label embeddings and leftovers), input_blocks.0–8, middle_block.0–2, output_blocks.0–8, the output head (out.), and a final catch-all. Your block_vector is 24 comma-separated numbers, one per group, with the default being all ones:

1, 1,1,1,1,1,1,1,1,1, 1,1,1, 1,1,1,1,1,1,1,1,1, 1, 1

Count them: 1 base, 9 input, 3 middle, 9 output, 1 out, 1 catch-all. That's the whole language of the node. Under the hood it loads the LoRA through ComfyUI's own comfy.lora, maps every key to its block group, and patches the model clone with strength × block_weight per group. Keys whose block weight is 0 are skipped entirely, so a zeroed block isn't just weakly applied - it's untouched.

The inputs that matter

  • model - the model to patch.
  • lora_name - combo populated from your models/loras folder.
  • strength (−10 to 10, default 1) - the global multiplier over everything.
  • block_vector - the 24-number string. This is the whole point. Spaces are optional; commas separate. There's a placeholder on the widget spelling out the order so you don't have to memorize it.

Output is model, ready to feed a sampler. Chain two of these with different vectors if a single LoRA needs surgical treatment in two places.

Install

It's a loader in the Rebalance Pack, so it comes with the rest. ComfyUI Manager: search "ComfyUI-Conditioning-Rebalance" (or "Rebalance Pack"). Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/nova452/ComfyUI-ConditioningKrea2Rebalance

Restart afterwards. No models, no extra pip deps - it uses ComfyUI's built-in LoRA machinery.

Troubleshooting

The one error that bites everyone is a bad block_vector: it must contain exactly 24 entries, and the node raises a descriptive error listing the expected order if you're short. Don't hand it 23 numbers. Also, strength = 0 short-circuits the whole load and returns the model untouched - a deliberate fast path, so if you "can't see the LoRA," check you didn't zero it. And the catch-all 24th slot is where anything not matching a named block lands, so leaving it at 1 avoids silently dropping keys. The model patch is a clone, so multiple LoraLoaderBlocks stack without clobbering each other. One more honest caveat: this is SDXL-block logic. Drop it in front of a Flux or Krea 2 UNet and the block names won't line up - that's what the pack's model-specific nodes are for.

Categoryloaders

Inputs (5)

NameTypeDefaultDescription
modelMODEL
model_typeCOMBOSDXL1 options: SDXL
lora_nameCOMBO0 options:
strengthFLOAT1.00-10–10
block_vectorSTRING1, 1,1,1,1,1,1,1,1,1, 1,1,1, 1,1,1,1,1,1,1,1,1, 1, 1

Outputs (1)

NameTypeDescription
modelMODEL