はじめに
「ガベージイン、ガベージアウト」 — 微調整に関しては、これがこれほど真実であることはありません。高品質のデータセットは 90% 成功します。
1. JSONL 標準データセット形式
1.1 指示に従う形式
{"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 複数ターンの会話形式
{"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. データソース
2.1 本番ログから
# 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 合成データの生成
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. どのくらいのデータ量があれば十分ですか?
| 使用例 | 最小 | おすすめ | 素晴らしい |
|---|---|---|---|
| スタイル/トーンの変更 | 50 | 200 | 500+ |
| ドメイン固有 | 100 | 500 | 2,000以上 |
| 分類 | 50/クラス | 200/クラス | 1,000+/クラス |
| 複雑な推論 | 200 | 1,000 | 5,000以上 |
💡 質 >> 量: 100 の完璧な例 > 1,000 の平均的な例
概要
- メッセージ配列を含む JSONL 形式が最も一般的な標準です
- データソース: 生産ログ、手動作成、合成生成
- 質 > 量 — 最高の ROI を実現するデータに時間を投資します。
- 100 ~ 200 の高品質な例から始めます
演習
- 選択したユースケースに合わせて 50 個のトレーニング例を作成します
- 合成データの生成を試す — 手動と合成の品質を比較する
- データセットを検証する: 形式をチェックし、エッジケースを処理する
- トレイン (80%) / 検証 (10%) / テスト (10%) に分割します。