參數(shù)少80%,效果仍超LoRA!上交大&上海AI Lab推出高效微調(diào)框架FLoRA
為了讓大模型在特定任務(wù)、場景下發(fā)揮更大作用,LoRA這樣能夠平衡性能和算力資源的方法正在受到研究者們的青睞。
然而,以LoRA為代表的眾多低秩微調(diào)方法(包括DoRA, MoRA, AdaLoRA等衍生方法)仍存在一個問題:
它們通常通常都更適合Linear層,Embedding層這類“直入直出”的低維度張量,忽略了對更高維度甚至N維張量的考慮。
盡管這些方法可以通過一定方式將高維度張量轉(zhuǎn)化為2D張量來微調(diào)參數(shù),如LoRA將Conv2D卷積層參數(shù)所具有的四維張量轉(zhuǎn)化為二維張量
。但其存在兩方面的挑戰(zhàn):
- 這種將卷積核
拆開分別reshape到
,
維度上的方法雖然避免了參數(shù)的大規(guī)模增加,但是破壞了卷積核本身的結(jié)構(gòu)特性。這對于密集預(yù)測類任務(wù)所需要的局部歸納偏置是一種負(fù)向影響。
- 隨著張量維度的升高,reshape為二維的方式會造成急劇的參數(shù)量增加,背離了參數(shù)高效微調(diào)方法的初衷。
為了解決以上兩個問題,來自上海交通大學(xué)、上海AI Lab的研究人員提出了FLoRA方法(flora意為植物群,具有廣泛的寓意)。
以視覺任務(wù)為例,F(xiàn)LoRA能在比LoRA少80%參數(shù)的情況下,取得與之一致的效果。
作者認(rèn)為,各維度參數(shù)的調(diào)整應(yīng)該通過一個全局的低秩核心空間的子空間來進(jìn)行,低秩核心空間本身則保留了原參數(shù)不同維度之間存在的拓?fù)潢P(guān)系以及交互性。
具體來說,作者通過應(yīng)用Tucker分解來實現(xiàn)對低秩核心空間的構(gòu)建,完成了以統(tǒng)一視角來推導(dǎo)N維張量低秩微調(diào)方法的適配,使得低秩微調(diào)方法擴(kuò)大到如Conv2D層, Embedding層,Linear層等各類常見層上。同時,作者發(fā)現(xiàn)通過調(diào)整不同的參數(shù),F(xiàn)LoRA可以退化為多個不同的低秩微調(diào)方法。
適合N維張量的參數(shù)高效微調(diào)
當(dāng)前LoRA類方法為什么會破壞結(jié)構(gòu)
卷積具有局部學(xué)習(xí)的歸納偏置。若設(shè)置一個,
,
的卷積層,其參數(shù)形狀應(yīng)該為[10,1,3,3],后兩維[3,3]構(gòu)成了一個具有正方形結(jié)構(gòu)的濾波器。
在按照方式進(jìn)行拆分過程中,既有permute的操作,也有reshape的操作,此時原本相鄰的濾波器被打散。這增加了可學(xué)習(xí)參數(shù)來建模出原本的局部特性的難度。
為什么LoRA不把參數(shù)拆成來避免破壞結(jié)構(gòu)?
在卷積結(jié)構(gòu)中,一層網(wǎng)絡(luò)的參數(shù)具有四個維度。
若按照方式將參數(shù)拆成對應(yīng)LoRA中AB的形式,則應(yīng)該為
以及
。
若按照方式將參數(shù)拆成對應(yīng)LoRA中AB的形式,則應(yīng)該為
和
。
前者參數(shù)量為,后者參數(shù)量為
。
當(dāng)時,分別為
和
,一般而言,
>>
,
方式會引入超大量的參數(shù)。因此轉(zhuǎn)而使用后者是一種以結(jié)構(gòu)完整性換參數(shù)量的折中。
Tucker分解實現(xiàn)N維張量的低秩微調(diào)
Tucker分解是一種矩陣分解方法。對于具有N維的張量, Tucker分解可以將其表示為一個核張量(Core Tensor)與沿著每一維度得到的矩陣
的乘積,其中Jn為第n維的通道大小??梢詫憺椋?/p>
其中為模乘,表示一個張量(tensor)和一個矩陣(matrix)的乘法。
在Tucker分解中,核張量代表了不同維度之間的交互,而矩陣則類似于每一個維度的主成分。通過這種形式,依靠核張量去學(xué)習(xí)不同維度之間的關(guān)系,依靠各維度矩陣學(xué)習(xí)本維度的內(nèi)在特性,可以在保留N維張量拓?fù)浣Y(jié)構(gòu)的基礎(chǔ)上更好的優(yōu)化學(xué)習(xí)過程。
基于以上對Tucker分解的介紹,作者便將這種分解方式引入到參數(shù)高效微調(diào)中。具體來說,相比于LoRA中
其中。
FLoRA將N維張量分解統(tǒng)一設(shè)計為:
其中為核張量,s為可調(diào)的scale系數(shù),
為第n維的低秩矩陣,這里的Jn就是低秩r,且Jn<<In。
對應(yīng)于具有4個維度的卷積核參數(shù),則有
其中,
,
以及
。
r3和r4一般取相同的比卷積核大小k更小的值。根據(jù)上式,作者認(rèn)為在卷積參數(shù)微調(diào)中具有一個卷積核心(Convolution Core),而FLoRA負(fù)責(zé)找到了這個核心的值并且配置了不同維度的權(quán)重值。與LoRA相比,在相近參數(shù)量上FLoRA允許設(shè)置更大的秩r,在同等秩的情況下,F(xiàn)LoRA大大降低了參數(shù)量。
舉例:若k=3,r3=r4=2, r1=r2=r=32, din=256, dout=512,
FLoRA的參數(shù)量為:
LoRA的參數(shù)量為:
若FLoRA達(dá)到與LoRA相同的參數(shù)量,則r=70。
對應(yīng)于具有2個維度的線性層參數(shù),則有
,
其中,
,
。與4維的卷積核參數(shù)類比,這里的G便是對應(yīng)的線性核心。
參考上邊的例子,同等r的情況下,F(xiàn)LoRA參數(shù)量為,相比LoRA僅多出
% 的參數(shù),對應(yīng)該例子為4.17%。
在實際應(yīng)用中,由于核張量的存在,等效的r1,r2可以小于LoRA的r,從而實現(xiàn)同等規(guī)模甚至更少的參數(shù)量情況下,效果與LoRA一致甚至更好。
在LoRA中,s的取值由r和另一超參r_alpha決定,通常固定s=2。
在FLoRA中,該值以超參形式設(shè)定為一個固定值,不需要引入r_alpha,本質(zhì)上s代替了r_alpha,因此相比LoRA沒有引入額外數(shù)量的超參。
對于s的選取,作者在實驗過程中發(fā)現(xiàn)對于不同大小規(guī)模的參數(shù)量以及不同類型的模型(即不同維度的參數(shù)空間),取值不一,但呈現(xiàn)出了一定的特點。對于卷積模型來說,s的取值在一定范圍內(nèi)越大越好,在以ConvNext-L為backbone來微調(diào)時設(shè)置為4;對于線性模型來說,s的取值盡量較小,在微調(diào)InternViT-6B和LLaVA-7B時,s的值設(shè)置為0.04。
實驗
作者分別在視覺任務(wù),語言任務(wù),多模態(tài)任務(wù)上做了實驗,涵蓋了2種類型模型(Conv與ViT),4種參數(shù)規(guī)模(DeBERTav3-base: 184M,ConvNeXt-large: 196M, InternViT-6B, LLava-v1.5-7B),涉及18個數(shù)據(jù)集。
實驗結(jié)果表明,F(xiàn)LoRA在各種視覺任務(wù)上都取得了明顯的性能提升,甚至在比LoRA少80%參數(shù)的情況下,依然可以取得和LoRA一致的效果。實驗結(jié)果說明了通過引入核張量來建模維度關(guān)系,從而避免破壞拓?fù)浣Y(jié)構(gòu)的方式是利于多維度參數(shù)微調(diào)的,并且可以取得很好的效果。
在語言任務(wù)上作者也相應(yīng)的做了一些實驗,并且在所有的可調(diào)參數(shù)規(guī)模下都實現(xiàn)了明顯的性能增長。
在多模態(tài)任務(wù)上作者也基于llava-v1.5-7b做了visual instruct tuning的測評。同樣顯示出了比LoRA更好的效果。
作者也做了擴(kuò)散模型的微調(diào),并給出了生成結(jié)果的對比。
對于FLoRA和LoRA相比在訓(xùn)練時間與顯存開銷上的區(qū)別,作者也給出了數(shù)據(jù)說明。
更多內(nèi)容可以查看論文原文,作者反饋:核心實現(xiàn)代碼以及不同任務(wù)完整代碼也即將于近期陸續(xù)開源。
論文地址:
https://arxiv.org/abs/2405.14739