成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大模型面經(jīng)——LoRA最全總結(jié) 原創(chuàng)

發(fā)布于 2024-10-17 10:40
瀏覽
0收藏

LoRA面經(jīng)搜集總結(jié)。

大家的顯卡都比較吃緊,LoRA家族越來越壯大,基于LoRA出現(xiàn)了各種各樣的改進,最近比較火的一個改進版是 dora,聽大家反饋口碑也不錯。

基于PEFT的話用4090 24G顯存也可以進行大模型的微調(diào),所以LoRA家族這塊還是很有研究和實際落地的潛力。

LoRA整個系列分為兩個部分:

1、LoRA總述

2、LoRA家族演進

本篇開始介紹第一部分:LoRA總述,盡量以面經(jīng)問題的形式提出并解答,下面是一個快捷目錄。

一、概念

1. 簡單介紹一下LoRA

2. LoRA的思路

3. LoRA的特點

4. LoRA的優(yōu)點

5. LoRA的缺點

二、訓練理論

1. LoRA權(quán)重是否可以合入原模型?

2. ChatGLM-6B LoRA后的權(quán)重多大? 

3. LoRA微調(diào)方法為啥能加速訓練? 

4. 如何在已有LoRA模型上繼續(xù)訓練?

5. LoRA這種微調(diào)方法和全參數(shù)比起來有什么劣勢嗎?

6. LORA應(yīng)該作用于Transformer的哪個參數(shù)矩陣? 

7. LoRA 微調(diào)參數(shù)量怎么確定? 

8. Rank 如何選取? 

9. alpha參數(shù) 如何選取? 

10. LoRA 高效微調(diào)如何避免過擬合?

11. 哪些因素會影響內(nèi)存使用? 

12. LoRA權(quán)重是否可以合并? 

13. 是否可以逐層調(diào)整LoRA的最優(yōu)rank? 

14. Lora的矩陣怎么初始化?為什么要初始化為全0?

 一、概念

1. 簡單介紹一下LoRA


大模型面經(jīng)——LoRA最全總結(jié)-AI.x社區(qū)

通過低秩分解來模擬參數(shù)的改變量,從而以極小的參數(shù)量來實現(xiàn)大模型的間接訓練。實現(xiàn)思想很簡單,就是凍結(jié)一個預訓練模型的矩陣參數(shù),并選擇用A和B矩陣來替代,在下游任務(wù)時只更新A和B。

2. LoRA的思路

主要思想:在原模型旁邊增加一個旁路,通過低秩分解(先降維再升維)來模擬參數(shù)的更新量。

  • 訓練:原模型固定,只訓練降維矩陣A和升維矩陣B。
  • 推理:可將BA加到原參數(shù)上,不引入額外的推理延遲。
  • 初始化:A采用高斯分布初始化,B初始化為全0,保證訓練開始時旁路為0矩陣。
  • 可插拔式的切換任務(wù):當前任務(wù)W0+B1A1,將lora部分減掉,換成B2A2,即可實現(xiàn)任務(wù)切換。

3. LoRA的特點

  • 將BA加到W上可以消除推理延遲; 
  • 可以通過可插拔的形式切換到不同的任務(wù);
  • 設(shè)計的比較簡單且效果好。

4. LoRA的優(yōu)點

1)一個中心模型服務(wù)多個下游任務(wù),節(jié)省參數(shù)存儲量 

2)推理階段不引入額外計算量 

3)與其它參數(shù)高效微調(diào)方法正交,可有效組合 

4)訓練任務(wù)比較穩(wěn)定,效果比較好 

5)LoRA 幾乎不添加任何推理延遲,因為適配器權(quán)重可以與基本模型合并

5. LoRA的缺點

LoRA參與訓練的模型參數(shù)量不多,也就百萬到千萬級別的參數(shù)量,所以效果比全量微調(diào)差很多。(數(shù)據(jù)以及算力滿足的情況下,還是微調(diào)的參數(shù)越多越好)

二、訓練理論

1. LoRA權(quán)重是否可以合入原模型?

可以,將訓練好的低秩矩陣(B*A)+原模型權(quán)重合并(相加),計算出新的權(quán)重。

2. ChatGLM-6B LoRA后的權(quán)重多大?

rank 8 target_module query_key_value條件下,大約15M。

3. LoRA微調(diào)方法為啥能加速訓練? 

1)只更新了部分參數(shù):比如LoRA原論文就選擇只更新Self Attention的參數(shù),實際使用時我們還可以選擇只更新部分層的參數(shù);

2)減少了通信時間:由于更新的參數(shù)量變少了,所以(尤其是多卡訓練時)要傳輸?shù)臄?shù)據(jù)量也變少了,從而減少了傳輸時間; 

3)采用了各種低精度加速技術(shù),如FP16、FP8或者INT8量化等。

這三部分原因確實能加快訓練速度,然而它們并不是LoRA所獨有的,事實上幾乎都有參數(shù)高效方法都具有這些特點。LoRA的優(yōu)點是它的低秩分解很直觀,在不少場景下跟全量微調(diào)的效果一致,以及在預測階段不增加推理成本。

4. 如何在已有LoRA模型上繼續(xù)訓練?

理解此問題的情形是:已有的lora模型只訓練了一部分數(shù)據(jù),要訓練另一部分數(shù)據(jù)的話,是在這個lora上繼續(xù)訓練呢,還是跟base 模型合并后再套一層lora,或者從頭開始訓練一個lora? 

把之前的LoRA跟base model 合并后,繼續(xù)訓練就可以,為了保留之前的知識和能力,訓練新的LoRA時,加入一些之前的訓練數(shù)據(jù)是需要的。每次都要重頭訓練的話成本比較高。

