AI2发布全新的大语言模型预训练数据集:包含3万亿tokens的大规模文本数据集AI2 Dolma,开源免费商用数据集~
Allen Institute for AI简称AI2,是2014年成立的一个非营利性研究组织,其创办者是之前的微软联合创始人Paul G. Allen。目前该组织主导了几个非常大的项目,希望借助AI来推动科学、医学等领域的进步。此前也开源过大模型OLMo等。这次是该组织第一份发布AI数据集相关的项目,名称为Dolma,是一个包含了3万亿tokens的数据集,目前第一版本仅仅包含英文。

除了这个数据集外,AI2官方发布的数据集处理也十分详细,本文也会总结一下,如何针对大规模文本数据进行预处理使其适合做大模型的无监督预训练。大家可以参考。
Dolma数据集简介
Dolma是一个包含3万亿tokens的数据集,该数据集包含网页内容、学术出版物、代码、书籍、百科全书等。
该数据大小约5TB,包含3万亿tokens内容,具体统计结果如下:
来源 (Source) | 类型 (Type) | Gzip 文件大小 (GB) | 文档数量 (百万) | GPT-NeoX tokens数 |
---|---|---|---|---|
CommonCrawl | 网页 | 4,197 | 4,600 | 2.415万亿 |
C4 | 网页 | 302 | 364 | 1750亿 |
peS2o | 学术 | 150 | 38.8 | 570亿 |
The Stack | 代码 | 675 | 236 | 4300亿 |
Project Gutenberg | 书籍 | 6.6 | 0.052 | 48亿 |
Wikipedia | 百科 | 5.8 | 6.1 | 36亿 |
总计 | 5,334 | 5,245 | 3.084万亿 |
Dolma数据是如何收集并清洗的?
对大规模的文档进行清洗变成高质量数据集并不容易。AI2将原始数据分成2类,一种是来源明确的数据集,这种数据集有明确的许可证,可以清楚地知道如何处理数据集。另一种是来源不清楚的,则可能需要做一些不同的处理。

在实际处理中,2种方式都是需要的,而且可能会多次迭代使用。上图是关于网络数据集的一般流程(pipeline)。官方总结Dolma大模型训练数据集的大致处理流程如下:
仅英文:到目前为止,大规模的语言建模研究主要集中在英文上;对于OLMo的第一个版本,AI2将数据限制为英文文本,以利用已经有的工作来提高效率。实践中:AI2使用fasttext的语言识别模型来按语言标记内容。AI2使用一个相当宽松的阈值,保留那些有超过50%可能性是英文的文档。保持较低的阈值可以帮助减少语言检测器对被边缘化群体说的英语方言的固有偏见。官方说希望在完成初始里程碑后将OLMo扩展到其他语言。
网络数据。大多数开放语言模型(如Llama 1/2、Falcon、T5、MPT)都是基于预处理的网络文本的一个重要部分进行训练的。尽管这些语料库的局限性和偏见有很好的记录,但网络数据对许多(封闭的)语言模型努力都是核心的。因此,AI2认为有必要在网络文本上进行训练,以确保OLMo代表了这些其他模型。实践中:DOLMo的数据集来源于2020年5月至2023年6月之间收集的24个Common Crawl快照。使用CCNet流水线获取每个网页的主要内容的纯文本形式。此外,还使用C4数据集,该数据集是从2019年4月收集的一个Common Crawl快照中获得的。
质量过滤:网络爬取的数据中有很大一部分不适合语言模型训练(例如,格式不正确的文本、自动生成的网站文本)。这些通常通过“质量”过滤方法来移除,这些方法分为两大类:基于模型和基于规则的技术。例如,可以使用一元语言模型或线性分类器来选择大致类似于维基百科页面或书籍的内容。然而,这些基于模型的方法通常有难以检测的偏见。按照Gopher和Falcon的做法,Dolma选择使用简单的启发式方法和正则表达式来过滤段落。这些过滤器的效果是去除从HTML转换为纯文本时产生的错误。实践中:Dolma实施了所有Gopher段落过滤规则,以及过滤所有不以标点符号结束的段落,如C4中推荐的那样。
去重:最近的研究表明,数据去重可以使语言模型更有效地训练。遵循这一原则,Dolma在每个来源中去重数据。实践中:使用两阶段去重策略。首先,在common crawl数据中,根据URL去重页面,只保留每个的一份副本。然后,在单个文档中删除重复的段落。两个阶段都使用Bloom filter数据结构。
风险缓解:从互联网上采样的数据可能包含有害或有毒的内容,或泄露互联网用户的个人信息。准确检测这些类别仍然具有挑战性,特别是在需要处理大量数据的情况下:即使是非常快的方法,每个文档处理时间少于一秒,也可能需要几周的时间来运行一个数据集。Dolma的方法依赖于逻辑分类器(内容标记)和正则表达式(PII检测)的组合。实践中:检测并掩盖电子邮件地址、电话号码和IP地址。删除被fasttext分类器检测到的有害或淫秽内容,这些分类器是在Jigsaw数据集上训练的。这里Dolma数据集选择了一个非常高的阈值(>60%可能是有害或淫秽内容的可能性),以避免意外地删除非正式内容。风险缓解的最佳实践是一个持续和活跃的研究领域。AI2遵循了数据处理的最佳实践,并通过发布策略(如下所述)采取了进一步的措施。我们期望这些实践的社区规范将继续发展。
足够的代码:对于语言模型训练,通常的做法是增加纯文本数据集。例如,Gopher训练了大约5%的代码;MPT是10%。添加代码允许模型根据用户请求生成代码;此外,研究人员已经建议代码混合可以在推理任务上获得更好的性能。Dolma从The Stack中获取Dolma的代码子集,这是一个由许可许可的GitHub仓库组成的集合。实践中:Dolma数据集应用了从Gopher、RedPajama和StarCoder数据集派生的启发式方法。总体上,它们旨在删除主要是数据或通过模板生成的文件。例如,删除带有json或csv扩展名的文件,删除模板文件前言,过滤有过长行的文件,或主要包含数字的文件,还删除上述描述的代码秘密或个人信息。
多样化的来源:像GPT-Neo或Pythia这样的模型(两者都在The Pile上训练)已经显示了在多样化的文档集上训练的重要性,如技术文档或生物医学文章。对于Dolma,AI2利用Semantic Scholar的语料库,包括来自peS2o的论文,这是一个包含38M可许可的科学手稿的子集。实践中:关于如何处理peS2o的更多细节可以在其主页上找到。对于维基百科,Dolma使用英文和简化英文子集。对于古腾堡计划中的书籍,筛选主要是英文的书籍。
去污染:以前的语言模型已经使用了各种技术从其训练语料库中去除评估数据(例如TNLG、GPT-3、GPT-4),因为它可能导致报告的模型性能被人为地提高。因此,在准备Dolma时,AI2删除了训练文档中包含评估数据的内容。实践中:再次使用Bloom过滤器检查评估数据集中是否有任何超过13个令牌的段落出现在训练数据中。我们的去污染步骤通过字符删除了少于0.001%的训练数据,并影响了少于0.02%的文档。
代码数据集比较特殊,AI2给出了一个更加详细的流程示意图:

