Nodes/LoRA Power-Merger ComfyUI/PM NuSlerp (Mergekit)
ComfyUI Node

PM NuSlerp (Mergekit)

SLERP's more flexible sibling for two-LoRA merges

By larsupb·Created 2 years ago·Updated 30 days ago· 75
PM NuSlerp (Mergekit)
    • MergeMethod
    nuslerp_flattentrue
    nuslerp_row_wisefalse
    average_weightsfalse

    SLERP is the classic "morph between two things smoothly" merge - spherical linear interpolation, which traces the shortest arc between two weight vectors instead of drawing a straight line through them. NuSLERP is the Power-Merger pack's upgraded take on it: same idea, more control, and it can interpolate the changes relative to a shared base model instead of the raw weights.

    You reach for it when you have exactly two LoRAs and want a controlled, tunable blend between them - say, one style and one character LoRA, where you want to walk the interpolation point until the balance feels right. It's the method node to pair with the Parameter Sweep Sampler if you want to eyeball a t sweep without touching the graph repeatedly.

    How it works

    Like SLERP, it requires exactly two LoRAs (for more than two, the pack points you to NuSLERP's cousin PM KArcher, the Karcher mean). The twist: if you set up a base model, NuSLERP first computes task vectors - the difference between each of your two LoRAs and that base - SLERPs those vectors, then adds the result back to the base. That's "interpolate the changes, not the models," which keeps the merge anchored to a common ancestor instead of drifting through weight space.

    The interpolation point t isn't a widget on this node, which trips people up: it's derived from the per-LoRA strengths in the stack, where t = model2_weight / (model1_weight + model2_weight). Equal strengths gives you the 50/50 midpoint.

    The inputs that matter

    Only two, and both are about how the interpolation happens, not where:

    • nuslerp_flatten (default true) - treats each weight matrix as one flat vector and SLERPs them as a whole. Set it to false to interpolate row-wise/column-wise instead, which preserves more local structure and is often smoother for conv layers.
    • nuslerp_row_wise (default false) - only matters when nuslerp_flatten is false: pick whether the row-wise path works along rows or columns.

    That's it - the output is a MergeMethod object you wire straight into PM LoRA Merger's method input.

    Installing

    It ships with the LoRA Power-Merger pack, so install that once and every method node comes with it. Easiest is 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 and the node appears under LoRA PowerMerge/Spherical Interpolation Methods. The install pulls in mergekit from Arcee's git repo plus lxml - mergekit is genuinely what powers this one, unlike some of the pack's other "Mergekit"-suffixed nodes.

    Common issues

    The classic mistake is feeding it more than two LoRAs - it errors, by design, and that's the pack telling you to use KArcher or stack fewer. The second is confusion about why there's no t slider; remember the balance lives in the stack's strengths, not here. And if the two LoRAs have different ranks, run them through PM LoRA Stack Decompose with rSVD first or the shapes won't line up.

    CategoryLoRA PowerMerge/Spherical Interpolation Methods

    Inputs (3)

    NameTypeDefaultDescription
    nuslerp_flattenBOOLEANtrueSet to false to do row-wise/column-wise interpolation instead of treating tensors as vectors.
    nuslerp_row_wiseBOOLEANfalseSLERP row vectors instead of column vectors.
    average_weightsBOOLEANfalseOFF: additive SUM, so per-LoRA strengths act as gains and stacked LoRAs keep full magnitude (matches ComfyUI's native LoRA stacking and the other merge nodes, the default). ON: normalized weighted AVERAGE, so strengths act as ratios and the result is a blend/interpolation (weaker magnitude). Note: strengths control MAGNITUDE only, not the interpolation position.

    Outputs (1)

    NameTypeDescription
    MergeMethodMergeMethod