本系列目录

《带你自学大语言模型》系列部分目录及计划,完整版目录见:带你自学大语言模型系列 —— 前言

第一部分 走进大语言模型(科普向)

  • 第一章 走进大语言模型

… …

第二部分 构建大语言模型(技术向)

  • 第二章 基础知识

… …

欢迎关注同名公众号【陌北有棵树】,关注AI最新技术与资讯。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_自然语言处理

写在前面

近年来,语言模型已经完成了向“预训练+微调/提示”范式的迁移,在这个范式下,预训练阶段要解决的关键问题是借助大规模语料资源,抽取那些语言的共性结构和关系,而微调阶段要解决的是如何借助小规模的专用数据集,进行模型能力的“垂直下沉”的问题,前者广,后者专。但无论如何,模型能力本质上是来源于所见过的训练数据,因此数据工程就变得极为重要。在训练过程中,高质量、大规模、多样化的数据集对于大模型训练至关重要。

最新的LLaMa 3的技术报告也佐证了这一点,LLaMa 3用15.6T Tokens的数据进行训练,相当于Llama 2 的7倍多,还包含大量的代码数据和多语言数据,在数据质量上,除了常规的去重、启发式过滤,LLaMa 3还专门训练了一个质量分类器模型来保证数据质量。由此可见数据在LLMs的训练过程中的重要性。

需求推动发展,数据集近年来也随着模型的进化而更迭,从早期的自然语言处理任务数据集到现在的LLM数据集。数据集的发展趋势:从基于任务分类,转向基于LLM的不同阶段分类。 所以,从最初的预训练阶段到最终的评估阶段,我们将LLM数据集分为四种类型:预训练语料库、指令微调数据集、偏好数据集和评估数据集。

数据系列的文章更多程度是整理性质的,目标是把与数据集相关的资源汇总到一起,这样在后面需要某些数据时,回到这篇文章就能快速的找到这些数据集,所以本文我花了大量时间去校正参考文献和引用源。本文更多是工具性质,大家也可以收藏起来以备不时之需。

本来想在一篇里面把4种类型数据都介绍完,但是写完预训练数据,字数转眼来到了1万2,所以拆分为几篇来写。

本节目录

  • 2.4.1 预训练数据集组成
  • 2.4.1.1 通用预训练数据集
  • 2.4.1.1.1 网页
  • 2.4.1.1.2 语言文本
  • 2.4.1.1.3 书籍
  • 2.4.1.1.4 学术材料
  • 2.4.1.1.5 代码
  • 2.4.1.1.6 平行语料库
  • 2.4.1.1.7 社交媒体数据
  • 2.4.1.1.8 百科全书
  • 2.4.1.1.9 多类别数据
  • 2.4.1.2 特定领域预训练数据集
  • 2.4.2 预训练数据处理步骤
  • 2.4.2.1 数据收集
  • 2.4.2.2 数据过滤
  • 2.4.2.2.1 基于模型的方法
  • 2.4.2.2.2 基于启发式的方法
  • 2.4.2.3 数据去重
  • 2.4.2.4 数据标准化
  • 2.4.2.5 数据审核
  • 2.4.3 预训练数据整体分布现状及分析
  • 参考文献

2.4.1 预训练数据集组成

预训练阶段需要的数据规模最大。这是因为,在预训练阶段 LLMs需要从大量的未标记文本数据中学习广泛的知识,并将其存储在其模型参数中。

预训练数据集包含各种类型、各种领域的文本数据。接下来会详细整理各种类型的数据集。

2.4.1.1 通用预训练数据集

通用数据集由来自不同领域和来源的大量文本组成。它们的主要特点是文本内容不局限于单一领域,使它们更适合于训练通用基础模型。

通用数据集的数据类型可以分为八大类:网页、语言文本、书籍、学术材料、代码、平行语料库、社交媒体和百科全书。

2.4.1.1.1 网页

网页数据在预训练语料库比较普遍,它的数据量庞大,并且会着时间的推移不断更新和变化,并且可以涵盖不通的主题和语言。但是网页数据是以超文本标记语言(HTML)格式存在,同时包含大量的噪声、无关信息和敏感内容,需要在使用前对数据进行清洗。

目前,网页数据语料库一般通过两种方式构建:

方式一是基于 Common Crawl [17] 重新选择和清洗数据:Common Crawl 是一个庞大、非结构化、多语言的网页语料库,它通过定期抓取和存储互联网上的网页数据,提供公共访问的网页档案。但是 Common Crawl 中包含大量如广告、导航栏等无关信息,还存在着色情内容、暴力、机器生成的垃圾邮件以及涉及个人隐私的敏感信息,所以需要进一步的处理。以下预训练语料库都是在 Common Crawl 基础上再加工得到:

