FLUX LoRA Auto Strength
Let the LoRA tell you its own per-layer strengths, then feed them to the loader
- layer_strengths
- analysis_report
- global_strength
- lora_name
The FLUX LoRA Auto Strength node doesn't touch your model at all. It's the analysis half of capitan01R/Comfyui-flux2klein-Lora-loader - it reads a LoRA's weight tensors, computes a per-layer strength profile, and hands that profile to the loader so the loader's interactive graph widget auto-fills. If the Auto Loader is the "just decide for me" option, this is the "show me the work, then let me tweak" option. Same forensics, more control.
Why you'd bother
Klein LoRAs train unevenly - some layers carry most of the signal, others barely moved. A single global strength applies the same pressure everywhere, which means strong layers get over-applied and weak ones never get to contribute. This node fixes that by computing a strength for every layer, and it does it from the file itself rather than from guesswork. If you're the kind of person who already knows a LoRA "wants" 0.8 on the loader but you've never been able to say which layers want what, this is the node that tells you.
The mechanism is the pack's forensic analysis: it reconstructs ΔW = lora_B @ lora_A per layer, scales by alpha / rank, then maps strength = clamp(global * (mean_norm / layer_norm)) with a floor of 0.30 and ceiling of 1.50. High ΔW → lower strength, because that layer is already strongly trained. Klein's 8 double blocks get analyzed with image and text streams independently; the 24 single blocks each get one value. The mean layer lands exactly on your global_strength.
How to wire it
Inputs are just lora_name (dropdown from models/loras) and global_strength - a FLOAT, default 0.75, range 0.0 to 2.0. The tooltip: "Master strength. All per-layer values are auto-computed from ΔW forensics."
It has four outputs, and the wiring is the whole trick:
layer_strengths- the per-layer profile as JSON. This is the important one.analysis_report- a human-readable STRING. Feed it to a ShowText node if you want to see rank, alpha, and the ΔW stats.global_strengthandlora_name- passthroughs so the downstream loader stays in sync.
The intended setup is: wire layer_strengths into the FLUX LoRA Loader node's layer_strengths input (the hidden one the loader's graph widget writes to), and wire lora_name into the loader's lora_name_override so you only pick the LoRA once - the loader ignores its dropdown when the override is connected. Then the loader's per-layer bars auto-populate with the computed strengths and you can drag individual bars if you disagree with the math.
If that sounds like a lot of plumbing for a saving you're not sure you need, the FLUX LoRA Auto Loader in the same pack does all of it in one node - no wiring. Come here when you want to see and adjust the per-layer decisions, or when you're A/B-testing how much a specific block contributes.
Install and gotchas
Same as the rest of the pack: ComfyUI Manager (search Comfyui-flux2klein-Lora-loader) or:
cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/Comfyui-flux2klein-Lora-loader.git
Restart, drop your LoRA in ComfyUI/models/loras, no extra deps beyond numpy. Two traps worth naming: the strengths it computes are tuned for the Klein 9B block layout, so don't point it at a 4B LoRA in a 9B workflow and expect sense; and global_strength is a master scale, so if the profile's bars all clamp against the 0.30 floor, the LoRA is weak and you should raise the knob rather than fight individual bars.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_name | COMBO | 0 options: | |
| global_strength | FLOAT | 0.750–2 | Master strength. All per-layer values are auto-computed from ΔW forensics. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| layer_strengths | STRING | — |
| analysis_report | STRING | — |
| global_strength | FLOAT | — |
| lora_name | STRING | — |