はじめに
これは最も重要なレッスンです。Vertex AI で Gemini モデルを A から Z まで微調整します。
1. データセットの準備
import json
# Dataset format cho Gemini
training_examples = [
{
"messages": [
{"role": "user", "content": "Phân tích code này và đề xuất cải thiện:\n```Python\ndef calc(x,y): x+y を返します```"},
{"role": "model", "content": "## Code Review\n\n### Vấn đề:\n1. Tên hàm `calc` không rõ ràng\n2. Thiếu type hints\n3. Thiếu docstring\n\n### Đề xuất:\n```python\ndef add_numbers(x: float, y: float) -> float:\n \"\"\"2 つの数値を合計します。\"\"\"\n return x + y\n```"}
]
},
# ... 100+ examples
]
# Save as JSONL
with open("gemini_training.jsonl", "w") as f:
for ex in training_examples:
f.write(json.dumps(ex, ensure_ascii=False) + "\n")
2. チューニング ジョブのアップロードと起動
from google.cloud import aiplatform
aiplatform.init(project="my-project", location="us-central1")
# Launch supervised tuning
tuning_job = aiplatform.SupervisedTuningJob(
source_model="gemini-2.0-flash",
train_dataset="gs://my-bucket/gemini_training.jsonl",
validation_dataset="gs://my-bucket/gemini_validation.jsonl",
tuned_model_display_name="code-reviewer-v1",
epochs=3,
learning_rate_multiplier=1.0,
)
tuning_job.run()
print(f"Tuned model: {tuning_job.tuned_model_endpoint_name}")
3. 微調整されたモデルと基本モデルのテスト
from google import genai
client = genai.Client()
# Base model
base_response = client.models.generate_content(
model="gemini-2.0-flash",
contents="Review this code: def f(x): return x*2"
)
# Fine-tuned model
ft_response = client.models.generate_content(
model=tuning_job.tuned_model_name,
contents="Review this code: def f(x): return x*2"
)
print("=== BASE ===")
print(base_response.text)
print("\n=== FINE-TUNED ===")
print(ft_response.text)
概要
- Gemini の微調整 = JSONL のアップロード → ジョブの起動 → 待機 → テスト
- Vertex AI が GPU 自体を管理するため、必要なのはデータのみです
- 基本と微調整を比較 → 改善を測定
- 反復: データを調整し、達成できなかった場合は再トレーニングします
演習
- 選択したユースケースに合わせて 100 以上の例を使用して Gemini Flash を微調整します
- 出力の比較: 基本モデルと微調整済みモデル (10 のテスト ケース)
- エポックを変更してみる (2 vs 3 vs 5) → 改善を測定する
- この微調整にかかる実際のコストを計算します。