搜尋
首頁科技週邊人工智慧如何從頭開始編寫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程式碼,這有一個教學課程

本文通过从头编写代码的方式介绍低秩自适应(LoRA),Sebastian在实验中对DistilBERT模型进行微调,并将其应用于分类任务。

LoRA方法与传统微调方法的比较结果表明,LoRA方法在测试准确率方面达到了92.39%,这比仅对模型最后几层进行微调(86.22%的测试准确率)表现出更优异的性能。这表明LoRA方法在优化模型性能方面具有明显优势,能够更好地提升模型的泛化能力和预测准确性。这个结果强调了在模型训练和调优过程中采用先进的技术和方法的重要性,以获得更好的性能表现和结果。通过比

Sebastian 是如何实现的,我们接着往下看。

从头开始编写 LoRA

用代码的方式表述一个 LoRA 层是这样的:

如何從頭開始編寫LoRA程式碼,這有一個教學課程

其中,in_dim 是想要使用 LoRA 修改的层的输入维度,与此对应的 out_dim 是层的输出维度。代码中还添加了一个超参数即缩放因子 alpha,alpha 值越高意味着对模型行为的调整越大,值越低则相反。此外,本文使用随机分布中的较小值来初始化矩阵 A,并用零初始化矩阵 B。

值得一提的是,LoRA 发挥作用的地方通常是神经网络的线性(前馈)层。举例来说,对于一个简单的 PyTorch 模型或具有两个线性层的模块(例如,这可能是 Transformer 块的前馈模块),其前馈(forward)方法可以表述为:

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

如何從頭開始編寫LoRA程式碼,這有一個教學課程

#以上這些概念總結如下圖:如何從頭開始編寫LoRA程式碼,這有一個教學課程

為了應用LoRA,本文將神經網路中現有的線性層替換為結合了原始線性層和LoRALayer 的LinearWithLoRA 層。 如何從頭開始編寫LoRA程式碼,這有一個教學課程

如何上手使用 LoRA 進行微調

如何從頭開始編寫LoRA程式碼,這有一個教學課程#LoRA 可用於 GPT 或影像生成等模型。為了簡單說明,本文採用一個用於文字分類的小型 BERT(DistilBERT) 模型來說明。

由於本文只訓練新的LoRA 權重,因而需要將所有可訓練參數的requires_grad 設定為False 來凍結所有模型參數:如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

如何從頭開始編寫LoRA程式碼,這有一個教學課程此外,該模型有兩個線性輸出層:

##################透過定義以下賦值函數和循環,可以選擇性地為這些線性層啟用LoRA: #####################使用print (model) 再次檢查模型,以檢查其更新的結構:############ ##

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

如果使用上面顯示的預設超參數來訓練模型,則會在IMDb 電影評論分類資料集上產生以下效能:

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

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

與傳統微調方法的比較

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

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

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

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

優化LoRA 設定

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

如何從頭開始編寫LoRA程式碼,這有一個教學課程

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

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

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

原文連結:https://lightning.ai/lightning-ai/studios/code-lora-from-scratch?cnotallow=f5fc72b1f6eeeaf74b648b2aa8aaf8b6

#

以上是如何從頭開始編寫LoRA程式碼,這有一個教學課程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
外推指南外推指南Apr 15, 2025 am 11:38 AM

介紹 假設有一個農民每天在幾週內觀察農作物的進展。他研究了增長率,並開始思考他的植物在幾週內可以生長的高度。從Th

軟AI的興起及其對當今企業的意義軟AI的興起及其對當今企業的意義Apr 15, 2025 am 11:36 AM

軟AI(被定義為AI系統,旨在使用近似推理,模式識別和靈活的決策執行特定的狹窄任務 - 試圖通過擁抱歧義來模仿類似人類的思維。 但是這對業務意味著什麼

為AI前沿的不斷發展的安全框架為AI前沿的不斷發展的安全框架Apr 15, 2025 am 11:34 AM

答案很明確 - 只是雲計算需要向雲本地安全工具轉變,AI需要專門為AI獨特需求而設計的新型安全解決方案。 雲計算和安全課程的興起 在

生成AI的3種方法放大了企業家:當心平均值!生成AI的3種方法放大了企業家:當心平均值!Apr 15, 2025 am 11:33 AM

企業家,並使用AI和Generative AI來改善其業務。同時,重要的是要記住生成的AI,就像所有技術一樣,都是一個放大器 - 使得偉大和平庸,更糟。嚴格的2024研究O

Andrew Ng的新簡短課程Andrew Ng的新簡短課程Apr 15, 2025 am 11:32 AM

解鎖嵌入模型的力量:深入研究安德魯·NG的新課程 想像一個未來,機器可以完全準確地理解和回答您的問題。 這不是科幻小說;多虧了AI的進步,它已成為R

大語言模型(LLM)中的幻覺是不可避免的嗎?大語言模型(LLM)中的幻覺是不可避免的嗎?Apr 15, 2025 am 11:31 AM

大型語言模型(LLM)和不可避免的幻覺問題 您可能使用了諸如Chatgpt,Claude和Gemini之類的AI模型。 這些都是大型語言模型(LLM)的示例,在大規模文本數據集上訓練的功能強大的AI系統

60%的問題 -  AI搜索如何消耗您的流量60%的問題 - AI搜索如何消耗您的流量Apr 15, 2025 am 11:28 AM

最近的研究表明,根據行業和搜索類型,AI概述可能導致有機交通下降15-64%。這種根本性的變化導致營銷人員重新考慮其在數字可見性方面的整個策略。 新的

麻省理工學院媒體實驗室將人類蓬勃發展成為AI R&D的核心麻省理工學院媒體實驗室將人類蓬勃發展成為AI R&D的核心Apr 15, 2025 am 11:26 AM

埃隆大學(Elon University)想像的數字未來中心的最新報告對近300名全球技術專家進行了調查。由此產生的報告“ 2035年成為人類”,得出的結論是,大多數人擔心AI系統加深的採用

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),