数据集的概念理解、格式区别、制作和使用
1.数据集是什么
数据集(dataset)是指用来训练、测试、评估机器学习模型的数据。数据集通常包括以下两个部分:
训练集(training set):用于训练模型的样本集合。
测试集(test set):用于评估模型的最终性能。
说明:
本文档中的所有下载的所需资源都可以在网盘下载。
2.训练集的格式类型
Alpaca格式和ShareGPT格式是两种常用于训练对话式AI模型的数据集格式,它们在结构和应用场景上有一些区别。
你也可以阅读Llama-factory/dataset/README.md
了解更多数据集格式的介绍。
2.1 Alpaca 格式:像“做题训练”
背景
Alpaca格式由斯坦福大学团队提出,用于训练指令跟随模型(如Alpaca模型)。其核心是基于指令微调(Instruction Fine-tuning),通过人工构造的指令-输出对,让模型学会根据指令生成符合要求的响应。
数据结构
通常为单轮对话,每条数据包含三个字段:
{ "instruction": "给出三个保持健康的方法。", // 用户指令 "input": "", // 可选,额外输入(可为空) "output": "1. 定期锻炼... 2. 均衡饮食... 3. 充足睡眠..." // 期望的模型输出}
核心思想:给模型出题,让它学会“答题”。
例子:
假设你教小孩数学,每次给他一道题和一个答案,比如:
题目(instruction):计算3+5等于几?
答案(output):8
特点:
单次问答:每次只练一道题,没有上下文。
目标明确:训练模型准确完成“任务”(比如翻译、写诗、回答问题)。
数据可能是人造的:题目和答案可能由人设计,或者机器生成后筛选。
适合场景:
教AI模型学会具体技能,比如“把英文翻译成中文”。
不需要对话,只要输入问题,直接输出答案。
2. ShareGPT 格式:像“聊天记录”
背景
ShareGPT格式源于用户分享的真实对话数据(如用户与ChatGPT的交互记录),强调多轮对话的上下文连贯性,更接近真实的人机交互场景。
数据结构
通常为多轮对话,每条数据包含对话轮次:
[ { "conversations": [ {"role": "human", "content": "如何学习编程?"}, {"role": "gpt", "content": "可以从Python开始..."}, {"role": "human", "content": "推荐一些学习资源?"}, {"role": "gpt", "content": "Codecademy、LeetCode..."} ] }]
核心思想:让模型学会“多轮对话”,像真人聊天一样。
例子:
你和朋友聊天的记录:
你:今天天气怎么样?
朋友:晴天,28度。
你:适合去爬山吗?
朋友:适合,但注意防晒。
特点:
多轮对话:保留完整的聊天记录,AI需要看懂上下文。
角色分明:明确区分“用户说的话”和“AI的回答”。
数据来自真实对话:比如用户和ChatGPT的真实聊天记录。
适合场景:
训练聊天机器人,让对话更自然、连贯。
需要AI记住之前的对话内容(比如用户说“我刚刚提到的电影是什么?”)。
2.3 对比总结
通俗例子理解
Alpaca格式:
你问AI:“写一首关于春天的诗。” → AI直接输出一首诗。ShareGPT格式:
你问AI:“我想去旅游,推荐个地方?”
AI回答:“云南大理不错。”
你又问:“有哪些必去景点?”
AI回答:“洱海、古城、苍山……”
怎么选这两种数据?
如果你想训练AI“完成任务”(比如写代码、回答问题),用Alpaca。
如果你想训练AI“和人聊天”,用ShareGPT。
简单来说:
Alpaca = 做题训练,直奔答案。
ShareGPT = 模拟聊天,有来有回。
2.4 数据转换与使用
从ShareGPT到Alpaca:
可将多轮对话拆分为单轮指令-响应对(需注意上下文丢失问题)。从Alpaca到对话格式:
将instruction
+input
合并为用户输入,output
作为模型响应。
2.5 实际应用建议
混合使用:结合Alpaca的指令数据和ShareGPT的对话数据,可同时提升模型的指令理解能力和多轮交互能力。
数据清洗:去除噪声、重复或低质量样本。
格式统一:根据模型需求统一为单轮或多轮格式(如LLaMA偏好多轮对话格式)。
3. 数据集的获取
数据集是训练AI模型的基础,不同用途的数据集来源也各不相同:
3.1 通用数据集的来源
公开的现成数据集
特点:免费或开源,可直接下载使用。
例子:
Hugging Face Hub:AI界的“应用商店”,有数万个开源数据集(如Alpaca、ShareGPT的官方数据)。
Kaggle:数据科学社区,提供各种领域的数据(如用户评论、新闻文章)。
政府/机构开放数据:比如国家统计局、世界银行公开的数据。
2. 用户生成内容(UGC)
特点:来自真实用户的互动记录,贴近实际需求。
例子:
聊天记录:用户与AI助手(如ChatGPT)的对话(需脱敏处理)。
社交媒体:知乎的问答和讨论。
评论与论坛:贴吧帖子。
3. 人工构造数据
特点:人工设计问题和答案,针对性更强。
例子:
任务指令:比如让标注员写“翻译句子”的指令和答案。
模板生成:用固定模板批量生成数据(如“写一首关于{季节}的诗”)。
4. 网络爬取
特点:用程序自动抓取网页内容,数据量大但需清洗。
例子:
各种百科:抓取词条内容作为知识库。
问答网站:抓取问题和回答。
新闻网站:抓取文章用于训练文本生成模型。
5. 合成数据(AI生成)
特点:用大模型自动生成数据,成本低但需筛选。
例子:
Self-Instruct:让AI自己生成指令和答案(Alpaca数据集的核心方法)。
人工数据增强:对现有数据改写、扩展,增加多样性。
3.2 对话式AI数据集的特殊来源
针对Alpaca、ShareGPT这类对话模型,数据来源更聚焦:
指令-回答对(Alpaca风格)
来源:
人工设计:团队编写任务指令(如“写邮件”“解释概念”)。
模型生成:用LLM等生成指令和答案,再人工筛选。
典型例子:斯坦福的Alpaca数据集,包含5.2万条指令-回答对。
真实多轮对话(ShareGPT风格)
来源:
用户分享:用户自愿上传与AI的聊天记录(需匿名化)。
平台收集:如ChatGPT的用户对话(需符合隐私政策)。
典型例子:ShareGPT网站上的公开对话记录。
3.3 数据来源的注意事项
合法性:
避免使用未经授权的数据(如盗版书籍、隐私对话)。
遵守平台规则(如某些站点禁止大规模爬取用户内容)。
数据质量:
清洗噪声:删除乱码、广告、重复内容。
过滤低质量内容:如拼写错误、无意义回答。
多样性:
覆盖不同场景(如问答、创作、推理)。
平衡语言风格(正式、口语化、方言等)。
3.4 小白如何获取数据集?
直接下载现成的:
去Hugging Face搜索“alpaca”或“sharegpt”格式的数据。
示例链接:Alpaca数据集、ShareGPT数据集。
自己生成:
用大模型生成指令-回答对(模仿Alpaca格式)。
记录自己与AI的对话,整理成ShareGPT格式。
混合使用:
结合公开数据和自己构造的数据,提升模型能力。
3.5 一句话总结
数据集的来源 = 公开资源 + 用户生成内容 + 人工构造 + 网络爬取 + AI合成。想训练对话AI,就用现成的Alpaca/ShareGPT数据,或自己用LLM生成!
4. 数据集制作示例
4.1 下载使用现成数据集
4.2 使用LLM生成数据集
QA对直接转换
LLM生成的QA对
easy-dataset
使用ollama下载数据集处理专用模型,如qwen2.5-7b, 然后用easy-dataset生成数据集。
使用qwen2.5-7b的好处是,没有思考过程,相对较快。
ollama run qwen2.5
4.3 自己构造数据集
纯手工自行编辑。