RefinedWeb [2]:是 Falcon 模型 [3]的预训练语料库,经过了严格的过滤和去重过程,最终保留了 5T 个 token的高质量的英文文本。

C4 [4]:对 2019 年 4 月之前的 Common Crawl 数据,经过多重过滤器,去除了无用、有害和非英文的文本。

mC4 [5]:与 C4 不同,mC4保留了多语言数据。

CC-Stories [6]:根据 Winograd Schema 过滤出具有故事风格的文字,用于常识推理和语言建模。

RealNews [7](由 Zellers 等人,2019 年)提取了大量的新闻专用网页,以获取新闻数据。

CLUECorpus2020 [8]:对 Common Crawl 的中文部分进行了数据清洗,产生了 100GB 的高质量中文预训练语料库。

CulturaXs [9] 在结合 mC4 和 OSCAR 语料库之后,经过了多阶段的清洗过程,产生了更高质量的多语言语料库。

方式二是独立抓取各种原始网页,然后采用一系列清洗流程,获得最终的语料库。WuDaoCorpora-Text [10] 是从 100TB 的原始网页中清洗而来,涵盖了教育和技术等许多领域的数据。

此外,一些多类别语料库中的网页数据也是通过这种方法构建的,包括 MNBVC [11] 、WanJuanText-1.0 [12] 和 TigerBot pretrain zh [13] 等。

2.4.1.1.2 语言文本

语言文本数据主要由两部分组成。

第一部分是基于广泛来源的书面和口头语言构建的电子文本数据。

美国国家语料库 [14] ,其内容主要包括各种美国英语的书面和口头材料。语料库的第二版有2200万字的规模,非常适合模型学习语言。

BNC (英国国家语料库)[15] ,包含了1亿字的电子文本资源,涵盖了英国英语的口语和书面语材料。

第二部分是基于各个领域或主题的相关书面材料构建的电子文本数据。

FinGLM [16]涵盖了2019年至2021年一些上市公司的年度报告。数据类型属于金融领域的语言文本材料。

TigerBot-law [13]包括了包括中国宪法和中国刑法在内的11类法律法规,属于法律领域的语言文本材料。

News-crawl [18]从在线报纸和其他新闻来源提取单语种文本,涵盖了59种语言的新闻文本。

2.4.1.1.3 书籍

书籍也是预训练语料库中常见的数据类型。与网页相比,书籍具有更长的文本内容和更优质的数据质量,这有助于提高LLMs的性能,使它们能够捕获人类语言特征,同时学习更深入的语言知识和上下文信息。书籍的一个好处是,所涵盖的领域极其多样化。因此,可以方便地对书籍进行细粒度的领域分类。

常用的资源包括Smashwords [19]和Project Gutenberg [20]。

Smashwords 是一个大型的免费电子书库,包含超过50万本电子书。

Project Gutenberg 作为最早的数字图书馆,致力于数字化和归档文化作品,也拥有丰富的书籍资源。

一些常见的书籍数据集包括:

2019年,PG-19 [21]收集了1919年之前出版的 Project Gutenberg中的书籍,并去除了短文本书籍,一共28752本。

2021年,BookCorpusOpen [22]基于Toronto Book Corpus、Smashwords等资源,创建了17868本书籍条目。

2023年,Anna’s Archive [23]成为世界上最大的开源和开放数据图书馆。创建者从Libgen、Sci-Hub等图书馆中抓取书籍。截至2024年2月,规模已达到641.2TB,并且还在不断增长。

2.4.1.1.4 学术材料****

学术材料主要包括学术论文、期刊文章、会议论文、研究报告、专利等。这类数据的特点是具有高专业性和严谨性,质量高。将学术材料纳入语料库,可以帮助模型学习理解专业领域的知识。

arXiv [24]是目前最常用的语料库,它收集了涵盖物理、数学、计算机科学、生物学和定量经济学的论文预印本。

S2ORC [25]包含了各个学科的英文学术论文,包含摘要、参考文献列表和结构化的全文内容。

PubMed Central [26] 在医学领域十分重要,它开放了近500万篇生物医学出版物。

The Pile [48]中,学术材料数据占38.1%,而网页数据只占18.1%。

RedPajama-V1 [28]中,学术材料总计280亿个tokens,占比为2.31%。

2.4.1.1.5 代码

现在大模型的一个常见应用场景是生成和理解代码,所以模型训练过程中使用的代码质量,会直接影响生成代码的有效性。同时需要注意的一点是,在网络抓取时,需要谨慎遵守项目作者设置的代码使用协议。

代码数据的主要语料库包括The Stack、BIGQUERY和Github。

The Stack [28]:6TB开源代码,包含358种编程语言的。它适用于编程领域大型语言模型的开发。

BIGQUERY [29]:是Google BigQuery [30]语料库公开发布的一个子集,专注于六种选定的编程语言。

