跳到內容

進階★★★★★11 分鐘閱讀

用 LoRA 在本機微調 Llama 3 70B

在 2026 年自己用本機微調 70B 模型,實際需要的硬體、資料、超參數。

登入以收藏

兩年前在家裡微調 70B 參數模型還是科幻情節。2026 年,有了 QLoRA、FlashAttention-3、出貨 48GB VRAM 的消費級 GPU,這是個週末就做得完的專案 —— 只要你有耐心搞懂各個零件。

這篇是端到端實務。需要什麼硬體、資料格式、實際能跑的超參數值,以及如果你不被警告會吃掉週末的失敗模式。

目標:拿 Llama 3.3 70B Instruct,用 LoRA 適配到你的領域(法律、醫療、客服、什麼都好)。最後會拿到一個小 adapter 檔(~200MB),推論時掛回 base model 上。

硬體:實際需要什麼

2026 年 QLoRA 70B 的誠實最低需求:

  • GPU: 1× NVIDIA RTX 5090(32GB)或 1× RTX 6000 Pro Blackwell(96GB)。5090 只能跑 QLoRA 而且很緊。6000 Pro 是舒服選項,full LoRA 跟長序列都跑得動。
  • 記憶體: 系統 RAM 至少 64GB。128GB 在 data loading 時順很多。
  • 硬碟: base model checkpoint、資料集、中間 checkpoint 加起來要 250GB 空閒,強烈建議 NVMe。
  • OS: Linux(Ubuntu 24.04 最佳)。WSL2 能用但效能掉 10-20%。Windows 原生 —— 別試。

沒硬體:RunPod 租 A100 80GB 約 $1.50/hr,H100 約 $2.50/hr。70B 微調在 H100 上一般跑 4-12 小時,總成本 $10-30。

資料集:格式跟大小

第一次微調最常犯的錯:資料不夠,或格式錯。

格式。 2026 標準是 JSONL,每行一個 messages 陣列,OpenAI 風格:

{"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}

一行一個 example。Axolotl 跟 Unsloth 直接吃這個格式。

大小。 經驗法則:

  • 100 個 example:夠教模型「風格」(輸出格式、語氣),不夠教新知識。
  • 1,000 個:夠做窄任務適配(分類、抽取、結構化輸出)。
  • 10,000 個:真領域專業,模型在真測試題上明顯不同。
  • 100,000+ 個:邊際效益對策展成本越來越差。

第一個專案,1,000-3,000 個高品質 example 永遠贏 50,000 個普通的。

品質比數量重要。 1,000 個人工策展的好答案,教模型的東西遠多於 50,000 個 LLM 生成、看起來都微妙地一樣的 example。

2026 工具鏈

四個東西:

  • Unsloth(獨立開發者推薦)。比 vanilla transformers 快兩倍、VRAM 更低、LoRA 文件齊全。2026 年的首選食譜。
  • Axolotl(認真工作推薦)。設定更彈性、支援更多架構、適合 production 團隊。
  • PEFT(HuggingFace)。底下兩個用的 LoRA / QLoRA 實作都靠它。
  • bitsandbytes。QLoRA 用的 4-bit 量化。

本文用 Unsloth。

重要的超參數

70B LoRA 實際能跑的值:

  • LoRA rank(r): 窄任務用 16,廣域適配用 32 或 64。越高 = 容量越大、VRAM 越多、訓練越慢。從 16 開始。
  • LoRA alpha: rank 的 2 倍。r=16 就 alpha=32。控制 LoRA 更新的縮放。
  • 目標模組: q_projk_projv_projo_projgate_projup_projdown_proj(所有 linear 層)。2024 年的指南只訓 attention,2025+ 研究顯示 MLP 也訓會明顯提升。
  • Learning rate: LoRA 用 2e-4,QLoRA 用 1e-4。loss 爆掉就減半,loss 一直平就加倍試一次。
  • Batch size: 每張 GPU 1,gradient_accumulation_steps 設 8-16。等效 batch size 8-16 是甜蜜點。
  • Epochs: 1-3。小資料集跑太多 epoch = overfit。盯 eval loss,不掉了就停。
  • Max seq length: 從 2048 開始,越長 VRAM 越多。資料需要才加。
  • Warmup steps: 總步數 5-10%,避免一開始 loss 爆衝。

跑起來長什麼樣

2,000 個 example 的 Llama 3.3 70B QLoRA 微調,單張 H100:

  • VRAM 峰值:約 62GB。
  • 每 epoch 時間:約 80 分鐘。
  • 總牆鐘時間(3 epoch + checkpoint):約 5 小時。
  • 最終 adapter 大小:250MB。
  • Train loss 起點 1.4,終點 0.6;Eval loss 終點 0.7。

Loss 數字是參考 —— 真正重要的是模型在你真實測試 prompt 上的行為有沒有變。

怎麼知道真的有用

不要相信 loss 曲線。準備一份 30-50 個沒拿去訓練的 hold-out 測試集,把 base model 跟微調後的模型輸出並排比較。如果在你的真實領域上微調版本沒有「肉眼可見」變好,問題就是資料集,不是訓練。

要看的東西:

  • 有沒有一致地照你的輸出格式?
  • 有沒有正確使用你領域的詞彙?
  • 有沒有忘了怎麼做別的事(catastrophic forgetting)?如果連基本數學都不會了,代表資料太窄。
  • 跑通用 benchmark(HellaSwag、MMLU 抽樣 200 題)before / after 比一下,抓 regression。

Catastrophic forgetting 跟怎麼避免

LoRA 部分緩解了這個 —— base 權重沒被動 —— 但推論時 adapter 合併後,跟你微調集差異大的任務還是可能 regression。

緩解:

  • 混入通用資料。 訓練資料 10-20% 應該是通用 instruction-following 資料(Tulu、OpenAssistant 抽樣),保留廣域能力。
  • 降低 rank。 rank 越高 = 適配越激進 = forgetting 風險越大。窄任務 r=16 比 r=64 安全。
  • 不要過訓。 盯 eval loss,不掉了就停。

什麼時候不該微調

大部分「我應該微調這個」的直覺都是錯的。先試這些:

  • 更好的 prompt。 大部分窄任務的提升來自 system prompt 裡的 few-shot example,通常免費。
  • RAG。 如果問題是「模型不知道我的資料」,95% 的時候 RAG 才是答案。微調不可靠地教事實,它教行為。
  • 更大的前沿模型。 如果 Claude 4.7 Opus 或 GPT-5 已經能做你要的事,成本效益通常贏自架微調 70B。

微調時機:(a) 你需要 prompt 強制不了的一致輸出格式,(b) 隱私 / 合規理由要把權重留在本地,(c) prompt 在你特定任務上撞品質天花板而且你有資料能突破。

上線部署

adapter 訓好之後兩條路:

  • 把 adapter 合併進 base 權重。 單一合併模型,部署最簡單。失去切換 adapter 的能力。
  • adapter 分開放,推論時載入。 vLLM 跟 TGI 等框架支援這個,可以放一個 base model,每次請求換 adapter。

2026 年要 serving,vLLM + 合併模型是 production 級選擇。Self-host vLLM 有專文。

下一步

  • Unsloth GitHub 範例目錄。
  • QLoRA: Efficient Finetuning of Quantized LLMs(Dettmers et al, 2023)。
  • DoRA: Weight-Decomposed Low-Rank Adaptation —— 2024 LoRA 後繼,品質略好。
  • 查這些詞:catastrophic forgetting、parameter-efficient fine-tuning、LoRA vs DoRA、axolotl config 範例。

最後更新: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more