深挖-模型合并 (Model Merging)
一句话理解
模型合并 (Model Merging) 是将多个针对不同任务微调的模型(或 LoRA 适配器)的权重参数进行数学组合,生成一个同时具备多种能力的单一模型,整个过程无需任何额外训练或数据,是开源社区在 2024-2026 年间最活跃的技术方向之一。
零基础理解
假设你有三个 LoRA 适配器:
- LoRA-A:让模型擅长写 Python 代码
- LoRA-B:让模型擅长写唐诗宋词
- LoRA-C:让模型擅长中英翻译
传统做法是:你需要哪个能力就加载哪个 LoRA,每次切换能力都要重新加载权重。模型合并的思路是:把这三个 LoRA “调成一杯鸡尾酒”——用数学方法将它们的权重按一定比例混合,得到一个同时擅长写代码、写诗、做翻译的单一模型。
类比:三个独立的 LoRA 就像三个独立的乐器演奏者,各奏各的;模型合并就像一位”指挥家”,把三种乐器的声音按照一定比例混合成一首和谐的交响乐。如果混合比例合适,你可以得到一个”全才”;如果比例不当,得到的可能是一个”什么都会一点但什么都不精”的平庸模型。
模型合并之所以有效,有赖于两个关键前提:
- 线性模式连接 (Linear Mode Connectivity):在同一预训练 base model 上微调的多个模型,其权重空间中的参数变化往往沿着相近的方向,线性插值不至于破坏模型的基础能力。
- 任务向量的可加性 (Task Vector Additivity):Fine-tuned 模型减去 base model 的差值(即”任务向量”),在不同任务之间具有某种正交性,可以通过加减操作来组合。
核心方法
1. Linear / Weighted Average (简单加权平均)
最朴素的方法。对于 个模型(或 LoRA 权重),按给定权重系数直接对参数做逐元素加权平均:
其中 。这是 MergeKit 中 linear 方法的实现。
优点:简单、快速、不需要任何计算。缺点:不同模型的参数可能存在方向冲突,简单平均会相互抵消,导致合并后的模型各方面能力都平庸。
2. SLERP (Spherical Linear Interpolation, 球面线性插值)
仅适用于两个模型的合并。SLERP 在权重空间的球面上做插值,而非在欧几里得空间中做线性插值:
其中 是 和 之间的夹角, 是插值参数( 为纯模型 A, 为纯模型 B)。
SLERP 的优势在于保持了权重向量的范数,避免了线性插值在高维空间中常见的”向原点收缩”问题,使得合并后的模型参数保持在合理的数值范围内。
3. TIES (TIming, Electing, and Sign consolidation, 2023)
TIES 是目前最受关注的”多模型合并”算法,由三步骤组成:
Step 1: Trim (裁剪/剪枝) 对每个模型,计算其相对于 base model 的任务向量 。只保留每个任务向量中绝对值最大的 top- 的参数变化,其余置零。这一步去除了微调过程中的噪声,保留每个任务最核心的参数变化。
Step 2: Elect Signs (选举符号) 不同模型对同一参数的变化方向可能相反(一个正、一个负)。TIES 对所有模型在同一参数位置上的变化方向进行”多数投票”——以加权总和的符号为最终方向。如果该参数的总变化量 为正,最终方向为正;否则为负。
Step 3: Disjoint Merge (不相交合并) 只在”选举出的符号方向”上合并参数。对于每个参数,只合并那些符号与选举结果一致的模型的任务向量,符号冲突的模型在该参数上的贡献被丢弃。
4. DARE (Drop And REscale, 2024)
DARE 的核心思想与 Dropout 类似:随机丢弃 + 重新缩放。
Step 1: Drop 对每个任务向量 ,以概率 (通常 甚至 )随机将某些参数的变化量置零(即该参数恢复为 base model 的值)。
Step 2: Rescale 将保留的参数变化量乘以 进行缩放,以保持任务向量的期望幅度不变。
Step 3: Merge 使用 TIES 或 Linear 方法对 rescale 后的任务向量进行合并。
DARE 的惊人发现:即使丢弃 90% 甚至 99% 的任务向量参数,模型在目标任务上的性能几乎不下降。这意味着微调过程中大部分参数变化是冗余的,只有少数关键参数承载了任务的”核心知识”。DARE 与 TIES 结合使用(先 DARE 再 TIES),在多项 benchmark 上取得了最优的合并效果。
合并策略对比
| 方法 | 适用模型数 | 核心机制 | 解决冲突 | 计算复杂度 | 合并效果 | 代表工具 |
|---|---|---|---|---|---|---|
| Linear (加权平均) | 任意数量 | 逐参数加权平均 | 无(冲突参数直接抵消) | 极低 | 基础,常有”平庸化”问题 | MergeKit linear |
| SLERP | 2 个 | 球面线性插值 | 无(规避了范数收缩) | 低 | 两模型合并效果好,范数稳定 | MergeKit slerp |
| Task Arithmetic | 任意数量 | 无(简单加减) | 低 | 可做”加法”(加能力)和”减法”(去能力) | MergeKit task_arithmetic | |
| TIES | 任意数量 | 剪枝 + 符号选举 + 不相交合并 | 有(符号冲突通过投票解决) | 中等 | 多模型合并效果显著优于线性 | MergeKit ties |
| DARE + TIES | 任意数量 | 随机丢弃 90%+ 参数变化 + TIES | 有(DARE 减少冲突 + TIES 解决剩余冲突) | 中等 | 当前最优,4-5 个模型合并后仍保持各任务能力 | MergeKit dare_ties |
| DARE + Linear | 任意数量 | 随机丢弃 + 线性平均 | 有限 | 低-中 | 比纯 Linear 好,比 TIES 差 | MergeKit dare_linear |
| Passthrough | 2 个 | 保留模型 A 的某些层(如前 20 层),换为模型 B 的其余层 | 结构级别混合 | 低 | 适合不同架构间的层混合 | MergeKit passthrough |
| Breadcrumbs | 任意数量 | 按训练时间线合并多个 checkpoint | 无 | 低 | 恢复训练轨迹中的中间能力 | — |
工具:MergeKit
MergeKit 是当前最主流的模型合并工具,由 Arcee AI 开发。它提供:
- YAML 配置文件:通过声明式配置指定合并策略、模型路径、权重系数
- 多种合并方法:linear, slerp, ties, dare_ties, dare_linear, task_arithmetic, passthrough, breadcrumbs
- 层级别控制:可以为不同层设置不同的合并策略(如 attention 层用一种方法,MLP 层用另一种)
- HuggingFace 集成:直接从 HuggingFace Hub 加载模型,合并后自动推送到 Hub
示例 MergeKit 配置(DARE + TIES 合并 3 个模型):
models:
- model: mistralai/Mistral-7B-v0.1
# Base model, no weight needed
- model: jan-hq/instruction-model
parameters:
weight: 1.0
density: 0.9 # DARE: keep 90% of task vector
- model: cognitivecomputations/dolphin-model
parameters:
weight: 0.5
density: 0.85
- model: garage-bAInd/platypus-model
parameters:
weight: 0.3
density: 0.95
merge_method: dare_ties
base_model: mistralai/Mistral-7B-v0.1
parameters:
int8_mask: true # 节省显存
dtype: bfloat16
2026 年定位:开源社区的”杀手级”技术
模型合并是开源 LLM 社区在 2024-2026 年最具影响力的技术之一,它改变了模型开发的分工模式。
改变了什么
- 分工专业化:不再需要一个人/团队训练一个”全能模型”。不同团队可以专注训练各自擅长的 LoRA(代码、数学、创意写作、翻译…),然后通过合并组装成全能模型。
- 降低门槛:LoRA 训练仅需消费级 GPU(如 RTX 4090),模型合并甚至不需要 GPU——这使得个人开发者也能参与”大模型能力组装”。
- 快速迭代:无需重新训练,调整合并权重即可快速实验不同的能力组合。HuggingFace 的 Open LLM Leaderboard 上,合并模型(如”∞-Boros-Maschine”、“Bagel”等)曾多次登顶。
核心挑战
- 结果不可预测:合并后的模型在某个 benchmark 上表现好,不意味着在真实场景中表现好。合并是一个”黑盒”过程,缺乏理论保证。
- 评估困难:如何衡量合并后的模型”是否真的同时具备了所有源模型的能力”?现有的自动化 benchmark 无法完全替代人工评估。
- 冲突不可控:随着合并模型数量增加,参数冲突呈指数增长,合并效果可能急剧下降。DARE 通过大比例丢弃缓解了这一问题,但本质矛盾仍未解决。
- 安全风险:恶意微调的模型(如去除了安全对齐的模型)通过合并可以”污染”正常模型,且合并后的安全检查尚未建立统一标准。
2026 年实践建议
- 合并 2-3 个 LoRA 的效果通常可靠,5 个以上需谨慎评估
- 优先使用 DARE + TIES 组合,density 参数建议从 0.5 开始调参
- 合并后务必进行多维度评估(不仅是 benchmark,还包括人工红队测试)
- 关注 Open LLM Leaderboard 和 LMSYS Chatbot Arena 上合并模型的表现
相关笔记
- 第11章 · 模型微调 — 理解模型微调的基本范式(全量微调、参数高效微调)
- LoRA(Low-Rank Adaptation) — 低秩适配器,模型合并最常用的”源材料”
- QLoRA(Quantized LoRA) — 量化 LoRA,进一步降低微调显存需求
- 偏好对齐:DPO vs GRPO(深挖) — DPO、RLHF 等偏好对齐技术,与模型合并互补
- 深挖-ViT (Vision Transformer) — ViT 深度分析
- 深挖-Mamba — Mamba 架构深度分析
来源
- TIES-Merging: Resolving Interference When Merging Models (Yadav et al., 2023)
- Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch (Yu et al., 2023) — DARE 论文
- Editing Models with Task Arithmetic (Ilharco et al., 2022) — Task Vector 开创性工作
- Model Soups: Averaging Weights of Multiple Fine-tuned Models Improves Accuracy Without Increasing Inference Time (Wortsman et al., 2022)
- MergeKit: A Toolkit for Merging Large Language Models (Goddard et al., 2024)
- MergeKit GitHub 仓库
- HuggingFace Open LLM Leaderboard
- A Beginner’s Guide to LLM Model Merging (Maxime Labonne)
- Merge Large Language Models with MergeKit (Maxime Labonne)
- Model Merging on HuggingFace Hub