Github [31]:代码托管平台,提供开源和私有软件项目的代码库管理和代码片段共享功能。

StackOverflow [32]:作为一个致力于编程和开发的问答社区,它涵盖了编程语言、开发工具和算法等主题的问题和答案。所以也是代码数据的常见来源。

phi-1 [33]是专门训练的代码模型。它不仅包括从The Stack和StackOverflow中选出的代码数据,还利用GPT-3.5生成了与Python相关的教科书和练习题。

2.4.1.1.6 平行语料库

平行语料库是指:不同语言的文本或句子对的集合。平行语料库数据对于增强LLMs的机器翻译能力和跨语言任务性能至关重要。平行语料库的收集通常通过两个主要途径进行。

第一种是通过从互联网资源中提取文本。例如,ParaCrawl [34]利用开源软件爬取网页,构建了一个公开可用的平行语料库。它包含了2.23亿个过滤后的句子对。MTP [35] 收集和整理现有的中英文本数据,累计达到了3亿个文本对,这是目前最大的开源中英对照文本对数据集。

第二种方法是从联合国多语言文件中收集平行语料库。MultiUN [36]通过联合国官方文件系统 [37]收集平行文本对。这些文件涵盖了联合国的六种官方语言(阿拉伯语、中文、英语、法语、俄语和西班牙语)以及有限的德语版本。UNCorpus v1.0 [38]由1990年至2014年的文本内容组成,这些内容包括公共领域的联合国官方记录和其他会议文件,总计799276个文件。这些文件大多数涵盖了六种官方语言。

2.4.1.1.7 社交媒体数据

社交媒体数据指的是从各种媒体平台收集的文本内容,主要包括用户生成的帖子、评论和用户之间的对话数据。数据反映了社交媒体上个体之间的实时动态和互动性。尽管社交媒体数据中可能存在有害信息,如偏见、歧视和暴力,但对于LLMs的预训练仍然至关重要。这是因为社交媒体数据有利于模型学习会话交流中的表达能力,并捕捉社会趋势、用户行为模式等。

在英文社交媒体平台上,数据通常在StackExchange和Reddit等平台上进行爬取。StackExchange [39]是一个包含各种主题的问答对集合,是最大的公开可用问答对资源之一。

Reddit [40]包括大量的用户生成帖子以及每个帖子对应的赞成和反对票数。除了作为社交媒体数据,Reddit还可以用于基于投票计数构建人类偏好数据集。

WebText [41]从Reddit的4500万个网页链接中抓取社交媒体文本,确保每个链接至少有3个赞成票以保证数据质量。然而,只有WebText的一小部分是公开可用的。

OpenWebText [42]复制了WebText的构建方法,并将收集的社交媒体数据开源。

Pushshift Reddit [43]自2015年以来一直在收集Reddit数据,提供实时的月度更新,以降低研究人员的数据获取时间成本。

中文社交媒体数据通常从知乎等平台收集。

2.4.1.1.8 百科全书

百科全书数据指的是从百科全书、在线百科全书网站或其他知识数据库中提取的文本信息。在线百科全书网站上的数据由专家、志愿者或社区贡献者编写和编辑,提供了一定的权威性和可靠性。由于其易于获取,它在预训练语料库中被更频繁地包含,用来增强LLMs的能力。

最常见的百科全书语料库是Wikipedia [44]。它具有免费、开源、多语言和高文本价值的特点。语料库会从Wikipedia中选择特定语言的数据,进行爬取和过滤,作为预训练语料库的一部分。

在中文语言百科全书语料库方面,除了Wikipedia的中文版外,还有百度百科 [45]语料库。它涵盖了几乎所有的知识领域。

TigerBot-wiki [13]专门致力于收集与中国百科全书相关的数据。这构成了TigerBot模型反思过程中使用的原始外部大脑数据,规模为205MB。

2.4.1.1.9 多类别数据

多类别语料库是指包含两种或更多类型的数据,使用多类别数据,有助于增强LLMs的泛化能力。

在预训练期间,可以选择现有的开源多类别语料库直接进行预训练,或者选择多个单一类别语料库进行一定比例的混合。

英文中常见的多类别语料库,包括RedPajama-V1、The Pile、TigerBot pretrain en和Dolma。

RedPajama-V1 [47]是LLaMA模型使用的预训练语料库的部分复制。它包含六种数据类型,其中网页数据占大多数,达到87.0%。整体展示呈现出数据分布的偏斜。

相比之下,The Pile [48]拥有更丰富的数据类型,并且分布更加均匀。它是各种子集的组合,旨在尽可能多地捕获文本的形式。

同样,TigerBot pretrain en [13]从开源语料库中选择五种类型的数据,力求平衡分布。

