簡介
“微调”是人工智能领域最受关注的流行语之一,但也是最被滥用的技术。在进入代码之前,您需要了解:Fine-tuning 到底是什么,它在 AI 管道中的什么位置,以及何时真正需要它。
⚠️ 黃金法則:80% 的時間你認為你需要微調,實際上即時工程或 RAG 就足夠了。微调是最后的选择,而不是第一。
1. LLM 的生命週期
在了解fine-tuning之前,我们先看看LLM是如何创建的:
┌──────────────────────────────────────────────────────────────────┐
│ VÒNG ĐỜI MỘT LLM │
│ │
│ Phase 1: PRE-TRAINING │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Huấn luyện trên TOÀN BỘ internet (~15 nghìn tỷ tokens) │ │
│ │ → Học ngôn ngữ, kiến thức, lập luận chung │ │
│ │ Cost: $10M–$100M+ | Time: Weeks–Months | GPUs: Hàng nghìn│ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ Phase 2: SUPERVISED FINE-TUNING (SFT) ← Bạn đang ở đây │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Huấn luyện thêm trên dataset nhỏ, chất lượng cao │ │
│ │ → Dạy model cách tuân thủ instructions, format, style │ │
│ │ Cost: $10–$10,000 | Time: Minutes–Hours | GPUs: 1–8 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ Phase 3: ALIGNMENT (RLHF / DPO) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Tinh chỉnh model theo preferences con người │ │
│ │ → An toàn, helpful, honest │ │
│ │ Cost: $1,000–$50,000 | Cần human annotators │ │
│ └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
底线
- 預訓練:讓模型「閱讀」整個網路→知道一切但不知道如何回答
- SFT(微調):教模型如何以您想要的格式/風格做出回應
- RLHF/DPO:完善模型以“正确”地响应人类
**當人們說「微調」時,通常指的是第二階段—SFT。 **
2. Fine-tuning 解決什麼問題?
2.1 行为与知识
這是決定是否需要微調的最重要的區別:
| 问题 | 类型 | 解决方案 |
|---|---|---|
| 型号不知道贵公司的产品 | 知识差距 | 抹布 |
| 模型响应必须是越南语,具体 JSON 格式 | 行为差距 | 微调 |
| 模型需要即時數據(股票價格、天氣) | 知識差距 | RAG / 工具使用 |
| 模型未使用正確的行業術語 | 行為差距 | 微調 |
| 模特“话太多”,你需要简单回答 | 行为差距 | 微调(或提示) |
| 模型不知道最新的內部政策 | 知識差距 | 抹布 |
2.2 具体例子
❌无需微调:
- “我希望聊天機器人了解公司的產品” → 使用 RAG
- “我希望模型能夠準確回答文件中的問題” → 使用 RAG
- “我需要一个模型来读取数据库并响应” → 使用工具使用/代理
✅ 需要微调:
- “模型應始終以具有特定模式的 JSON 進行回應” → 微調
- 「模型需要使用自己的品牌基調,與預設的有很大不同」→ 微調
- 「小模型(Flash/Mini)需要像大模型(Pro/4o)一樣執行」→ 微調(蒸餾)
- “模型必須理解越南醫學術語” → 微調 + RAG
3. 決策架構:三步驟階梯
在微調之前,請依序完成 3 個步驟:
Bước 1: PROMPT ENGINEERING
├── Chi phí: $0 | Thời gian: Phút
├── Thử: System prompt tốt hơn, few-shot examples, chain-of-thought
├── Đủ tốt? → DỪNG ✅
└── Không đủ? → Bước 2
Bước 2: RAG (Retrieval-Augmented Generation)
├── Chi phí: $50–$500 setup | Thời gian: Ngày
├── Thử: Kết nối knowledge base, vector DB
├── Đủ tốt? → DỪNG ✅
└── Không đủ? → Bước 3
Bước 3: FINE-TUNING
├── Chi phí: $50–$10,000+ | Thời gian: Days–Weeks
├── Chuẩn bị data, train, evaluate, iterate
└── Đây là lựa chọn cuối cùng
微調前的檢查清單
- 嘗試過至少5個不同的系統提示版本?
- 嘗試過幾次提示(提示中 3-5 個範例)?
- 如果您需要新知識 → 嘗試過 RAG 嗎?
- 擁有至少 100 個高品質訓練資料範例?
- 是否有訓練+評估迭代的預算?
- 此型號是否有長期維護期?
4.微調方法
4.1 全面微調
- 更新所有模型權重
- 需要龐大的 GPU (A100 80GB+)
- 高成本、災難性遺忘風險
- 2025-2026 年實務中很少需要
4.2 透過 API 進行監督微調 (SFT)
- 使用Google/OpenAI API
- 無需GPU管理
- 快速、簡單、成本適中
- 這是最常用的方法
4.3 LoRA / QLoRA(參數高效率)
- 僅更新權重的小部分(~0.1–1%)
- 可在消費級 GPU 上運作(RTX 3090、T4)
- 成本最低
- 需要更多技術知識
┌─────────────────────────────────────────────────┐
│ So sánh 3 phương pháp │
│ │
│ Full FT ████████████████████ $$$$$ 🔥🔥🔥 │
│ SFT (API) ██████████ $$ 🔥 │
│ LoRA ████ $ 🔥🔥 │
│ │
│ ████ = Resources $$$ = Cost 🔥 = Difficulty│
└─────────────────────────────────────────────────┘
5. 2025-2026 年景觀:誰提供微調?
| 供應商 | 支援的型號 | 定價模式 | 優點 |
|---|---|---|---|
| Google(Vertex AI) | Gemini 2.0 閃存,專業版 | 每個訓練令牌 | 以基本模型推斷價格 |
| 開放人工智慧 | GPT-4o-迷你、GPT-4o | 每個訓練令牌 | 生態系統龐大,易於使用 |
| 人為 | 尚未發布 SFT | 不適用 | 不適用於最終用戶 |
| 抱臉 | 所有開源模型 | 自架/AutoTrain | 最靈活、最便宜 |
| 攜手人工智慧 | LLaMA,米斯特拉爾,... | 每個訓練令牌 | 基礎設施管理 |
| 不懶惰 | LLaMA,米斯特拉爾,... | 免費(自架) | 速度提高 2 倍,顯存更少 |
6. 快速示範:微調“Hello World”
享受最簡單的微調-使用 OpenAI API:
from openai import OpenAI
import json
client = OpenAI()
# Step 1: Chuẩn bị dataset (tối thiểu ~10 examples cho demo)
training_data = [
{"messages": [
{"role": "system", "content": "Bạn là trợ lý hỗ trợ khách hàng của XDev."},
{"role": "user", "content": "Giá dịch vụ thế nào?"},
{"role": "assistant", "content": "Dạ, XDev có 3 gói: Starter (miễn phí), Pro ($29/tháng), Enterprise (liên hệ). Anh/chị quan tâm gói nào ạ? 😊"}
]},
{"messages": [
{"role": "system", "content": "Bạn là trợ lý hỗ trợ khách hàng của XDev."},
{"role": "user", "content": "Làm sao liên hệ support?"},
{"role": "assistant", "content": "Dạ, anh/chị có thể liên hệ qua: 📧 [email protected] hoặc 💬 chat trực tiếp trên website. Team support online 9h-18h (GMT+7) các ngày trong tuần ạ!"}
]},
# ... thêm 8+ examples nữa
]
# Step 2: Save thành JSONL file
with open("training_data.jsonl", "w") as f:
for item in training_data:
f.write(json.dumps(item, ensure_ascii=False) + "\n")
# Step 3: Upload file
file = client.files.create(
file=open("training_data.jsonl", "rb"),
purpose="fine-tune"
)
# Step 4: Tạo fine-tuning job
job = client.fine_tuning.jobs.create(
training_file=file.id,
model="gpt-4o-mini-2024-07-18",
hyperparameters={"n_epochs": 3}
)
print(f"Job ID: {job.id}")
print(f"Status: {job.status}") # → "validating_files" → "running" → "succeeded"
💡 注意:這只是一個示範流程。第 7 課和第 9 課將詳細介紹實際資料集。
課程總結
- 微調 = 教導模型如何行為,而不是教導知識
- 知識差距 → 使用 RAG | 行為差距 → 使用微調
- 始終執行 3 個步驟:快速工程 → RAG → 微調
- 3 種方法:完整 FT(罕見)|透過 API 進行 SFT(流行)| LoRA(節儉)
- Google Vertex AI + OpenAI 是 API 微調的兩個主要平台
- LoRA/QLoRA 自託管,成本最低
練習
- 列出您工作中的 3 個人工智慧問題—將知識差距與行為差距進行分類
- 對於每個問題,建議一個解決方案:提示工程、RAG 還是微調?
- 為您感興趣的用例建立 10 個訓練範例(JSONL 格式)
- 閱讀 OpenAI Cookbook 上的部落格文章“微調實用指南”