一句話定義

LoRA(Low-Rank Adaptation,低秩適應)是把大模型原本的權重全部凍住、只訓練一組外掛的小矩陣,用極少的參數量達到接近完整微調效果的方法。

30 秒看重點

  • 是什麼:LoRA 是一種微調技巧,不去動原本那幾百億個參數,只在旁邊加一組很小的矩陣去學新東西。
  • 為什麼重要:它把「微調一個大模型」的門檻,從整櫃伺服器降到一張顯示卡。
  • 跟誰相關:想訓練專屬畫風的 AI 繪圖玩家、要讓模型講公司口吻的工程師、以及在算成本的產品團隊。
  • 最常見的誤解:LoRA 跟物聯網那個 LoRa 無線通訊協定完全沒有關係,只是拼法很像。
  • 記住這件事就夠了:LoRA 改的是模型的「習慣」,不是幫它補充「知識」,這兩件事的工具不一樣。

AI 的 LoRA 到底是什麼?

LoRA 是一種微調大模型的方法,做法是把預訓練模型的原始權重整個凍結,另外在每一層插入一對可訓練的低秩矩陣,訓練時只更新這對小矩陣。全名 Low-Rank Adaptation,中文多半翻成低秩適應。

這個方法出自微軟研究團隊 2021 年的論文〈LoRA: Low-Rank Adaptation of Large Language Models〉(Edward J. Hu 等人,arXiv 編號 2106.09685),隔年被 ICLR 2022 收錄。論文摘要裡那句話大概是它爆紅的主因:跟用 Adam 做全參數微調的 GPT-3 175B 相比,LoRA 可以把要訓練的參數量降到萬分之一,顯示記憶體需求砍成三分之一,而且推論時不會增加任何延遲。

數字有多誇張?看官方倉庫給的表就懂了。RoBERTa base 全參數微調要調 1.25 億個參數,換成 LoRA 只剩 80 萬個;DeBERTa XXL 從 15 億降到 470 萬。GLUE 平均分數呢?LoRA 87.24、全參數微調 86.40,不但沒輸還小贏一點(好啦,誤差範圍內,但至少沒變笨)。

生活比喻:你可以想像成在租屋處佈置房間。房東白紙黑字寫著牆不能敲、格局不能改,這就是被凍住的原始權重。你不會為了掛一幅畫去打掉整面牆,而是貼幾個無痕掛鉤、擺個可拆的層架 — 那些掛鉤就是 LoRA 的小矩陣。搬走的時候撕下來,牆還是原本那面牆,而且你要換風格,換一組掛鉤就好。

為什麼會有 LoRA?

LoRA 的出現是為了解決全參數微調的兩個現實問題:一是硬體吃不消,二是每個任務都要存一份完整模型太浪費。

問題一:微調一次要租一整櫃機器。 Hugging Face PEFT 官方倉庫拿一個 30 億參數的模型做過對照,全參數微調要 47.14GB 顯示記憶體,改用 LoRA 只要 14.4GB,準確率 0.863 對上人類基準的 0.897。前者你得去租雲端的資料中心等級顯示卡,後者一張中高階顯示卡就有機會。

問題二:模型的複本會把硬碟塞爆。 假設你要十個不同用途的客服模型,全參數微調就是十份完整權重。同一份 PEFT 文件寫得很白:T0_3B 訓練出來的 LoRA 檔案只有 19MB,完整模型是 11GB。

所以 LoRA 的解法其實很像 IT 界的老智慧:不要複製整台機器,只保留差異。原始模型當公用底座,每個任務各自帶一小包「差異檔」,要用哪個掛哪個。

LoRA 是怎麼運作的?

簡單來講就三步:凍住原本的權重、在旁邊插入兩個瘦長的小矩陣、訓練完再把它們加回去。

  1. 凍結底座:預訓練模型的所有參數設成不可訓練。梯度不用回傳到那幾百億個參數上,訓練過程要暫存的中間狀態也跟著少一大包,記憶體就是這樣省下來的。
  2. 插入低秩矩陣:在 Transformer 的每一層旁邊加上一對矩陣 A 與 B,權重更新量被拆解成這兩個矩陣相乘。關鍵在於中間那個維度 r(rank,秩)刻意設得很小,通常是 8、16 這種數量級,參數量自然跟著塌下去。
  3. 合併或外掛:訓練完可以把 A 乘 B 的結果直接加回原始權重,模型結構完全沒變,所以推論速度不受影響;也可以留著不合併,隨時換成另一組。

名詞小教室:「秩」(rank)你就想成一個矩陣裡真正獨立的資訊有幾條。LoRA 賭的是:模型適應新任務時真正需要改變的方向其實沒幾條,那與其準備一個超大的調整空間,不如只給它幾條,逼它把力氣花在關鍵的地方。