为了推进预训练模型领域的开放研究,Dolma [50]英语语料库已经公开发布,包含3T个token。这个语料库结合了来自六个不同领域的内容,即网页、学术材料、代码、书籍、社交媒体和百科全书。此外,Dolma还为每种数据类型提供了特定的处理指南和全面的数据管理工具包。

中文多类别语料库包括MNBVC 和TigerBot pretrain zh。

MNBVC [11]没有提供数据类型的分布,但包括各种形式的纯文本中文数据,如新闻、小说、杂志、古典诗词、聊天记录等。其目标是达到40TB的数据量,以匹配ChatGPT。数据收集仍在进行中。

TigerBot pretrain zh [13]专注于网页内容、百科全书、书籍和语言文本。

除了常见的中英文语料库,北京人工智能研究院与其他机构合作,构建了世界上最大的开源阿拉伯语预训练语料库,称为ArabicText 2022 [53]。它可以用于训练阿拉伯语LLMs。

还有两个多语言和多类别的语料库,即WanJuanText-1.0和ROOTS。

WanJuanText-1.0 [12] 由来自各种来源的双语中英文数据组成,如网页、专利和考试问题。数据经过统一处理和格式化为jsonl。

ROOTS [55]包括46种自然语言和13种编程语言,总规模为1.6TB。

**
**

2.4.1.2 特定领域预训练数据集

特定领域预训练数据集通常用于LLMs的增量预训练阶段。

在通用预训练语料库上训练基础模型后,如果需要将模型应用于特定领域的下游任务,可以进一步使用特定领域预训练语料库进行增量预训练。

金融领域

金融领域的预训练语料库有助于大型语言模型(LLMs)学习与金融市场、经济学、投资和金融相关的主题。文本数据通常来源于金融新闻、财务报表、公司年报、金融研究报告、金融文献、市场数据等。金融领域的数据类型通常是相似的,差异主要在于数据时间范围、来源网站等因素。

BBT-FinCorpus [56]是一个大规模的中文金融领域语料库,包含四个部分:公司公告、研究报告、金融新闻和社交媒体。它用于预训练BBT-FinT5基础模型。

轩辕大模型使用的预训练语料库是FinCorpus [57] ,它是由公司公告、金融信息和新闻、金融考试问题组成。

FinGLM [58] 涵盖了2019年至2021年上市公司的年度报告。

在TigerBot [13]中,TigerBot-research 和TigerBot-earning分别侧重于研究报告和财务报告。

医疗领域

医疗领域的预训练语料库可以为大型语言模型(LLMs)提供学习材料,涵盖疾病、医疗技术、药物和医学研究等主题。

数据通常来源于医学文献、医疗诊断记录、病例报告、医疗新闻、医学教科书等相关内容。Medical-pt [60]已通过开放获取的医学百科全书和医学教科书数据集进行了增强,而PubMed Central [61] 则开放获取了与生物医学研究相关的出版物。

法律领域

法律文本数据通常来源于法律文件、法律书籍、法律条款、法院判决和案例、法律新闻等法律来源。例如,TigerBot-law [59]已编译了11个类别的中国法律法规供模型学习。另外,部分多类别语料库也纳入了从法律相关网站抓取的数据,如The Pile [48]。

交通领域

TransGPT,作为中国首个开源的大规模交通模型,已向学术界提供了TransGPT-pt语料库 [62]。该语料库包括丰富的与交通相关的数据,如交通文献、交通技术项目、交通统计数据、工程建设信息、管理决策信息、交通术语等。

数学领域

Proof-Pile-2 [59]收集了与数学相关的代码(17种编程语言)、数学网络数据和数学论文。它已被用于训练数学模型 Llemma。该语料库的知识是最新的,截至2023年4月。

2.4.2 预训练数据处理步骤

预处理通常包括五个步骤:(1)数据收集。(2)数据过滤。(3)数据去重。(4)数据标准化。(5)数据审核。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_自然语言处理_02

2.4.2.1 数据收集

一个全面的数据收集阶段通常包括十个步骤。

第1步:定义数据需求。最终模型的应用场景决定了预训练语料库的数据选择。明确定义特定的数据需求,包括数据类型、语言、领域、来源、质量标准等,有助于确定数据收集的范围和目标。

第2步:选择数据源。选择合适的数据源可以包括各种网站,以及书籍、学术论文等资源。数据源应符合需求,并努力确保所选来源的可靠性。CulturaX语料库 [9] 在构建过程中,使用黑名单过滤掉来自有害来源的页面,减少潜在的数据风险。也可以使用专门的过滤器提前排除低质量的网站。

第3步:制定收集策略。收集策略包括数据收集的时间跨度、规模、频率和方法,有助于获取多样化和实时数据。

第4步:数据爬取和收集。使用网络爬虫、API或其他数据检索工具根据预定义的收集策略从选定的数据源收集文本数据。在爬取过程中,确保遵守法律法规以及网站的相关协议和政策。

