快速回答:LoRA 是什麼?
LoRA(Low-Rank Adaptation,低秩適應)是一種讓你用極低成本微調大型 AI 模型的技術。它不修改原始模型的參數,而是在模型旁邊插入一組很小的「補充矩陣」,只訓練這些補充部分。結果是:只需訓練原始參數的 1% 以下,就能達到接近完整微調的效果,GPU 記憶體需求也大幅降低。
LoRA 的正式定義
LoRA 全名 Low-Rank Adaptation of Large Language Models,由微軟研究院的 Hu et al. 在 2021 年提出(論文:LoRA: Low-Rank Adaptation of Large Language Models)。
核心概念:在深度學習模型的每一層權重矩陣旁,注入一對低秩(low-rank)分解矩陣 A 和 B。訓練時凍結原始模型的所有參數,只更新 A 和 B。推論時將 A×B 的乘積加回原始權重,不增加推論延遲。
LoRA 屬於 PEFT(Parameter-Efficient Fine-Tuning,參數高效微調)方法的一種,也是目前最廣泛使用的 PEFT 技術。
白話解釋:LoRA 就像什麼?
想像你有一本很厚的百科全書(這就是預訓練模型)。你想讓它多懂一些醫學知識,但重新印一本太貴了。
LoRA 的做法是:不改原書的任何一頁,而是夾進一張薄薄的「補充講義」。這張講義只有幾頁,但放在對的位置就能讓整本書「看起來」也懂醫學了。
技術原理
LoRA 的數學直覺其實不複雜:
權重矩陣分解
一個大型模型的權重矩陣 W 可能是 1000×1000(100 萬個參數)。完整微調要更新這 100 萬個參數。
LoRA 的想法是:微調時的「變化量」ΔW 通常是低秩的(low-rank),也就是說它可以用兩個小矩陣的乘積來近似:
其中 A 是 1000×4,B 是 4×1000(假設 rank=4)
參數量:1000×4 + 4×1000 = 8,000(原來的 0.8%)
Rank 的概念
Rank(秩)決定了 A 和 B 矩陣的「厚度」。Rank 越大,LoRA 的表達能力越強,但需要的參數和記憶體也越多。
- Rank 4-8:適合簡單任務(風格調整、語氣變化)
- Rank 16-32:適合一般領域適應(醫學、法律)
- Rank 64+:適合複雜的多任務學習
訓練與推論流程
- 凍結原始模型所有參數
- 在每個目標層旁插入 A、B 矩陣(隨機初始化 A,零初始化 B)
- 只訓練 A 和 B
- 推論時將 A×B 合併回原始權重(W' = W + A×B)
- 合併後不增加推論延遲和模型大小
LoRA vs 完整微調
| 比較項目 | 完整微調 | LoRA |
|---|---|---|
| 訓練參數量 | 100%(全部) | 0.1%-1% |
| GPU 記憶體 | 極高(70B 模型需多張 A100) | 低(單張 GPU 可行) |
| 訓練時間 | 數天到數週 | 數小時到數天 |
| 訓練成本 | 數千到數萬美元 | 數十到數百美元 |
| 效果 | 最佳 | 接近完整微調(90-99%) |
| 推論速度 | 與原始模型相同 | 與原始模型相同(合併後) |
| 模型切換 | 需載入完整模型副本 | 只需換 LoRA 檔案(10-200MB) |
| 原始能力保留 | 可能遺忘 | 幾乎完整保留 |
QLoRA 是什麼?
QLoRA(Quantized LoRA)由 Dettmers et al. 在 2023 年提出,結合了兩項技術:
- 4-bit 量化:將基礎模型從 16-bit 壓縮到 4-bit,節省約 75% 的記憶體
- LoRA 微調:在量化後的模型上套用 LoRA
實際效果:一個 70B 參數的大型語言模型,原本需要 140GB 記憶體(多張 A100),用 QLoRA 只需約 35GB,單張消費級 GPU(如 RTX 4090 24GB,搭配 CPU offloading)就有可能完成微調。
2026 最新 LoRA 變體
LoRA 提出後,研究社群持續改進:
DoRA(Weight-Decomposed Low-Rank Adaptation)
將權重分解為「方向」和「大小」兩個維度分別優化,提升微調效果的同時保持 LoRA 的效率。
Delta-LoRA
允許低秩矩陣的梯度同時更新原始權重,增強表達能力,特別適合需要更深度適應的場景。
MeLoRA(Mini-Ensemble LoRA)
使用多個平行的極小 LoRA 適配器,將它們的輸出聚合,在相同參數預算下獲得更好的多樣性。
La-LoRA(Layer-wise Adaptive LoRA)
自動為每一層分配不同的 Rank,重要的層給更多參數,不重要的層減少參數,提升整體效率。
S-LoRA(Serving LoRA)
專注於推論端的優化,能在單一伺服器上同時服務數千個不同的 LoRA 適配器,適合多租戶 SaaS 場景。
實務應用
圖片生成風格
在 Stable Diffusion 等圖片生成模型中,LoRA 是最流行的客製化方式。一個 LoRA 檔案只有 10-200MB(完整模型 2-7GB),用 10-50 張圖片在 15-45 分鐘內就能訓練出特定風格、人物或物件的 LoRA。社群平台如 Civitai 上有數十萬個社群分享的 LoRA。
LLM 領域適應
企業用 LoRA 將通用 LLM 適應到特定領域:醫療術語、法律條文、企業內部知識。相比完整微調,LoRA 讓中小企業也能負擔得起模型客製化。
多語言適配
用 LoRA 微調 LLM 以改善特定語言(如繁體中文、台語)的表現,而不影響模型在其他語言上的能力。
指令遵循強化
用 LoRA 對模型進行指令微調(Instruction Tuning),讓模型更好地理解和遵循人類指令,是 RLHF 流程中常見的一環。
常見誤解
「LoRA 效果一定比完整微調差」
在大多數實際場景中,LoRA 的效果只比完整微調低 1-5%,但成本可以低 10-100 倍。對於大部分企業應用來說,這個 trade-off 非常划算。
「LoRA 只能用在語言模型」
LoRA 可以用在任何基於 Transformer 或大型神經網路的模型上,包括圖片生成(Stable Diffusion)、語音合成、多模態模型等。
「Rank 越大越好」
不一定。過大的 Rank 可能導致過擬合,而且增加訓練成本。最佳 Rank 取決於任務的複雜度和訓練資料量。
「LoRA 訓練不需要 GPU」
LoRA 降低了 GPU 需求,但仍然需要 GPU 來訓練。QLoRA 搭配 CPU offloading 可以用消費級 GPU 完成,但純 CPU 訓練目前還不實用。
常見問題 FAQ
LoRA 和完整微調有什麼不同?
完整微調修改模型所有參數,需要大量 GPU 記憶體和運算資源。LoRA 只在原始權重旁插入小型矩陣,訓練參數量可減少 99% 以上,效果卻接近完整微調。更多微調基礎請參考 Fine-tuning 是什麼?
QLoRA 是什麼?
QLoRA 結合 4-bit 量化與 LoRA,將基礎模型壓縮為 4-bit 精度後再用 LoRA 微調,可節省約 75% 的 GPU 記憶體,讓消費級顯示卡也能微調大型模型。
LoRA 的 Rank 要設多大?
Rank 決定適應矩陣的大小。常見設定為 4-64。Rank 越大,表達能力越強但訓練成本越高。一般任務用 8-16 即可;複雜領域適應可提高至 32-64。
LoRA 可以用在圖片生成嗎?
可以。LoRA 在 Stable Diffusion 等圖片生成模型中非常流行,一個 LoRA 檔案只有 10-200MB(完整模型 2-7GB),可以教模型學會特定風格、人物或物件。
多個 LoRA 可以同時使用嗎?
可以。多個 LoRA 適配器可以同時載入並加權合併(Merge),例如一個負責風格、一個負責人物。S-LoRA 技術甚至可以在伺服器上同時服務數千個 LoRA。
LoRA 需要多少訓練資料?
取決於任務。圖片生成風格 LoRA 只需 10-50 張圖片;LLM 領域適應 LoRA 通常需要數百到數千筆指令資料。比完整微調的資料需求少得多。