👍 什么是好的数据集?
数据是大语言模型开发中最有价值的资产。虽然无法像评估模型那样直接评估数据集,但高质量的数据集具有以下特征:
- 准确性:样本应当事实正确、对用户有帮助且书写良好。回答还应与相应的指令相关。
- 多样性:你需要涵盖尽可能多的用例,以确保正确执行指令并给出相关回答。这需要以代表性的方式抽样广泛的主题、上下文、长度、写作风格等。
- 复杂性:回答应当非琐碎,且a/ 能代表你期望模型处理的任务,或b/ 包含涉及多步推理、规划等的复杂任务。
对于数学问题,使用Python解释器可以轻松衡量准确性,但对于开放式、主观性问题则几乎不可能。另一方面,按主题对数据集进行聚类是衡量多样性的好方法。最后,可以使用其他大语言模型作为评判来评估复杂性。
📅 开放式监督微调数据集
一旦模型在下一个标记预测任务上完成预训练,就会使用监督微调将其转变为能够回答问题和完成任务的助手。这些数据集包含指令和输出对,用于训练大语言模型超越其预训练目标。这里列出的所有数据集都应该在宽松的许可下(Apache 2.0、MIT、cc-by-4.0等)。
通用目的
通用目的数据集的目标是通过让模型接触广泛的高质量数据,将基础模型转变为多功能且能力强大的助手。这些数据集通常包括真实世界和合成数据的多样化混合,常常使用GPT-4等模型生成。
数据集 | 数量 | 作者 | 日期 | 备注 |
---|---|---|---|---|
Buzz | 3120万 | Alignment Lab AI | 2024年5月 | 435个数据集的大型集合,包含数据增强、去重和其他技术。 |
WebInstructSub | 239万 | Yue等人 | 2024年5月 | 通过从Common Crawl检索文档、提取问答对并精炼而创建的指令。参见MAmmoTH2论文(这是其子集)。 |
The-Tome | 175万 | Arcee AI | 2024年7月 | 重新排序和过滤的数据集集合,专注于指令遵循。参见我的10万条子集。 |
Hercules v4.5 | 172万 | Sebastian Gabarain | 2024年4月 | 大规模通用数据集,包含数学、代码、角色扮演等。参见v4了解数据集列表。 |
Dolphin-2.9 | 139万 | Cognitive Computations | 2023年4月 | Dolphin模型使用的大规模通用数据集。 |
WildChat-1M | 104万 | Zhao等人 | 2023年5月 | 人类用户与GPT-3.5/4之间的真实对话,包括元数据。参见WildChat论文。 |
OpenHermes-2.5 | 100万 | Teknium | 2023年11月 | OpenHermes模型使用的另一个大规模数据集。 |
Infinity-Instruct | 66万 | BAAI | 2024年6月 | 基于精选和演化指令的样本集。 |
SlimOrca | 51.8万 | Lian等人 | 2023年9月 | OpenOrca的精选子集,使用GPT-4作为评判以删除错误答案。 |
Tulu V2 Mix | 32.6万 | Ivison等人 | 2023年11月 | 高质量数据集的混合。参见Tulu 2论文。 |
UltraInteract SFT | 28.9万 | Yuan等人 | 2024年4月 | 专注于数学、编码和逻辑任务,提供逐步答案。参见Eurus论文。 |
NeurIPS-LLM-data | 20.4万 | Jindal等人 | 2023年11月 | NeurIPS LLM效率挑战赛的获胜者,采用有趣的数据准备策略。 |
UltraChat 200k | 20万 | Tunstall等人,Ding等人 | 2023年10月 | UItraChat数据集的高度过滤版本,包含140万对由ChatGPT生成的对话。 |
WizardLM_evol_instruct_V2 | 14.3万 | Xu等人 | 2023年6月 | 最新版本的Evol-Instruct应用于Alpaca和ShareGPT数据。参见WizardLM论文。 |
Synthia-v1.3 | 11.9万 | Migel Tissera | 2023年11月 | 使用GPT-4生成的高质量合成数据。 |
oasst1 | 8.44万 | Köpf等人 | 2023年3月 | 人工生成的35种不同语言的助手式对话语料库。参见OASST1论文和oasst2。 |
WizardLM_evol_instruct_70k | 7万 | Xu等人 | 2023年4月 | Evol-Instruct应用于Alpaca和ShareGPT数据。参见WizardLM论文。 |
airoboros-3.2 | 5.87万 | Jon Durbin | 2023年12月 | 高质量未经审查的数据集。 |
ShareGPT_Vicuna_unfiltered | 5.3万 | anon823 1489123 | 2023年3月 | ShareGPT数据集的过滤版本,包含用户与ChatGPT之间的真实对话。 |
lmsys-chat-1m-smortmodelsonly | 4.58万 | Nebulous, Zheng等人 | 2023年9月 | lmsys-chat-1m的过滤版本,包含来自GPT-4、GPT-3.5-turbo、Claude-2、Claude-1和Claude-instant-1的响应。 |
Open-Platypus | 24.9k | Lee等人 | 2023年9月 | 使用句子转换器去重的数据集集合(包含一个NC数据集)。详见Platypus论文。 |
databricks-dolly-15k | 15k | Conover等人 | 2023年5月 | 由Databricks员工生成,包含八个不同指令类别的提示/响应对,其中包括InstructGPT论文中概述的七个类别。 |
数学与逻辑
大语言模型在数学推理和形式逻辑方面常常表现不佳,这促使了专门数据集的创建。这些数据集不仅涵盖纯数学,还包括广泛的需要系统思考和逐步推理的问题,最终使大语言模型能够应对涉及逻辑推理和定量分析的复杂现实问题。
数据集 | 数量 | 作者 | 日期 | 备注 |
---|---|---|---|---|
OpenMathInstruct-1 | 575万 | Toshniwal等人 | 2024年2月 | 来自GSM8K和MATH的问题,解答由Mixtral-8x7B生成 |
MetaMathQA | 39.5万 | Yu等人 | 2023年12月 | 通过多角度重写引导数学问题。参见MetaMath论文。 |
MathInstruct | 26.2万 | Yue等人 | 2023年9月 | 汇编自13个数学推理数据集,其中6个为新整理,重点关注思维链和思维程序。 |
Orca-Math | 20万 | Mitra等人 | 2024年2月 | 使用GPT4-Turbo生成的小学数学应用题。参见Orca-Math论文。 |
代码
对于缺乏专门预训练的大语言模型来说,代码是另一个具有挑战性的领域。代码数据集包含多种编程语言示例,用于微调大语言模型并提升它们理解、生成和分析代码的能力,使其能够作为有效的编程助手。
数据集 | 数量 | 作者 | 日期 | 备注 |
---|---|---|---|---|
CodeFeedback-Filtered-Instruction | 15.7万 | Zheng等人 | 2024年2月 | Magicoder-OSS-Instruct、ShareGPT(Python)、Magicoder-Evol-Instruct和Evol-Instruct-Code的过滤版本。 |
Tested-143k-Python-Alpaca | 14.3万 | Vezora | 2024年3月 | 经过自动测试验证的高质量Python代码集合。 |
glaive-code-assistant | 13.6万 | Glaive.ai | 2023年9月 | 包含问题和解决方案的合成数据,约60%为Python样本。另见v2版本。 |
Magicoder-Evol-Instruct-110K | 11万 | Wei等人 | 2023年11月 | evol-codealpaca-v1的去污染版本。去污染方式与StarCoder相同(bigcode去污染过程)。参见Magicoder论文。 |
dolphin-coder | 10.9万 | Eric Hartford | 2023年11月 | 由leetcode-rosetta转化而来的数据集。 |
synthetic_tex_to_sql | 10万 | Gretel.ai | 2024年4月 | 合成文本到SQL样本(约2300万个标记),涵盖多个领域。 |
sql-create-context | 7.86万 | b-mc2 | 2023年4月 | WikiSQL和Spider数据集的清理和增强版本。 |
Magicoder-OSS-Instruct-75K | 7.5万 | Wei等人 | 2023年11月 | 由gpt-3.5-turbo-1106 生成的OSS-Instruct数据集。参见Magicoder论文。 |
Code-Feedback | 6.64万 | Zheng等人 | 2024年2月 | 多样化的类Code Interpreter数据集,包含多轮对话以及交错的文本和代码响应。参见OpenCodeInterpreter论文。 |
Open-Critic-GPT | 5.51万 | Vezora | 2024年7月 | 使用本地模型在多种编程语言中创建、引入和识别代码中的错误。 |
self-oss-instruct-sc2-exec-filter-50k | 5.07万 | Lozhkov等人 | 2024年4月 | 通过三个步骤创建:从TheStack v1获取种子函数,使用StarCoder2进行自我指导,以及自我验证。参见博客文章。 |
对话与角色扮演
许多数据集专注于指令和输出的配对,但聊天模型通常用于对话场景。对话和角色扮演数据集让大语言模型接触到真实对话的模式、细微差别和上下文相关性,使它们能够生成更自然、更有吸引力的对话。
数据集 | 数量 | 作者 | 日期 | 备注 |
---|---|---|---|---|
Bluemoon | 29万 | Squish42 | 2023年6月 | 由第三方清理和抓取的Blue Moon角色扮演论坛帖子。 |
PIPPA | 1.68万 | Gosling等人,kingbri | 2023年8月 | Pygmalion的PIPPA去重版本,采用ShareGPT格式。 |
Capybara | 1.6万 | LDJnr | 2023年12月 | 重点关注广泛领域的信息多样性,包含多轮对话。 |
RPGPT_PublicDomain-alpaca | 4260 | practical dreamer | 2023年5月 | 使用build-a-dataset生成的公共领域角色对话角色扮演格式合成数据集 |
Pure-Dove | 3860 | LDJnr | 2023年9月 | 经过高度筛选的GPT-4与真人之间的多轮对话 |
Opus Samantha | 1850 | macadelicc | 2024年4月 | 与Claude 3 Opus的多轮对话。 |
LimaRP-augmented | 804 | lemonilia, grimulkan | 2024年1月 | LimaRP的增强和清理版本,由人类角色扮演对话组成。 |
代理和函数调用
函数调用允许大型语言模型(LLM)执行预定义的函数,其参数由用户提示推断,而不是生成标准文本响应。这使LLM能够无缝集成外部系统,执行复杂操作,并提供更准确和上下文相关的响应。
数据集 | 数量 | 作者 | 日期 | 备注 |
---|---|---|---|---|
glaive-function-calling-v2 | 11.3万 | Sahil Chaudhary | 2023年9月 | 高质量数据集,包含不同语言的指令和答案对。 参见Locutusque/function-calling-chatml,该版本不含对话标签。 |
xlam-function-calling-60k | 6万 | Salesforce | 2024年6月 | 使用专为函数调用应用设计的数据生成管道创建的可验证样本 |
Agent-FLAN | 3.44万 | internlm | 2024年3月 | AgentInstruct、ToolBench和ShareGPT数据集的混合。 |
⚖️ 偏好对齐
开发中。
🔧 工具
要创建高质量数据集,重点应放在仔细筛选相关、准确和信息丰富的多样化示例上,而不是简单地最大化数据集规模。
首先从各种来源(开源或非开源)聚合可用数据,并应用数据去重和质量过滤等处理。如果初始数据集较小或不足,可考虑合成生成额外数据,以匹配其质量和风格。通过评估模型性能、识别差距并收集或生成数据来解决这些不足,反复探索和优化数据集。
本节列出的工具可能属于多个类别,但为清晰起见只出现在一个类别中。
数据去重和净化
- 精确去重:通过数据标准化(如将文本转换为小写)、哈希生成(如为每个样本创建MD5或SHA-256哈希)和重复删除来移除相同的样本。
- 模糊去重
- MinHash:使用哈希、排序和Jaccard相似度的模糊去重(首选技术)。
- 布隆过滤器:使用哈希和固定大小向量的模糊去重。
- 数据净化:使用精确或模糊过滤移除与测试集过于相似的样本。
数据质量评估
- 基于规则的过滤:根据不想要的词列表(如拒绝和"作为AI助手")删除样本(示例)。
- Argilla:开源数据管理平台,允许以协作方式过滤和注释数据集。
- LLM-as-a-judge:提供使用Mixtral-7x8B评估输出的代码的Colab笔记本。
- Data Prep Kit:用于代码和语言数据准备的框架,包含Python、Ray和Spark模块,适用于从笔记本电脑到数据中心的各种规模。
- DataTrove:HuggingFace大规模数据处理库,用于创建Fineweb。
数据生成
SFT数据集
- Distilabel:通用框架,可使用UltraFeedback和DEITA等技术生成和增强数据(SFT、DPO)。
- Auto Data:轻量级库,用于使用API模型自动生成微调数据集。
- Bonito:无需GPT即可为您的数据生成合成指令调优数据集的库(另请参阅AutoBonito)。
- Augmentoolkit:使用开源和闭源模型将原始文本转换为数据集的框架。
- Magpie:通过提示对齐的LLM,高效生成高质量合成数据的管道。
- Genstruct:指令生成模型,旨在从原始数据生成有效指令。
- DataDreamer:用于提示和合成数据生成的Python库。
预训练数据集
- llm-swarm:使用本地LLM或Hugging Face Hub上的推理端点生成用于预训练或微调的合成数据集。
- Cosmopedia:Hugging Face用于生成Cosmopedia数据集的代码。
- textbook_quality:生成教科书质量数据的存储库,模仿Microsoft的Phi模型方法。
数据探索
- sentence-transformers:用于处理流行语言嵌入模型的Python模块。
- Lilac:为LLM策划更好数据的工具,被NousResearch、databricks、cohere、Alignment Lab AI使用。它还可以应用过滤器。
- Nomic Atlas:与指令数据交互以发现洞察并存储嵌入。
- text-clustering:Huggingface用于聚类文本数据的框架。
- BunkaTopics:数据清理和主题建模可视化。
- Autolabel:使用流行的语言模型自动标记数据。
数据抓取
- Trafilatura:用于在网上收集文本和元数据的Python和命令行工具。用于创建RefinedWeb。
- Marker:快速将PDF转换为markdown文本。
致谢
特别感谢geronimi73、Bytes-Explorer和euclaise的PR贡献。
参考文献
如果有任何数据集未得到适当引用,请告知我。
- Wei-Lin Chiang等,"Vicuna:一个令GPT-4印象深刻的开源聊天机器人,达到90%*ChatGPT质量",2023年。
- Yihan Cao等,"指令挖掘:当数据挖掘遇上大型语言模型微调",2023年。
- Subhabrata Mukherjee等,"Orca:从GPT-4复杂解释轨迹中渐进学习",2023年。
- Chunting Zhou等,"LIMA:对齐中少即是多",2023年。
- Suriya Gunasekar等,"教科书就是你所需要的全部",2023年。
- Lichang Chen等,"AlpaGasus:用更少的数据训练更好的Alpaca",2024年。
- Zheng Cai等,"InternLM2技术报告",2024年。
- Lifan Yuan等,"通过偏好树推进LLM推理通才",2024年。
- Wei Liu等,"什么是对齐的好数据?指令调优中自动数据选择的综合研究",2024年。
- Xingyao Wang等,"MINT:在多轮交互中评估LLM使用工具和语言反馈的能力",2024年。