Nodes/Realtime LoRA Trainer/Selective LoRA Loader (Wan)
ComfyUI Node

Selective LoRA Loader (Wan)

Per-block control for Wan 2.2 LoRAs

By shootthesound·Created 10 months ago·Updated 2 months ago· 568
Selective LoRA Loader (Wan)
  • model
  • clip
  • model
  • clip
  • info
  • weights_output
◄lora_name▾►
◄strength1.00►
◄presetAll Blocks►
◄block_0true►
◄block_0_str1.00►
◄block_1true►
◄block_1_str1.00►
◄block_2true►
◄block_2_str1.00►
◄block_3true►
◄block_3_str1.00►
◄block_4true►
◄block_4_str1.00►
◄block_5true►
◄block_5_str1.00►
◄block_6true►
◄block_6_str1.00►
◄block_7true►
◄block_7_str1.00►
◄block_8true►
◄block_8_str1.00►
◄block_9true►
◄block_9_str1.00►
◄block_10true►
◄block_10_str1.00►
◄block_11true►
◄block_11_str1.00►
◄block_12true►
◄block_12_str1.00►
◄block_13true►
◄block_13_str1.00►
◄block_14true►
◄block_14_str1.00►
◄block_15true►
◄block_15_str1.00►
◄block_16true►
◄block_16_str1.00►
◄block_17true►
◄block_17_str1.00►
◄block_18true►
◄block_18_str1.00►
◄block_19true►
◄block_19_str1.00►
◄block_20true►
◄block_20_str1.00►
◄block_21true►
◄block_21_str1.00►
◄block_22true►
◄block_22_str1.00►
◄block_23true►
◄block_23_str1.00►
◄block_24true►
◄block_24_str1.00►
◄block_25true►
◄block_25_str1.00►
◄block_26true►
◄block_26_str1.00►
◄block_27true►
◄block_27_str1.00►
◄block_28true►
◄block_28_str1.00►
◄block_29true►
◄block_29_str1.00►
◄block_30true►
◄block_30_str1.00►
◄block_31true►
◄block_31_str1.00►
◄block_32true►
◄block_32_str1.00►
◄block_33true►
◄block_33_str1.00►
◄block_34true►
◄block_34_str1.00►
◄block_35true►
◄block_35_str1.00►
◄block_36true►
◄block_36_str1.00►
◄block_37true►
◄block_37_str1.00►
◄block_38true►
◄block_38_str1.00►
◄block_39true►
◄block_39_str1.00►
◄other_weightstrue►
◄other_weights_str1.00►
◄lora_path_opt—►
◄analysis_json—►
◄block_weights_string►

What it is

Wan 2.2 LoRAs - character LoRAs especially - have a known failure mode in the community: stack more than one or two and quality collapses, or a single LoRA drags in more style and motion baggage than you wanted alongside the identity it's supposed to carry. This node gives you a lever against that: instead of one strength value for the whole LoRA, you get 40 individual toggles and sliders, one per transformer block, so you can keep the blocks doing useful work and mute the ones that aren't.

The pack's author found the same pattern on Wan's sibling architecture, Z-Image - character likeness concentrates in later blocks, style spreads earlier - and the presets here (Late Only, Mid-Late, Skip Early, Mid Only, Early Only) are built for exactly that kind of split. If a Wan character LoRA is fighting your prompt on style or motion, isolating the late blocks and muting the early ones is the first thing worth trying.

How it works

Same underlying idea as every selective loader in this pack: a LoRA's weights are spread across the target model's blocks (40 of them for Wan 2.2), and this node loads the file, then lets you disable or reweight each block's contribution individually before patching it onto your model and CLIP. Connect analysis_json from LoRA Loader + Analyzer and the block checkboxes get color-coded by measured impact, so you're working from data rather than trial and error.

Inputs and outputs that matter

  • model, clip, lora_name - standard loader inputs.
  • strength - the overall multiplier (-5 to 5) on top of your per-block choices.
  • preset - All Blocks, All Off, Late Only (30–39), Mid-Late (20–39), Skip Early (10–39), Mid Only (15–25), Early Only (0–19), Evens/Odds Only, or Custom for full manual control.
  • block_0 through block_39, each with a paired _str strength slider.
  • other_weights / other_weights_str - a catch-all for weights that don't map cleanly to a numbered block; worth checking if disabling blocks isn't producing the change you expect.
  • Optional lora_path_opt takes a direct file path, overriding the dropdown - handy chained straight off MusubiWanLoraTrainer's output. Optional analysis_json enables the impact-colored checkboxes.

Outputs: model, clip, and info - a text summary of what actually got applied.

Installing it

No external training backend needed for this node - it works the moment the pack is installed. ComfyUI Manager (search "Realtime LoRA Trainer") or:

cd ComfyUI/custom_nodes
git clone https://github.com/ShootTheSound/comfyUI-Realtime-Lora

Restart ComfyUI.

Common issues

Not sure which blocks to touch. Don't guess across 40 toggles - run LoRA Loader + Analyzer first and wire its analysis_json output into this node. The checkboxes will color themselves by measured weight magnitude so you can see, at a glance, which blocks the LoRA actually did anything with.

