一、微调数据集的常见分类
从最上层的预训练模型开始,我们先划分出是否为多模态
(例如让模型具备对图片、语音、视频的理解和生成能力)微调,还是纯文本微调
(仅让模型具备生成文字的能力)。
在文本微调
中,监督微调
是目前应用最广泛也是最常用的微调技术,当然目前我们普通人想在特定行业里去微调自己的大模型,最常用的也是监督微调,所以监督微调的数据集格式是我们后续重点学习的内容。
然后其他微调技术还包括无监督
、自监督微调
,强化学习微调
等等,这些我们只做简单了解,不用过多深入。最后还有因为最近 DeepSeek 爆火而带火的知识蒸馏技术,我也把它当作特殊微调任务的一种,这个我们后面再具体讲解。
1.1 预训练
从零开始训练一个模型,一般这个流程叫做预训练,这个过程的目的就是让模型掌握语言的通用规律,以及基本的语言理解能力。
目前我们市面上主流的大模型,比如 ChatGPT、DeepDeek 等等,都属于 “自回归模型”,而 “自回归模型” 的本质就是:用过去的自己来预测未来的自己。
二、微调数据集的常用格式
模型微调已经不是什么新技术了,只是最近由于 DeepSeek 的横空出世,导致逐步开始被各领域更广泛的应用,在这之前,哪些数据集格式效果好,哪些容易整理,已经总结了很多经验,比如目前广泛被大家使用的有两种数据集格式,Alpaca 和 ShareGPT。
2.1 Alpaca 格式
Alpaca 最初是斯坦福大学于 2023 年发布的 52k 条指令微调数据集,由 OpenAI 的 text-davinci-003 模型生成,旨在通过指令跟随(Instruction Following)任务优化大语言模型(如 LLaMA)的性能。
后续随着社区的发展,Alpaca
的 JSON 结构逐渐被抽象为一种 通用数据格式,并且扩展了一些字段如 system
(系统提示)和 history
(历史对话),支持多轮交互任务。适用于多种微调场景,很多主流框架(如 LLaMA-Factory、DeepSpeed)都可以直接加载 Alpaca 格式的数据集。
核心结构
{
"instruction": "任务指令(必填)",
"input": "补充输入(可选)",
"output": "期望输出(必填)"
}
字段说明
instruction
:描述任务目标(如“将以下文本翻译成英文”)input
:补充上下文(可为空,如待翻译的原文)output
:模型应生成的答案
特点
- 任务导向:明确区分指令、输入和输出,适合单轮任务(如翻译、摘要、问答)
- 优势:结构简单,适配性强,适合快速生成标准化数据
- 局限:无法处理多轮对话上下文,扩展性较弱
典型应用
指令微调(Instruction Tuning)
- 单轮文本生成任务(如文案创作、代码生成)
- 模型基准测试(如评估翻译准确率)
2.2 ShareGPT 格式
ShareGPT 最早是一种数据格式标准,由社区设计用于规范多轮对话和工具调用场景的模型训练数据存储方式。其核心目标是通过结构化字段(如 conversations 列表、tools 工具描述)支持复杂交互(如用户提问 → 工具调用 → 结果整合)。
{
"conversations": [
{"from": "human", "value": "用户提问"},
{"from": "gpt", "value": "模型回答"},
{"from": "function_call", "value": "函数调用参数"},
{"from": "observation", "value": "调用结果"}
],
"system": "系统角色设定(可选)",
"tools": "工具描述(可选)"
}
特点
- 多轮对话:支持用户与模型交替对话,保留完整上下文
- 优势:模拟真实交互场景,支持复杂逻辑(如工具调用、多模态处理)
- 局限:数据构建成本高,需人工标注对话流
扩展功能:
- function_call:模型调用外部 API 的指令(如查询天气)
- observation:API 返回结果
- tools:函数工具的定义(参数、描述)
典型应用
- 对话系统训练(如客服机器人)
- 工具增强型模型(如联网搜索、计算器)
- 长文本交互场景(如心理咨询、教育辅导)
2.3 核心差异对比
维度 | Alpaca | ShareGPT |
---|---|---|
数据结构 | 单轮指令-响应对 | 多轮对话链(含用户/模型交替) |
扩展性 | 仅文本生成 | 支持函数调用、工具集成 |
适用场景 | 明确任务型需求(翻译、总结) | 开放域对话、复杂交互任务 |
构建难度 | 低(可批量生成) | 高(需人工标注或模拟对话) |
上下文处理 | 无 | 支持长上下文依赖 |
2.4 选型建议
选择 Alpaca
的场景:
- 需要快速验证模型对特定指令的响应能力
- 数据标注资源有限,需自动化生成训练样本
- 任务目标明确且无需多轮交互(如文本分类)
选择 ShareGPT
的场景:
- 开发对话型 AI(如虚拟助手)
- 需整合外部工具或实时数据(如股票查询)
- 要求模型具备上下文连贯性(如故事续写)
2.5 工具链适配
- Alpaca:适配
llama-factory
的 AlpacaStyleInstructionHandler,支持全参微调与 LoRA - ShareGPT:需使用
SharegptStyleInstructionHandler
,并配置多轮对话掩码
三、开源数据集
很多情况下,如果你只是需要通过微调来提升模型某一方面的能力,在没有特殊的内部数据要求的情况下,是没必要自己去构造数据集的,因为目前互联网上存在着大量的公开且免费使用的数据集,下面就带大家来了解一下,常见的获取公开数据集的途径有哪些,以及对应的使用方法。
平台 | 适合领域 | 数据量级 | 语言侧重 | 特色功能 |
---|---|---|---|---|
HuggingFace | NLP/多模态 | 大 | 英文 | 即装即用 |
Kaggle | 通用型 | 超大 | 多语言 | 竞赛生态 |
Google Dataset Search | 跨平台搜索 | 全域 | 多语言 | 元数据聚合 |
Awesome-public-datasets | 学术研究 | 中 | 英文 | 领域细分 |
OpenDataLab | 中文场景 | 中 | 中文 | 本土化支持 |
ModelScope | 中文AI应用 | 大 | 中文 | 模型-数据协同 |
注意⚠️
大家在使用开源数据集的时候,有一点一定注意,就是数据集的协议。数据使用协议(License),直接影响数据能否合法使用,特别是关注能不能商用。