Featured image of post LoRA大模型微調

LoRA大模型微調

一、LoRA 是什麼?

LoRA(Low-Rank Adaptation,低秩適應)是一種大模型微調技術。

問題的起點

大模型(例如 Qwen、Llama)動輒 7B、70B 參數。如果每次想讓它學點新東西,都要重新訓練所有參數,那需要幾十張 A100 顯示卡跑好幾天——一般人根本沒這個條件。

LoRA 的思路

不動原模型,只在旁邊掛一個「小插件」。

打個比方:

做法 類比
全量微調 把整本教科書改寫成你想要的版本
LoRA 在教科書頁邊貼幾張便利貼,寫上你的補充說明

原始模型的權重完全不改。LoRA 只在某些關鍵層旁邊插入一個極小的矩陣(低秩矩陣),訓練時只更新這個矩陣的參數。

為什麼叫「低秩適應」?

數學上,一個大矩陣可以用兩個小矩陣的乘積來近似。LoRA 利用這個原理:原始權重矩陣 $W$ 不動,額外訓練兩個小矩陣 $A$ 和 $B$,模型的最終輸出變成 $W + A \cdot B$。$A$ 和 $B$ 加起來可能只有原權重的 千分之一 大小。


二、LoRA 有什麼用?

它的核心能力只有一個:以極低的成本,改變大模型的「行為方式」。

📌 LoRA 改變的是風格/格式/行為,不是知識
  • 想讓模型學會新知識 → 用 RAG(檢索增強生成)
  • 想讓模型換一種方式說話、做事 → 用 LoRA

典型應用場景

場景 例子
風格遷移 讓通用模型用魯迅的文風寫作
格式約束 強制模型輸出嚴格 JSON,不多一個標點
角色扮演 把 Qwen 變成《原神》裡的鍾離
領域口吻 醫療問診語氣、法律文書的嚴謹措辭
指令遵循 讓模型更好地遵守 system prompt,不亂發散

LoRA 的優勢

  • 顯示記憶體極低:7B 模型一張 RTX 3090(24G)就能訓練,甚至 8G 顯示卡也勉強能跑
  • 檔案極小:訓練產物只有幾 MB,一個模型可以掛幾十個不同的 LoRA,即插即用
  • 訓練極快:幾百條資料,半小時出結果
  • 不破壞基座:LoRA 卸載後,模型恢復原樣,零風險

三、怎麼使用 LoRA?

大體分四步:

第一步:準備資料

把你想要模型學會的「行為」寫成範例對話。

假設你想讓模型變成毒舌客服,你就寫 50-200 條這樣的對話:

1
2
3
4
5
使用者:我的包裹到哪了?
客服:親,不出意外的話應該在快遞車裡曬太陽呢,建議您曬個日光浴等等它。

使用者:能退款嗎?
客服:能,流程大概和唐僧取經差不多,準備好您的訂單號,我幫您開啟這趟西行之旅。

資料量不用多,50-200 條高品質範例就能看到明顯效果。品質遠比數量重要。

第二步:選擇工具

市面上一堆工具,但本質上都在做同一件事。推薦兩個:

工具 特點 適合誰
LLaMA-Factory 有 Web UI,全程點滑鼠 完全不想寫程式的新手
Unsloth 快 2-5 倍,省一半顯示記憶體 會寫點 Python,追求效率

Unsloth 的核心程式碼不到 30 行,本質就是:載入模型 → 掛 LoRA → 餵資料 → 訓練 → 儲存。

第三步:訓練

設定幾個關鍵參數,然後等:

參數 作用 一般設多少
LoRA rank(秩) 決定「插件」的容量。越大越細膩,但也越佔顯示記憶體 8 或 16 夠用
學習率 每次學多少 5e-5,別亂調
訓練輪數 資料反覆學幾遍 3-5 輪

第四步:使用

訓練完後你得到一個幾 MB 的 LoRA 檔案。使用時同時載入原模型和這個 LoRA 檔案,模型就變成了你訓練的樣子。

想切換回原模型?卸載 LoRA 就行,一秒恢復。

一個模型可以同時掛多個 LoRA——比如掛一個「毒舌風格」和一個「輸出 JSON」,模型就變成一個會輸出 JSON 的毒舌助手。


四、與相關概念的關係

概念 做什麼 和 LoRA 的關係
全量微調 改全部參數 LoRA 的替代方案,效果更好但成本高幾百倍
RAG 外掛知識庫檢索 互補關係:RAG 管知識,LoRA 管風格
Prompt Engineering 寫提示詞 最輕量方案,但效果有限。調不動了再上 LoRA
QLoRA LoRA + 4bit 量化 LoRA 的省顯示記憶體版本,8G 顯示卡也能跑 7B 模型
PEFT 參數高效微調的大類 LoRA 是 PEFT 家族裡最流行的一個成員

五、一句話總結

LoRA = 給大模型外掛一個小插件,只改行為不改知識,訓練成本極低,幾 MB 檔案即插即用。

comments powered by Disqus
使用 Hugo 建立
主題 Stack 由 Jimmy 設計