大规模的高质量语料是训练大语言模型的关键“养料”。这些语料提供了世界性的知识体系,能够提升语言模型的理解能力和生成质量,同时也能够支持多样化的应用场景。事实上,高质量的文本对于大语言模型的训练和能力表现具有非常重要的影响。一些学者甚至认为:“GPT、PaLM等模型的领先优势在很大程度上源于它们使用的超大规模且高质量的专有数据。”(Touvronetal,2023)
阿联酋阿布扎比技术创新研究所(TechnologyInnovationInstitute,TII)精心构建了一个用于大模型预训练的数据集——RefinedWeb。这个数据集是通过对CommonCrawl(CC)网页数据进行细致且深入的清洗和过滤得来的。令人惊讶的是,LLM仅使用经过精细处理的网页数据,就能达到甚至超越使用专有数据集的模型效果。RefinedWeb的全量数据规模达到了5TTokens,其中,已经向公众开源的数据规模则达到了600BTokens。
依据Penedoetal.(2023)的研究,如下图所示,即使只使用经过严密清洗和过滤的网页数据,模型的效果也能与使用多种专有数据的混合方案相媲美。另外,RefinedWeb数据集已成功训练出了Falcon-7B、40B和180B等模型。值得一提的是,目前Falcon-180B在Huggingface开源模型排行榜OpenLLMLeaderboard上名列前茅。同时,Shenetal.(2023)分析中指出,RefinedWeb数据集的质量优于RedPajama-1T和SlimPajama。
虽然CC网页数据的规模达到PB级,但其质量却相对较低,必须经过深度的清洗和过滤才能满足模型训练的需要。RefinedWeb的清洗过程包括以下几个步骤:
经过深度清洗后,CC文本的淘汰率接近90%。尽管如此,TII团队仍然从近180TB的CC数据集中清洗出了大约5TTokens的数据,并向公众开源了其中的600BTokens数据。
RedPajama-1T是由Together开源社区发起的项目,它的目标是复现MetaAI的LLaMA预训练,以推动大语言模型(LLM)开源社区的发展。
RedPajama-1T数据集包含了1.2TTokens的英文数据,未经压缩的数据大小约为5TB,而经过压缩后的下载大小约为3TB。
RedPajama-1T数据集的收集方式参照了LLaMA论文公开的思路,可从HuggingFace官网下载。
RedPajama-1T数据集的清洗过程相对简单,主要的去重操作仅限于子集或文档内部。因此,这个数据集的去重并不彻底,在子集之间存在明显重复文本(Shenetal,2023)。
SlimPajama数据集是由Cerebras基于RedPajama-1T数据集通过深度去重得到的英文数据集。该团队通过过滤低质量和重复性文本,从RedPajama-1T数据集中过滤掉了49.6%的Tokens,从而将数据集规模从1210BTokens缩减为了627BTokens。实验结果表明,使用SlimPajama训练的模型性能优于使用RedPajama-1T数据集训练的模型。
为了提升数据质量,Cerebras开发了一个包含精确和模糊算法的全量去重框架,用于产生SlimPajama数据集。处理流程包括以下两个步骤:
为了确保数据的质量,DeepMind对MassiveText数据集进行了一系列的处理,包括:
ThePile是由EleutherAI社区构建的大规模英文数据集,其规模达到825GB,包含约1.4亿份文档,平均每个文档大小为5.9KB(Gaoetal,2020)。这个数据集的优势在于其广泛的数据覆盖范围和详细的分类,由22个不同的高质量子集组成。
ThePile数据集被分为五个主要类别:学术材料、网页、书籍、对话和代码,并被进一步细分为22个子集。以下是其中的一些主要子集:
各个子集在构建过程中采用了“分治”思想,根据数据特征定制清洗规则。
C4(ColossalCleanCrawledCorpus)是Google提出的一个大规模英文语料库。这个数据集源自CommonCrawl,包含了约3.65亿份文档(156BTokens)(Raffeletal,2020)。Google使用该数据集来训练T5和SwitchTransformer模型(Dodgeetal,2021)。
在构建C4数据集的过程中,研究者们制定了一系列启发式的数据清洗规则。
尽管如此,目前仍有一些规模超过100GB的中文数据集已经开源,包括MNBVC、SkyPile-150B、Wanjuan1.0、WuDao和CLUECorpus2020。这些数据集的存在为中文LLM训练提供了资源。
MNBVC数据集涵盖了各种形式的纯文本中文数据,包括新闻、作文、小说、书籍、杂志、论文、台词、帖子、Wiki、古诗、歌词、商品介绍、笑话、糗事、聊天记录等。所有的数据均收集自互联网。
MNBVC数据集提供的文档内容是经过初步清洗的版本,整体来说,数据质量属于中等水平。在数据集中,存在大量的乱码、低质量文本和重复性文本。这些问题会影响LLM训练效果。因此在使用之前需要对数据进行精细清洗。以下是MNBVC数据集的主要子集:
新闻:
知乎问答(仅包含最高赞1个回答):
外交部问答:
公司财报:
中文Wiki:
法律判决书:
SkyPile-150B是昆仑万维专门为LLM预训练任务设计的中文数据集,数据源自可公开访问的中文网页。为了保证数据质量,数据集经过了初步的清洗处理,同时使用了FastText和BERT等工具来过滤低质量的文本。SkyPile-150B包含1.66亿个中文网页,每个网页平均包含1,000多个汉字,总的数据规模达到了592GB(150BTokens)。
然而,需要注意的是,Wanjuan1.0与MNBVC有很多相同的主要子集,因此两者在内容上存在较大的重叠。使用前需要在数据集之间进行彻底去重。
WuDaoCorpora是由北京智源人工智能研究院(智源研究院)构建的复合数据集,由文本、对话、图文对三部分组成。其中,可申请使用的文本数据规模达到了200GB。
在构建WuDaoCorpora数据集的过程中,该团队采用了20多种规则,从100TB的原始网页数据中清洗出了最终的数据集。此外,该数据集包含了教育、科技等50+个行业的数据标签,这使得它能够支持多领域预训练模型的训练。
CLUE开源社区采用自定义的清洗方法从2019年7月至12月的CommonCrawl(CC)原始数据中提取出了100GB的中文语料。该数据集已经通过了CLUEOrganization团队的初步验证,以确认其质量和可用性。该数据集已被成功用于从零开始训练Bert-base模型。训练后的模型展示了与使用同类高质量数据集训练得到的模型相当的中文处理能力。
然而,需要注意的是,由于清洗过程的力度不够,CLUECorpus2020中仍然存在一些低质量和不健康的文本。以下列出了一些需要进一步改进和完善的地方:
目前,已有多个开源的多语种训练数据集可供研究者使用。其中包括CC100(由Conneau等人于2019年发布)、OSCAR(由Suárez等人于2019年发布)、ROOTS(由Laurenon等人于2022年发布)、RedPajama-V2等。
CC100是一个包含100种语言的开源数据集,总规模达到了2.5TB。这份数据集是由MetaAI团队使用CC-Net框架清洗2018年1月-2018年12月的CCSnapshot得来。在CC100的数据格式中,每个文件都包含由双换行符分隔的文档以及同一文档中由换行符分隔的段落。这样的设计旨在方便数据的处理和使用。
CC100数据集已被用于训练XLM-R模型,训练结果揭示了几个重要的发现:(1)扩大数据规模能显著提升下游任务的表现;(2)增加语种数量、扩大词汇表、增大模型参数规模,这些都有利于提升模型的表现,特别是对于小语种的迁移学习能力。
OSCAR(OpenSuper-largeCrawledAggregatedcoRpus)是一个开源项目,其主要目标是处理CommonCrawl的WET文件,以便为词嵌入模型和大型语言模型预训练提供基于网页的多语言数据集。该项目成功地开源了多语种的OSCAR数据集,总规模达到了6.3TB。该数据集包含了151种不同的语言,最新版本为OSCAR23.01。通过基于OSCAR数据库训练的上下文词嵌入ELMo模型,研究人员发现,清洗算法能显著降低CommonCrawl数据的噪声,使其接近Wikipedia的质量水平。
此外,OSCAR项目还开发了一套专门用于分类和过滤CommonCrawl数据的高性能并行框架(包括Goclassy和Ungoliant)。这个框架重用了FastText的线性分类器和预训练的FastText模型进行语言识别。
为了确保数据集的质量,ROOTS数据集的清洗过程采取了一系列严格的措施。清洗流程包括:
继RedPajama-1T之后,Together开源社区于2023年10月底发布了多语种数据集RedPajama-V2。该数据集源自于84个CommonCrawlDump文件,包含英语(67%)、德语(10%)、法语(9%)、西班牙语(9%)和意大利语(5%)五种语言,文本规模达到30TTokens(约100TB),是迄今为止最完整的CommonCrawl清洗数据。
文本语料清洗(TextCorpusCleaning)是自然语言处理中的一项核心任务,该过程对确保数据质量和提高模型效果至关重要。语料清洗的主要步骤包括文本提取、语种分类、去重和过滤等。目前,开源语料清洗框架有SlimPajama、MNBVC和CC-NET等。
SlimPajama是由Cerebras团队推出的一个去重工具包,为清洗RedPajama-1T数据集而设计。它提供了一系列的功能,包括文本规范化、生成Minhash、匹配重复数据、划分数据集和去重等。而且,通过采取分布式并行和内存池优化技术,该工具可以支持万亿级Tokens的同步去重。
SlimPajama的数据清洗流程如下:
MNBVC的数据清洗流程如下:
运行convert.py程序,并设置源文件路径和目标路径,指定并发进程数量(--n_process)和重复率阈值(--threshold)