LoRA數(shù)學(xué)編程任務(wù)不敵全量微調(diào) | 哥大&Databricks新研究
大數(shù)據(jù)巨頭Databricks與哥倫比亞大學(xué)最新研究發(fā)現(xiàn),在數(shù)學(xué)和編程任務(wù)上,LoRA干不過全量微調(diào)。
具體來說,在這兩種任務(wù)中,LoRA模型的精確度只有后者的八到九成左右。
不過,作者也發(fā)現(xiàn),LoRA雖然學(xué)得少,但是“記憶力”卻更好,遺忘現(xiàn)象要比全量微調(diào)少得多。
究其原因,作者認(rèn)為是數(shù)學(xué)和代碼任務(wù)的特性與LoRA的低秩“八字不合”,遺忘更少也與秩相關(guān)。
但LoRA的一個公認(rèn)的優(yōu)勢是訓(xùn)練成本更低;而且相比全量微調(diào),能夠更好地保持原有模型性能。
于是,網(wǎng)友們的看法也自然地分成了兩派:
一波人認(rèn)為,單純考慮降低成本用LoRA,表現(xiàn)卻顯著降低,這是不可接受的。
更具針對性的,有人指出,對于數(shù)學(xué)和代碼這樣對精度要求高的任務(wù),一定要最大程度地保證性能,哪怕犧牲一些訓(xùn)練成本。
另一波機(jī)器學(xué)習(xí)工程師則認(rèn)為,作者的一些實(shí)驗(yàn)參數(shù)設(shè)置不當(dāng),造成這種現(xiàn)象的原因不一定是LoRA本身。
質(zhì)疑的具體理由我們放到后面詳細(xì)講解,先來看看作者的研究都有哪些發(fā)現(xiàn)。
學(xué)的更少,但忘的也少
實(shí)驗(yàn)中,作者使用7B參數(shù)的Llama2作為基礎(chǔ)模型,在持續(xù)預(yù)訓(xùn)練和監(jiān)督微調(diào)兩種模式下分別應(yīng)用LoRA和全量微調(diào),并比較了它們的表現(xiàn),使用的數(shù)據(jù)集如下表:
持續(xù)預(yù)訓(xùn)練實(shí)驗(yàn)中,作者在2.5-200億token之間共選擇了8個點(diǎn)進(jìn)行了測試;監(jiān)督微調(diào)實(shí)驗(yàn)則是在訓(xùn)練1、2、4、8、16個epochs時取樣;LoRA的rank取值為16和256,適配對象包括Attention、MLP和All。
結(jié)果不難看出,無論是持續(xù)預(yù)訓(xùn)練還是監(jiān)督微調(diào),LoRA在編程上的表現(xiàn)從未追上過全量微調(diào),而且在持續(xù)預(yù)訓(xùn)練中,隨著token數(shù)量的增加,差距越來越懸殊。
而在數(shù)學(xué)任務(wù)上的持續(xù)預(yù)訓(xùn)練實(shí)驗(yàn)中,LoRA起初表現(xiàn)略勝于全量微調(diào),但也是隨著token數(shù)量的增加,這種優(yōu)勢逐漸被反超。
這一系列結(jié)果表明,LoRA在讓模型學(xué)習(xí)新知識的工作中,表現(xiàn)不及全量微調(diào)。
不過盡管在性能上比不過全量微調(diào),但LoRA的遺忘現(xiàn)象更少,更有利于保持原有模型的能力。
換言之,如果把原始模型比作剛畢業(yè)的小學(xué)生,那么用LoRA能學(xué)到的初中知識更少,但之前的小學(xué)知識忘得也更少。
對應(yīng)到應(yīng)用當(dāng)中,則主要在語言理解、嘗試推理等基礎(chǔ)能力中體現(xiàn)。
作者使用了相同的實(shí)驗(yàn)配置,把測試數(shù)據(jù)集更換成了HellaSwag、ARC-Challenge和Winogrande,分別測試經(jīng)過代碼和數(shù)學(xué)微調(diào)后的Llama2在基礎(chǔ)任務(wù)上的表現(xiàn)。
結(jié)果,用代碼來微調(diào)造成的“遺忘”現(xiàn)象更加嚴(yán)重,LoRA從整體上看更接近基礎(chǔ)模型,即遺忘現(xiàn)象更輕。
秩是模型表現(xiàn)關(guān)鍵
作者分析了這些現(xiàn)象背后的原因,結(jié)果發(fā)現(xiàn),秩在其中扮演了重要的角色。
在線性代數(shù)中,一個矩陣的秩是指其線性無關(guān)的行或列的最大數(shù)量,秩越高,所能表示的變換或關(guān)系就越復(fù)雜。
同理,在深度學(xué)習(xí)中,模型的權(quán)重矩陣可以看作是將輸入信息轉(zhuǎn)換為輸出信息的一種映射關(guān)系,這些矩陣的秩反映了模型在學(xué)習(xí)時所需的自由度或復(fù)雜度。
對于LoRA來說,其學(xué)習(xí)的矩陣秩較小,對原始權(quán)重矩陣的影響也就越小,因此在適應(yīng)新任務(wù)時更易保留原有知識。
而在作者的實(shí)驗(yàn)中,低秩矩陣的特性還體現(xiàn)為了更強(qiáng)的正則化能力和生成多樣性。
至于為什么LoRA在學(xué)習(xí)新知識上表現(xiàn)不如全量微調(diào),原因同樣和秩相關(guān)。
作者對在Llama2上用StarCoder-Python數(shù)據(jù)集進(jìn)行持續(xù)預(yù)訓(xùn)練過程中各個階段的權(quán)重矩陣進(jìn)行了奇異值分解。
結(jié)果發(fā)現(xiàn),即使在訓(xùn)練的早期階段,全面微調(diào)學(xué)到的權(quán)重擾動矩陣的秩就是LoRA常用秩的10-100倍,這表明在編程任務(wù)上,全面微調(diào)需要學(xué)習(xí)高秩的權(quán)重擾動以適應(yīng)目標(biāo)領(lǐng)域;而且隨著訓(xùn)練的進(jìn)行,權(quán)重擾動矩陣的秩還會持續(xù)增長。
也就是說,此類任務(wù)的高秩需求,注定無法與LoRA的低秩特性相匹配,表現(xiàn)不佳也就不是什么意外之事了。
實(shí)驗(yàn)中的另一個現(xiàn)象是,雖然同樣比不過全量微調(diào),但數(shù)學(xué)任務(wù)中兩者的差距相比代碼任務(wù)更小,作者推測可能有兩方面原因:
- 首先還是和秩相關(guān),作者認(rèn)為數(shù)學(xué)任務(wù)相比于代碼更接近于預(yù)訓(xùn)練數(shù)據(jù),因此秩也相對更低。
- 另一個原因,則是目前的GSM8K數(shù)據(jù)集可能挑戰(zhàn)性不夠,對模型考察不充分,這可能也是導(dǎo)致出現(xiàn)一開始LoRA超過全量微調(diào)的原因。
ML工程師提出質(zhì)疑
不過對作者的實(shí)驗(yàn),有人指出了實(shí)驗(yàn)的參數(shù)設(shè)置存在不合理之處。
首先提出質(zhì)疑的,是模型微調(diào)和訓(xùn)練平臺UnslothAI創(chuàng)始人、前英偉達(dá)ML工程師Daniel Han。
Daniel首先指出,論文中的LoRA實(shí)驗(yàn)只適配了QKVO、up和down矩陣,沒有適配gate_proj矩陣。
如果LoRA沒有對gate_proj進(jìn)行適配,那么FFN模塊的大部分權(quán)重實(shí)際上沒有被優(yōu)化,這可能限制了LoRA在編程任務(wù)上的表現(xiàn)。
至于數(shù)學(xué)能力好一些而在編程任務(wù)上表現(xiàn)不佳的原因,可能是lm_head和embed_tokens層沒有進(jìn)行適配訓(xùn)練,因此領(lǐng)域轉(zhuǎn)移沒有被很好地建模。
lm_head和embed_tokens層分別對應(yīng)了語言模型的輸出和輸入嵌入,它們與具體領(lǐng)域的詞匯和表達(dá)密切相關(guān)。如果這兩個層沒有被LoRA適配,那么模型在新領(lǐng)域的詞匯和表達(dá)習(xí)慣上的適應(yīng)能力就會受限。
另一方面,Daniel認(rèn)為編程任務(wù)的超參數(shù)設(shè)置也有問題,比如秩為256時α值設(shè)得太小了,導(dǎo)致適配矩陣的值可能難以得到有效更新。
總結(jié)一下就是,LoRA在這些任務(wù)上的表現(xiàn)不如全量微調(diào)的原因,可能不是出在LoRA本身。
同時Daniel還表示,有論文指出LoftQ和PiSSA使用奇異值分解(SVD)來初始化LoRA矩陣,據(jù)稱可以使LoRA達(dá)到與全面微調(diào)相當(dāng)?shù)男阅堋?/p>
另一名ML工程師附和了Daniel的觀點(diǎn),同時還針對LoRA的應(yīng)用給出了一些具體建議:
- LoRA更適用于監(jiān)督微調(diào)而不是持續(xù)預(yù)訓(xùn)練
- 對于LoRA來說,0.0005(代碼)或0.0002(數(shù)學(xué))的學(xué)習(xí)率是最佳的
- 應(yīng)用LoRA時,優(yōu)先選擇同時適配MLP和Attention,其次單獨(dú)MLP,最后單獨(dú)Attention
總之,雖然出現(xiàn)了論文中的結(jié)果,但LoRA仍然是一項重要的技術(shù),而且能夠顯著降低訓(xùn)練成本,所以做好性能和資源的權(quán)衡,該用還是得用。
論文地址:???https://arxiv.org/abs/2405.09673??
本文轉(zhuǎn)自 量子位 ,作者:量子位
