大模型微调的数据格式,核心可以归结为两种主流范式:一种是基于“对话结构”的 ShareGPT格式,另一种是基于“指令-回答”结构的 Alpaca格式。
下面这两张表可以帮你快速了解它们的核心区别和结构:
| 特性 | ShareGPT格式 (对话式) | Alpaca格式 (指令式) |
|---|---|---|
| 核心结构 | 一个 messages / conversations 数组,包含多轮对话 |
instruction + input(可选) + output的独立结构 |
| 适用场景 | 多轮对话、客服、聊天机器人 | 单轮问答、指令遵循、特定任务(如翻译、摘要) |
| 优点 | 能清晰、完整地保留对话的上下文和逻辑 | 结构简单,针对性强,易于构建和扩展 |
| 缺点 | 结构相对复杂,解析和处理成本稍高 | 不适合处理包含复杂上下文的多轮对 |
ShareGPT格式
这是目前最流行的多轮对话微调格式,它通过一个messages数组来组织每一轮对话,数组中每个对象都包含role(角色)和content(内容)。
标准单轮示例:
{ "messages": [ { "role": "user", "content": "什么是机器学习?" }, { "role": "assistant", "content": "机器学习是人工智能的一个分支,它使计算机能够从数据中学习规律并做出决策。" } ] }
多轮对话示例:
{ "messages": [ { "role": "system", "content": "你是一位专业的心理健康顾问。" }, { "role": "user", "content": "我最近总是失眠,怎么办?" }, { "role": "assistant", "content": "失眠可能与压力和焦虑有关。能告诉我这种情况持续多久了吗?" }, { "role": "user", "content": "大概两周了。" }, { "role": "assistant", "content": "建议你尝试建立规律的作息,睡前避免使用电子产品。如果情况没有改善,可以考虑就医。" } ] }
格式要点:对话可以以可选的
system消息开始,后续消息必须在user和assistant角色间交替,并且必须以assistant的角色结束。
Alpaca格式
这种格式结构更为简单直接,非常适合为模型定义具体的、独立的单轮任务。
标准Alpaca格式示例:
{ "instruction": "将以下英文句子翻译成中文", "input": "Machine learning is revolutionizing technology.", "output": "机器学习正在彻底改变技术。" }
格式要点:
instruction描述任务,input是可选的输入内容,output是期望的模型回答。如果任务本身足够清晰,input字段可以留空。
进阶格式:思维链与工具调用
为了提升模型在复杂任务上的表现,数据格式还可以变得更“高级”。
-
思维链 (Chain-of-Thought):通过在
assistant的回答中加入<think>和</think>标签,让模型展示其推理过程。这能显著提升模型在逻辑推理、数学问题上的准确性。{ "messages": [ { "role": "user", "content": "一个笼子里有鸡和兔,共35个头,94只脚,问鸡兔各几只?" }, { "role": "assistant", "content": "<think>假设全是鸡,则应有70只脚,比实际少24只。每将一只鸡换成一只兔,脚数增加2,所以需要换12只兔。因此,兔有12只,鸡有23只。</think> 兔子有12只,鸡有23只。" } ] }
-
工具调用 (Tool Use):这种格式会引入
tool_call和tool等新角色,用于训练模型在需要时调用外部工具(如搜索引擎、计算器、API)来获取信息或执行操作。{ "messages": [ { "role": "user", "content": "北京今天天气怎么样?" }, { "role": "assistant", "content": null, "tool_calls": [{"name": "query_weather", "arguments": "{\"city\": \"北京\"}"}] }, { "role": "tool", "content": "{\"temperature\": \"25°C\", \"condition\": \"晴朗\"}" }, { "role": "assistant", "content": "北京今天天气晴朗,气温为25°C。" } ] }
总结与最佳实践
| 最佳实践 | 具体说明 |
|---|---|
| 选择合适格式 | 多轮对话选ShareGPT;单轮指令选Alpaca。 |
| 保证数据质量 | 确保回答准确、有用、风格一致,这是微调效果的基石。 |
| 确保数据多样性 | 覆盖不同场景、主题和难度,帮助模型更好地泛化。 |
| 平衡数据分布 | 各类别样本数量不应偏差过大,防止模型产生偏见。 |
| 使用JSONL格式 | 每一行是一个独立的JSON对象,这是业界通用标准,便于大规模流式处理。 |
| 统一编码 | 所有文件使用 UTF-8 编码。 |
- THE END -
最后修改:2026年5月19日
非特殊说明,本博所有文章均为博主原创。