一、什么是大模型微调数据集¶
简单说,微调数据集就是一批专门为某个目标准备的数据,用来让一个已经很强的通用模型,进一步学会特定任务、特定风格或特定领域知识。
二、常见数据集分类¶
2.1 指令跟随数据集¶
这类数据集一般用 (instruction, input, output) 三元组训练模型遵循指令的能力,适合问答、翻译、文本生成等任务。
{
"instruction": "将中文翻译为英文",
"input": "你好",
"output": "Hello"
}
2.2 多轮对话数据集¶
它会保留上下文历史,用来训练模型理解会话连续性,适合智能客服、聊天机器人等场景。
{
"dialogue": [
{ "role": "user", "content": "明天上海有雨吗?" },
{ "role": "assistant", "content": "上海明天阴有小雨,建议带伞出行。" },
{ "role": "user", "content": "适合去外滩散步吗?" },
{ "role": "assistant", "content": "雨天注意防滑,建议做好防水准备。" }
]
}
2.3 思维链数据集¶
这类数据集除了最终答案,还会保留推理过程,适合训练需要“分步思考”的模型。
{
"instruction": "解决数学应用题",
"input": "小红买了4个苹果,每个3元;又买了2瓶牛奶,每瓶比苹果贵5元。总花费多少?",
"chain_of_thought": [
"苹果总价:4×3=12元",
"牛奶单价:3+5=8元,2瓶总价16元",
"合计:12+16=28元"
],
"output": "总花费为28元"
}
2.4 文本分类数据集¶
这类数据集重点是把文本映射到标签,适合情感分析、新闻分类、工单归类等结构化输出任务。
2.5 领域适配数据集¶
这类数据会显式体现行业信息,例如医疗、法律、金融等,适合做专业化微调。
三、常见数据格式¶
3.1 Alpaca 格式¶
最常见的指令微调格式之一,核心字段通常是 instruction、input、output。
{
"instruction": "Write a poem about the moon.",
"input": "",
"output": "The moon glows softly in the night."
}
如果要训练更复杂的行为,还可以扩展出 system、history 等字段。
3.2 ShareGPT 格式¶
更适合多轮对话,通常是 conversations 列表,每条消息标明发言方。
3.3 ChatML 格式¶
适合带系统提示、多角色消息的聊天训练,常见于对话模型。
3.4 LLaMA-Factory 格式¶
它本质上更强调“兼容多种任务场景”,既能处理对话,也能处理指令和分类任务。
3.5 ORCA 格式¶
更偏复杂推理和高质量回答结构,常用于增强推理能力。
3.6 通用 SFT 格式¶
字段更自由,常见组合是 prompt + completion 或 input + output。
3.7 DPO 格式¶
用于偏好优化,通常包含:
promptchosenrejected
也就是“同一个问题下,哪个回答更好,哪个更差”。
3.8 JSONL 逐行格式¶
大规模训练里非常常见,每行一个 JSON 对象,方便流式读取和批量处理。
四、如何选数据集格式¶
- 单轮任务:
- Alpaca、通用 SFT 格式通常足够。
- 多轮聊天:
- ShareGPT、ChatML 更自然。
- 偏好优化:
- 用 DPO 格式。
- 开源框架训练:
- 优先看框架文档支持什么,再去适配。
五、真正重要的不是格式本身¶
格式只是容器,更关键的是数据质量:任务是否明确、答案是否稳定、风格是否统一、噪声是否可控。格式不对可以转换,但脏数据带来的问题往往最难补救。