Chapter 2: Model Merging Techniques
Combining Models for Better Results
Model merging combines multiple fine-tuned models into one.
Merging Methods
| Method | Description | Best For |
|---|---|---|
| Linear | Average weights | Simple combination |
| SLERP | Spherical interpolation | Smooth blending |
| TIES | Conflict resolution | Multiple experts |
| DARE | Drop and rescale | Diverse models |
LoRA Merging
# Merge LoRA into base model
from peft import PeftModel
model = PeftModel.from_pretrained(base_model, "adapter_path")
merged_model = model.merge_and_unload()
merged_model.save_pretrained("merged_model")
MergeKit Example
# config.yaml
slices:
- sources:
- model: base_model
layer_range: [0, 32]
- model: finetuned_model
layer_range: [0, 32]
merge_method: slerp
base_model: base_model
parameters:
t: 0.5 # Interpolation factor
dtype: bfloat16
mergekit-yaml config.yaml ./merged_output
When to Merge
✅ Merge when:
- Combining task-specific models
- Deploying simpler architecture
- No need for adapter switching
❌ Keep separate when:
- Need dynamic task switching
- Storage is limited
- Want to update tasks independently