PM NuSlerp (Mergekit)
SLERP's more flexible sibling for two-LoRA merges
- MergeMethod
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 whennuslerp_flattenis 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| nuslerp_flatten | BOOLEAN | true | Set to false to do row-wise/column-wise interpolation instead of treating tensors as vectors. |
| nuslerp_row_wise | BOOLEAN | false | SLERP row vectors instead of column vectors. |
| average_weights | BOOLEAN | false | OFF: 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)
| Name | Type | Description |
|---|---|---|
| MergeMethod | MergeMethod | — |