6.9 KiB
2-Model Merger Documentation
Weight-Sum
A * (1 - α) + B * α. A simple linear interpolation between two models.
Models Used: A, B Parameters:
- Alpha: Interpolation weight.
0.0is 100% Model A,1.0is 100% Model B.
Comparative-Interpolation
Interpolates between A and B based on the relative differences in their tensor values. Creates a unique blend by deciding how much of each model to use for each individual weight.
Models Used: A, B Parameters:
- Alpha: Controls the interpolation curve's strength and shape.
- Beta: Switches the interpolation style.
0.0focuses on similarity,1.0focuses on difference. - Gamma: Mixes between a randomized (binomial) interpolation at
0.0and a smooth (linear) one at1.0.
Power-Up (DARE)
Adds the unique capabilities of Model B to Model A using the Drop and Rescale (DARE) technique. This implementation handles shape mismatches between models by padding and uses a randomized dropout mask.
Models Used: A, B Parameters:
- Alpha: The dropout rate (
p). This is the proportion of delta parameters from Model B that are randomly set to zero. - Beta: A final multiplier for the rescaled difference before it's added to Model A.
- Rescaling Logic: Remaining weights are automatically rescaled by
1/(1-p)as per the DARE paper to approximate the original embeddings.
Power-Up (DARE+TIES)
Combines DARE (Drop and Rescale) with TIES (Trim, Elect Sign), the current best-practice algorithm for merging fine-tuned models, particularly LoRA-tuned ones. DARE sparsifies the task vector via random dropout and rescaling; TIES then removes residual low-magnitude noise and enforces sign consistency. The result is a cleaner, more targeted capability transfer from B to A with less interference.
Models Used: A, B Parameters:
- Alpha: DARE drop rate. Fraction of delta parameters randomly zeroed. Higher values produce a sparser, more targeted delta. Typical range:
0.5–0.9. - Beta: TIES trim quantile. Fraction of the smallest-magnitude delta parameters zeroed after DARE, removing residual noise.
0.0disables trimming. Typical range:0.1–0.3. - Gamma: Lambda scale. Final multiplier applied to the merged delta before adding to Model A. Equivalent to the task arithmetic scaling coefficient. Typical range:
0.5–1.5. - Seed: Random seed for the DARE dropout mask. Controls reproducibility.
Algorithm:
- Compute task vector
δ = B − A - DARE: apply random binary mask with keep probability
1 − alpha; rescale survivors by1/(1−alpha) - TIES trim: zero out parameters below the
beta-quantile magnitude threshold - TIES elect: determine dominant sign per position; zero out disagreeing parameters
- Return
A + gamma × δ_filtered
Guidance:
- Start with
alpha=0.9, beta=0.2, gamma=1.0for LoRA-derived models - Lower
alpha(e.g.0.5) for full fine-tunes where more delta mass should be retained - Increase
gammabeyond1.0to amplify B's influence; decrease below1.0to soften it
Enhanced Man Interp
Sophisticated interpolation between values from A and B depending on their difference relative to other values, with manual threshold control.
Models Used: A, B Parameters:
- Alpha: Interpolation strength.
- Beta: Lower mean threshold for filtering differences.
- Gamma: Upper mean threshold for filtering differences.
- Delta: Smoothness factor (mix between randomized mask and powered differences).
Enhanced Auto Interp
Automated version of the enhanced interpolation mode that dynamically calculates thresholds based on mean differences.
Models Used: A, B Parameters:
- Alpha: Interpolation strength.
- Beta: Threshold adjustment factor.
- Gamma: Smoothness factor.
Weight-Sum Cutoff
A linear interpolation mode that only applies the merge to weights whose differences fall within a specific threshold range.
Models Used: A, B Parameters:
- Alpha: Interpolation weight (multiplier for the difference).
- Beta: Upper threshold for the difference cutoff.
- Gamma: Lower threshold for the difference cutoff.
SVD LoRA Extraction
Extracts the difference between Model B and Model A and saves it as a new LoRA file. This mode outputs a LoRA, not a full model. The output file will be saved to your
lorasdirectory.
Models Used: A (Tuned Model), B (Base Model) Parameters:
- Alpha: The Rank (dimension) for the LoRA's standard layers.
- Beta: The Rank (dimension) specifically for 3x3 convolution layers.
- Gamma: The clamp quantile for weight values.
0.99is a typical value to prevent outlier weights from dominating.
Layer Mismatch Handling
When merging models with different layer structures (e.g., fine-tuned models with added/removed layers, or LoRAs with partial layer coverage), the mismatch_mode parameter controls behavior:
| Mode | Behavior |
|---|---|
skip |
Missing layers in B use A's values (default) |
zeros |
Missing layers in B are treated as zeros |
error |
Fail if any layer is missing |
Common scenarios:
- Merging a fine-tuned model with added/removed layers
- Combining LoRA-extracted differences with base models
- Cross-architecture experiments
Note: Extra layers in Model B that don't exist in Model A are currently ignored. The output will always have the same layer structure as Model A.
Dtype Preservation & Override
By default, the merger preserves the highest precision dtype for each key found across all active source models (Model A and Model B) and the requested save_dtype.
- Preserve Higher Precision: If a key is
float32in any of the source models, but you requestedsave_dtype="bf16"or"fp16", that key will be saved asfloat32anyway. This prevents degrading critical high-precision layers (such as normalization layers or layers with restored outliers). - Explicit Override: If you prefer to force the entire model to be saved strictly as the selected
save_dtype(e.g. for complete downcasting tobf16), toggleoverride_dtypetoTrue.
Layer Filtering (Regex Patterns)
Use regex patterns to control which layers are merged:
exclude_patterns
Layers matching any pattern will keep Model A's values only (no merge).
discard_patterns
Layers matching any pattern will be removed entirely from the output.
Pattern format:
- Whitespace-separated regex patterns
- Patterns use substring matching (not full match)
- Example:
text_model loramatches any key containing "text_model" OR "lora" - Example:
layer\.[0-5]\.matches layers 0-5 using regex syntax
Pattern Examples:
| Pattern | Matches |
|---|---|
text_model |
All text encoder layers |
\.norm |
All normalization layers |
attn\.(q|k|v) |
Query, key, value attention weights |
block\.[0-9]\. |
Blocks 0-9 |