LoRA 跟全參數微調差在哪?

全參數微調是把整個模型的權重重新調過一輪,LoRA 是原封不動、只加一層外掛,兩者的成本結構差了好幾個數量級。

比較項目LoRA全參數微調
要訓練的參數只有外掛的小矩陣(可到萬分之一)全部,數十億起跳
顯示記憶體30 億參數模型約 14.4GB同一模型約 47.14GB
產出檔案大小幾 MB 到幾十 MB跟原模型一樣大
換任務的成本換一組外掛就好要重新載入另一份完整模型
我會在什麼情況選它教模型新風格、新口吻、新格式有大量資料且要重塑模型底層能力

從這張表可以看出來,LoRA 不是「比較弱的微調」,而是「同一件事的便宜做法」。除非你手上有大量資料、而且真的想改變模型的底層能力,不然大多數團隊的需求 — 讓它學會你家的文件格式、你的畫風、你的客服語氣 — LoRA 就夠了。

你會在哪些地方看到 LoRA?

LoRA 能見度最高的地方其實不在聊天機器人,是 AI 繪圖圈。

  • Stable Diffusion 的模型市集:那些「某某畫風」「某某角色」的小檔案幾乎都是 LoRA。Hugging Face 官方部落格寫過,把 LoRA 套在 Stable Diffusion 的交叉注意力層上,訓練出來的權重只有大約 3MB,比完整的 UNet 小了約一千倍。官方那支微調腳本最低 11GB 顯示記憶體就跑得動,示範案例用一張 2080 Ti 訓練約 5 小時。
  • 開放權重模型的在地化:開源模型的完整權重放出來之後,社群常見的下一步就是用 LoRA 調出特定語言或垂直領域的版本,畢竟底座免費,外掛檔案又小到可以直接丟給別人。
  • 企業的多租戶服務:vLLM 支援同一個底座掛多組 LoRA,用 enable_loramax_lorasmax_lora_rank 控制,還能在服務跑著的時候動態載入與卸載。等於一台機器同時扮演好幾個專屬模型。

如果你是工程師,最常碰到的入口是 Hugging Face 的 PEFT 套件,它把 LoRA、QLoRA、soft prompt、IA3 包成統一介面,跟 Transformers、Diffusers、TRL 都接得起來。

為什麼有人用一張顯示卡就能微調大模型?

因為 LoRA 後來又跟量化技術結合了,這個組合叫 QLoRA。

Tim Dettmers 等人在 2023 年提出的 QLoRA(arXiv 編號 2305.14314),做法是把底座模型壓成 4-bit 再凍住,梯度直接穿過這個量化過的模型、只更新外掛的 LoRA 矩陣,另外配一種叫 4-bit NormalFloat(NF4)的資料型別去接住常態分布的權重。

結果是 650 億參數的模型,在單張 48GB 顯示卡上就微調得動,而且維持 16-bit 完整微調的任務表現。他們用這套訓出來的 Guanaco,在 Vicuna 評測上達到 ChatGPT 水準的 99.3%,訓練只花了單卡 24 小時。

老實講,重點不是那幾個數字。真正的差別在於它把「微調」從大公司的專利,變成一個研究生的暑假作業。

學 LoRA 最常見的 3 個誤解

  1. 誤解一:LoRA 就是那個物聯網的 LoRa — 真相是兩者毫無關係。無線通訊的 LoRa 是 Long Range 的縮寫,講的是低功耗長距離傳輸;AI 的 LoRA 是 Low-Rank Adaptation。拼法只差一個字母的大小寫,害搜尋結果混在一起,這個真的只能怪命名的人 QQ
  2. 誤解二:用 LoRA 就能讓模型記住公司內部資料 — 真相是微調改的是行為與風格,不是可靠的知識庫。要讓 AI 讀得到最新文件,那是檢索的事,做法請看下面延伸閱讀的 RAG。
  3. 誤解三:LoRA 跟全參數微調完全等價 — 真相是分數接近不代表內部一樣。〈LoRA vs Full Fine-tuning: An Illusion of Equivalence〉這篇論文(arXiv 編號 2410.21228)指出,LoRA 調出來的權重會出現原本沒有的「入侵維度」,在目標任務上表現追得上,但對原本預訓練分布的掌握會變差,連續學好幾個任務時也比較不穩。

想多了解 LoRA,從哪開始?

沒有技術背景的話,最快的方法是去逛 AI 繪圖的模型社群,隨便下載一個幾 MB 的 LoRA 檔案套上去看看。你會很直觀地感覺到:底座模型沒換,出來的風格卻整個變了,這就是外掛矩陣在做的事。

