模型融合 ModelMerge

基本概念

模型融合(model merging):

  • 将多个神经网络模型进行合并,得到一个融合模型
  • 优势在于节省计算/时间成本、无需训练数据(隐私保护)
  • 有时能取得类似多任务学习的效果,也可能具备更好的泛化性

思考:如何验证模型融合的合理性? (此处思路参考自知乎-段誉

验证方式 1:Delta Parameters 的冗余性

  • Delta Parameters 描述了模型微调前后的参数变化值
  • 论文 针对微调模型的 Delta Parameters 进行随机 Drop 实验(如上图所示),发现当 Drop Rate 在 90%以下时微调模型性能未出现明显下滑;说明 Delta Parameters 存在冗余性
  • 由此,论文也提出了 DARE 方法来减少 Delta Parameters 的冗余,促进模型融合的性能

验证方式 2:Task Vector 的正交性

  • Task Vector 即针对任务微调而产生的参数向量(等同于上文提及的 Delta Parameters)
  • 论文 针对不同任务的 Task Vector 进行相似度矩阵计算(如上图所示),发现不同任务间的 Task Vector 的相似度极低(除部分高相关任务),因此 Task Vector 具备正交性
  • Task Vector 的正交性意味着,对多个模型的参数进行平均融合是可行的

需要注意的是,以上验证方式仅为模型融合提供了一定的合理性,并且以上实验均考虑的是同一基础模型的不同微调版本间的融合;因此结论在不同基础模型间不一定成立

不过目前也已经有很多人在探索异源模型融合的可行性~

常见融合方法

权重插值

权重插值(weight interpolation)

  • 相同架构模型(从同一基础初始模型微调的多个模型)的线性加权
  • 该方式适合图像处理、图像生成或分类模型,对 LLMs 也有一定效果
  • 由于忽略了参数干扰(冗余参数/参数符号冲突),可能导致模型性能下降

最简单的权重插值方法就是对多模型的参数值直接取平均

Fisher Averaging(原始论文):

  • 对多模型的参数进行加权平均融合,其中不同模型的权重取决于 Fisher Information
  • 该方法追求最大化模型后验的联合似然,其最终的融合效果接近传统的迁移学习方法

SLERP

球面线性插值(SLERP)是一种用于在两个向量之间平滑插值的方法

  • SLERP 能保持恒定的变化率并保留矢量所在的球形空间的几何特性
  • SLERP 是目前流行的模型合并方法,但它一次只能用于合并两个模型
  • 实际使用时,SLERP 被应用于模型的每一层,以完成整体的模型融合

SLERP 的计算过程:

  1. 先将输入的两个向量进行标准化并计算向量间的夹角(标准化操作用于排除幅度信息而保留方向信息,因为方向信息一般更有意义,对应特征的学习和表征)
  2. 如果向量几乎共线(余弦相似度>99.95%),则默认使用线性插值以提高效率
  3. 否则,SLERP 根据插值因子 t(预设的向量权重)和向量之间的角度 $\theta$ 计算比例因子 $s$:

$$ \begin{equation} \left\{ \begin{gathered} s_0 &= sin(\theta-t\times \theta)/sin(\theta) \ \\ s_1 &= sin(t\times \theta)/sin(\theta) \end{gathered} \right. \end{equation} $$ 4. 使用比例因子对原始向量进行加权求和,然后得到插值后的最终向量

注意,此处的比例因子计算公式推导自实际代码

Task Arithmetic

任务算术(Task Arithmetic)对任务向量进行简单的算术运算(原始论文):

  • 任务向量(Task vectors)来自微调模型参数与基础模型参数之间的差值
  • 对任务向量进行方向的取反可以消除不良行为或忘记任务,如上图(b)所示
  • 两种不同的任务向量之间相加,可以实现多任务模型或改善单任务性能,如图(c)
  • 当任务之间形成类比关系时,可以通过组合任务向量来提高数据稀缺任务的性能,如图(d)

对图(d)进行补充说明,假设 $\tau_C$ 对应"识别室外狮子的任务"这一微调模型的任务向量,$\tau_B$ 对应"识别室内狗子的任务",$\tau_A$ 对应"识别室外狗子的任务",则通过这三个任务向量的组合,可以构建新的任务向量 $\tau_{new}$

新的任务向量 $\tau_{new}$ 对应"识别室内狮子的任务"这一微调模型,该任务对应的数据比较稀缺~

TIES-Merging

TIES-Merging 主要针对模型合并中的两个常见问题进行优化:

  • 问题 1:模型参数冗余,在合并时忽略冗余参数可以更好地保留有效信息
  • 问题 2:参数值的符号不一致,不同任务的微调可能引起参数相反的变化

TIES-Merging 计算过程(原始论文):

  1. 修剪(Trim):保留值最大的 Top-K (一般为前 20%)参数,其他参数置为 0
  2. 选举(Elect Sign):使用投票法/最大值/求和等方式,确定合并后参数的方向
  3. 合并(Disjoint Merge):保留符号与已选定方向一致的非 0 参数进行合并(求均值)

其他补充:

  • TIES-Merging 更适用于同一基础模型的不同微调版本间进行融合
  • 原文作者经过实验分析发现,选举环节存在较大的提升空间;当合并后参数的方向较为理想时,TIES-Merging 的模型合并效果接近多任务学习的效果

DARE

DARE 以参数的冗余性为切入点,优化模型的融合过程:

  • Delta Parameters 具有极大的冗余,而 DARE 会丢弃其中的 90% 甚至 99%
  • DARE 作为一种通用的参数稀疏化技巧,可以和其他模型合并算法配合使用
  • DARE 的计算方式简单,在弃置大量参数的情况下仍能保持对原始嵌入的良好近似

DARE 的计算流程(原始论文):

  1. 弃置:DARE 按照预设的弃置率 $p$ 对 Delta Parameters $\delta^t$ 进行随机舍弃(置为 0)
  2. 重新缩放:对已保留的 $\delta^t$ 进行缩放(保持对原始嵌入的近似),$\delta^t_{new}=\delta^t/(1-p)$

DARE 经常与 Task Arithmetic 或 TIES-Merging 配套使用

RegMean

RegMean 方法只针对 linear layer 的融合

  • RegMean 追求最小化融合模型与单个模型之间的预测差异
  • RegMean 方法是多任务学习的有效替代,计算效率高,泛化能力也不错

DARE 的计算流程(原始论文):

  • 考虑两个线性模型:$f_1(x)=W^T_1x$,$f_2(x)=W^T_2x$
  • 以 $l^2$ 距离为度量,定义 DARE 算法的优化目标:

$$ \min_{w}\quad|W^TX_1-W_1^TX_1|^2+|W^TX_2-W_2^TX_2|^2 $$

  • 以上线性回归问题,具备解析解:$W_{M}=(X_{1}^{T}X_{1}+X_{2}^{T}X_{2})^{-1}(X_{1}^{T}X_{1}W_{1}+X_{2}^{T}X_{2}W_{2})$
  • 当问题转化为 K 个模型时,对应的解析解如下:

$$ W_{M}=(\stackrel{i\in\mathcal{K}}{\sum_{i}}X_{i}^{T}X_{i})\stackrel{-1}{\sum_{i}}(X_{i}^{T}X_{i}W_{i}) $$

RegMean 也可以理解为对权重矩阵中的行进行重新加权和线性组合

Passthrough/Frankenmerging

Passthrough,该方法也被称为 Frankenmerging

  • 即像科学怪人一样拼接不同模型的各个部分;
  • 该方法不涉及参数合并,而是尝试顺序堆叠多个模型的不同层以创建新模型
  • 该方法支持不同来自基模型间的模型融合,融合后的模型可能会有着奇怪的参数量
  • 需要大量的实验和试错,才能找到合适的模型(比如 Goliath 或 Solar-10.7B.)

其他补充

mergekit 模型合并工具包

项目地址 2.9k ⭐

mergekit 是一个用于合并预训练语言模型的工具包

  • 使用核外方法在资源受限的情况下执行不合理的复杂合并
  • 合并可以完全在 CPU 上运行,也可以使用低至 8 GB 的 VRAM 进行加速
  • 支持 Llama、Mistral、GPT-NeoX、StableLM 等主流 LLMs 结构
  • 支持许多合并算法:Linear、SLERP、Task Arithmetic、TIES、DARE、Passthrough

目前 mergekit 只支持同源模型间的融合,对于不同源但架构相同的模型融合方法(例如 ZipIt、OT Fusion 和 Git Rebasin)仍在积极探索和持续开发中;

Passthrough 是 mergekit 目前(截至 240328)唯一支持的异源模型融合方法

Sakana AI 推出自动模型融合策略

EvoLLM:自动化模型融合进化框架

HuggingFace 开源 LLMs 榜单

Open_llm_leaderboard 大部分都是融合模型

拓展资料

HuggingFace 模型合并相关论文列表

模型融合 (Model Merging):合理性、常见技术及其特性

往年同期文章