首页 > 其他分享 >LLM模型融合(一)

LLM模型融合(一)

时间:2024-10-04 22:33:05浏览次数:9  
标签:Task SFT 融合 LLM delta theta 模型

写文章
点击打开江左郎的主页
模型融合(Model Merging):合理性、常见技术及其特性
模型融合(Model Merging):合理性、常见技术及其特性
段誉
段誉​
武汉大学 网络空间安全硕士
​关注他
109 人赞同了该文章

目录
引言

开源LLM世界百花齐放,除了通用Base模型、SFT模型之外,另有一类融合模型(merged model) 常出现在各类榜单的top位置。

模型融合(model merging)指:将多个SFT模型在参数粒度上进行合并,得到一个融合模型。

Model Merging能取得近似于multi-task learning的效果,即融合模型能够同时“学会”多种任务,也可能取得更好的in-domain performance、更好的out-of-distribution generalization。

Model Merging在LLM时代也是合时宜的技术,因为它:

无需训练,节省了大量的机器成本、时间成本;
只需模型参数,而无需训练数据,规避了数据隐私问题。
这引起了笔者的兴趣:模型融合靠谱吗?有哪些常见技术?该技术的特性是什么?

本文将针对这三个问题进行讨论。

模型融合,合理吗?
Delta Parameters的冗余性
首先从SFT过程的冗余性谈起。

先引入一个概念,叫delta parameters,其值为 \theta_{SFT}-\theta_{Base} ,直观理解就是SFT前后的参数变化值。

Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch[1]提出一种对模型参数进行稀疏化的方法 -- DARE,其方法类似dropout:随机drop一定比例的delta parameters(置为0),对剩余的parameters进行rescale,即除以(1-drop_rate),以保证output的期望一致。

实验发现drop rate在90%-99%时,效果与原模型相差无几;而且模型越大,可以丢弃的delta parameters越多。

因为delta parameters是高度冗余的,因此可以在合并模型前,先丢掉大量的冗余参数,这样合并后的模型更不容易出现interference(干扰)现象,合并效果也就有了保障。形象化理解可参见下图。

Task Vector的正交性
此处的task vector等同于上节提到的delta parameters,源自Editing models with task arithmetic[2]的提法,因为这些参数是在某个task上FT后得到的,带有这个task的信息,因此称之为task vector。

Task-Arithmetic论文对多个task vector进行了相似度计算,发现它们之间的相似度极低,除了少数彼此关联的任务外,其余的task vector几乎都是正交的。

由于task vector之间的正交性,即使直接对参数进行平均,效果也还不错。

前提
就笔者阅读的论文而言,参数融合有一个必要前提:

用于融合的SFT模型必须源自同一个Base模型,即其模型结构一致、SFT的initilization一致。

其背后的原因在于:用于合并的delta parameters/task vector的数值不可过大,否则会明显影响合并效果。

DARE论文中有一个实验:当用于计算delta parameters的SFT模型(WizardCoder-Python-13B )并不源自Base模型(Llama-2-13b)时,其delta parameters值较大(> 0.005),此时仅drop 10% 的参数也会导致效果骤降。

Task-Arithmetic论文研究了 在FT时采取不同量级的learning rate对合并效果的影响。发现当learning rate较大时,合并效果明显下降。

这与DARE论文的实验异曲同工,均说明当delta parameters/task vector的数值较大时,合并效果是有影响的。

至于数值多大算大?DARE给出的数字是0.005,当大多数的delta parameter小于此值时可进行合并,否则不建议合并。

模型融合的常见技术
任务定义
输入

n个SFT Model \theta_{SFT1}、\theta_{SFT2}...\theta_{SFTn}
1个Base Model \theta_{Base}
通过相减得到每个SFT Model的delta parameter \delta_{SFT1}、\delta_{SFT2}...\delta_{SFTn}
输出

1个merged Model \theta_{Merge}
Simple Averaging
\theta_{Merge} = 1/n * \sum_{i=1}^{n}\theta_{SFTi} = \theta_{Base} + (1/n * \sum_{i=1}^{n}\delta_{SFTi})

由于前文提到的冗余性和正交性特征,这一方法在少量模型融合的场景效果也还尚可,通常作为baseline进行比较。

Fisher Averaging
简单来说,Fisher Averaging[3]就是在合并时先对每个weight进行加权。其公式如下:

\theta_{Merge} = \sum_{i=1}^{n} \hat{F}i \theta / \sum_{i=1}^{n} \hat{F}_i

其中, \hat{F}_i 为Fisher Information Matrix,用以衡量任务i中每个参数的重要性。其公式如下:

Task Arithmetic
Task Arithmetic是对 \delta_{SFT} 进行sum后,乘上scale term \lambda ,与Base Model合并后得到融合模型。其公式如下:

\theta_{Merge} = \theta_{Base} + (\lambda * \sum_{i=1}^{n}\delta_{SFTi})

