簡介
微調一次是原型,微調到生產需要迭代、評估和最佳化。
1.蒸餾:大模型→小模型
# Step 1: Dùng Gemini Pro (lớn) để generate training data
# Step 2: Fine-tune Gemini Flash (nhỏ) trên data đó
# → Flash performs gần Pro nhưng rẻ hơn 10x
def distill_dataset(prompts, teacher_model="gemini-2.0-pro"):
training_data = []
for prompt in prompts:
response = client.models.generate_content(
model=teacher_model, contents=prompt
)
training_data.append({
"messages": [
{"role": "user", "content": prompt},
{"role": "model", "content": response.text}
]
})
return training_data
2. 超參數優化
| 參數 | 預設 | 何時增加 | 何時減少 |
|---|---|---|---|
| 時代 | 3 | 小資料集(<200) | 大資料集(>2000) |
| 學習率 | 1.0 | 慢學習模型 | 模型「忘記」舊知識 |
3. A/B 測試框架
import random
def ab_test(query, model_a, model_b, n_trials=100):
results = {"a_wins": 0, "b_wins": 0, "tie": 0}
for _ in range(n_trials):
resp_a = call_model(model_a, query)
resp_b = call_model(model_b, query)
winner = llm_judge(query, resp_a, resp_b)
results[winner] += 1
return results
總結
- 蒸餾:蒸餾大→小模型知識,節省 10 倍推理
- 超參數調整:epochs、學習率、batch size
- 投入生產前需要進行 A/B 測試
- 多重任務微調:1 個模型,多種功能
練習
- 進行蒸餾:Gemini Pro → Gemini Flash
- 運行3個不同epoch的實驗,比較結果
- 建構A/B測試框架
- 計算節省的成本:精煉模型與原始 Pro 模型