What is Synthetic Data(合成資料)?
使用前沿模型或規則系統建立的人工生成訓練資料,用於補充或替代真實世界資料。
Definition
合成資料是人工生成而非從真實世界觀察中收集的訓練資料。在 LLM 微調的背景下,合成資料最常見的形式是由較大的前沿模型(如 GPT-4o 或 Claude)生成的輸入-輸出對,然後用於訓練較小的特定任務模型。這種方法——有時稱為資料蒸餾或 API 蒸餾——已成為建立微調資料集的主流方法,因為它以人工標注成本的一小部分產生高品質、與任務相關的範例。
合成資料有幾種形式:模型生成的資料(提示前沿模型產生範例)、基於規則的資料(使用模板和程式化轉換建立結構化範例),以及增強資料(透過改寫、雜訊注入或格式變化修改真實範例以擴展小型種子資料集)。強大的指令遵循模型的出現使模型生成的合成資料成為最實用的方法——單一工程師可以在數小時內生成數千個高品質訓練範例,而非人工標注所需的數週或數月 。結合品質過濾和去重,合成資料管線已成為任何進行生產微調的團隊的核心能力。
Why It Matters
微調的最大瓶頸幾乎從來不是計算——而是資料。大多數組織只有少量他們想要的行為範例,遠遠不及有效 LoRA 訓練所需的數千個高品質範例。合成資料生成直接解決了這個稀缺問題:給定 50 個種子範例和一個精心設計的生成提示,你可以在一個下午內擴展到 5,000 個多樣的訓練範例。
除了數量之外,合成資料還實現了蒸餾工作流程,將前沿模型的智慧壓縮到更小的、可部署的模型中。與其在生產中為每次 API 呼叫向 GPT-4o 支付 $0.01,你一次性生成訓練資料(一次性成本),微調一個 7B 參數模型,並以接近零的邊際成本在本地提供服務。合成資料還提供了真實使用者資料的隱私安全替代方案——你可以生成捕捉敏感資料統計模式的範例,而不暴露實際的客戶記錄、醫療資訊或金融交易。對於受監管的產業,合成資料和真實資料之間的這種區分可能決定微調專案在法律上是否可行。
How It Works
典型的合成資料管線有四個階段:生成、過濾、去重和格式化。在生成階段,你定義一個描述期望輸出格式和品質標準的系統提示,然後將多樣的輸入提示饋送給前沿模型。常見的生成技術包括直接提示(要求模型產生完整範例)、種子擴展(提供幾個真實範例並要求模型生成類似但不同的範例),以及思維鏈提取(讓模型逐步解決問題,然後將推理過程和最終答案都作為訓練資料使用)。
生成後,品質過濾移除幻覺、不一致或低品質的輸出——這可以透過單獨的驗證提示、基於規則的檢查(JSON 有效性、長度約束、必填欄位存在)或對隨機樣本的人工抽查來完成。去重移除可能導致微調模型在重複模式上過擬合的近似重複範例。最後,策展的範例被格式化為目標訓練格式(通常是帶有對話式訊息的 JSONL)並分割為訓練集和驗證集。整個管線是迭代的:你生成一批,評估微調模型,識別弱點,並生成有針對性的範例來填補這些差距。
import json
import random
from openai import OpenAI
client = OpenAI()
training_data = []
seed_examples = load_seed_examples("seeds.jsonl") # 50-200 real examples
SYSTEM_PROMPT = """Generate a realistic customer support message and an ideal
agent response. The message should be about one of these topics:
billing, technical issues, account access, feature requests.
Respond in JSON: {"user": "...", "assistant": "..."}"""
for i in range(5000):
# Inject a random seed example for style guidance
seed = random.choice(seed_examples)
user_prompt = f"Example style reference:\n{seed}\n\nNow generate a new, unique example."
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_prompt}
],
temperature=0.9, # High temp for diversity
response_format={"type": "json_object"}
)
try:
pair = json.loads(response.choices[0].message.content)
training_data.append({
"messages": [
{"role": "user", "content": pair["user"]},
{"role": "assistant", "content": pair["assistant"]}
]
})
except (json.JSONDecodeError, KeyError):
continue # Skip malformed outputs
# Save for fine-tuning in Ertas Vault
with open("synthetic_support_data.jsonl", "w") as f:
for item in training_data:
f.write(json.dumps(item) + "\n")
print(f"Generated {len(training_data)} training examples")Example Use Case
一位金融科技新創公司的 ML 工程師需要微調一個跨 30 個商戶類別的交易分類模型。他們只有 200 筆人工標注的真實交易。使用 GPT-4o,他們透過提供 200 個真實範例作為種子並指示模型產生涵蓋邊緣案例——國際交易、訂閱服務、模糊商戶和部分描述——的多樣變體,生成了 5,000 個帶有類別標籤的合成交易描述。過濾掉 300 個低品質範例和去重後,他們擁有 4,200 個乾淨的訓練對。在 Qwen 2.5 7B 上微調的 LoRA 適配器達到了 94% 的分類準確度——僅比 GPT-4o 自身的準確度低 2%,但推論成本只有其百分之一。合成資料生成總成本:大約 $15 的 API 呼叫。
Key Takeaways
- 合成資料透過使用前沿模型從小型種子集生成數千個訓練範例來解決資料稀缺問題。
- 模型生成的合成資料實現蒸餾工作流程——將前沿模型品質壓縮到更小的、可本地部署的模型中。
- 品質過濾和去重是生成後的必要步驟;未過濾的合成資料會降低微調效能。
- 合成資料提供真實使用者資料的隱私安全替代方案,對醫療和金融等受監管產業至關重要。
- 迭代生成——微調、評估、為弱點生成有針對性的範例——比一次性批量生成產生更好的結果。
How Ertas Helps
Ertas Vault 設計用於處理完整的合成資料生命週期。團隊可以匯入生成的 JSONL 資料集,運行內建的驗證檢查以捕捉格式錯誤和格式不正確的範例,去除可能導致過擬合的近似重複項目,並在迭代生成輪次中對資料集進行版本管理。Vault 的資料探索器讓你檢視個別範例、標記品質級別並過濾子集以進行有針對性的微調實驗——將合成資料管線的混亂現實轉變為結構化、可重現的工作流程。
Related Resources
Fine-Tuning
Inference
LoRA
Model Distillation
Training Data
Synthetic Data Generation for Fine-Tuning: Techniques That Work
Model Distillation with LoRA: Training Smaller Models from Frontier Outputs
How to Fine-Tune an LLM: The Complete 2026 Guide
Hugging Face
Ollama
Ertas for SaaS Product Teams
Ertas for ML Engineers & Fine-Tuning Practitioners
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.