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

如何從頭開始編寫LoRA代碼,這有一份教程

人工智能 新聞
作者表示:在各種有效的 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?cnotallow=f5fc72b1f6eeeaf74b648b2aa8aaf8b6

責任編輯:張燕妮 來源: 機器之心
相關推薦

2020-11-17 08:09:01

webpack配置項腳手架

2013-01-08 11:02:26

IBMdW

2013-05-23 10:10:53

PHP5.5PHP編譯php

2021-04-03 12:44:16

編程語言數據Python

2023-05-24 16:20:39

DevOpsCI/CD 管道軟件開發

2018-02-08 18:48:42

區塊鏈食品安全

2019-03-24 14:14:40

代碼閱讀源代碼

2023-03-21 09:44:34

模型AI

2009-05-08 09:40:07

網易魔獸暴雪

2022-09-20 10:18:05

論文技術

2020-07-28 17:34:42

攜號轉網運營商套餐

2021-04-05 17:11:34

App蘋果移動應用

2018-12-27 14:35:25

物聯網安全物聯網IOT

2022-07-22 07:18:53

代碼DeepMind

2022-11-23 16:20:12

GPU編程流和事件開發

2022-06-01 23:21:34

Python回歸樹數據

2021-06-04 22:43:32

Python本地搜索

2021-07-06 14:21:05

物聯網智慧城市網絡安全

2024-03-01 13:49:00

數據訓練

2024-07-10 12:11:30

數據經營分析業務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 最新免费av网站 | 精品一二区| 中文字幕一区在线 | 中文字幕乱码亚洲精品一区 | 亚洲第一视频 | 久久久久久亚洲精品 | 国产欧美日韩精品一区 | 亚洲国产精品久久久久婷婷老年 | 一级无毛片| 中文字幕精品一区二区三区精品 | 亚洲欧美一区二区三区在线 | 视频一区二区在线观看 | 国产精品视频一区二区三区, | 日韩国产一区 | 精品影院 | 亚洲iv一区二区三区 | 久久久久久高清 | 精品无码久久久久久久动漫 | 一区二区激情 | 久一精品| 亚洲欧美一区二区三区在线 | 国产综合久久久久久鬼色 | 亚洲成人中文字幕 | 中文字幕免费观看 | 亚洲成人一区二区三区 | 草久久 | 狠狠婷婷综合久久久久久妖精 | 九九久久精品视频 | 欧美日韩一 | 久久精品国产免费一区二区三区 | 国产一区二区三区 | 国产乱码高清区二区三区在线 | 美女久久久久久久 | 91高清在线视频 | 一级毛片视频在线 | 欧美日韩高清在线一区 | 亚洲国产成人久久综合一区,久久久国产99 | 精品久久久久久久人人人人传媒 | 国产美女高潮 | 久久精品亚洲精品国产欧美 | 91xxx在线观看 |