5. LoRA這種微調(diào)方法和全參數(shù)比起來有什么劣勢嗎?

大模型面經(jīng)——LoRA最全總結(jié)-AI.x社區(qū)

如果有足夠計算資源以及有10k以上數(shù)據(jù),還是建議全參數(shù)微調(diào),lora的一個初衷就是為了解決不夠計算資源的情況下微調(diào),只引入了少量參數(shù),就可以在消費級gpu上訓練,但lora的問題在于它不能節(jié)省訓練時間,相比于全量微調(diào),他要訓練更久,同時因為可訓練參數(shù)量很小,在同樣大量數(shù)據(jù)訓練下,比不過全量微調(diào)。

6. LORA應(yīng)該作用于Transformer的哪個參數(shù)矩陣? 

大模型面經(jīng)——LoRA最全總結(jié)-AI.x社區(qū)

從上圖我們可以看到: 

1)將所有微調(diào)參數(shù)都放到attention的某一個參數(shù)矩陣的效果并不好,將可微調(diào)參數(shù)平均分配到 Wq 和 Wk 的效果最好;

2)即使是秩僅取4也能在 ?W 中獲得足夠的信息。

因此在實際操作中,應(yīng)當將可微調(diào)參數(shù)分配到多種類型權(quán)重矩陣中,而不應(yīng)該用更大的秩單獨微調(diào)某種類型的權(quán)重矩陣。

7. LoRA 微調(diào)參數(shù)量怎么確定? 

LoRA 模型中可訓練參數(shù)的結(jié)果數(shù)量取決于低秩更新矩陣的大小,其主要由秩 r 和原始權(quán)重矩陣的形狀確定。實際使用過程中,通過選擇不同的 lora_target 決定訓練的參數(shù)量。 

以 LLama 為例: 

--lora_target q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj

8. Rank 如何選取? 

Rank的取值比較常見的是8,理論上說Rank在4-8之間效果最好,再高并沒有效果提升。不過論文的實驗是面向下游單一監(jiān)督任務(wù)的,因此在指令微調(diào)上根據(jù)指令分布的廣度,Rank選擇還是需要在8以上的取值進行測試。

9. alpha參數(shù) 如何選取? 

alpha其實是個縮放參數(shù),本質(zhì)和learning rate相同,所以為了簡化可以默認讓alpha=rank,只調(diào)整lr,這樣可以簡化超參。

10. LoRA 高效微調(diào)如何避免過擬合?

過擬合還是比較容易出現(xiàn)的。減小r或增加數(shù)據(jù)集大小可以幫助減少過擬合,還可以嘗試增加優(yōu)化器的權(quán)重衰減率或LoRA層的dropout值。

11. 哪些因素會影響內(nèi)存使用? 

內(nèi)存使用受到模型大小、批量大小、LoRA參數(shù)數(shù)量以及數(shù)據(jù)集特性的影響。例如,使用較短的訓練序列可以節(jié)省內(nèi)存。

12. LoRA權(quán)重是否可以合并? 

可以將多套LoRA權(quán)重合并。訓練中保持LoRA權(quán)重獨立,并在前向傳播時添加,訓練后可以合并權(quán)重以簡化操作。

13. 是否可以逐層調(diào)整LoRA的最優(yōu)rank? 

理論上,可以為不同層選擇不同的LoRA rank,類似于為不同層設(shè)定不同學習率,但由于增加了調(diào)優(yōu)復雜性,實際中很少執(zhí)行。

14. Lora的矩陣怎么初始化?為什么要初始化為全0?

矩陣B被初始化為0,而矩陣A正常高斯初始化。 

如果B,A全都初始化為0,那么缺點與深度網(wǎng)絡(luò)全0初始化一樣,很容易導致梯度消失(因為此時初始所有神經(jīng)元的功能都是等價的)。 

如果B,A全部高斯初始化,那么在網(wǎng)絡(luò)訓練剛開始就會有概率為得到一個過大的偏移值Δ W 從而引入太多噪聲,導致難以收斂。 

因此,一部分初始為0,一部分正常初始化是為了在訓練開始時維持網(wǎng)絡(luò)的原有輸出(初始偏移為0),但同時也保證在真正開始學習后能夠更好的收斂。


文轉(zhuǎn)載自公眾號瓦力算法學研所,作者:喜歡瓦力的卷卷

原文鏈接:??https://mp.weixin.qq.com/s/d3WIiA3VDyyRPyWWkwHa3w??


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
已于2024-10-17 10:44:12修改
收藏
回復
舉報
回復
相關(guān)推薦
主站蜘蛛池模板: 毛片高清 | 久久大陆| 国产91九色| 国产精品视频一区二区三区不卡 | 婷婷91| 视频在线亚洲 | 欧美视频一级 | 午夜三区| 日韩精品在线一区 | 精品在线一区 | 久久国产婷婷国产香蕉 | 国产久| 欧美v在线| 亚洲欧美日韩电影 | 二区三区在线观看 | 国产精彩视频在线观看 | 精品在线免费看 | av三级| 久久久久久久久久久久亚洲 | 亚洲精品久久视频 | 99久久99| 成人不卡 | 亚洲精品久久久 | 欧美天堂 | 日韩在线观看一区 | 国产一区二区免费 | 欧美一级在线观看 | 一区二区三区 在线 | 99在线精品视频 | 国产高清视频 | 国产精品成人国产乱 | 欧美三区在线观看 | 日韩h | 国内精品久久久久久影视8 最新黄色在线观看 | 成人午夜高清 | av在线免费观看网址 | 亚洲在线观看视频 | 久久久久久精 | 国产精品性做久久久久久 | 欧美日韩在线不卡 | 亚洲网一区|