Nodes/CRT-Nodes/Flux LoRA Blocks Patcher (CRT)
ComfyUI Node

Flux LoRA Blocks Patcher (CRT)

Dial your Flux LoRA up by block, not as a single strength

By PGCRT·Created 2 years ago·Updated a day ago· 132
Flux LoRA Blocks Patcher (CRT)
  • flux_model
  • patched_model
lora_block_0_weight1.00
lora_block_1_weight1.00
lora_block_2_weight1.00
lora_block_3_weight1.00
lora_block_4_weight1.00
lora_block_5_weight1.00
lora_block_6_weight1.00
lora_block_7_weight1.00
lora_block_8_weight1.00
lora_block_9_weight1.00
lora_block_10_weight1.00
lora_block_11_weight1.00
lora_block_12_weight1.00
lora_block_13_weight1.00
lora_block_14_weight1.00
lora_block_15_weight1.00
lora_block_16_weight1.00
lora_block_17_weight1.00
lora_block_18_weight1.00
lora_block_19_weight1.00
lora_block_20_weight1.00
lora_block_21_weight1.00
lora_block_22_weight1.00
lora_block_23_weight1.00
lora_block_24_weight1.00
lora_block_25_weight1.00
lora_block_26_weight1.00
lora_block_27_weight1.00
lora_block_28_weight1.00
lora_block_29_weight1.00
lora_block_30_weight1.00
lora_block_31_weight1.00
lora_block_32_weight1.00
lora_block_33_weight1.00
lora_block_34_weight1.00
lora_block_35_weight1.00
lora_block_36_weight1.00
lora_block_37_weight1.00
lora_block_0_double_weight1.00
lora_block_1_double_weight1.00
lora_block_2_double_weight1.00
lora_block_3_double_weight1.00
lora_block_4_double_weight1.00
lora_block_5_double_weight1.00
lora_block_6_double_weight1.00
lora_block_7_double_weight1.00
lora_block_8_double_weight1.00
lora_block_9_double_weight1.00
lora_block_10_double_weight1.00
lora_block_11_double_weight1.00
lora_block_12_double_weight1.00
lora_block_13_double_weight1.00
lora_block_14_double_weight1.00
lora_block_15_double_weight1.00
lora_block_16_double_weight1.00
lora_block_17_double_weight1.00
lora_block_18_double_weight1.00

A LoRA loader gives you one number: strength. Apply 1.0, everything the LoRA learned shows up - including the parts you wish it hadn't. The block-aware trick that kohya-style training made famous is that a Flux model's transformer blocks aren't one blob: the early double blocks handle joint text+image understanding (style, composition, semantics), while the later single blocks refine the image stream (texture, detail, fine structure). Being able to weight them separately is the difference between "this LoRA makes everything look like the artist" and "this LoRA adds the artist's style without wrecking my composition."

FluxLoraBlocksPatcher is that control, applied to an already-LoRA'd model. It doesn't load a LoRA - it rescales the block contributions of one you've already applied. 38 sliders for the single blocks, 19 for the double blocks, all defaulting to 1.0 (no change).

How it works

The key mental model: you first load your LoRA with a normal LoRA loader onto the base Flux model, producing a model whose weights carry the LoRA's patches. Then you feed that model into this node. Internally it walks the model's patch dictionary, matches each patch's target key against a pattern that extracts the block type (single_blocks or double_blocks) and index, and rescales the patch strength for that block by the corresponding weight input.

If every weight is 1.0, it returns the model untouched - no wasted compute. Change, say, lora_block_0_weight to 0 and the LoRA's influence on that early double block is zeroed out, while the rest stay full. The lora_block_N_double_weight inputs are the double blocks (0–18); the plain lora_block_N_weight inputs are the single blocks (0–37).

Inputs and outputs

  • flux_model (MODEL) - a Flux model that already has your LoRA applied via a standard LoRA loader.
  • 57 weight sliders (0.0–2.0, default 1.0) - per-block rescale factors. 0 silences a block's LoRA contribution, 2 doubles it.