第5步:数据提取和解析。从原始数据中提取文本组件,实现准确的解析和文本分离。这可能涉及HTML解析 [2][34]、PDF文本提取 [25]等方法。例如,从互联网上爬取的数据通常以WARC、WAT和WET格式存储。HTML页面的文本可以从WET文件中转换为纯文本,或者通过其他方法。

第6步:编码检测。使用编码检测工具识别文本编码,确保文本以正确的编码格式存储。编码不正确可能导致字符混乱或数据损坏。在MNBVC [11] 的创建中,目前使用中文编码检测工具快速识别众多文件中的编码,帮助清洁过程。

第7步:语言检测。使用语言检测工具识别文本的语言,使数据能够根据不同语言进行子集划分,选择所需的语言文本。WanJuanText-1.0 [12] 使用pycld2进行语言分类。

第8步:数据备份。建议定期备份收集的数据,防止数据丢失和损坏。

第9步:隐私和法律合规性。确保整个过程符合数据隐私法律法规,获得必要的许可,并保护数据中的个人和敏感信息。

第10步:维护和更新。定期维护数据收集系统,确保数据的持续更新。考虑根据需要用新的数据源和收集策略进行替换。

2.4.2.2 数据过滤

数据过滤的目的是提高数据质量,主要的实现方式是对数据进行筛选和清洗。具体方法包括基于模型的方法和基于启发式的方法。

2.4.2.2.1 基于模型的方法

这些方法通过训练筛选模型来过滤低质量的数据。高质量的预训练语料库可以用作正面样本,而要过滤的受污染文本用作负面样本,以训练用于过滤的分类器。

例如,WanJuanText-1.0 [12] 的创建者采取了两个措施。一方面,他们为中英文内容分别训练了内容安全模型,以过滤与色情、暴力和赌博等主题相关的潜在有害数据。另一方面,他们为中英文分别训练了数据质量模型,以解决网页中的低质量内容,如广告和随机数据,从而减少普遍性。

2.4.2.2.2 基于启发式的方法

启发式规则通常手动定义,并设置为相关的质量指标。可以在文档级别和句子级别进行。在文档级别操作,使用启发式规则来删除不满足要求的语料库中的整个文档。在单个文本句子级别操作,使用启发式规则来删除文档中不符合标准的具体句子。

文档级别

在文档级别,大多数语料库会进行语言过滤,以排除不需要的文档。此步骤也可以在数据收集的语言检测阶段完成。

如RefinedWeb 和The Pile 只保留英文文本,而WuDaoCorpora-Text [10]和CLUECorpus2022 [8]只保留中文文本。

随后,通过设置质量指标和阈值,应用质量过滤启发式算法进行过滤 [2]。

质量指标 [13][10][55][12][4][5][9][54] 包括质量过滤得分、文本密度、中文字符或词数、文档长度、特殊字符比例、短行数、困惑度得分等,由于这里每篇文章都讲了上述的不止一个技术点,所以不单独标注引用。

也可以为特定数据类型设置特定规则。例如,S2ORC [25] 排除了没有标题和作者的、内容过短的、非英文文本。

文档级别

在句子级别,相应地设置启发式规则以选择性地删除语料库中不需要保留的句子。不同的语料库应为清洁目的设置相应的规则。

主要应用以下规则 [2][10][4][5][9][12]:

• 通过语义和标点过滤不完整的句子,基于完整性进行筛选。

• 移除涉及个人隐私的内容,或将隐私信息替换为其他文本。

• 删除与暴力、色情等有关的有害内容。

• 移除异常符号。

• 删除诸如HTML、CSS、JavaScript等标识符。

• 删除包含花括号的句子。

• 删除过短的句子。

• 移除冗余内容,如点赞按钮、导航栏等其他无关元素。

• 删除包含特定词汇的文本。

2.4.2.3 数据去重

数据去重涉及删除语料库中的重复或高度相似的文本。以下是几种典型的去重方法:

TF-IDF(词频-逆文档频率)软去重 [13]。该方法涉及计算文本中每个词的TF-IDF权重来比较文本之间的相似性。相似度超过阈值的文本将被删除。TF-IDF权重是词在文本中的频率(TF)乘以在整个语料库中的逆文档频率(IDF)。较高的权重表明这个词在特定文本中频繁出现,但在整个语料库中不常见,使其成为文本的关键特征。

MinHash [2][9] 。该方法估计两个集合之间的相似性。文本通过随机哈希处理,获得一组最小哈希值。然后通过比较这些最小哈希值来估计相似性。这种方法在计算和空间效率上都很高效。

SimHash [10][52]。这个算法用于计算文本相似性。文本特征向量被哈希以生成固定长度的哈希码。通过比较文本哈希码之间的汉明距离来估计相似性,距离越小表示相似性越大。

