Nodes/ComfyUI-LoraBlockWeight/LoRA Block Weight Batch (SD3.5 Large)
ComfyUI Node

LoRA Block Weight Batch (SD3.5 Large)

The 190-image block sweep that tells you what an SD3.5 LoRA is made of

By Baldwinzc·Created 4 months ago·Updated 3 months ago· 24
LoRA Block Weight Batch (SD3.5 Large)
  • model
  • vae
  • positive
  • negative
  • latent_image
  • images
  • info
  • blocks_used
  • values_used
lora_name
seed0
steps25
cfg1.0
sampler_nameeuler
schedulersimple
denoise1.00
block_listJ00,J01,J02,J03,J04,J05,J06,J07,J08,J09,J10,J11,J12,J13,J14,J15,J16,J17,J18,J19,J20,J21,J22,J23,J24,J25,J26,J27,J28,J29,J30,J31,J32,J33,J34,J35,J36,J37
value_list0,0.25,0.5,0.75,1.0
baseline_weight1.00

SD3.5 Large is the niche pick of the diffusion-transformer world - a competent 8B MMDiT whose architecture won even as the ecosystem around it never formed. If you're one of the people who actually runs it, you know its LoRA situation is thinner than FLUX's and less forgiving: an overpowered anime LoRA can flatten a whole composition. LoRA Block Weight Batch (SD3.5 Large) is the pack's all-in-one diagnostic for that - it sweeps every one of SD3.5's 38 joint blocks at multiple strengths, samples each combination itself, and returns a labeled-ready grid. No XY Plot, no orchestration, one node.

The full sweep is 38 blocks × 5 values = 190 images, which is the cheapest full sweep in the pack and still a serious render job at 1024×1024. The payoff is the ranking: the README's SD3.5 demo found the most lopsided block distribution of the three architectures it covers - a 47× ratio between top and bottom impact blocks. The 12 lowest-MSE blocks knocked out together were visually indistinguishable from the full LoRA. Twelve dead-weight blocks. That's the finding this node exists to produce.

How it works

The node is the entire pipeline in a box. It loads the LoRA once, then for every (block, value) pair 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 returns info, blocks_used and values_used strings designed to feed the pack's Save Grid node, which renders the labeled comparison grid - block names down the side, strengths across the top. SD3.5's 38 blocks are tagged J00J37, matching the MMDiT joint_blocks layout, each split into its text (context_block) and image (x_block) halves - the node treats each joint block as one unit.

The inputs that matter

  • block_list - comma-separated tags, defaulting to all 38 (J00J37). Trim to a sparse first-round subset for a faster pass; the pack's USAGE guide suggests ~10–12 blocks instead of the full 190-image grind.
  • value_list - strengths to try, default 0,0.25,0.5,0.75,1.0. The 0 column is what the MSE impact analysis ranks on.
  • baseline_weight - 1.0 (knock-out: others stay full, target varies) or 0.0 (solo: only the target runs).

Everything else - seed, steps, cfg, sampler_name, scheduler, denoise, plus model, vae, lora_name, positive, negative, latent_image - is the KSampler setup 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 files to download, no extra pip dependencies.

Two things to keep in mind

First, the batch node encodes conditioning before the LoRA is applied, so it only patches the transformer - the LoRA's text-encoder effect isn't included. Second, and this is the SD3.5-specific twist from the README's own demo: its joint blocks carry the LoRA signal redundantly, so a single top-group knockout softens the style but doesn't fully strip it. Don't expect the clean on/off you'd get on FLUX - and read any block ranking as one prompt's snapshot, not a permanent law. Budget the render time too: 190 images on an 8B model is a break, not a blink.

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_listSTRINGJ00,J01,J02,J03,J04,J05,J06,J07,J08,J09,J10,J11,J12,J13,J14,J15,J16,J17,J18,J19,J20,J21,J22,J23,J24,J25,J26,J27,J28,J29,J30,J31,J32,J33,J34,J35,J36,J37Comma-separated block tags. Defaults to all 38 (J00..J37). 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