日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52000
  • 待審:37
  • 小程序:12
  • 文章:1037587
  • 會員:756

選自 lightning.AI

作者:Sebastian Raschka

機器之心編譯

編輯:陳萍

作者表示:在各種有效的 LLM 微調方法中,LoRA 仍然是他的首選。

LoRA(Low-Rank Adaptation)作為一種用于微調 LLM(大語言模型)的流行技術,最初由來自微軟的研究人員在論文《 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 》中提出。不同于其他技術,LoRA 不是調整神經網絡的所有參數,而是專注于更新一小部分低秩矩陣,從而大大減少了訓練模型所需的計算量。

由于 LoRA 的微調質量與全模型微調相當,很多人將這種方法稱之為微調神器。自發布以來,相信很多人都對這項技術感到好奇,想要從頭開始編寫代碼從而更好的理解該研究。以前苦于沒有合適的文檔說明,現在,教程來了。

這篇教程的作者是知名機器學習與 AI 研究者 Sebastian Raschka,他表示在各種有效的 LLM 微調方法中,LoRA 仍然是自己的首選。為此,Sebastian 專門寫了一篇博客《Code LoRA From Scratch》,從頭開始構建 LoRA,在他看來,這是一種很好的學習方法。

簡單來說,本文通過從頭編寫代碼的方式來介紹低秩自適應(LoRA),實驗中 Sebastian 對 DistilBERT 模型進行了微調,并用于分類任務。

LoRA 與傳統微調方法的對比結果顯示,使用 LoRA 方法在測試準確率上達到了 92.39%,這與僅微調模型最后幾層相比(86.22% 的測試準確率)顯示了更好的性能。

Sebastian 是如何實現的,我們接著往下看。

從頭開始編寫 LoRA

用代碼的方式表述一個 LoRA 層是這樣的:

其中,in_dim 是想要使用 LoRA 修改的層的輸入維度,與此對應的 out_dim 是層的輸出維度。代碼中還添加了一個超參數即縮放因子 alpha,alpha 值越高意味著對模型行為的調整越大,值越低則相反。此外,本文使用隨機分布中的較小值來初始化矩陣 A,并用零初始化矩陣 B。

值得一提的是,LoRA 發揮作用的地方通常是神經網絡的線性(前饋)層。舉例來說,對于一個簡單的 PyTorch 模型或具有兩個線性層的模塊(例如,這可能是 Transformer 塊的前饋模塊),其前饋(forward)方法可以表述為:

在使用 LoRA 時,通常會將 LoRA 更新添加到這些線性層的輸出中,又得到代碼如下:

如果你想通過修改現有 PyTorch 模型來實現 LoRA ,一種簡單方法是將每個線性層替換為 LinearWithLoRA 層:

以上這些概念總結如下圖所示:

為了應用 LoRA,本文將神經網絡中現有的線性層替換為結合了原始線性層和 LoRALayer 的 LinearWithLoRA 層。

如何上手使用 LoRA 進行微調

LoRA 可用于 GPT 或圖像生成等模型。為了簡單說明,本文采用一個用于文本分類的小型 BERT(DistilBERT) 模型來說明。

由于本文只訓練新的 LoRA 權重,因而需要將所有可訓練參數的 requires_grad 設置為 False 來凍結所有模型參數:

接下來,使用 print (model) 檢查一下模型的結構:

由輸出可知,該模型由 6 個 transformer 層組成,其中包含線性層:

此外,該模型有兩個線性輸出層:

通過定義以下賦值函數和循環,可以選擇性地為這些線性層啟用 LoRA:

使用 print (model) 再次檢查模型,以檢查其更新的結構:

正如上面看到的,線性層已成功地被 LinearWithLoRA 層取代。

如果使用上面顯示的默認超參數來訓練模型,則會在 IMDb 電影評論分類數據集上產生以下性能:

  • 訓練準確率:92.15%
  • 驗證準確率:89.98%
  • 測試準確率:89.44%

在下一節中,本文將這些 LoRA 微調結果與傳統微調結果進行了比較。

與傳統微調方法的比較

在上一節中,LoRA 在默認設置下獲得了 89.44% 的測試準確率,這與傳統的微調方法相比如何?

為了進行比較,本文又進行了一項實驗,以訓練 DistilBERT 模型為例,但在訓練期間僅更新最后 2 層。研究者通過凍結所有模型權重,然后解凍兩個線性輸出層來實現這一點:

只訓練最后兩層得到的分類性能如下:

  • 訓練準確率:86.68%
  • 驗證準確率:87.26%
  • 測試準確率:86.22%

結果顯示,LoRA 的表現優于傳統微調最后兩層的方法,但它使用的參數卻少了 4 倍。微調所有層需要更新的參數比 LoRA 設置多 450 倍,但測試準確率只提高了 2%。

優化 LoRA 配置

前面講到的結果都是 LoRA 在默認設置下進行的,超參數如下:

假如用戶想要嘗試不同的超參數配置,可以使用如下命令:

不過,最佳超參數配置如下:

在這種配置下,得到結果:

  • 驗證準確率:92.96%
  • 測試準確率:92.39%

值得注意的是,即使 LoRA 設置中只有一小部分可訓練參數(500k VS 66M),但準確率還是略高于通過完全微調獲得的準確率。

原文鏈接:https://lightning.ai/lightning-ai/studIOS/code-lora-from-scratch?continueFlag=f5fc72b1f6eeeaf74b648b2aa8aaf8b6

分享到:
標簽:LoRA
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52000

    網站

  • 12

    小程序

  • 1037587

    文章

  • 756

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定