什么是合成数据?
合成数据指的是人工生成的数据,通常旨在模仿真实世界的数据。这些数据是通过算法创建的,通常使用模型或模拟,而不是从真实世界的来源收集。合成数据在机器学习中已经使用了很长时间。自大型语言模型(LLM)出现以来,越来越多地使用LLM来生成合成数据,并使用合成数据来训练LLM。
资源
这个仓库旨在组织资源,帮助人们(包括我自己)开始构建合成数据集。因此,它只会涵盖一些内容,并且主要关注实用和实际的资源。
教程、指南和教育性博客文章
- 合成数据:使用开源方法节省资金、时间和碳排放:展示了如何使用开源LLM在几个步骤中创建合成数据来训练你的定制模型。
本仓库中的示例
重要技术
重要数据集
TinyStories
TinyStories是一个合成数据集,包含短篇故事,只使用典型3到4岁儿童通常理解的词汇,由GPT-3.5和GPT-4生成。我们展示了TinyStories可以用于训练和评估比最先进模型小得多的语言模型(总参数少于1000万),或者架构更简单的模型(只有一个transformer块),但仍然能够生成流畅一致、多样化、语法几乎完美的多段故事,并展示推理能力。
OpenHermes-2.5
Open Hermes 2.5数据集是Open Hermes 1数据集的延续,规模更大、更加多样化,质量更高的编译,达到了100万个主要是合成生成的指令和对话样本。
Cosmopedia
Cosmopedia是一个由Mixtral-8x7B-Instruct-v0.1生成的合成教科书、博客文章、故事、帖子和WikiHow文章的数据集。该数据集包含超过3000万个文件和250亿个标记,是迄今为止最大的开放合成数据集。
这是对"Textbooks Are All You Need"的复现。更多详情请查看这篇博客文章。
WebSight
WebSight是一个大型合成数据集,包含代表合成生成的英文网站的HTML/CSS代码,每个代码都附带相应的截图。
更多详情请查看这篇博客文章。
synthetic_text_to_sql
gretelai/synthetic_text_to_sql是一个高质量的合成文本到SQL样本的丰富数据集,使用Gretel Navigator设计和生成,以Apache 2.0许可发布。更多详情请查看我们的发布博客文章。
Salesforce/xlam-function-calling-60k
一个包含60,000个生成的函数调用示例的数据集,涵盖21个类别和3,673个API。
库、代码和工具
这个列表并不全面,主要关注于正在积极开发的库或能很好地展示特定方法的库/代码示例。
distilabel
⚗️ distilabel是一个为需要高质量输出、完全数据所有权和整体效率的AI工程师提供合成数据和AI反馈的框架。
这是一个非常灵活的库,正在积极开发和改进中。它支持大量的LLM提供商。它包括许多来自论文的常见合成数据生成技术,如Self-Instruct和EvolInstruct。
llm-swarm
在Slurm集群中管理可扩展的开放LLM推理端点
这个库主要关注使用Slurm集群扩展合成文本生成。这个库被用于生成Cosmopedia。
Domain Specific Dataset Project
这是一个引导创建特定领域数据集以训练模型的项目。目标是创建一套工具,帮助用户与领域专家合作。包括一个用于创建专注于特定领域的合成数据集生成管道的UI工具。
AutoPrompt
一个使用基于意图的提示校准进行提示调优的框架
这个框架旨在帮助你自动生成高质量、详细的提示。它使用一个精炼过程,通过迭代构建一个具有挑战性边缘案例的数据集,并相应地优化提示。这种方法旨在减少提示工程中的手动工作,并降低提示敏感性。
Self-Contrast
Self-Contrast是一种创新方法,提供了一种无需标注的方法来与人类偏好对齐。
这是Starling团队论文"Extensive Self-Contrast Enables Feedback-Free Language Model Alignment"的配套代码。"Nectar"合成数据集用于训练奖励模型,然后通过AI反馈强化学习(RLAIF)来训练大型语言模型。
重要论文
一些关于合成数据生成的重要论文。注意我并不试图添加该主题的所有可能论文,而是专注于那些引入了重要技术或产生了重大影响(特别是"在野外")的论文。我正在这个Hugging Face集合中收集更多的论文。