Giới thiệu
"Garbage in, garbage out" — chưa bao giờ đúng hơn khi nói về fine-tuning. Dataset chất lượng là 90% thành công.
1. Format Dataset chuẩn JSONL
1.1 Instruction-following format
{"messages": [
{"role": "system", "content": "Bạn là trợ lý y khoa tiếng Việt."},
{"role": "user", "content": "Triệu chứng sốt xuất huyết?"},
{"role": "assistant", "content": "Sốt xuất huyết dengue có các triệu chứng chính:\n1. Sốt cao đột ngột 39-40°C\n2. Đau đầu dữ dội..."}
]}
1.2 Multi-turn conversation format
{"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "Câu hỏi 1"},
{"role": "assistant", "content": "Trả lời 1"},
{"role": "user", "content": "Follow-up"},
{"role": "assistant", "content": "Trả lời follow-up"}
]}
2. Nguồn dữ liệu
2.1 Từ production logs
# Extract từ customer support logs
def extract_training_data(support_logs):
training_data = []
for log in support_logs:
if log["customer_rating"] >= 4: # Chỉ lấy conversations tốt
training_data.append({
"messages": [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": log["customer_question"]},
{"role": "assistant", "content": log["agent_response"]}
]
})
return training_data
2.2 Synthetic Data Generation
def generate_synthetic_data(seed_examples, n=100):
prompt = f"Given these examples, generate {n} similar but diverse examples..."
# Dùng GPT-4o/Claude để generate training data cho model nhỏ hơn
3. Bao nhiêu data là đủ?
| Use case | Minimum | Recommended | Excellent |
|---|---|---|---|
| Style/tone change | 50 | 200 | 500+ |
| Domain-specific | 100 | 500 | 2,000+ |
| Classification | 50/class | 200/class | 1,000+/class |
| Complex reasoning | 200 | 1,000 | 5,000+ |
💡 Quality >> Quantity: 100 ví dụ hoàn hảo > 1,000 ví dụ trung bình
Tóm tắt
- JSONL format với messages array là chuẩn phổ biến nhất
- Nguồn data: production logs, manual creation, synthetic generation
- Quality > Quantity — đầu tư thời gian vào data có ROI cao nhất
- Bắt đầu với 100–200 examples chất lượng cao
Bài tập
- Tạo 50 training examples cho use case bạn chọn
- Thử synthetic data generation — so sánh manual vs synthetic quality
- Validate dataset: kiểm tra format, xử lý edge cases
- Split thành train (80%) / validation (10%) / test (10%)