当前主流模型的数据处理披露情况总结
官方一张图说明了当前主流大模型使用的数据集处理过程的披露情况,非常简单明确:
模型 | Tokens数量 | 是否披露数据集来源? | PII ID + filtering method | Toxicity ID filtering method | Lang ID + filtering method | Quality filtering method | Dedup method | Decontam method |
---|---|---|---|---|---|---|---|---|
LLaMA 2 (Jul 2023) | 2万亿 | ~ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
PaLM 2 (May 2023) | ❌ | ~ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
GPT-4 (Mar 2023) | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
Claude* (Mar 2023) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
LLaMA (Feb 2023) | 1.4万亿 | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
GLM (Oct 2022) | 4000亿 | ~ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
OPT (May 2022) | 1800亿 | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
PaLM (Apr 2022) | 7800亿 | ~ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
Gopher (Dec 2021) | 3000亿 | ~ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Jurassic-1 (Aug 2021) | 3000亿 | ~ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
GPT-3 (May 2020) | 4000亿 | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
上图列举了当前这些主流模型使用的数据集的披露情况,其中✅表示完全披露,❌表示没有报告披露,而“~”则表示有描述,但是没有明确来源。
上面涉及到的数据处理解释如下:
PII ID+过滤:“个人身份信息检测”(PII detection)。PII 是“Personal Identifiable Information”的缩写,指的是可以用来识别个人身份的信息,如姓名、电话号码、电子邮件地址、身份证号等。
Toxicity ID过滤:有毒内容过滤。
Lang ID 过滤:语言过滤
Quality过滤:数据质量过滤
Dedup方法:去重操作
Decontam方法:去污染,主要是从训练数据中去除包含测试数据的工作。
可以看到,各大模型背后的数据处理方法披露的范围差异很大。同时,也缺少足够的透明度。而本次AI2的Dolma数据集则详细披露了下面的所有步骤内容。
Dolma与当前其它开源数据的对比
对比结果如下:
数据集 | 基于该数据集训练的模型 | Tokens数量 | 来源 | 开源协议 | PII Filter | Toxicity Filter | Language | Quality Filtering | Dedup | Decontam |
---|---|---|---|---|---|---|---|---|---|---|
OSCAR (Jul 2019) | BLOOM (via ROOTS) | 1.08B | Common Crawl | Varies by data subset | 0 | O | Multilingual (152 langs) | 0 | 0 | O |
C4 (Oct 2019) | T5, FLAN-T5 | 156B | Common Crawl | ODC-BY | ❌ | ❌ | English | ❌ | ✅ | ❌ |
The Pile (Dec 2020) | GPT-1, GPT-NeoX, Pythia | 300B | 22 datasets e.g. Common Crawl, scientific text, books, code, Wikipedia, news | Varies by data subset | ❌ | ✅ | English | ✅ | ❌ | ❌ |
ROOTS (Mar 2023) | BLOOM | 341B | 517 datasets e.g. Github, news, books, scientific text, Wikipedia | Varies by data subset | ❌ | ❌ | Multilingual (59 langs) | ✅ | ✅ | ✅ |
RedPajama (Apr 2023) | LLaMa reproduction | 1.2T | Common Crawl, C4, Github, Arxiv, Books, Wikipedia, StackExchange | Varies by data subset | ✅ | ✅ | English | ✅ | ✅ | ❌ |
RefinedWeb (Jun 2023) | Falcon | 600B | Common Crawl | ODC-By 1.0 | ❌ | ✅ | English | ✅ | ✅ | ❌ |
Dolma | OLMo (Ongoing) | 3.08T | Common Crawl, C4, peS2o, Gutenberg, Github, Wikipedia + Wikibooks | ImpACT MR | ✅ | ✅ | English | ✅ | ✅ | ✅ |
可以看到,从开放性角度来说,Dolma是最开放的,所有环节都有披露,而且也是包含tokens最多的数据集。开源协议也很友好,支持免费商用~
Dolma的相关资源
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