其他方法。CLUECorpus2020 [8]采用重复删除操作,当四个连续的句子多次出现时,只保留一个出现。C4 [4] 和RefinedWeb [2] 也使用类似的方法。CulturaX [9]采用基于URL的去重,删除在语料库中共享相同URL的重复文档。WanJuanText-1.0 [12] 使用MinHashLSH和n-gram来评估相似性,删除相似度大于0.8的内容。

2.4.2.4 数据标准化

数据标准化涉及对文本数据进行规范化和转换,使其在模型训练过程中更易于管理和理解。它主要包括四个步骤。

句子分割: MultiUN [36] 对提取的文本进行句子分割。中文文本使用简单的正则表达式进行分割,而其他文本使用NLTK工具包中的句号标记模块进行分割。CLUECorpus2020 [8] 使用PyLTP(Python语言技术平台)将文本分割成完整的句子,每行一个句子。

简化中文: WuDaoCorpora-Text [10]将所有繁体字转换为简体字。

拼写更正: 可以使用训练有素的现成模型对文本进行拼写更正。

去除无关词: 可以删除那些通常缺乏实质信息价值的高频率词。另外还包括删除中文空格 [10][8]。

2.4.2.5 数据审核

数据审核阶段首先详细记录前面的预处理步骤和方法,供将来参考和审查。随后进行手动审核,对样本进行检查,以检查数据处理是否符合预期标准。在此审核过程中发现的任何问题,会作为反馈提供给步骤1到4。

2.4.3 预训练数据整体分布现状及分析

在《Datasets for Large Language Models: A Comprehensive Survey》[1]这篇论文中,对59个预训练语料库进行统计分析,从发布时间、许可证、数据类别、构建方法、语言和领域几个方面得出如下一些结论:

【1】2018年之前,预训练语料库的增长相对缓慢,直到BERT的发布,随后预训练语料库数量逐渐增加。随后,GPT-2、GPT-3、T5等模型的推出继续推动了发展。到2022年底,OpenAI发布了ChatGPT,对LLMs的关注达到了前所未有的高度。2023年,预训练语料库的构建和开源经历了爆炸性增长。

下图显示了预训练语料库数量随时间的变化趋势。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_人工智能_03

【2】 使用任何预训练语料库之前,需要建议查阅适用许可证的具体条款和条件,以确保符合相关规定。Apache-2.0、ODC-BY、CC0和Common Crawl使用条款许可证通常用于预训练语料库,为商业使用提供了相对宽松的限制。

下图描述了在不同许可证下预训练语料库数量的分布。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_数据_04

【3】多类别数据是最常用且数量最多的,因为预训练语料库的数据类型多样性可以影响LLMs的整体质量。当模型在包含更多样化类型的语料库上训练时,效果会有更大的改进。在单一数据类型中,网页数据由于易于访问、规模大和内容广泛而在语料库中最为常见。

下图展示了不同数据类别下预训练语料库数量的分布。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_数据集_05

【4】语料库在用于预训练之前,需要收集大量数据并经过严格的清洗流程。常见方式有两种:一是直接手动构建,二是在现有开源数据的基础上进行改进。也会存在两种方法结合使用的情况。

目前使用模型生成的数据作为预训练语料库的例子还比较少,例如Phi-1,它包括模型生成的与Python相关的数据。

下图显示了不同构建方法下预训练语料库数量的分布。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_数据集_06

【5】英语、中文和多语言语料库的研究和关注广泛。另外与编程语言相关的语料库也逐渐被用于LLMs的代码性能研究。下图表示了不同语言下预训练语料库数量的分布。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_数据集_07

【6】下图描述了不同领域下预训练语料库数量的分布。通用预训练语料库领先,适用于各种NLP任务。特定领域的预训练语料库由于数量有限,只能服务于特定领域的需求,为不同应用场景提供选择性。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_自然语言处理_08

Zhao等人 [46]对14个代表性LLMs的预训练语料库数据类型分布进行了统计分析。数据类型被归类为网页、对话数据、书籍&新闻、科学数据和代码。在本文中,数据类型被进一步细分为八个细粒度类别,并对20个LLMs的分布进行了分析,如下图所示。针对不同应用场景量身定制的LLMs需要仔细确定数据的类型和分布比例。

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_语言模型_09

另外一些研究显示,使用某一特定领域的过多数据进行训练可能会影响LLMs在其他领域的泛化能力 [49][51]。

注:本篇的大部分内容参考自《Datasets for Large Language Models: A Comprehensive Survey》[1]这篇论文,感谢大佬们的系统整理。

参考文献

[1]Liu Y, Cao J, Liu C, et al. Datasets for large language models: A comprehensive survey[J]. arXiv preprint arXiv:2402.18041, 2024.

