一、什么是大模型微调数据集

简单说,微调数据集就是一批专门为某个目标准备的数据,用来让一个已经很强的通用模型,进一步学会特定任务、特定风格或特定领域知识。

二、常见数据集分类

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 格式

最常见的指令微调格式之一,核心字段通常是 instructioninputoutput

{
  "instruction": "Write a poem about the moon.",
  "input": "",
  "output": "The moon glows softly in the night."
}

如果要训练更复杂的行为,还可以扩展出 systemhistory 等字段。

3.2 ShareGPT 格式

更适合多轮对话,通常是 conversations 列表,每条消息标明发言方。

3.3 ChatML 格式

适合带系统提示、多角色消息的聊天训练,常见于对话模型。

3.4 LLaMA-Factory 格式

它本质上更强调“兼容多种任务场景”,既能处理对话,也能处理指令和分类任务。

3.5 ORCA 格式

更偏复杂推理和高质量回答结构,常用于增强推理能力。

3.6 通用 SFT 格式

字段更自由,常见组合是 prompt + completioninput + output

3.7 DPO 格式

用于偏好优化,通常包含:

  • prompt
  • chosen
  • rejected

也就是“同一个问题下,哪个回答更好,哪个更差”。

3.8 JSONL 逐行格式

大规模训练里非常常见,每行一个 JSON 对象,方便流式读取和批量处理。

四、如何选数据集格式

  • 单轮任务:
  • Alpaca、通用 SFT 格式通常足够。
  • 多轮聊天:
  • ShareGPT、ChatML 更自然。
  • 偏好优化:
  • 用 DPO 格式。
  • 开源框架训练:
  • 优先看框架文档支持什么,再去适配。

五、真正重要的不是格式本身

格式只是容器,更关键的是数据质量:任务是否明确、答案是否稳定、风格是否统一、噪声是否可控。格式不对可以转换,但脏数据带来的问题往往最难补救。