LLM模型融合(一)

江左子固發表於2024-10-04

寫文章
點選開啟江左郎的主頁
模型融合(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

相關文章