[2] Penedo G, Malartic Q, Hesslow D, Cojocaru R, Alobeidli H, Cappelli A, et al (2023) The RefinedWeb dataset for Falcon LLM: Outperforming curated corpora with web data only. In: Thirty-seventh Conference on Neural Information Processing Systems Datasets and Benchmarks Track, pp 1–18

[3] https://falconllm.tii.ae/

[4] Raffel C, Shazeer N, Roberts A, Lee K, Narang S, Matena M, et al (2020) Exploring the limits of transfer learning with a unified text-to-text Transformer. J Mach Learn Res 21(1):5485–5551

[5] Xue L, Constant N, Roberts A, Kale M, Al-Rfou R, Siddhant A, et al (2021) MT5: A massively multilingual pre-trained text-to-text Transformer. In: Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. ACL, pp 483–498,https://doi.org/10.18653/v1/2021.naacl-main.41

[6] Trinh TH, Le QV (2018) A simple method for commonsense reasoning. arXiv:1806.02847

[7] Zellers R, Holtzman A, Rashkin H, Bisk Y, Farhadi A, Roesner F, et al (2019b) Defending against neural fake news. In: Proceedings of the 33rd International Conference on Neural Information Processing Systems. Curran Associates Inc., Red Hook, NY, USA, pp 9054–9065

[8] Xu L, Zhang X, Dong Q (2020c) CLUECorpus2020: A large-scale Chinese corpus for pre-training language model. arXiv:2003.01355

[9] Nguyen T, Van Nguyen C, Lai VD, Man H, Ngo NT, Dernoncourt F, et al (2023) CulturaX: A cleaned, enormous, and multilingual dataset for large language models in 167 languages. arXiv:2309.09400

[10] Yuan S, Zhao H, Du Z, Ding M, Liu X, Cen Y, et al (2021) WuDaoCorpora: A super large-scale Chinese corpora for pre-training language models. AI Open 2:65–68. https://doi.org/https://doi.org/10.1016/j.aiopen.2021.06.001

[11] MOP-LIWU Community, MNBVC Team (2023) MNBVC: Massive never-ending BT vast Chinese corpus. https://github.com/esbatmop/MNBVC

[12] He C, Jin Z, Xu C, Qiu J, Wang B, Li W, et al (2023a) WanJuan: A comprehensive multimodal dataset for advancing English and Chinese large models. arXiv:2308.10755

[13] Chen Y, Cai W, Wu L, Li X, Xin Z, Fu C (2023c) TigerBot: An open multilingual multitask LLM. arXiv:2312.08688

[14] https://anc.org/

[15] http://www.natcorp.ox.ac.uk/

[16] MetaGLM (2023) FinGLM. https://github.com/MetaGLM/FinGLM

[17] https://commoncrawl.org/

[18] https://data.statmt.org/news-crawl/

[19] https://www.smashwords.com/

[20] https://www.gutenberg.org/

[21] Rae JW, Potapenko A, Jayakumar SM, Hillier C, Lillicrap TP (2020) Compressive Transformers for long-range sequence modelling. In: International Conference on Learning Representations, pp 1–19

[22] Bandy J, Vincent N (2021) Addressing “documentation debt” in machine learning: A retrospective datasheet for bookcorpus. In: Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track (Round 1), pp 1–13

[23]https://annas-archive.org/datasets

[24] https://arxiv.org/

[25] Lo K, Wang LL, Neumann M, Kinney R, Weld D (2020) S2ORC: The semantic scholar open research corpus. In: Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. ACL, pp 4969–4983, https://doi.org/10.18653/v1/2020.acl-main.447

[26] https://www.ncbi.nlm.nih.gov/pmc/

[27] https://huggingface.co/datasets/togethercomputer/RedPajama-Data-1T

[28] Kocetkov D, Li R, allal LB, LI J, Mou C, Jernite Y, et al (2023) The Stack: 3TB of permissively licensed source code. Transactions on Machine Learning Research pp 1–28

[29] Nijkamp E, Pang B, Hayashi H, Tu L, Wang H, Zhou Y, et al (2023) CodeGen: An open large language model for code with multi-turn program synthesis. In: The Eleventh International Conference on Learning Representations, pp 1–25

[30] https://cloud.google.com/bigquery?hl=en

[31] https://github.com/

[32] https://stackovjerflow.com/

[33] Gunasekar S, Zhang Y, Aneja J, Mendes CCT, Del Giorno A, Gopi S, et al (2023) Textbooks are all you need. arXiv preprint arXiv:2306.11644

[34] Banon M, Chen P, Haddow B, Heafield K, Hoang H, Espla-GomisM, et al (2020) ParaCrawl: Web-scale acquisition of parallel corpora. In: Jurafsky D, Chai J, Schluter N, Tetreault J (eds) Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. ACL, pp 4555–4567, https://doi.org/10.18653/v1/2020.acl-main.417

