Nodes/Comfyui-ZiT-Lora-loader/Z-Image LoRA Auto Strength
ComfyUI Node

Z-Image LoRA Auto Strength

Stop Guessing LoRA Strength — This Node Reads the File and Sets Every Layer for You

By capitan01R·Created 6 months ago·Updated 5 months ago· 36
Z-Image LoRA Auto Strength
    • layer_strengths
    • analysis_report
    • global_strength
    • lora_name
    lora_name
    global_strength0.75

    Every Z-Image LoRA user hits the same wall: what strength do I use? Too low and the likeness evaporates, too high and everything comes out blown-out and plasticky. And on Z-Image it's worse than on SDXL, because the community keeps finding that LoRAs trained on Z-Image Base need strength 2.0+ when applied to Turbo. On top of all that, a single flat strength is a lie anyway - real LoRAs train unevenly, with some layers soaking up way more signal than others. The Z-Image LoRA Auto Strength node's whole pitch is: don't guess, read the file.

    It's a pure analysis node. No model input. It opens your LoRA, looks at the actual weight tensors, and computes a per-layer strength map. One knob: global_strength (default 0.75, range 0–2), with the author's own tooltip summing it up: "All per-layer values are auto-computed from ΔW forensics."

    How it works

    For every layer pair in the file it reconstructs the low-rank update ΔW = lora_B @ lora_A, scales it by alpha / rank, then maps each layer's norm to a strength:

    strength = clamp(global × mean_norm / layer_norm, floor 0.30, ceiling 1.50)
    

    High-signal layers get pulled back, low-signal layers get nudged up, and the mean lands on your global_strength. Layer discovery is dynamic - no hardcoded 30-layer range, it just reports the layers that actually exist in the file.

    The outputs - this is the part people wire wrong

    • layer_strengths (STRING) - JSON in the exact format the Z-Image Turbo LoRA Loader expects. This is what you wire forward.
    • analysis_report (STRING) - a readable forensic breakdown: rank, alpha, and per-layer ΔW before → strength after, with ★ marking the hot layers. Send it into a Show Text node and you get a genuinely useful look at how your LoRA was trained.
    • global_strength (FLOAT) and lora_name (STRING) - passthroughs so you don't have to re-set them on the loader.

    The intended workflow: feed this node's layer_strengths into the Turbo Loader's hidden layer_strengths input. The loader bakes the per-layer values in and still does its QKV fusion on top. The author is emphatic about this in the pack's release thread: use the auto-strength node instead of hand-dragging the graph widget - "100% recommend," his words. If you'd rather skip the two-node wiring entirely, the sibling Z-Image LoRA Auto Loader does this same analysis and the loading in one node.

    Installing and troubleshooting

    cd ComfyUI/custom_nodes
    git clone https://github.com/capitan01R/Comfyui-ZiT-Lora-loader
    

    Restart ComfyUI. ComfyUI Manager works too - search the pack title Comfyui-ZiT-Lora-loader. No dependencies beyond numpy, no downloads.

    Two things worth knowing before you trust it blindly. First, the floor and ceiling are real: this node will never push a layer below 0.30 or above 1.50, so global_strength 0 doesn't mean "off" - it floors everything at 0.30. If you genuinely want a layer at zero, that's the loader's graph widget's job. Second, it's architecture-agnostic on the analysis side but built for Z-Image keys, so the report is only as meaningful as the file's naming - a LoRA trained against a different architecture will produce a layer map that does nothing useful downstream.

    Categoryloaders/Z-Image

    Inputs (2)

    NameTypeDefaultDescription
    lora_nameCOMBO0 options:
    global_strengthFLOAT0.750–2Master strength. All per-layer values are auto-computed from ΔW forensics.

    Outputs (4)

    NameTypeDescription
    layer_strengthsSTRING
    analysis_reportSTRING
    global_strengthFLOAT
    lora_nameSTRING