【202411】Zyda-2:一个包含五万亿标记的高质量数据集
关注几个问题:
- 通过交叉混合几个公开数据集制作更高质量的数据集;
- 数据集中的文档去重到底有用吗?模型过滤呢?
- 交叉去重时候使用的方案:基于词袋的哈希计算相似度、构建无向图生成聚类。
论文基本信息
-
标题:Zyda-2: a 5 Trillion Token High-Quality Dataset
-
标题中文翻译:Zyda-2:一个包含 5 万亿标记的高质量数据集
-
作者:Yury Tokpanov, Paolo Glorioso, Quentin Anthony, Beren Millidge
-
发表时间:2024 年 11 月 9 日
-
发表地址:arXiv(论文链接)
-
互联网能查到的资料:该论文由 Zyphra 公司的研究团队撰写,介绍了 Zyda-2 数据集的构建过程及其在语言模型预训练中的应用。Zyda-2 是一个包含 5 万亿标记的高质量数据集,用于训练 Zamba2 系列模型,并在多个参数规模上达到了当前的最佳性能。该数据集在 Hugging Face 上以开放许可的形式发布。
-
摘要中文翻译: 本文介绍了一个用于语言模型预训练的五万亿标记数据集 Zyda-2。Zyda-2 用于训练我们 Zamba2 系列模型,这些模型在其权重类别中达到了最先进的水平。我们通过收集高质量的开源标记(如 FineWeb 和 DCLM),然后通过跨数据集去重和基于模型的质量过滤,提取出最高质量的子集来构建 Zyda-2。Zyda-2 以开放许可的形式发布,可在 Hugging Face 上找到。
- 五万亿标记:5T token。
- 这算数据集(语料库)层面的刷榜吗?
论文速读报告
研究背景
随着语言模型的发展,训练数据的质量和规模成为影响模型性能的两大关键因素。早期模型如 GPT-3 主要依赖于从 Common Crawl 粗略筛选的网络数据,而近年来,数据集的多样性和过滤去重的重要性逐渐被重视,例如 The Pile 和 FineWeb 等数据集。同时,预训练数据集的规模也在急剧扩大,从几百亿标记增长到万亿级别。为了使开源模型与闭源模型保持竞争力,开源数据集需要在质量和规模上不断提升。Zyphra 公司致力于开发高质量、高效的小型语言模型,特别关注在消费级和边缘设备上的应用,因此构建高质量的预训练数据集成为其重要任务。
研究目的
本文旨在介绍 Zyda-2 数据集的构建过程及其在语言模型预训练中的应用。Zyda-2 是一个包含 5 万亿标记的高质量数据集,用于训练 Zamba2 系列模型,并在多个参数规模上达到了当前的最佳性能。该数据集通过整合现有的高质量开源数据集,并通过去重和基于模型的过滤进一步提升数据质量。
研究方法
数据集构建
Zyda-2 的构建基于以下数据源:DCLM-baseline-1.0、FineWeb-Edu-score2、Zyda-1 和 Dolma v1.7 的 Common Crawl 部分(Dolma-CC)。整个构建过程分为两个阶段:(站在巨人的肩膀上构建数据集,这些数据集基本都是Common Crawl数据源加工的)
-
跨数据集去重:使用近似 minhash LSH 去重技术,设置参数为 128 位签名、基于字符的 25-gram 签名,分为 8 组,Jaccard 相似度阈值约为 85%。通过构建无向图找到重复文档的簇,并根据数据集的优先级(FineWeb-Edu2 > DCLM > Zyda-1 > Dolma-CC)选择保留的文档。去重后,Zyda-2 总标记数减少了约 11%。
(去重这部分有些花活,所谓跨数据集去重,就是数据混合之后还带着数据源标签。文档的命运,要看自身也要看出身。)
-
基于模型的过滤:仅对 Zyda-1 和 Dolma-CC 应用基于模型的过滤,因为这两个数据集未经过类似过滤。使用 NeMo Curator 提供的 quality-classifier-deberta 模型进行过滤,实验表明保留高质量的 10%-20% 文档显著提升了模型性能。
(NeMo是英伟达开发的框架,覆盖大模型数据制备到训练的全流程,NeMo Curator是其中的数据制备工具。作者是认为其他模型再用一次模型过滤会错杀样本吗?)
性能评估
为了评估 Zyda-2 的性能,作者采用了“退火”训练方法,即在大规模数据上以较慢的学习率训练,然后在高质量数据集上快速调整学习率。通过在 Zamba2-2.7B 模型上进行退火实验,Zyda-2 在多个语言建模基准测试中表现出色,优于其组件数据集。
关键结论
-
数据集规模与质量:Zyda-2 包含 5 万亿标记,是目前规模最大的高质量开源数据集之一。其主要成分来自 DCLM 和 FineWeb-Edu,分别占比约 50%。
-
去重与过滤效果:跨数据集去重和基于模型的过滤显著提升了数据集的质量。特别是对于未经过类似过滤的数据集(如 Zyda-1 和 Dolma-CC),基于模型的过滤能够显著提升模型性能。
-
性能表现:Zyda-2 在多个语言建模基准测试中优于其他领先数据集,特别是在 MMLU 和 ARC 任务中表现突出。
-
数据集权重优化:通过实验发现,调整组件数据集的权重(如增加 FineWeb-Edu 的权重)可以进一步提升性能,而完全移除 Zyda-1 和 Dolma-CC 则会降低性能,说明这些数据集为 Zyda-2 提供了必要的多样性。
(也算一种数据混合研究)
研究意义
Zyda-2 的构建为开源语言模型的预训练提供了高质量、大规模的数据支持,有助于缩小开源模型与闭源模型之间的性能差距。此外,该研究还为数据集的去重和过滤提供了新的思路和方法,特别是在基于模型的过滤方面,展示了其在提升数据质量方面的潜力。
引言
决定语言模型质量的两个主要因素是用于训练它的数据集的质量和规模。对于数据质量,像 GPT-3(Brown 等人,2020 年)这样的初始模型纯粹是在从 Common Crawl 粗略筛选的网络数据集上训练的。从那时起,通过数据源的多样性以及过滤和去重的重要性来提高质量,已经被数据集如 The Pile(Gao 等人,2020 年)和 FineWeb(Penedo 等人,2024 年)所倡导。用于预训练的数据集的规模也急剧增加:GPT-3(Brown 等人,2020 年)仅在几百亿标记上训练,而当前更小的模型则在数万亿标记上训练。一个例子是 Llama3-8b(Meta,2024 年),它在 15 万亿标记上训练。为了使开源模型与闭源模型保持同步,开源数据集也需要在质量和规模上保持竞争力。为了满足对开源、大规模和高质量数据集的需求,出现了复杂的数据管道,这些管道可以抓取、过滤、去重和混合数据源。开源数据集一直是模型质量的关键驱动力,C4(Raffel 等人,2020 年)和 The Pile(Gao 等人,2020 年)是第一个足够大的开源语言建模数据集,可以作为预训练数据集。更近期的数据集如 Dolma(Soldaini 等人,2024 年)和 RefinedWeb(Penedo 等人,2023 年)增加了额外的句法过滤和去重,提高了它们的质量。最近的趋势是使用小型分类器模型进行句法过滤。例如,过滤一些“教育内容”的代理在 Phi(Abdin 等人,2024 年)系列模型中取得了很好的效果——尽管大多数细节未公开——似乎利用了大量过滤和大量合成数据生成。利用这种基于模型的过滤方法的开源数据集包括 FineWeb-Edu(Penedo 等人,2024 年)和 DCLM(Li 等人,2024 年),它们的表现与以前的数据集相比非常好。
在 Zyphra,我们的一个关键优先事项是为给定的参数预算生产最高质量的模型,特别关注小型、功能强大的模型,这些模型可以廉价地自动化许多任务,并可以在消费级和边缘设备上使用。这推动了我们在模型架构(Glorioso 等人,2024 年;Anthony 等人,2024 年)方面的创新,并且也需要关注构建强大的预训练和退火数据集,以最大化训练期间每个 FLOP 和每个参数的性能。对于小型模型来说,高质量数据集似乎尤其重要,因为它们有更少的总容量,因此在训练数据集中受到大量噪声或低质量标记的影响更大。
我们创建数据集的一般方法是收集所有公开可用且表现优异的开源数据集,并通过去除重复项和添加额外的过滤步骤进一步提高其质量。然后我们对结果数据集进行加权,以获得符合我们训练预算的最高质量子集。我们以前使用这种方法构建的数据集是 Zyda-1(Tokpanov 等人,2024 年),它用于训练 Zamba1-7B(Glorioso 等人,2024 年)。Zyda-1 在当时超过了所有主要的语言建模数据集,如 Dolma-1.6(Soldaini 等人,2024 年)、FineWeb(Penedo 等人,2024 年)和 RefinedWeb(Penedo 等人,2023 年)。然而,自那时以来,已经发布了利用基于模型的过滤的新数据集,这些数据集显著提高了性能并超越了 Zyda-1。对于 Zyda-2,我们的目标是显著提高数据集的规模和质量,超越 Zyda-1,使我们能够达到小型语言模型性能的前沿。
Zyda-2 被用来训练我们的 Zamba2 系列模型(Glorioso,2024 年),这些模型在所有 1.2B、2.7B 和 7B 参数范围内都实现了最先进的性能,击败了强大的可比模型,如 Meta 的 Llama3 系列(Meta,2024 年)和 Google 的 Gemma 系列(Gemma Team 等人,2024 年)。因此,Zyda-2 提供了关于当前达到性能前沿所需的预训练数据集的重要信息。
Zyda-2 在 Hugging Face 上以开放许可(ODC-BY)发布,可以在 Hugging Face 上找到。
数据集构建
Zyda-2 是基于以下数据源构建的:DCLM-baseline-1.0(简称 DCLM)、FineWeb-Edu-score-2(简称 FineWeb-Edu2)、Zyda-1 以及 Dolma v1.7 的 Common Crawl 部分(简称 Dolma-CC)。我们选择了 FineWeb-Edu2 版本的 FineWeb-Edu,以便拥有更大的初始文档池。这些数据集经过了两阶段的流程:所有数据集之间的交叉去重阶段,然后是对 Zyda-1 和 Dolma-CC 数据集应用基于模型的过滤阶段(见图 1)。
(概念:初始文档池)
交叉去重
鉴于所有公开数据集最终都来源于类似的 Common Crawl 抓取,我们预计它们包含大量重复文档。去重通常被认为可以提高语言建模性能(Lee 等人,2021 年),尽管最近的论文声称其效果可能是中性的,甚至在错误的环境中可能是负面的(Li 等人,2024 年)。我们在我们的去重流程中使用了近似的 minhash LSH 去重,参数如下:基于字符的 25-gram 签名计算的 minhash,签名大小为 128,并分为 8 个带,给出大约 85% 的 Jaccard 相似度阈值。然后我们构建了一个无向图,节点是文档,边是重复项,并找到了其中的连通分量,这为我们提供了重复项的簇。从每个簇中,我们选择顶部文档保留并移除了其余的。我们根据以下数据集的排名选择保留的文档:FineWeb-Edu2 > DCLM > Zyda-1 > Dolma-CC;也就是说,在选择保留的文档时,我们保留了排名最高的数据集中的一个。正如预期的那样,我们发现跨数据集有大量的重复文档,这导致 Zyda-2 相比其组件数据集总共移除了大约 11% 的标记(或 13% 的文档)。此外,我们对 DCLM 和 FineWeb-Edu 进行了完整的内部数据集去重,因为我们发现这两个数据集都包含大量的内部重复项(大约 80%)。DCLM 和 FineWeb-Edu 的论文声称内部数据集去重没有改善他们的结果,因此他们没有进行完整的去重或发布去重版本的数据集。在我们的初步消融实验中,我们部分证实了他们的结果,即这种去重只有很小的影响。这引发了未来的研究问题:1)什么时候重复是有害的,什么时候不是?2)为什么模型似乎对训练重复数据具有鲁棒性?
(注意:文档去重可能造成负面影响(相关文献)。去重是否有必要,对于发布数据集而言可能不重要,但是训练还要考虑效率)
去重原理(哈希):近似 minhash LSH 去重是一种高效的去重策略,适用于处理大规模数据集。它通过将文档压缩为签名,利用局部敏感哈希(LSH)高效缩小搜索空间,从而快速定位潜在的重复对。MinHash 通过将文档切片集合压缩为固定长度的签名向量,近似估算 Jaccard 相似度,从而大幅降低计算开销。LSH 则使用特殊的哈希函数,让相似的项更可能落入同一个桶(bucket),而不相似的项则不会。这种方法在大规模文档集合中找出重复项时,能够兼顾效率与效果。
目前,已有一些库和工具实现了近似 minhash LSH 去重。例如,Milvus 2.6 版本集成了 MinHash LSH 索引方案,支持在 Milvus 中进行近似去重操作。Milvus 2.6 提供了原生 MinHash LSH 索引,实现了标准的 banding(条带划分)策略,并支持可选的 Jaccard 重排序以提升召回率。用户可以通过标准 SDK 或声明式 API 定义 MinHash 类型的向量字段,构建 MINHASH_LSH 索引,插入签名向量,并执行近似相似性搜索。 Milvus week 的公众号文章,发布MinHash LSH。
(去重使用的基于词袋模型的哈希算法计算相似度,再通过无向图构建聚类,有别于通过词嵌入聚类的方法,速度应该更快。)
基于模型的过滤
第二阶段的处理是模型基础过滤。我们只对 Zyda-1 和 Dolma-CC 应用了模型基础过滤。这是因为 Zyda-1 和 Dolma-CC 过滤较少,包含更多种类的互联网文档,这些文档并非都是为了教育目的而设计的。然而,DCLM 和 FineWeb-Edu 已经在创建过程中作为核心组件进行了重大的质量过滤,实际上我们没有观察到从我们的训练消融中进行额外过滤的好处。在这一步,我们尝试了 NeMo Curator(Nvidia,2024 年)提供的 quality-classifier-deberta 模型。我们将此模型应用于 Zyda-1 和 Dolma-CC,并尝试了移除“低”质量文档或仅保留“高”质量文档。在一项消融研究中,我们训练了一个 1.4B 参数的变压器 50B 标记,我们发现仅保留最高质量的 10-20% 的文档显著提高了 Zyda-1 和 Dolma-CC 的模型性能(见图 2),而仅移除“低”质量文档的效果较小。这种性能提升可能是因为这些数据集没有通过类似的分类器预先过滤,并表明即使这两个数据集已经经过了彻底的句法过滤,使用基于模型的质量分类器仍然可以获得显著的增益。然而,重新过滤已经过滤的数据集(如 DCLM)提供的增益可以忽略不计。作为额外步骤,我们根据其教育分数过滤了 FineWeb-Edu2。这个步骤基本上将其转换为 FineWeb-Edu,这是 FineWeb-Edu2 的一个更高质量的子集,包括基于 FineWeb-Edu 质量过滤模型得分较高的样本。这种评分方法在创建 FineWeb-Edu 期间进行的消融中产生了最佳性能。值得注意的是,我们在对 DCLM 和 FineWeb-Edu2 进行交叉去重后应用了这种过滤,这涉及到消除 DCLM 中所有被认为与 FineWeb-Edu2 重复的样本。这一系列步骤间接地将 FineWeb-Edu 质量分类器应用于 DCLM,有效地移除了 DCLM 中教育内容较低的样本。
Kimi:在论文中提到的“为教育目的而设计”的文档,指的是那些专门为教育、学习和知识传递目的创建的内容。这类文档可能包括学术文章、教育课程材料、教科书、教学指南、科学论文、教育博客文章等,它们通常具有高质量、信息丰富、结构化良好的特点,旨在帮助人们获取知识或技能。
- Zyda-1和Dolma-CC如何做句法过滤(应该是语法过滤吧?),通过模型判断语法吗?
- 保留10-20%高质量文档就能提高性能?
- 重复做模型过滤提升忽略不计,可以理解。
- 作者还是对FineWeb-Edu数据进行了过滤,使用的教育分数是数据自带的吗?
- 所谓间接将FineWeb-Edu质量分类器应用于DCLM,是指交叉去重的时候FineWeb-Edu的优先级更高,所以两个数据集中重复的文本在后续应用FineWeb-Edu教育评分的时候被过滤了一遍。
组成
按照我们上面描述的数据集处理步骤,结果是一个总共包含大约五万亿标记的数据集。每个步骤中移除的标记数在表 I 中呈现。此外,图 3 显示了总数据集由每个组件数据集组成的分数。
表 I:Zyda-2 在处理的每个步骤中的标记数(GPT-Neox 分词器),从初始数据集收集到交叉去重,然后是模型基础过滤。FW-Edu 的标记数保持不变,因为它被视为“最高排名”去重数据集。
(Zyda-2纯粹通过多数据源混合、去重、过滤制作,Zyda-1的制作过程不知道怎样。)
数据集统计(以十亿标记计)
开始 交叉去重 过滤
DCLM 3.850 3.348 3.348 Dolma-CC v1.7 1.209 0.969 0.238 Zyda-1 1.056 0.937 0.163 FineWeb-Edu 1.319 1.319 1.319
总计 7.434 6.573 5.068
大多数文档来自 DCLM,这是预期的,因为它比其他数据集大得多。
图 4:Zyda-2 与其他数据集的性能比较,作为聚合加权评估分数。该分数是 MMLU、Hellaswag、PIQA、OpenBookQA、Arc-Challenge、Arc-Easy 和 Winogrande 的平均值。这些分数是通过在每个数据集上对 Zamba2-2.7B 的基础版本进行大约 40B 标记的退火获得的。
图 5:使用最佳加权的 Zyda-2 组件数据集的比例。FineWeb-Edu 和 DCLM 各自占数据集的大约相同总比例。
第二大的数据集是 FineWeb-Edu,它大约占数据集的四分之一,而 Zyda-1 和 Dolma-CC 的贡献较小。
性能
在没有训练大规模模型的情况下严格评估数据集的质量是具有挑战性的,这在每次实验中都需要大量的计算资源。一种典型的替代方法是在数据集的小片段上训练小型模型(例如,在 50 亿标记上训练一个 3 亿参数模型),然后比较这些模型的评估性能。这种方法被大多数最近发布的数据集采用。这种方法的优点是现在即使在相对有限的资源下,也可以运行许多消融实验,但许多标准评估对于小型模型和低标记计数(例如,MMLU 对于这样的模型保持在偶然水平)并不显示强烈的信号。另一种方法是利用最近流行的退火方法来训练大型语言模型(LLMs)(Hu 等人,2024 年;Parmar 等人,2024 年;Glorioso 等人,2024 年),这涉及到在大量数据上以相对较慢的学习率衰减训练 LLM,然后在高质量数据集上快速学习率衰减。Blakeney 等人(2024 年)提出利用退火阶段作为测试不同数据集性能的方法。虽然不需要比从头开始训练小型模型更多的计算资源,但退火使已经训练的大型基础模型能够使用,这些模型可以在重要的评估指标上显示信号,如 MMLU。我们遵循这种方法,并且在使用退火而不是从头开始训练小型模型时,在数据集消融中观察到更多的信号。我们在 Zamba2-2.7B 模型的预退火检查点上进行我们的退火消融(Glorioso,2024 年),我们运行了大约 40 亿退火标记。由于我们的预退火 Zamba2-2.7B 模型在 MMLU 上明显高于偶然水平,并且已经在大约 3 万亿标记上进行了高度训练,我们在所有标准消融中观察到一个清晰的信号,并且在数据集组成变化时评估分数的敏感性更高。我们观察到 Zyda-2 在聚合评估分数方面优于当前领先的数据集,并且比其任何组件数据集都表现得更好。这既是由于我们的额外过滤和去重流程,也是由于添加更多种类的数据源的集成效应,这提高了整体性能和鲁棒性,而不是任何一个特定数据集。
- (50亿标记=5B Token,3亿参数模型=0.3B参数模型,BERT-Base参数量:0.11B;BERT-Large、RoBERTa参数量:0.34B)
- 小模型评估的问题就是不一定能代表大模型效果。“MMLU结果保持在偶然水平”?意思应该是不稳定。
- 使用退火方法评估数据集不是从头训练模型。没看明白作者退火实验的具体流程,40亿标记的数据是前期训练还是全部?
子集加权
为了进一步提高性能,我们研究了 Zyda-2 组件数据集的最佳加权。我们使用前面描述的退火方案进行了一系列实验来确定这一点。我们发现,每个数据集根据其总标记数进行加权的统一加权方案是次优的。相反,增加 FineWeb-Edu 的权重,使其与 DCLM 的比例相等,超过了统一加权方法的性能。通过这种加权,由于它们的大小较小,Zyda-1 和 Dolma-CC 总共占总数据集的大约 5%。然而,我们发现完全移除 Zyda-1 和 Dolma-CC 会恶化性能,这表明尽管它们的总标记数较小,但添加这些数据集为 Zyda-2 数据集带来了急需的多样性。
- 这种加权看起来依靠经验和观察。
讨论
在本文中,我们介绍了 Zyda-2 数据集,它在许多语言评估中取得了领先的性能。拥有 5 万亿标记,Zyda-2 非常适合大规模预训练。Zyda-2 主要关注自然语言能力,对于通用语言模型,我们建议增加专门的数据集,特别是对于编码、数学推理以及任何其他所需的特定能力。我们通过收集最好的现有开源数据集并应用两阶段过程:交叉去重和基于模型的过滤来构建 Zyda-2。
我们发现,基于模型的过滤显著提高了现有未过滤数据集的性能,而对已经过滤的数据集影响不大,表明对已经过滤的数据集进行额外的教育质量过滤没有帮助。在对 DCLM 和 FineWeb-Edu 进行去重时,我们发现这两个数据集都包含大量的内部重复项。这一结果引发了几个有趣的问题。首先,不清楚为什么移除重复项不会提高性能。这意味着具有大量相同标记的文档提供了与来自相同分布的新标记大致相同的益处。我们或许可以将高度重复的数据集(如 FineWeb-Edu)视为在更小的去重数据集上执行 2-5 次打乱运行,这意味着在这些规模上,少量的周期不会特别损害语言模型性能。然而,这种效果可能在更大的规模上不成立,因为语言模型在记忆训练数据集时更具样本效率,因此需要更多的正则化来对抗过拟合。
- 没明白,意思是训练小模型的时候可以通过打乱顺序的重复训练模拟不去重训练的效果(说明训练周期epoch低没关系,数据量够就行);但是大模型不行,因为会有效记忆训练集内容,需要正则化对抗(所以大模型不需要数据去重训练?)。
另一方面,可以提出一个论点,即重复更多的样本可能质量更高,尽管在查看这些高度重复的样本时我们对此表示怀疑,因为大多数似乎与网站的常见前言或其他特征有关。如果这是真的,那么不清楚为什么早期结果显示去重(Lee 等人,2021 年)有积极效果。一个可能的假设是,早期数据集在去重时提高了性能,因为它们没有像 DCLM 和 FineWeb-Edu 那样被基于模型的分类器强烈过滤,因此去重步骤可能只是移除了许多在未过滤的网络数据中经常出现的低质量垃圾文档。在更严格过滤的数据集中,这种效果的幅度可能会减少。然而,我们注意到 DCLM 中的大重复簇仍然包含低质量文档:DCLM 中最常见的重复确实是一个垃圾信息。此外,我们注意到在所谓的重复数据上,质量过滤模型分配的分数往往差异很大,尽管文本差异非常小。这可能表明这些分类器的相对缺乏鲁棒性,或者去重步骤中存在大量假阳性。基于“教育质量”的基于模型的质量过滤,如 FineWeb-Edu 和 DCLM 所执行的,至少在常用的语言建模基准测试(如 MMLU 和 ARC 任务)上显著提高了语言建模性能,这是我们观察到最大增加的地方。关于模型基础过滤可以如何进一步改进的问题仍然存在。合成数据(Abdin 等人,2024 年),包括现有数据集的增强(Maini 等人,2024 年),显示出相当大的潜力(Maini 等人,2024 年),使用其他过滤方法,如语言建模困惑度(Ankner 等人,2024 年)也是如此。
- 作者提到的问题:去重到底有用没有?有用可能是没做质量过滤,恰好过滤了低质量文本;但是DCLM这种过滤了的也有大量低质量重复文本,而DCLM的实验表示去重用处不大;数据集质量分类器的作用也需要被质疑,因为在相似文本上的表现有时差异巨大。
浙公网安备 33010602011771号