[35] https://data.baai.ac.cn/details/BAAI-MTP

[36] Eisele A, Chen Y (2010) MultiUN: A multilingual corpus from United Nation documents. In: Calzolari N, Choukri K, Maegaard B, Mariani J, Odijk J, Piperidis S, et al (eds) Proceedings of the Seventh International Conference on Language Resources and Evaluation (LREC’10). ELRA, Valletta, Malta, pp 2868–2872

[37] https://documents.un.org/

[38] Ziemski M, Junczys-Dowmunt M, Pouliquen B (2016) The United Nations parallel corpus v1.0. In: Calzolari N, Choukri K, Declerck T, Goggi S, Grobelnik M, Maegaard B, et al (eds) Proceedings of the Tenth International Conference on Language Resources and Evaluation (LREC’16). ELRA, Portoroz, Slovenia, pp 3530–3534

[39] https://stackexchange.com/

[40] www.reddit.com

[41] Radford A, Wu J, Child R, Luan D, Amodei D, Sutskever I, et al (2019) Language models are unsupervised multitask learners. OpenAI blog 1(8):1–24

[42] Gokaslan A, Cohen V (2019) OpenWebText corpus. http://Skylion007.github.io/OpenWebTextCorpus

[43] Baumgartner J, Zannettou S, Keegan B, Squire M, Blackburn J (2020) The Pushshift reddit dataset. In: Proceedings of the international AAAI conference on web and social media, pp 830–839

[44] https://www.wikipedia.org/

[45] https://baike.baidu.com/

[46] Zhao WX, Zhou K, Li J, Tang T, Wang X, Hou Y, et al (2023) A survey of largelanguage models. arXiv preprint arXiv:2303.18223

[47] https://huggingface.co/datasets/togethercomputer/RedPajama-Data-1T

[48] Gao L, Biderman S, Black S, Golding L, Hoppe T, Foster C, et al (2020) The Pile: An 800GB dataset of diverse text for language modeling. arXiv:2101.00027

[49] Taylor R, Kardas M, Cucurull G, Scialom T, Hartshorn A, Saravia E, et al (2022) Galactica: A large language model for science. arXiv preprint arXiv:2211.09085

[50] Soldaini L, Kinney R, Bhagia A, Schwenk D, Atkinson D, Authur R, et al (2024) Dolma: An open corpus of three trillion tokens for language model pretraining research. arXiv:2402.00159

[51] Rae JW, Borgeaud S, Cai T, Millican K, Hoffmann J, Song F, et al (2021) Scaling language models: Methods, analysis & insights from training gopher. arXiv:2112.11446

[52] Abadji J, Ortiz Suarez P, Romary L, Sagot B (2022) Towards a cleaner documentoriented multilingual crawled corpus. In: Proceedings of the Thirteenth Language Resources and Evaluation Conference. ELRA, Marseille, France, pp 4344–4355

[53] https://data.baai.ac.cn/details/ArabicText-2022

[54] Zhu Y, Kiros R, Zemel R, Salakhutdinov R, Urtasun R, Torralba A, et al (2015) Aligning books and movies: Towards story-like visual explanations by watching movies and reading books. In: Proceedings of the IEEE International Conference on Computer Vision (ICCV), pp 19–27

[55] Laurencon H, Saulnier L, Wang T, Akiki C, del Moral AV, Scao TL, et al (2022) The BigScience ROOTS corpus: A 1.6TB composite multilingual dataset. In: Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track, pp 1–18

[56] Lu D, Liang J, Xu Y, He Q, Geng Y, Han M, et al (2023a) BBT-Fin: Comprehensive construction of Chinese financial domain pre-trained language model, corpus and benchmark. arXiv preprint arXiv:2302.09432

[57] Zhang X, Yang Q (2023) XuanYuan 2.0: A large Chinese financial chat model with hundreds of billions parameters. In: Proceedings of the 32nd ACM International Conference on Information and Knowledge Management. ACM, New York, NY, USA, pp 4435–4439

[58] MetaGLM (2023) FinGLM. https://github.com/MetaGLM/FinGLM

[59] Azerbayev Z, Schoelkopf H, Paster K, Dos Santos M, McAleer S, Jiang AQ, et al (2023) Llemma: An open language model for mathematics. arXiv preprint arXiv:2310.06786

[60] Xu M (2023) MedicalGPT: Training medical GPT model. https://github.com/shibing624/MedicalGPT

[61] https://www.ncbi.nlm.nih.gov/pmc/

[62] Duomo (2023) TransGPT. https://github.com/DUOMO/TransGPT

惯例在结尾放一棵树~~

2.4 大模型数据基础:预训练阶段数据详解 ——《带你自学大语言模型》系列_数据_10