一、预训练数据
截止到23年底。
1.网页数据清洗
1.个人身份信息和安全性过滤:设计过滤器,会删除根据多种Meta安全标准被评定为有害的域名,以及已知包含成人内容的域名。
2.文本提取和清洗:处理未截断的网页文档的原始HTML内容,以提取高质量且多样的文本。
构建了一个自定义解析器,提取HTML内容,并优化以精确去除样板内容和最大限度地保留正文内容。发现与纯文本相比,markdown会对主要训练于网络数据的模型性能产生不利影响,因此我们移除了所有的markdown标记。
3.去重处理。我们在URL、文档和行级别进行了多轮去重处理:
- URL级去重:我们在整个数据集上进行URL级去重。对于每个URL对应的页面,我们保留最新版本。
- 文档级去重:我们在整个数据集上进行全局MinHash(Broder, 1997)去重,以移除近似重复的文档。
- 行级去重:我们进行了类似于ccNet(Wenzek等,2019)的积极行级去重。在每30M文档的分区中,我们移除出现超过6次的行。尽管我们的人工定性分析表明,行级去重不仅移除了各种网站的剩余样板内容,如导航菜单、Cookie警告,还移除了频繁出现的高质量文本,但我们的实证评估显示,去重带来了显著的改进。
4.启发式过滤。我们开发了一些启发式方法来移除额外的低质量文档、异常值以及含有过多重复内容的文档。以下是一些启发式方法的例子:
- 重复n-gram覆盖率:我们使用重复n-gram覆盖率(Rae等,2021)来移除包含重复内容的行,例如日志记录或错误消息。这些行可能很长且独特,因此无法通过行级去重过滤掉。
- “脏词”计数:我们使用“脏词”计数(Raffel等,2020)来过滤出未被域名阻止列表覆盖的成人网站。
- 令牌分布的Kullback-Leibler散度:我们使用令牌分布的Kullback-Leibler散度来过滤掉那些包含过多异常令牌的文档,这些文档的令牌分布与训练语料库的分布相比存在显著差异。
5.基于模型的质量过滤。我们还尝试应用各种基于模型的质量分类器来选择高质量的标记。这些分类器包括训练识别给定文本是否会被维基百科引用的快速分类器(如fasttext,Joulin等,2017,Touvron等,2023a),以及更为计算密集的基于Roberta的分类器(Liu等,2019a),这些分类器训练自Llama 2的预测结果。
为了基于Llama 2训练质量分类器,我们创建了一个经过清理的网页文档训练集,描述质量要求,并指示Llama 2的聊天模型判断这些文档是否满足这些要求。出于效率考虑,我们使用DistilRoberta(Sanh等,2019)为每个文档生成质量评分。我们通过实验评估了各种质量过滤配置的效果。
6.代码和推理数据。类似于DeepSeek-AI等(2024),我们构建了特定领域的管道来提取与代码和数学相关的网页。具体来说,代码和推理分类器都是DistilledRoberta模型,训练数据由Llama 2注释的网页数据组成。与上面提到的一般质量分类器不同,我们进行了提示调整,以目标为包含数学推理、STEM领域推理以及与自然语言交织在一起的代码的网页。
由于代码和数学的令牌分布与自然语言的令牌分布存在显著差异,这些管道实施了特定领域的HTML提取、自定义文本特征和启发式过滤。
7.多语言数据。类似于我们前面描述的英文处理管道,我们实现了过滤器,以移除可能包含个人身份信息(PII)或不安全内容的网站数据。我们的多语言文本处理管道具有以下几个独特特征:
- 语言识别:我们使用基于fasttext的语言识别模型将文档分类为176种语言。
- 去重处理:对每种语言的数据进行文档级和行级的去重处理。
- 语言特定过滤:应用语言特定的启发式方法和基于模型的过滤器来移除低质量文档。
此外,我们使用基于多语言Llama 2的分类器对多语言文档进行质量排序,以确保优先处理高质量内容。通过实验确定用于预训练的多语言标记数量,平衡模型在英文和多语言基准测试上的性能。
2.数据类型配比
为了获得高质量的语言模型,必须仔细确定预训练数据混合中不同数据来源的比例。我们确定这种数据混合的主要工具是知识分类和缩放定律实验。
知识分类。我们开发了一个分类器来分类我们的网络数据中包含的信息类型,以更有效地确定数据混合。我们使用这个分类器对在网络上过度代表的数据类别进行降采样,例如艺术和娱乐。
数据混合的缩放定律。为了确定最佳的数据混合比例,我们进行缩放定律实验,在这些实验中,我们在数据混合上训练若干小模型,并用它来预测大模型在该混合上的表现(见第3.2.1节)。我们对不同的数据混合重复此过程多次,以选择一个新的数据混合候选者。随后,我们在这个候选数据混合上训练一个更大的模型,并评估该模型在几个关键基准上的表现。
数据混合概述。我们的最终数据混合大约包含50%的通用知识标记,25%的数学和推理标记,17%的代码标记,以及8%的多语言标记。
3.退火数据
在预训练的最后4000万个标记时,我们将学习率线性退火至0,同时保持上下文长度为128K标记。在这个退火阶段,我们还调整了数据混合比例,以上采样非常高质量的数据源;详见第3.1.3节。最后,我们在退火过程中计算模型检查点的平均值(Polyak (1991) 平均),以生成最终的预训练模型。
二、后训练数据
1.数据清洗
在早期轮次中,我们观察到数据中存在一些常见的不良模式,例如过度使用表情符号或感叹号。因此,我们实施了一系列基于规则的数据移除和修改策略,以过滤或清理问题数据。例如,为了缓解过度道歉的语调问题,我们识别了过度使用的短语(如“对不起”或“我道歉”),并在数据集中仔细平衡此类样本的比例。
2.数据修剪
我们还应用了一系列基于模型的技术来移除低质量的训练样本,并提升整体模型性能:
-
主题分类:我们首先将Llama 3 8B微调为一个主题分类器,并对所有数据进行推理,将其分类为粗粒度的类别(如“数学推理”)和细粒度的类别(如“几何和三角学”)。
-
质量评分:我们使用奖励模型和基于Llama的信号来为每个样本获取质量评分。对于基于RM的评分,我们将RM评分前四分之一的数据视为高质量。对于基于Llama的评分,我们提示Llama 3检查点对每个样本进行评分,针对通用英语数据使用三点评分尺度(准确性、指令遵循和语气/呈现),针对代码数据使用两点评分尺度(错误识别和用户意图),并将获得最高分的样本视为高质量。RM和基于Llama的评分之间存在较高的不一致率,我们发现结合这些信号在内部测试集上能获得最佳的召回率。最终,我们选择被RM或基于Llama的过滤器标记为高质量的样本。
-
难度评分:因为我们也希望优先处理对模型而言更复杂的例子,我们使用两种难度度量来评分数据:Instag(Lu等,2023)和基于Llama的评分。对于Instag,我们提示Llama 3 70B对SFT提示进行意图标记,更多的意图意味着更复杂。我们还提示Llama 3用三点评分尺度来衡量对话的难度(Liu等,2024c)。
-
语义去重:最后,我们进行语义去重(Abbas等,2023;Liu等,2024c)。我们首先使用RoBERTa(Liu等,2019b)对完整对话进行聚类,并在每个聚类内按质量分数×难度分数排序。然后通过遍历所有排序后的例子进行贪婪选择,仅保留与聚类中已看到的例子的最大余弦相似度小于阈值的例子。