Nodes/ComfyUI-LoraBlockWeight/LoRA Block Weight Batch (Qwen-Image)
ComfyUI Node

LoRA Block Weight Batch (Qwen-Image)

The all-in-one block sweep for Qwen-Image

By Baldwinzc·Created 4 months ago·Updated 3 months ago· 24
LoRA Block Weight Batch (Qwen-Image)
  • model
  • vae
  • positive
  • negative
  • latent_image
  • images
  • info
  • blocks_used
  • values_used
lora_name
seed0
steps25
cfg1.0
sampler_nameeuler
schedulersimple
denoise1.00
block_listB00,B01,B02,B03,B04,B05,B06,B07,B08,B09,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30,B31,B32,B33,B34,B35,B36,B37,B38,B39,B40,B41,B42,B43,B44,B45,B46,B47,B48,B49,B50,B51,B52,B53,B54,B55,B56,B57,B58,B59
value_list0,0.25,0.5,0.75,1.0
baseline_weight1.00

This is the workhorse of the LoraBlockWeight pack - the node that does the full experiment with no external orchestration. Where the single-block Qwen node needs an XY Plot from Efficiency Nodes to sweep, LoRA Block Weight Batch (Qwen-Image) loops over every (block, value) pair internally, samples each one, and hands you a single batched IMAGE. If you want to know which of Qwen-Image's 60 transformer blocks actually carry a LoRA, this is the node that answers it.

That's a lot of renders, and the README doesn't sugarcoat it. A full sweep is 60 blocks × 5 values = 300 images at 768×768. Qwen spreads a LoRA's signal further than FLUX does - the pack's own demo measured a 24× ratio between its top- and bottom-impact blocks - so the ranking you get out of here is the whole point. Block B29 and its neighbours carry the modern-anime style; a dozen blocks at the bottom contribute nothing visible.

How it works

The node is the full pipeline: it loads the LoRA once, then for every combination it clones the model, patches just that block's strength (everything else sits at baseline_weight), samples with your sampler settings, VAE-decodes, and stacks the results into one IMAGE tensor. It also returns three strings - info, blocks_used, and values_used - which feed straight into the pack's Save Grid node to render a labeled grid (block names on one axis, strengths on the other). No XY Plot required, which is the whole pitch.

The inputs that matter

  • block_list - comma-separated block tags, defaulting to all 60 (B00B59). The tooltip's advice is worth taking: trim this for a faster first round. You don't need all 60 blocks at 5 values to find the active neighbourhood; a sparse 10–12 block first pass is how the pack's USAGE guide skips straight past the 300-image grind.
  • value_list - comma-separated strengths, default 0,0.25,0.5,0.75,1.0. 0 is the knockout point that the MSE analysis uses to rank impact.
  • baseline_weight - 1.0 for knock-out mode (the sweep's default), 0.0 for solo mode.

The rest (seed, steps, cfg, sampler_name, scheduler, denoise, model, vae, lora_name, positive, negative, latent_image) are the sampler knobs you already know.

Installing it

ComfyUI Manager → search LoraBlockWeight, or:

cd <ComfyUI>/custom_nodes
git clone https://github.com/Baldwinzc/ComfyUI-LoraBlockWeight.git

Restart and it's under the LoraBlockWeight category. No model downloads, no extra pip dependencies.

The two gotchas worth remembering

First, because the batch node encodes conditioning upstream, the LoRA's CLIP-side effect is not applied - this patches the transformer only. If your Qwen LoRA's power lives partly in the text encoder, use a regular loader and the single-block node instead. Second, this is a sweeper, not a tuner. It's the right tool for producing the ranking; once you know the blocks, the Custom variant is where you lock in the recipe. And budget for the render time before you hit run - 300 images on a 20B model is a coffee break, minimum.

CategoryLoraBlockWeight

Inputs (15)

NameTypeDefaultDescription
modelMODEL
vaeVAE
lora_nameCOMBO0 options:
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
seedINT00–18446744073709550000
stepsINT251–10000
cfgFLOAT1.00–100
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
block_listSTRINGB00,B01,B02,B03,B04,B05,B06,B07,B08,B09,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30,B31,B32,B33,B34,B35,B36,B37,B38,B39,B40,B41,B42,B43,B44,B45,B46,B47,B48,B49,B50,B51,B52,B53,B54,B55,B56,B57,B58,B59Comma-separated block tags. Defaults to all 60 (B00..B59). Trim for faster first round.
value_listSTRING0,0.25,0.5,0.75,1.0Comma-separated strength values.
baseline_weightFLOAT1.000–2Knock-out: 1.0. Solo: 0.0.

Outputs (4)

NameTypeDescription
imagesIMAGE
infoSTRING
blocks_usedSTRING
values_usedSTRING