はじめに
一度の微調整はプロトタイプであり、実稼働用の微調整には 反復、評価、最適化 が必要です。
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 倍節約します
- ハイパーパラメータ調整: エポック、学習率、バッチ サイズ
- 本番環境に移行する前に A/B テストが必要
- マルチタスクの微調整: 1 つのモデル、多くの機能
演習
- 蒸留を実行します: Gemini Pro → Gemini Flash
- 異なるエポックで 3 つの実験を実行し、結果を比較します。
- A/B テストのフレームワークを構築する
- コスト削減の計算: 蒸留モデルとオリジナルの Pro モデル