\lambda 作为scale term,从验证集中挑选得来;论文实验发现, 0.3 - 0.5的值一般比较好,没有validation(或者懒)的时候,直接设置为0.3 - 0.5即可。

RegMean
RegMean方法[4]只针对linear layer的融合,其思想是:合并后的模型输出要与合并前的模型输出尽可能接近。其目标函数如下:

在linear layer的设定下,该问题直接有close-form solution:

原论文应用RegMean方法的策略如下:

对linear layer使用RegMean方法进行参数融合;
对非linear layer,使用simple averaging方法进行参数融合。
TIES-Merging
TIES[5]的核心思想是尽量减少干扰(interference),从而取得更好的模型融合效果。

作者提出有两类干扰:

冗余参数带来的干扰,这类干扰就像noise;
delta parameter的不同方向带来的干扰,例如任务1要往东走、任务2要往西走,两者相加带来抵消,使得两个任务都做不好。
TIES就是为了解决这两类干扰。其框架图如下:

其核心步骤有三:

Trim。对每个待合并模型,仅保留magnitude最大的top 20%
参数,其余参数置为0;
Elect。得到每个参数的merged sign(即方向,取值+1、-1、0),merge策略类似于max-pooling -- 计算每个方向的magnitude和,选择magnitude最大的方向作为merged sign,也可以认为这是一种“投票”机制,少数任务服从多数任务;
Disjoint Merge。对每个
参数,仅保留符合merged sign的参数,然后进行直接平均,但计算平均时并不包括值为0的参数。
经过以上步骤,得到
,然后像Task Arithmetic一样加入scale term,与Base Model参数合并,得到Merged Model:

值得一提的是,作者实验发现如果使用oracle merged sign,TIES方法的效果可以直逼Multi Task Learning方法,说明Elect阶段还有很大的提升空间。
DARE
DARE方法前文已有介绍,其本身并不直接merge,而是提供了一种对delta parameters进行稀疏化的工具,因此可以作为预处理方法,被应用到任何一个merge方法之中。

模型融合的技术特性
In-Domain Performance
融合模型既然对标Multi-Task Learning,其第一个关注点在于:

在同任务上,融合后的单一模型,和融合前的各个模型相比,表现如何?

纵观论文,可以发现以下特性:

特性1:融合模型的效果,通常比融合前的SFT模型差,更比Multi-Task Learning模型差;但随技术发展,其差距在减小,甚至偶有提升

以TIES论文结果为例,所有融合模型的效果距离第一列的FINE-TUNED(即用于融合的SFT模型)和MULTITASK(即用多个dataset,进行multi-task learning后得到的模型)仍有不小的差距。

然而DARE论文的实验表明,通过DARE + Task-Arithmetic,有可能得到效果更好的融合模型。例如融合WizardLM-13B和WizardMath-13B之后,其instruction following和math reasoning(GSM8K)能力都比单独的模型要更好。

不过需要指出的是,这一效果提升似乎并无规律可言,并且融合的模型也不多,最多才3个而已,不过这还是给模型融合这一方向注入了信心 -- 融合模型的效果有可能比单模型更好。

特性2:融合的模型越多,效果的损失也越大

融合的模型多了,各参数间互相干扰的情况愈发严重,因此带来效果损失也是情理之中的事情。从TIES论文的结果来看,当merge模型达到7个时,表现最好的TIES也只能取得原模型效果的85%;不过当merge模型只有2个时,TIES和Task-Arithmetic都能几乎保持原模型的效果。

Out-Of-Distribution Generalization
Multi-Task Learning的另一个重要特性是OOD Generalization,这也是融合模型的第二个重要关注点。

所谓OOD Generalization,指的是模型在同任务、但没见过的数据分布上的泛化性。

从TIES论文的实验来看,融合模型的OOD Generalization能力还不错,说明融合模型在一定程度上学到了鲁棒的task解决能力。

其他使用场景
模型融合还有一些使用场景:

在一次训练当中,融合多个checkpoint,以提升模型的训练效果;
将融合模型作为进一步Fine-Tuning的起点,以取得更好的FT效果;
Task Vector不仅可以用于加(即模型融合),也可以用于减(即让模型遗忘某些能力)。
总结
模型融合在参数粒度上对模型进行合并,乍一看非常不科学,但其背后有SFT参数更新的冗余性、Task Vector的正交性做支撑,具备一定的合理性,即使在目前还不算复杂的融合方法下,也已经能够取得不错的效果。

同时,本文介绍了5种Merge算法、1种预处理算法,并对模型融合的技术特性进行了归纳,希望帮助读者对模型融合产生一个比较全面、深入的认识。

笔者认为模型融合是一个很好的分析工具,它可以帮助我们理解LLM是如何“解锁”某一任务的,这对于理解并优化LLM的Task Adapation能力是有意义的。

关注笔者
欢迎关注笔者的公众号,了解更多有趣、有用的NLP/AI知识:)

