众所周知,对于 Llama3、GPT-4 或 Mixtral 等高本能大语言模型来说,构建高品质的收集规模数据集是非常重要的。然而,即使是最先进的开源 LLM 的预训练数据集也不公开,人们对其创建过程知之甚少。
最近,AI 大牛 Andrej Karpathy 推荐了一项名为 FineWeb-Edu 的工作。
这项工作将原始 15 万亿个 FineWeb token,经 Llama 3 70B 评判,过滤为 1.3 万亿个高品质(教科级)token。
事实证明,LLM 从培养实质中学习会更好更快。部分原因是普通的互联网爬取文章的价值不是很高,并且会分散训练的注意力,包含太多不相关的信息。
互联网上的网页是如此随机和糟糕,这些奇怪的数据转储、广告垃圾邮件、数兆字节的股票行情更新等等,里面混杂着「钻石」(重要实质),那么挑战就是把「钻石」挑出来。
预训练数据集对于微调可能非常有用,因为当你将模型微调到特定领域时,就会慢慢失去一般能力。模型开始慢慢忘记目标域之外的事物。并且这不仅限于知识,模型还会失去原始数据所需的一般「思维」技能。也就是说,除了广泛的知识消失之外,计算电路也会慢慢退化。
FineWeb 是什么?
FineWeb 是一个用于 LLM 预训练的全新大规模数据集(15 万亿 token,44TB 磁盘空间)。该数据集源自 96 个 CommonCrawl 快照,与其他开放的预训练数据集相比,它能生成本能更好的 LLM。为了提高机器学习的清晰度,推进对如何训练高品质大型语言模型的公开理解,团队记录并简略了 FineWeb 中利用的所有设计选择,包括对反复数据简略和过滤策略的深入研究。
数据集获取地址:https://huggingface.co/datasets/HuggingFaceFW/fineweb
在上述数据集的基础上,团队推出了 FineWeb-Edu,它是 FineWeb 的一个子集,利用可扩展的自动化高品质诠释来实现培养价值。在一些培养基准(如 MMLU、ARC 和 OpenBookQA)上,FineWeb-Edu 优于所有可公开访问的收集数据集。FineWeb-Edu 有两种大小 / 过滤级别:1.3 万亿(特高级培养实质)和 5.4 万亿(高级培养实质)token(所有 token 均利用 GPT2 tokenizer)。
数据集获取地址:https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu
这两个数据集均根据许可的 ODC-By 1.0 协议发布。
在对应的长篇报告中,团队深入探讨了如何创建一个用于 LLM 预训练的大型高品质收集规模数据集,并讨论了大规模数据品质的处理和评价、FineWeb 配方(列出并解释了所有的设计选择)以及创建 FineWeb-Edu 子集的过程。
大规模数据品质的处理和评价
关于用于训练 LLM 的收集数据集,一个常见问题是:他们从哪里获得这些数据?
通常有两种选择:
自己抓取,如 OpenAI 或 Anthropic 等公司;
利用抓取网页的公共资源库,如非营利组织 CommonCrawl 维护的资源库。
为了构建 FineWeb,团队沿用了一些 LLM 训练团队过去的做法,比如将 CommonCrawl(CC)作为起点。Common Crawl 非营利组织自 2007 年以来一直在抓取网页,通常每 1 到 2 个月发布一次新的抓取,包含 200 到 400 TiB 通过自动收集抓取获得的文本实质。
例如,最新的 CC 抓取(2024 年 4 月)包含 27 亿个网页,总计 386 TiB 的未压缩 HTML 文本实质。自 2013 年以来已发布了 96 次抓取,2008 年至 2012 年发布了 3 次抓取,采用的是不同(较旧)的格式。
接下来是评价问题。在大多数情况下,尤其是在大语言模型预训练的情况下,「高品质」并不是一个定义明确的术语,甚至不是一个仅通过人类直接观察就能清楚感知的文档属性。
在一个被认为「干净」的特定语料库(通常是维基百科)上训练一个模型,并用它来检查试图整理的数据集的易错性,这仍然是很常见的做法。遗憾的是,这并不总能提高下游相关任务的本能,因此,另一种常用的方法是在数据集的代表性子集上训练小型模型,并在一组评价任务上对其进行评价。之所以利用小型模型,是因为训练成本和时间是模型大小的函数。在第二种方法中,重要的是要选择一组多样化且具有代表性的数据集 – 评价任务,尽量不要过度拟合任何一个单独的基准,因为这有可能损害预训练后获得的 LLM 的通用性。
在这项工作中,团队采用了训练小模型并在一组「early-signal」基准任务上对其进行评价的方法。考虑到上述关于评价基准过度拟合的注意事项,这可以合理地代表用于训练这些模型的数据的品质。
最终,团队选择了以下几个基准:
CommonSense QA
HellaSwag
OpenBook QA
PIQA
SIQA
WinoGrande
ARC
MMLU
FineWeb 数据处理
CommonCrawl 数据有两种主要格式:WARC 和 WET。WARC(Web ARChive 格式)文件包含爬取网页的原始数据,包括完整页面 HTML 和请求元数据。WET(WARC 封装文本)文件提供这些网站的纯文本版本。
大量数据集以 WET 文件为起点。但作者认为:Common Crawl 创建这些 WET 文件的默认文本提取对于 LLM 预训练来说并不是最佳选择,有多种开源库可以提供更好的文本提取。作者团队利用 trafilatura 库从 WARC 文件中提取文本实质,从结果来看,它提供了良好的提取品质。
基础过滤
过滤是数据审编(curation)过程的重要组成部分。它包括简略部分数据(单词、文本行,甚至完整文档),这些数据会降低模型的本能,因此在作者团队评价驱动的数据集制作过程中被视为「品质较低」的数据。
作为过滤的基础,作者利用了 RefinedWeb 的部分设置,包括:
应用 URL 过滤;
应用 fastText 语言分类器,仅保留分数≥0.65 的英文文本;
应用来自 MassiveText 的品质和反复过滤器(利用默认阈值)。
作者团队将这种过滤应用于每个文本提取的转储(目前有 96 个转储)后,获得了大约 36 万亿个 token 的数据。
反复数据简略
反复数据简略是为 LLM 预训练创建大型 Web 数据集的最重要步骤之一,旨在从数据集中识别并简略冗余 / 反复的数据。
反复数据简略能够改进模型本能,并使模型更好地泛化。通过反复数据简略获得的本能提升可以等同于训练效率的提升,因为通过简略反复的实质,模型可以通过更少的训练迭代达到相同的本能水平,或者等效地,对于给定数量的训练 token,模型将看到更加多样化的数据。
经过上述几个步骤,作者团队已经实现了类似于 RefinedWeb 的数据本能,但是与 C4(Colossal Clean Crawled Corpus)数据集相比还是逊色一些。
因此,作者团队从 C4 数据集本身的处理过程开始,探索了更多过滤步骤,旨在达到并超越 C4 的本能。
最终的 FineWeb 数据集包含 15T token,主要按顺序经历如下步骤:
基础过滤
每个转储独立的 MinHash 反复数据简略
精选 C4 过滤器
自定义过滤器
FineWeb-Edu 子集
FineWeb-Edu 子集基于最近出现的一种过滤 LLM 训练数据集的新方法:利用合成数据来开发识别培养实质的分类器。
这项技术在 Llama 3 和 Phi3 的训练中得到了显著应用,但它对收集数据过滤的大规模影响迄今为止尚未得到充分的公开发掘。
Phi3 模型分别在 3.3 万亿和 4.8 万亿个 token 上进行了训练,论文中指出:
我们的训练数据包括经过严格过滤的公开收集数据(根据「培养程度」),这些数据来自各种开放的互联网资源,以及 LLM 生成的合成数据。
同样,Llama 3 博客文章也指出:
我们发现,前几代 Llama 擅长识别高品质数据,因此我们利用 Llama 2 来帮助构建文本品质分类器,为 Llama 3 提供动力。
然而,这些分类器和过滤后的数据集并未公开。团队为了进一步提高 FineWeb 的品质,利用 Llama-3-70B-Instruct 生成的诠释开发了一个培养品质分类器,创建了 FineWeb-Edu。
团队利用 Llama-3-70B-Instruct 对来自 FineWeb 的 500k 个样本进行了诠释,按照 0 到 5 的评分标准对每个样本的培养品质进行评分。 用于 Llama-3 培养分数诠释的提示。
关于用于标注数据的开放权重模型,团队尝试了多种模型,包括 Mixtral-8x7B-Instruct 和 Mixtral-8x22B-Instruct、Llama-3-70B-Instruct 以及一个收集了这三种模型分数的评审团。在实验中,他们发现仅利用 Llama3 得出的结果最为可靠。
为了将诠释扩展到 FineWeb 中的数万亿词条,团队利用 Llama3-70B 诠释来训练一个小型分类器。他们利用了「Snowflake-arctic-embed」模型,该模型带有一个分类头,上面有一个回归输出,然后在 450000 个 Llama 3 诠释上对该模型进行了 20 次训练,冻结嵌入层和编码器层。此处将 「Llama 3」诠释视为 ground-truth,保存了在 45k 个样本的保留验证集上 F1 分数最高的检查点。训练结束后,将分数四舍五入为 0 至 5 的整数。
然后,团队将问题转换为二元分类任务,利用固定阈值来确定文件是否具有培养意义。阈值为 3 时,模型在验证集上的 F1 得分为 82%,这表明它在区分高品质培养实质方面表现出色。
最后,团队进行了消融研究。以下是主要亮点:
FineWeb-Edu 超越了 FineWeb 和所有其他开放收集数据集,在培养基准(如 MMLU、ARC 和 OpenBookQA)方面取得了显著改进。
与 C4 和 Dolma 相比,它需要的 token 数量减少了 10 倍,才能与 MMLU 的结果相媲美。
这证明了利用在 LLM 诠释上训练的分类器进行大规模数据过滤的有效性。