Giới thiệu
Đây là bài quan trọng nhất — bạn sẽ fine-tune Gemini model từ A đến Z trên Vertex AI.
1. Chuẩn bị Dataset
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): return 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 \"\"\"Tính tổng hai số.\"\"\"\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. Upload & Launch Tuning Job
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. Test Fine-tuned vs Base Model
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)
Tóm tắt
- Gemini fine-tuning = upload JSONL → launch job → wait → test
- Vertex AI tự quản lý GPU, bạn chỉ cần data
- So sánh base vs fine-tuned → measure improvement
- Iterate: adjust data, retrain nếu chưa đạt
Bài tập
- Fine-tune Gemini Flash với 100+ examples cho use case bạn chọn
- So sánh output: base model vs fine-tuned (10 test cases)
- Thử thay đổi epochs (2 vs 3 vs 5) → đo improvement
- Tính chi phí thực tế của lần fine-tune này