Fine-tuning LLM 實務教學
全參數微調一個 7B 模型需要約 56GB VRAM,這對大多數團隊來說成本過高。參數高效微調(PEFT)技術讓我們只需訓練 1-2% 的參數,就能達到接近全參數微調的效果。
LoRA 原理
Low-Rank Adaptation 的核心假設:模型更新具有低秩特性。透過兩個小矩陣 A 和 B 來近似權重變化:
ΔW = BA
其中 A ∈ ℝ^{r×k},B ∈ ℝ^{d×r},r << min(d, k)。Rank 通常設為 8-64。
QLoRA
在 LoRA 基礎上結合 4-bit 量化基座模型,進一步降低記憶體需求:
- 使用 NF4(4-bit Normal Float)量化
- 分頁 optimizer 防止記憶體峰值
- 在 48GB GPU 上可微調 65B 模型
完整訓練流程
1. 資料準備
微調資料必須是高品質、格式一致的問答對。建議至少 100-1000 筆。
{
"instruction": "將下列英文翻譯成繁體中文",
"input": "Hello, how are you?",
"output": "你好,你好嗎?"
}
2. 訓練環境
from peft import LoraConfig, get_peft_model
config = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM")
model = get_peft_model(base_model, config)
3. 評估
微調後必須用保留測試集評估,並與基座模型比較。常見指標包括 BLEU、ROUGE 以及人工評分。