参考资料
[1] Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch(DARE): https://arxiv.org/abs/2311.03099

[2] Editing models with task arithmetic: https://openreview.net/pdf?id=6t0Kwf8-jrj

[3] Merging Models with Fisher-Weighted Averaging: https://arxiv.org/abs/2111.09832

[4] Dataless Knowledge Fusion by Merging Weights of Language Models(RegMean): https://openreview.net/pdf?id=FCnohuR6AnM

[5] TIES-Merging: Resolving Interference When Merging Models: https://arxiv.org/abs/2306.01708

标签:Task,SFT,融合,LLM,delta,theta,模型
From: https://www.cnblogs.com/jzzg/p/18447413

相关文章

  • 书生浦语大模型全链条的开源体系介绍
    书生浦语大模型是一个全链条的开源体系,支持长达20万汉字的输入,是全球大模型产品中支持的最长上下文输入长度。模型具备超长上下文、推理数学代码、对话和创作体验、工具调用等能力。书生浦语大模型致力于大模型研究与开发工具链的开源组织。为所有AI开发者提供高效、易用的开源......
  • 小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
    小米13TPro是一款性能卓越、设计精美的旗舰机型,具备多项领先配置,且在与前一代产品及友商机型的对比中优势明显,值得深入探讨。性能提升小米13TPro搭载了最新的天玑9200+处理器,相较于前一代(小米12TPro)的骁龙8+Gen1,在性能和能效表现上均有显著提升。天玑9200+的A......
  • 书生大模型实战:入门
    第1关Linux基础知识闯关任务完成SSH连接与端口映射并运行hello_world.py第2关Python基础知识闯关任务Python实现wordcount闯关任务Vscode连接InternStudiodebug笔记第3关Git介绍1.破冰活动:自我介绍PR链接:https://github.com/InternLM/Tutorial/pul......
  • 2024.10.4 ROS第五章结束,复习背包问题模型 + codeforces刷刷题
    项目学习总结ROS第五章主要是学习了坐标变换,实际用途还是好理解的,比方说地面基地控制无人机追鸟。坐标变换主要是用tf这个包实现的。可以实现静态坐标变换,动态坐标变换和多坐标变换。静态和动态变换的关键函数:ps_out=buffer.transform(ps,"base_link");动态变换里面主要是......
  • 疾风气象大模型如何预测气象数据,预测数据怎么获得
    随着科技的快速发展,人工智能和大数据技术逐渐渗透到各个领域,气象预测也不例外。过去,气象预测主要依赖于物理模型,结合大气、海洋、陆地等系统的观测数据,通过复杂的数值计算来推测未来天气。而如今,大模型(LargeModel)——特别是深度学习模型——被应用于气象预测中,极大提高了预测......
  • TryOnDiffusion——生成拟合图像的最强大模型
    介绍论文地址:https://arxiv.org/pdf/2306.08276虚拟试穿是以人的图像和服装的图像为基础,目的是想象服装穿在人身上的效果。虚拟试穿可以改善网上购物体验,但大多数传统试穿方法只有在身体姿势和形状变化较小时才能奏效。主要的挑战在于如何根据目标体形对服装进行非刚性变......
  • day9[探索 InternLM 模型能力边界]
    BadCase1:模型服务来源https://opencompass.org.cn/arena您的输入10月中旬去北京穿什么衣服模型Ainternlm2.5-20b-chat模型BDoubao-pro-32k/240828(字节豆包)模型A输出||模型B输出|||其他补充|xxxx|BadCase2:模型服务来......
  • 深入理解扩散模型的去噪过程与反向转移核
    在现代生成模型中,扩散模型(DiffusionModels,DM)已经成为一种非常强大的方法。它的基本思路是通过逐步向数据中注入噪声,使得数据逐渐变为高斯噪声分布。而在生成任务中,扩散模型通过反向扩散过程,从高斯噪声中逐步去除噪声,恢复原始数据。本文将详细介绍扩散模型的去噪过程、反向转移......
  • 基于Python的自然语言处理系列(22):模型剪枝(Pruning)
            在深度学习领域,尤其是当模型部署到资源有限的环境中时,模型压缩技术变得尤为重要。剪枝(Pruning)是一种常见的模型压缩方法,通过减少模型中不重要的参数,可以在不显著降低模型性能的情况下提升效率。在本文中,我们将详细介绍如何在PyTorch中使用剪枝技术,并通过一些实......
  • 自然语言处理之话题建模:Neural Topic Models:神经主题模型的未来趋势与研究方向_
    自然语言处理之话题建模:NeuralTopicModels:神经主题模型的未来趋势与研究方向引言话题建模的定义与重要性话题建模是一种统计建模技术,用于发现文档集合或语料库中隐藏的主题结构。在自然语言处理(NLP)领域,话题建模被广泛应用于文本挖掘、信息检索、文本分类和推荐系统等......