Output: patched_model (MODEL), which goes to your sampler.

Installing it

CRT-Nodes install: ComfyUI Manager → CRT-Nodes, or clone + pip install -r requirements.txt, restart. Under CRT/LoRA.

Where people get burned

The single biggest misunderstanding is thinking this node loads a LoRA. It doesn't - there's no file picker and no LoRA name field. If you wire a plain base model into it, there's nothing to patch and it passes through. Load the LoRA first. Second trap: matching block numbers to what you actually want. Double blocks are the semantic/style-heavy early layers, single blocks the later detail layers - if your instinct is "all 57 sliders need touching," you're probably overcomplicating it; the classic move is dropping the double blocks that fight your composition and leaving the rest alone.

CategoryCRT/LoRA

Inputs (58)

NameTypeDefaultDescription
flux_modelMODEL
lora_block_0_weightFLOAT1.000–2
lora_block_1_weightFLOAT1.000–2
lora_block_2_weightFLOAT1.000–2
lora_block_3_weightFLOAT1.000–2
lora_block_4_weightFLOAT1.000–2
lora_block_5_weightFLOAT1.000–2
lora_block_6_weightFLOAT1.000–2
lora_block_7_weightFLOAT1.000–2
lora_block_8_weightFLOAT1.000–2
lora_block_9_weightFLOAT1.000–2
lora_block_10_weightFLOAT1.000–2
lora_block_11_weightFLOAT1.000–2
lora_block_12_weightFLOAT1.000–2
lora_block_13_weightFLOAT1.000–2
lora_block_14_weightFLOAT1.000–2
lora_block_15_weightFLOAT1.000–2
lora_block_16_weightFLOAT1.000–2
lora_block_17_weightFLOAT1.000–2
lora_block_18_weightFLOAT1.000–2
lora_block_19_weightFLOAT1.000–2
lora_block_20_weightFLOAT1.000–2
lora_block_21_weightFLOAT1.000–2
lora_block_22_weightFLOAT1.000–2
lora_block_23_weightFLOAT1.000–2
lora_block_24_weightFLOAT1.000–2
lora_block_25_weightFLOAT1.000–2
lora_block_26_weightFLOAT1.000–2
lora_block_27_weightFLOAT1.000–2
lora_block_28_weightFLOAT1.000–2
lora_block_29_weightFLOAT1.000–2
lora_block_30_weightFLOAT1.000–2
lora_block_31_weightFLOAT1.000–2
lora_block_32_weightFLOAT1.000–2
lora_block_33_weightFLOAT1.000–2
lora_block_34_weightFLOAT1.000–2
lora_block_35_weightFLOAT1.000–2
lora_block_36_weightFLOAT1.000–2
lora_block_37_weightFLOAT1.000–2
lora_block_0_double_weightFLOAT1.000–2
lora_block_1_double_weightFLOAT1.000–2
lora_block_2_double_weightFLOAT1.000–2
lora_block_3_double_weightFLOAT1.000–2
lora_block_4_double_weightFLOAT1.000–2
lora_block_5_double_weightFLOAT1.000–2
lora_block_6_double_weightFLOAT1.000–2
lora_block_7_double_weightFLOAT1.000–2
lora_block_8_double_weightFLOAT1.000–2
lora_block_9_double_weightFLOAT1.000–2
lora_block_10_double_weightFLOAT1.000–2
lora_block_11_double_weightFLOAT1.000–2
lora_block_12_double_weightFLOAT1.000–2
lora_block_13_double_weightFLOAT1.000–2
lora_block_14_double_weightFLOAT1.000–2
lora_block_15_double_weightFLOAT1.000–2
lora_block_16_double_weightFLOAT1.000–2
lora_block_17_double_weightFLOAT1.000–2
lora_block_18_double_weightFLOAT1.000–2

Outputs (1)

NameTypeDescription
patched_modelMODEL