ComfyUI Node

PM Della

Prune adaptively, keep the big changes, drop the small ones

By larsupb·Created 2 years ago·Updated 30 days ago· 75
PM Della
    • MergeMethod
    sign_consensusfalse
    rescale_normdefault
    density0.85
    epsilon0.10
    average_weightsfalse

    DARE prunes randomly and Breadcrumbs prunes both extremes. DELLA takes the smarter route: it looks at each row of the task vector and prunes adaptively, so bigger-magnitude parameters in a row are more likely to survive and small ones are more likely to get dropped. The result is a merge that keeps the significant changes and reduces interference, without the randomness of DARE or the two-sided carve-out of Breadcrumbs.

    You reach for it when DARE's random pruning feels wasteful - when you have a strong sense that certain parameter directions genuinely matter and you don't want them to be lottery tickets. It needs two or more LoRAs plus a base model, and it extends DARE's rescaling.

    How it works

    Within each row of the delta parameters, DELLA assigns each parameter a keep-probability that's scaled between density − epsilon (for the row's smallest element) and density + epsilon (for its largest). So the top of each row has a higher chance of surviving the random draw, the bottom a lower one. Then it applies DARE-style rescaling to preserve magnitude, and optionally TIES sign consensus (the ties toggle). The epsilon knob sets how wide that probability spread is: bigger epsilon, more aggressive preference for large magnitudes.

    The inputs that matter

    • density - target fraction of weights retained (default 0.85).
    • epsilon - half-width of the keep-probability range (default 0.1). Must satisfy density − epsilon > 0 and density + epsilon < 1, or the probabilities go out of bounds - the node will reject invalid combos.
    • ties - add TIES sign consensus (default off).
    • rescale_norm - rescaling strategy (l1, l2, linf, none, default).
    • normalize - weight normalization for contributors (default true).

    Output is a MergeMethod config for PM LoRA Merger.

    Installing

    Ships in the LoRA Power-Merger pack. ComfyUI Manager (search "LoRA Power-Merger") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/larsupb/LoRA-Merger-ComfyUI
    cd LoRA-Merger-ComfyUI
    pip install -r requirements.txt
    

    Restart ComfyUI. Dependencies: PyTorch, lxml, mergekit.

    Common issues

    The parameter-boundary error is the classic first run: cranking density to 0.95 with epsilon at 0.1 breaks the density + epsilon < 1 rule. Keep epsilon modest (0.05–0.1) and density in the 0.7–0.9 range and you'll stay legal. If the merge barely differs from DARE, your epsilon is too small to matter - the adaptive pruning is what distinguishes them. And mismatched ranks between LoRAs fail at the merger: reconcile them first with PM LoRA Stack Decompose (rSVD). Like the rest of the family, the "(Mergekit)" label is legacy - current versions run DELLA on the pack's own delta-space code.

    CategoryLoRA PowerMerge/Task Arithmetic

    Inputs (5)

    NameTypeDefaultDescription
    sign_consensusBOOLEANfalseTIES sign consensus. ON: elect one sign per weight element (majority vote across the LoRAs) and keep only contributions that agree with it — cancels conflicting edits between LoRAs. OFF: plain weighted combine (the '_linear' variant, no sign vote).
    rescale_normCOMBOdefaultRescaling strategy: • default: Auto-select (L1 for methods needing it, none otherwise) • l1: L1 norm preservation (precise, preserves magnitude sum) • l2: L2 norm preservation (precise, preserves Euclidean norm) • linf: L-infinity norm (preserves max absolute value, prevents amplification) • none: No rescaling (may reduce merge strength)
    densityFLOAT0.850–1Fraction of weights in differences from the base model to retain.
    epsilonFLOAT0.100–1Maximum change in drop probability based on magnitude. Drop probabilities assigned will range from density - epsilon to density + epsilon.
    average_weightsBOOLEANfalseON: divide by the per-element sum of contributing weights — a weighted AVERAGE, so per-LoRA strengths act as ratios (two LoRAs at strength 1.0 each land at ~50%). OFF: additive SUM, so strengths act as gains and stacked LoRAs keep full magnitude (matches ComfyUI's native LoRA stacking, the default). Turn ON only to blend/interpolate LoRAs.

    Outputs (1)

    NameTypeDescription
    MergeMethodMergeMethod