有技術背景的話,建議直接讀微軟的 LoRA 官方倉庫,再跑一次 PEFT 的入門範例。畢竟這種東西看十篇解說,都不如自己親眼看它印出「可訓練參數只佔百分之零點幾」那行來得有感。


常見問題 FAQ

LoRA 跟 AI 有什麼關係?

LoRA 是訓練 AI 模型的一種微調方法,屬於參數高效微調(PEFT)這個大類。它讓開發者不用重新訓練整個大模型,就能讓模型學會特定的風格、格式或領域用語。現在你在網路上看到的多數 AI 繪圖風格檔案,以及很多企業內部的客製化語言模型,背後用的都是這套技術。

為什麼 LoRA 突然這麼紅?

因為它剛好卡在成本曲線的轉折點上。2021 年微軟提出時主要是為了省下微調大型語言模型的成本,2022 年 Stable Diffusion 開源之後,AI 繪圖社群發現用 LoRA 訓練特定畫風的檔案只有幾 MB、一張消費級顯示卡就跑得動,分享門檻低到爆,於是整個生態系就長出來了。2023 年 QLoRA 再把記憶體需求往下壓一個級距,這個詞就徹底變成常識。

我不是工程師也需要懂 LoRA 嗎?

不需要懂數學細節,但知道它在做什麼會很有用。如果你會用 AI 繪圖工具,理解 LoRA 之後你就知道那些外掛檔案為什麼可以疊加、為什麼有時候會互相打架。如果你在公司評估導入 AI,知道 LoRA 的存在可以幫你判斷廠商報價合不合理,畢竟微調成本從幾十萬降到幾千塊,就是這個技術帶來的差別。

LoRA 的中文翻譯有沒有統一?

沒有完全統一,台灣多數人講到它時直接用英文 LoRA,不翻譯。要翻的話最常見的是「低秩適應」,也看得到「低秩自適應」「低秩調整」這幾種寫法。中國簡體中文圈的用法是低秩适应。本站統一寫 LoRA,需要中文時用「低秩適應微調」,避免跟無線通訊的 LoRa 搞混。

學會 LoRA 之後,下一個該學什麼?

建議先補 RAG,搞清楚「改行為」跟「補知識」這兩條路線的分工,這是實務上最常被搞混的一組概念。接著看 RLHF,它是另一種調整模型行為的做法,只是靠的是人類偏好而不是外掛矩陣。行有餘力再研究量化(Quantization),那是 QLoRA 能成立的另外半塊拼圖。


延伸閱讀


參考來源

  1. 微軟 LoRA 官方倉庫 — 論文作者與 arXiv 編號 2106.09685、RoBERTa base 從 1.25 億降到 80 萬個可訓練參數、DeBERTa XXL 從 15 億降到 470 萬、GLUE 平均 87.24 對 86.40、推論不增加延遲。
  2. LoRA: Low-Rank Adaptation of Large Language Models(論文頁) — 摘要中相較 GPT-3 175B 全參數微調可訓練參數降至萬分之一、顯示記憶體需求降為三分之一、ICLR 2022 收錄。
  3. Hugging Face 官方部落格《Using LoRA for Efficient Stable Diffusion Fine-Tuning》 — LoRA 套在交叉注意力層、訓練權重約 3MB 且比 UNet 小約一千倍、微調腳本最低 11GB 顯示記憶體、2080 Ti 約 5 小時。
  4. Hugging Face PEFT 官方倉庫 — 30 億參數模型全參數微調 47.14GB 對 LoRA 14.4GB、準確率 0.863 對人類基準 0.897、T0_3B 的 LoRA 檔案 19MB 對完整模型 11GB。
  5. QLoRA 官方倉庫 — 4-bit NormalFloat、單張 48GB 顯示卡微調 650 億參數模型、Guanaco 在 Vicuna 評測達 ChatGPT 水準的 99.3%、單卡 24 小時。
  6. vLLM 官方文件 LoRA Adaptersenable_loramax_lorasmax_lora_rank 參數,同一底座並行服務多組 adapter 與執行期動態載入卸載。

整理一下重點:LoRA 真的不是什麼縮水版微調,它只是想通了一件事 — 要讓大模型換個樣子,其實不用把整面牆敲掉。

希望這一篇有讓你對 LoRA 有比較具體的理解哩~如果發現事實錯誤、定義不準、或翻譯卡卡的,歡迎透過聯絡頁指正,看到我們會盡快修。

我們下篇文章見囉~

本條目由 Array 報報 AI 編輯部根據上方「參考來源」整理,文末已揭露 AI 生成 + 公開資料引用。