⭐ Star Dynamic LoRA Weight
The fix for stacked LoRA weights melting distilled models
- model
- model
- info
Stack three LoRAs on a Turbo or Lightning model and there's a good chance your image turns to noise - not because the LoRAs are bad, but because distilled models have almost no headroom for additive weights. Distillation compresses the whole denoising trajectory into a few steps, which is exactly why it breaks when you pile on strength (the KB is blunt: every distillation loses some quality, and the settings are unforgiving). Star Dynamic LoRA Weight (class StarLoraWeightNormalizer) is the damage-control node: it manages how much of each LoRA actually reaches the model, in two different philosophies.
How it works
Feed it a model and up to a stack of LoRAs (lora1_name plus strength1_model, and more slots as needed). The mode dropdown chooses the strategy:
normalize- keeps the relative proportions of your weights but scales them down so they sum to yourtarget_weight(default 1.0). The brief's example is the clearest: weights[0.8, 0.6, 0.4]become[0.44, 0.33, 0.22]- same balance, total 1.0. Each LoRA is applied separately at its reduced strength. This is the safe default for "a bit of each, don't blow the model up."blend- merges all the LoRAs into one combined adapter at equal ratios and applies it as a single LoRA attarget_weightstrength. One combined effect, one strength knob. Good when you want the mixture to read as a unified style rather than three competing tweaks.
target_weight means slightly different things per mode (sum target vs. merged strength) - the tooltip says it plainly, and it's the input you'll actually fiddle with. The info STRING output reports what the node did, which is a nice sanity check when you're debugging why a look isn't coming through.
Inputs and outputs
model- the model to patch.mode-normalizeorblend.target_weight- 0–10, default 1.0; the sum (normalize) or merged strength (blend).lora1_name/strength1_model- first LoRA and its weight (more slots are added as needed).model(out) - the patched model for your sampler.info(out) - STRING summary.
Where it fits
Any multi-LoRA workflow on a distilled base - SDXL Turbo/Lightning, FLUX Schnell-family, the whole fast-tier stack - where "1.0 each" visibly breaks the output. Start in normalize mode with target 1.0, and if the result feels weak, raise the target rather than a single LoRA's strength.
Installing
Part of the StarNodes pack - install Starnodes via ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, then search star on the canvas. No models to download; it reads LoRAs from your existing models/loras folder.
Common issues
If normalize mode with target 1.0 still looks too strong, that's expected on heavily distilled models - drop the target to 0.7 or 0.8; some users run 0.5. If a LoRA shows as None in the dropdown, it's not in models/loras yet. And blend mode with wildly different LoRA types (a style LoRA and a character LoRA) can wash both out - blend is for similar-flavored adapters; keep different jobs in normalize mode.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Model to apply LoRAs to. | |
| mode | COMBO | normalize | Normalize: scale weights down | Blend: merge LoRAs together |
| target_weight | FLOAT | 1.000–10 | Normalize: target sum of weights | Blend: strength of merged LoRA |
| lora1_nameopt | COMBO | None | First LoRA to apply. |
| strength1_modelopt | FLOAT | 1.00-100–100 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| info | STRING | — |