编者按:分享一个很硬核的免费人工智能学习网站,通俗易懂,风趣幽默, 可以当故事来看,轻松学习。
本文从快速构建大型语言模型(LLM)训练数据集的角度出发,全面梳理了中文、英文和多语种数据集及其清洗规则,介绍了常用的数据清洗框架和主要流程,指出现有数据集存在的问题及其初步解决方案。站在开源数据集的肩膀上,通过数据整合和精细治理,我们能快速产出落地方案和结果,从而推动 LLM 的训练和优化任务。
在参与得物大语言模型(Large Language Model, LLM)项目的深度实践中,笔者亲历了预训练数据的搜集与清洗全过程。这篇文章通过详细梳理现有预训练数据集以及其清洗框架,旨在提供一个全面而实用的参考,以便为 LLM 训练提供快速有效的数据集落地方案。
大规模的高质量语料是训练大语言模型的关键“养料”。这些语料提供了世界性的知识体系,能够提升语言模型的理解能力和生成质量,同时也能够支持多样化的应用场景。事实上,高质量的文本对于大语言模型的训练和能力表现具有非常重要的影响。一些学者甚至认为:“GPT、PaLM 等模型的领先优势在很大程度上源于它们使用的超大规模且高质量的专有数据。”(Touvron et al, 2023)
在英文数据集方面,有一些规模达到千亿(100B)Tokens 以上的数据集,如:RefinedWeb、RedPajama-1T、SlimPajama、MassiveText、The Pile、C4 等。这些数据集的存在和使用为英文大语言模型的训练提供了强大支持。
阿联酋阿布扎比技术创新研究所(Technology Innovation Institute, TII)精心构建了一个用于大模型预训练的数据集——RefinedWeb。这个数据集是通过对 Common Crawl(CC)网页数据进行细致且深入的清洗和过滤得来的。令人惊讶的是,LLM 仅使用经过精细处理的网页数据,就能达到甚至超越使用专有数据集的模型效果。RefinedWeb 的全量数据规模达到了 5T Tokens,其中,已经向公众开源的数据规模则达到了 600B Tokens。
依据 Penedo et al.(2023)的研究,如下图所示,即使只使用经过严密清洗和过滤的网页数据,模型的效果也能与使用多种专有数据的混合方案相媲美。另外,RefinedWeb 数据集已成功训练出了 Falcon-7B、40B 和 180B 等模型。值得一提的是,目前 Falcon-180B 在 Huggingface 开源模型排行榜 OpenLLM Leaderboard 上名列前茅。同时,Shen et al.(2023)分析中指出,RefinedWeb 数据集的质量优于 RedPajama-1T 和 SlimPajama。
图片
虽然 CC 网页数据的规模达到 PB 级,但其质量却相对较低,必须经过深度的清洗和过滤才能满足模型训练的需要。RefinedWeb 的清洗过程包括以下几个步骤:
经过深度清洗后,CC 文本的淘汰率接近 90%。尽管如此,TII 团队仍然从近 180TB 的 CC 数据集中清洗出了大约 5T Tokens 的数据,并向公众开源了其中的 600B Tokens 数据。
RedPajama-1T 是由 Together 开源社区发起的项目,它的目标是复现 MetaAI 的 LLaMA 预训练,以推动大语言模型(LLM)开源社区的发展。
RedPajama-1T 数据集包含了 1.2T Tokens 的英文数据,未经压缩的数据大小约为 5TB,而经过压缩后的下载大小约为 3TB。
RedPajama-1T 数据集的收集方式参照了 LLaMA 论文公开的思路,可从 Hugging Face 官网下载。
RedPajama-1T 数据集包含了来自多个不同来源的数据,包括 CommonCrawl、C4、GitHub、Books、ArXiv、Wikipedia 以及 StackExchange 等。
RedPajama-1T 数据集的清洗过程相对简单,主要的去重操作仅限于子集或文档内部。因此,这个数据集的去重并不彻底,在子集之间存在明显重复文本(Shen et al, 2023)。
SlimPajama 数据集是由 Cerebras 基于 RedPajama-1T 数据集通过深度去重得到的英文数据集。该团队通过过滤低质量和重复性文本,从 RedPajama-1T 数据集中过滤掉了 49.6% 的 Tokens,从而将数据集规模从 1210B Tokens 缩减为了 627B Tokens。实验结果表明,使用 SlimPajama 训练的模型性能优于使用 RedPajama-1T 数据集训练的模型。
为了提升数据质量,Cerebras开发了一个包含精确和模糊算法的全量去重框架,用于产生 SlimPajama 数据集。处理流程包括以下两个步骤:
MassiveText 是由 DeepMind 构建的大规模英文数据集,包含约 23.5 亿个文档,总共约 10.5TB 的文本(Rae et al, 2021)。这个数据集并未开源,其数据来源包括了网页、书籍、新闻文章以及代码等多个领域。MassiveText 数据集被用于训练 Gopher 模型,该模型最大参数规模达到了 280B。
为了确保数据的质量,DeepMind 对 MassiveText 数据集进行了一系列的处理,包括:
The Pile 是由 Eleuther AI 社区构建的大规模英文数据集,其规模达到 825GB,包含约 1.4 亿份文档,平均每个文档大小为 5.9 KB(Gao et al, 2020)。这个数据集的优势在于其广泛的数据覆盖范围和详细的分类,由 22 个不同的高质量子集组成。
The Pile 数据集被分为五个主要类别:学术材料、网页、书籍、对话和代码,并被进一步细分为 22 个子集。以下是其中的一些主要子集:
各个子集在构建过程中采用了“分治”思想,根据数据特征定制清洗规则。
C4 (Colossal Clean Crawled Corpus) 是 Google 提出的一个大规模英文语料库。这个数据集源自 Common Crawl,包含了约 3.65 亿份文档(156B Tokens)(Raffel et al, 2020)。Google 使用该数据集来训练 T5 和 Switch Transformer 模型(Dodge et al, 2021)。
在构建 C4 数据集的过程中,研究者们制定了一系列启发式的数据清洗规则。
相对于英文语料库,中文语料库在规模和质量上存在显著的差距,其中一个重要原因是中文网页少且高质量中文数据获取成本高。例如,CC 中文网页占比只有大约 1.4%,远低于英文网页的 55%。虽然国内的大规模语言模型(如 Baichuan、Qwen、Chatglm 等)已经相继开源,但其预训练数据几乎全部闭源。因此,中文训练数据的短缺已经成为当前中文训练的一大痛点。
尽管如此,目前仍有一些规模超过 100GB 的中文数据集已经开源,包括 MNBVC、SkyPile-150B、Wanjuan 1.0、WuDao 和 CLUECorpus2020。这些数据集的存在为中文 LLM 训练提供了资源。
MNBVC 数据集涵盖了各种形式的纯文本中文数据,包括新闻、作文、小说、书籍、杂志、论文、台词、帖子、Wiki、古诗、歌词、商品介绍、笑话、糗事、聊天记录等。所有的数据均收集自互联网。
在 HuggingFace 上,MNBVC 数据集公布的数据类别包括公司年报、Wiki、问答(含知乎最高点赞、Wikihow、Stackexchage、外交部答记者问)、新闻、法律(判决书)、政府文章(如学习强国,政府工作报告)和代码,共 7 个类别。未经压缩的纯中文数据总量达到了 5.4 TB。
MNBVC 数据集提供的文档内容是经过初步清洗的版本,整体来说,数据质量属于中等水平。在数据集中,存在大量的乱码、低质量文本和重复性文本。这些问题会影响 LLM 训练效果。因此在使用之前需要对数据进行精细清洗。以下是 MNBVC 数据集的主要子集:
新闻:
知乎问答(仅包含最高赞1个回答):
外交部问答:
公司财报:
中文 Wiki:
法律判决书:
SkyPile-150B 是昆仑万维专门为 LLM 预训练任务设计的中文数据集,数据源自可公开访问的中文网页。为了保证数据质量,数据集经过了初步的清洗处理,同时使用了 FastText 和 BERT 等工具来过滤低质量的文本。SkyPile-150B 包含 1.66 亿个中文网页,每个网页平均包含 1,000 多个汉字,总的数据规模达到了 592 GB(150B Tokens)。
然而,值得注意的是,该数据集的清洗工作并未达到完全彻底的程度。在数据集中,仍存在一定数量的乱码和不健康内容,同时也包含了一些敏感信息,如电子邮件地址、电话号码或IP地址等。以下是 SkyPile-150B 数据集的主要问题:
Wanjuan 1.0 是由上海 AI 实验室构建的混合数据集,包含三个主要部分:文本数据集、图文数据集和视频数据集。文本部分由各种来源的语料构成,包括网页、百科、书籍、专利、教材、考题等,中文规模达到了 552 GB。在 Wanjuan 1.0 的构建过程中,Html、Text、PDF、Epub 等多种格式的数据都被统一处理为 Jsonl 格式。此外,数据集还经过了细粒度的清洗、去重和价值对齐,从而形成了一份质量较高的预训练语料。
然而,需要注意的是,Wanjuan 1.0 与 MNBVC 有很多相同的主要子集,因此两者在内容上存在较大的重叠。使用前需要在数据集之间进行彻底去重。
图片
WuDaoCorpora 是由北京智源人工智能研究院(智源研究院)构建的复合数据集,由文本、对话、图文对三部分组成。其中,可申请使用的文本数据规模达到了 200GB。
在构建 WuDaoCorpora 数据集的过程中,该团队采用了 20 多种规则,从 100TB 的原始网页数据中清洗出了最终的数据集。此外,该数据集包含了教育、科技等50+个行业的数据标签,这使得它能够支持多领域预训练模型的训练。
CLUE 开源社区采用自定义的清洗方法从 2019 年 7 月至 12 月的 Common Crawl(CC)原始数据中提取出了 100 GB 的中文语料。该数据集已经通过了 CLUE Organization 团队的初步验证,以确认其质量和可用性。该数据集已被成功用于从零开始训练 Bert-base 模型。训练后的模型展示了与使用同类高质量数据集训练得到的模型相当的中文处理能力。
然而,需要注意的是,由于清洗过程的力度不够,CLUECorpus2020 中仍然存在一些低质量和不健康的文本。以下列出了一些需要进一步改进和完善的地方:
图片
图片
在 Palm 2 模型的训练过程中,Google 研究人员发现,多语种训练数据可以有效地提升模型能力,而且并不损失对英文等优势语种的学习效果(Anil et al, 2023)。这可能是越来越多的模型,如 BLOOM、Baichuan 2、Qwen 2 等,采用多语种训练方式的主要原因。
目前,已有多个开源的多语种训练数据集可供研究者使用。其中包括 CC100(由Conneau 等人于 2019 年发布)、OSCAR(由Suárez等人于2019年发布)、ROOTS(由 Laurençon 等人于 2022 年发布)、RedPajama-V2 等。
CC100 是一个包含 100 种语言的开源数据集,总规模达到了 2.5TB。这份数据集是由 Meta AI 团队使用 CC-Net 框架清洗 2018 年 1 月-2018 年 12 月 的 CC Snapshot 得来。在 CC100 的数据格式中,每个文件都包含由双换行符分隔的文档以及同一文档中由换行符分隔的段落。这样的设计旨在方便数据的处理和使用。
CC100 数据集已被用于训练 XLM-R 模型,训练结果揭示了几个重要的发现:(1)扩大数据规模能显著提升下游任务的表现;(2)增加语种数量、扩大词汇表、增大模型参数规模,这些都有利于提升模型的表现,特别是对于小语种的迁移学习能力。
OSCAR(Open Super-large Crawled Aggregated coRpus)是一个开源项目,其主要目标是处理 Common Crawl 的 WET 文件,以便为词嵌入模型和大型语言模型预训练提供基于网页的多语言数据集。该项目成功地开源了多语种的 OSCAR 数据集,总规模达到了 6.3TB。该数据集包含了 151 种不同的语言,最新版本为 OSCAR 23.01。通过基于 OSCAR 数据库训练的上下文词嵌入 ELMo 模型,研究人员发现,清洗算法能显著降低 Common Crawl 数据的噪声,使其接近 Wikipedia 的质量水平。
此外,OSCAR 项目还开发了一套专门用于分类和过滤 Common Crawl 数据的高性能并行框架(包括 Goclassy 和 Ungoliant)。这个框架重用了 FastText 的线性分类器和预训练的 FastText 模型进行语言识别。
ROOTS 是由 BigScience 团队构建的多语言数据集,其规模达到了 1.6TB。这个数据集被用来训练了一款拥有超过 1700 亿参数的大型模型,即 BLOOM 模型(Scao et al, 2022)。ROOTS 数据集涵盖了 59 种语言,这其中包括 46 种自然语言和 13 种编程语言,提供了丰富的多语种和多模态资源。在其数据来源上,62% 的数据由社区进行搜集和筛选;另外 38% 的数据则来自 OSCAR 数据集,并经过了精细的过滤和校验流程。
为了确保数据集的质量,ROOTS 数据集的清洗过程采取了一系列严格的措施。清洗流程包括:
此外,ROOTS 数据集也采用了 Simhash 算法对长文本进行去重,以进一步确保数据的独立性和多样性。同时,也对数据进行了个人信息的去除,以遵守数据隐私和保护的相关规定。
继 RedPajama-1T 之后,Together 开源社区于 2023 年 10 月底发布了多语种数据集 RedPajama-V2。该数据集源自于 84 个 CommonCrawl Dump 文件,包含英语(67%)、德语(10%)、法语(9%)、西班牙语(9%)和意大利语(5%)五种语言,文本规模达到 30T Tokens(约100TB),是迄今为止最完整的CommonCrawl 清洗数据。
RedPajama-V2 数据集采用了 CC-NET 清洗框架,主要包括 URL 过滤、敏感词过滤、语种分类、模糊+精确去重、启发式清洗、文本质量分类。Together 团队融合了多种文本质量评估方法,包括困惑度指标、文本打分模型等,并提供了 40 多种文本质量参考指标。其清洗方法详见(https://github.com/togethercomputer/RedPajama-Data)。
文本语料清洗(Text Corpus Cleaning)是自然语言处理中的一项核心任务,该过程对确保数据质量和提高模型效果至关重要。语料清洗的主要步骤包括文本提取、语种分类、去重和过滤等。目前,开源语料清洗框架有 SlimPajama、MNBVC 和 CC-NET 等。
SlimPajama 是由 Cerebras 团队推出的一个去重工具包,为清洗 RedPajama-1T 数据集而设计。它提供了一系列的功能,包括文本规范化、生成 Minhash、匹配重复数据、划分数据集和去重等。而且,通过采取分布式并行和内存池优化技术,该工具可以支持万亿级 Tokens 的同步去重。
SlimPajama 的数据清洗流程如下:
MNBVC 的数据清洗流程如下:
运行 convert.py 程序,并设置源文件路径和目标路径,指定并发进程数量(--n_process)和重复率阈值(-- threshold)
复制
文本内段落重复率高于阈值,被视为问题内容处理,全部保存在problem_*.jsonl,重复率低于阈值则保存在顺序编号 Jsonl 文件,例如1.jsonl。
每个正常文件大小为 500MB,可根据需要通过修改https://blog.csdn.net/feeltouch/article/details/utils.py 的 mas_size 值。
Jsonl 文件格式为:
复制
多进程文件去重
对百万量级文件并行处理,在文件间快速去重。
将 Jsonl 文件转化成对应 txt 元数据组成的 csv 文件,仅支持 Jsonl 格式输入文件;
依赖 convert_jsonl_to_csv.py 输出的 csv 文件。支持多进程并发处理,进程数至少为 2。
复制
--simhash_threshold 3:指定 Simhash 阈值,默认为 3,出重效果较好且速度较快。值越大运行速度越慢;
--jaccard_thresold 0.8:指定 jaccard 阈值;
--n_process 10:指定并行进程数。
清除 csv 文件去重失败结果,multiprocess_deduplication.py 去重结果会写入 csv 文件,如果参数出错,可以通过 reset_csv.py 清除 csv 状态,从而再次进行去重。
复制
将 csv 去重后的结果再次保存到原始 Jsonl 文件中去。
复制
--csv_dir:csv 源文件夹路径;
--jsonl_dir:原始 Jsonl 的路径。
CC-NET 工具包是 Meta 开发的面向 CommonCrawl 数据的处理框架,支持多语种清洗。核心功能包括文本提取、语种分类、去重、过滤和低质量过滤等。
CC 数据包含三种格式:
大部分用户处理的是WET格式文本数据,数据并发批量下载方式:
复制
CC-NET 的数据清洗流程主要包含以下三个步骤:
图片
清洗命令:
复制
本文从快速构建大型语言模型(LLM)训练数据集的角度出发,全面梳理了中文、英文和多语种数据集及其清洗规则,介绍了常用的数据清洗框架和主要流程,指出现有数据集存在的问题及其初步解决方案。站在开源数据集的肩膀上,通过数据整合和精细治理,我们能快速产出落地方案和结果,从而推动 LLM 的训练和优化任务。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.xrbh.cn/tnews/894.html