Delta CWB LoRA Multi-Merge
2 to 8 LoRAs, merged by consensus instead of by average
- cwb_config
- output_filename
- cwb_report
A plain average of five LoRAs is how you end up with a model that looks like none of them. Delta CWB LoRA Multi-Merge is the maxed-out version of the pack's consensus merge: it takes anywhere from 2 to 8 equal-prior LoRAs, expands each into full per-layer weight changes, and merges the rows with Consensus-Weighted Blending - so a row only keeps influence if it agrees with the group consensus. The further you get from two inputs, the more that "only what agrees survives" property matters: with several LoRAs in the mix, CWB's mean-or-median consensus plus similarity weighting is closer to taking a vote than taking an average.
Like its two- and three-input siblings (Delta CWB Merge LoRAs (2) / (3)), this is a file-making node: it writes a merged .safetensors into your loras folder rather than patching anything live. LoRA 1 anchors the output layer set and metadata; every other input is an equal contributor whose actual influence is decided by the agreement math, row by row.
The inputs that matter
lora_count(default2, up to8) - must match the number of slots you actually filled. Count says 5 butlora_6is stillNone? It errors out with "unselected input(s)" rather than silently merging a partial set. The count is the first thing to check when a batch merge refuses to run.lora_1throughlora_8-lora_1andlora_2are mandatory; the rest default toNone.cwb_preset(defaultbalanced_mean) - the six presets run from simple blends (balanced_mean,robust_medn,selective_mean) to the norm-aware, diversity-boosting ones (varied_mean_rn_softcb,diverse_medn_rn_dsc_softcb,strongdiv_medn_rn_dsc_softcb). For big multi-LoRA merges the long-name presets exist specifically to keep one dominant LoRA from flattening the rest - when you've got five inputs of very different strengths,diverse_medn_rn_dsc_softcborstrongdiv_medn_rn_dsc_softcbare worth testing first.cwb_config(optional) - connect the pack's CWB Custom Configuration node and it replaces the preset entirely.mismatch_mode(defaultskip) - with up to eight independently trained LoRAs, missing layers aren't a corner case.skipkeeps LoRA 1's version,zerostreats absent inputs as zero contribution,erroraborts.output_representation/output_rank-full_differencesaves the exact merged dense deltas;factorized_lorare-factorizes each merged layer into compactlora_A/lora_Bfactors up tooutput_rank(default 384) if you want a conventional LoRA-shaped file instead.output_filename,save_dtype(defaultbf16),process_device(CUDA with per-layer CPU fallback),exclude_patterns/discard_patterns/glob_patterns, andforce_clear_cachecomplete the panel.
Outputs are output_filename and cwb_report - the report lists merged vs. anchor-preserved layers, zero contributors, rejected unsupported layers, and CUDA→CPU fallbacks. With many inputs, that report is your only window into whether the merge did what you hoped; wire it to a text node and read it.
Honest expectations
This is the pack's most experimental corner - the whole Delta CWB family is marked experimental in the source, with no real community track record yet, so verify results against a plain stacked-LoRA render before you commit. It only merges canonical LoRA factor pairs; DoRA-scale and low-bit factors raise per layer. Streaming one layer at a time keeps memory proportional to a single layer rather than eight full LoRAs, and a layer that OOMs on CUDA retries on CPU. Output is atomic: a failed run leaves any existing same-named file untouched, but a successful rerun overwrites it - name your merges.
Installing it
ComfyUI Manager: search Model Utility Toolkit. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-ModelUtils
Restart ComfyUI. No API keys, no downloads - it reads only the LoRAs already in your models/loras folder. Find it under ModelUtils → LoRA → Merge → Delta CWB or search "Delta", and grab the Multi entry (the 2 and 3 variants are fixed-slot versions of identical machinery). If you want the same batch-expand idea without the consensus weighting, the Lodestone Multi merger in the same pack is the simpler, norm-based alternative.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_count | COMBO | 2 | Number of consecutive selected LoRAs to merge. |
| lora_1 | COMBO | Metadata and layer anchor. Defines saved layers and preserved values. | |
| lora_2 | COMBO | Second equal-prior LoRA contributor. | |
| lora_3 | COMBO | None | Additional equal-prior contributor; required when included by LoRA Count. |
| lora_4 | COMBO | None | Additional equal-prior contributor; required when included by LoRA Count. |
| lora_5 | COMBO | None | Additional equal-prior contributor; required when included by LoRA Count. |
| lora_6 | COMBO | None | Additional equal-prior contributor; required when included by LoRA Count. |
| lora_7 | COMBO | None | Additional equal-prior contributor; required when included by LoRA Count. |
| lora_8 | COMBO | None | Additional equal-prior contributor; required when included by LoRA Count. |
| cwb_preset | COMBO | balanced_mean | Controls how strongly agreement, disagreement, and row magnitude affect the saved full weight changes. A connected CWB Config overrides it completely. |
| mismatch_mode | COMBO | skip | For a missing or incompatible anchored layer: preserve LoRA 1, include an explicit zero contributor, or abort. |
| output_filename | STRING | delta_cwb_merged_multi_lora | Relative filename for the atomically saved full-difference LoRA. |
| save_dtype | COMBO | bf16 | Requested saved precision. Participating FP32 inputs preserve FP32. |
| output_representation | COMBO | full_difference | Save exact full differences or factorize each merged layer directly into compact LoRA factors. |
| output_rank | INT | 3841–16384 | Maximum rank used when Output Representation is factorized_lora. |
| process_device | COMBO | cuda | Processing device. Only a failed CUDA layer retries on CPU. |
| exclude_patterns | STRING | Preserve matching canonical full-difference layers from LoRA 1. | |
| discard_patterns | STRING | Omit matching canonical full-difference layers from the output. | |
| glob_patterns | BOOLEAN | false | Use shell-style glob patterns instead of regular expressions. |
| force_clear_cache | BOOLEAN | true | Clear Python and CUDA caches before each layer to reduce retained memory. |
| cwb_configopt | CWB_CONFIG | Optional complete settings override from CWB Custom Configuration. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| output_filename | * | — |
| cwb_report | STRING | — |