Motion looks flat after disabling early blocks. Early blocks tend to carry composition and motion information on Wan; if you're chasing a clean identity and losing the motion quality that made you pick Wan in the first place, back off the preset and re-enable a few early blocks at reduced strength rather than fully muting them.

LoRA feels weaker after selective loading. Expected side effect of removing blocks - raise strength or the surviving blocks' individual sliders to compensate rather than assuming the base LoRA was undertrained.

Multi-LoRA stacking still collapses. Selective loading helps but doesn't fully solve Wan's known multi-LoRA quality collapse; keeping each LoRA's contribution to its most-relevant blocks reduces the interaction surface, but stacking more than two or three Wan LoRAs is still a genuine limit of the model, not something this node can fully engineer around.

Categoryloaders/lora

Inputs (90)

NameTypeDefaultDescription
modelMODEL—
clipCLIP—
lora_nameCOMBOWan 2.2 LoRA file to load
strengthFLOAT1.00-5–5Overall LoRA strength
presetCOMBOAll BlocksQuick preset selection. Choose 'Custom' to use individual toggles below.
block_0BOOLEANtrue—
block_0_strFLOAT1.00-5–5—
block_1BOOLEANtrue—
block_1_strFLOAT1.00-5–5—
block_2BOOLEANtrue—
block_2_strFLOAT1.00-5–5—
block_3BOOLEANtrue—
block_3_strFLOAT1.00-5–5—
block_4BOOLEANtrue—
block_4_strFLOAT1.00-5–5—
block_5BOOLEANtrue—
block_5_strFLOAT1.00-5–5—
block_6BOOLEANtrue—
block_6_strFLOAT1.00-5–5—
block_7BOOLEANtrue—
block_7_strFLOAT1.00-5–5—
block_8BOOLEANtrue—
block_8_strFLOAT1.00-5–5—
block_9BOOLEANtrue—
block_9_strFLOAT1.00-5–5—
block_10BOOLEANtrue—
block_10_strFLOAT1.00-5–5—
block_11BOOLEANtrue—
block_11_strFLOAT1.00-5–5—
block_12BOOLEANtrue—
block_12_strFLOAT1.00-5–5—
block_13BOOLEANtrue—
block_13_strFLOAT1.00-5–5—
block_14BOOLEANtrue—
block_14_strFLOAT1.00-5–5—
block_15BOOLEANtrue—
block_15_strFLOAT1.00-5–5—
block_16BOOLEANtrue—
block_16_strFLOAT1.00-5–5—
block_17BOOLEANtrue—
block_17_strFLOAT1.00-5–5—
block_18BOOLEANtrue—
block_18_strFLOAT1.00-5–5—
block_19BOOLEANtrue—
block_19_strFLOAT1.00-5–5—
block_20BOOLEANtrue—
block_20_strFLOAT1.00-5–5—
block_21BOOLEANtrue—
block_21_strFLOAT1.00-5–5—
block_22BOOLEANtrue—
block_22_strFLOAT1.00-5–5—
block_23BOOLEANtrue—
block_23_strFLOAT1.00-5–5—
block_24BOOLEANtrue—
block_24_strFLOAT1.00-5–5—
block_25BOOLEANtrue—
block_25_strFLOAT1.00-5–5—
block_26BOOLEANtrue—
block_26_strFLOAT1.00-5–5—
block_27BOOLEANtrue—
block_27_strFLOAT1.00-5–5—
block_28BOOLEANtrue—
block_28_strFLOAT1.00-5–5—
block_29BOOLEANtrue—
block_29_strFLOAT1.00-5–5—
block_30BOOLEANtrue—
block_30_strFLOAT1.00-5–5—
block_31BOOLEANtrue—
block_31_strFLOAT1.00-5–5—
block_32BOOLEANtrue—
block_32_strFLOAT1.00-5–5—
block_33BOOLEANtrue—
block_33_strFLOAT1.00-5–5—
block_34BOOLEANtrue—
block_34_strFLOAT1.00-5–5—
block_35BOOLEANtrue—
block_35_strFLOAT1.00-5–5—
block_36BOOLEANtrue—
block_36_strFLOAT1.00-5–5—
block_37BOOLEANtrue—
block_37_strFLOAT1.00-5–5—
block_38BOOLEANtrue—
block_38_strFLOAT1.00-5–5—
block_39BOOLEANtrue—
block_39_strFLOAT1.00-5–5—
other_weightsBOOLEANtrue—
other_weights_strFLOAT1.00-5–5—
lora_path_optoptSTRINGOptional: Connect from LoRA Analyzer to use its selected LoRA
analysis_jsonoptSTRINGOptional: Connect from LoRA Analyzer for impact-colored checkboxes
block_weights_stringoptSTRINGInput/Output block profile string. Positional text syncs with the UI. String input overrides UI values.

Outputs (4)

NameTypeDescription
modelMODEL—
clipCLIP—
infoSTRING—
weights_outputSTRING—