拿到一批网页后,我们可以很快统计出多少文件、多少 token,却很难立刻回答它们适不适合训练。重复页面会虚增规模,质量过滤会改变文本分布,小数据源也可能被网页淹没。数据工程的困难往往就藏在这些取舍中。我们沿着原始文本进入训练的过程,看看每一步究竟筛掉了什么、又保留了什么。
1. 数据从哪里来
预训练语料通常混合网页、书籍、论文、代码、问答、百科与多语种文本。网页覆盖广,但噪声、模板、广告和重复内容也最多;书籍和论文更完整,却可能有授权与领域偏差;代码可以提供结构化推理和工具知识,但许可证、自动生成代码与仓库重复需要单独处理。

图 1:LLaMA 3 对预训练语料清洗与去重的说明。 图引自 Stanford CS336 课程材料。
真正处理这些文件时,我们首先要得到可以使用的正文。网页导航、脚注、解析错误与正文混在一起,模型不会自动替我们区分。完成抽取后,才有语言识别、质量过滤、隐私处理、去重和配比,最后再编码、分片。各步都记录版本和数量变化,才能知道最终的数据分布是怎样形成的。
2. 质量过滤
最简单的规则过滤会检查长度、字符比例、重复行、HTML 残留、异常 Unicode、关键词和语言。规则透明、成本低,适合去掉明显垃圾;过强的规则也可能误删公式、代码、表格和少数语言。
如果规则表达不了我们想要的质量,可以准备目标文本与普通文本,训练一个分类器。但是我们得先问一句:目标文本是谁选的?正例主要来自百科和教材,分类器就容易偏爱正式说明文;这并不保证它也善于筛选对话或代码。所谓质量分数,包含了目标样本的选择偏好。

图 2:质量分类器学习的是目标数据所定义的偏好。 图引自 Stanford CS336 课程材料。
因此,单看分类器的准确率还不够。我们最终关心的是经过筛选的数据能训练出怎样的模型。DCLM 使用固定模型与预算比较数据方案,把评判放到了下游训练结果上。下图中的固定训练设置很关键,它减少了模型规模和训练量变化带来的干扰。

图 3:DCLM 从原始语料到清洗、去重与模型筛选的处理流程。 图引自 Stanford CS336 课程材料。
过滤阈值也不能脱离训练规模。数据要求过严时,小规模实验可能表现很好,大规模训练却很快把剩余高质量文本重复多遍。数据规模、训练 token 和重复轮数需要一起考虑。
3. 去重
筛出可读文本后,我们仍可能保留许多同一内容的副本。完全相同的文档很好处理:规范化空白、换行和编码后计算哈希即可。但只改一个标点,哈希就可能完全不同,镜像网页和轻微改写不会被识别。于是我们需要比较内容的相似程度。
MinHash 的出发点是用较短签名近似集合的 Jaccard 相似度:
$$J(A,B)=\frac{|A\cap B|}{|A\cup B|}$$
我们把文档切成由连续若干词或字符组成的片段,也就是 shingles,再把片段看作集合。两篇文章共有片段越多,Jaccard 相似度越高。MinHash 用多组最小哈希生成短签名,签名相同位置的比例可以估计这个相似度;LSH 再把可能相似的文档放进候选桶,省去全量两两比较。短签名带来了效率,也意味着它是近似筛选,需要合适的阈值。
去重范围也很重要。训练集内部去重减少重复记忆,跨数据源去重避免同一内容在混合语料中被重复计权,训练集与评测集之间的去重用于降低污染风险。后者不能只匹配完整文档,还要检查题目、答案和近似片段。
4. 数据配比
设第 $i$ 个数据源采样概率为 $p_i$,满足
$$p_i\ge0,\qquad\sum_i p_i=1$$
若按原始规模直接采样,大型网页源会淹没书籍、代码和低资源语言。常见做法是提高高价值小数据源的权重,或采用温度采样:
$$p_i=\frac{n_i^{\alpha}}{\sum_j n_j^{\alpha}}$$
$n_i$ 是数据源规模。我们检查两个端点就能理解 $\alpha$:取 $1$ 时按原始规模采样,趋近 $0$ 时各个非空数据源趋于等概率;中间取值则适度抬高小数据源的权重。比如两份数据规模相差 $100$ 倍,取 $\alpha=1/2$ 后,采样概率只相差 $10$ 倍。不过,上采样只是多看几次同样的数据,不能凭空增加新信息。
配比需要通过多组评测共同选择。代码、数学或某种语言得分提高,可能伴随通用语言能力下降。实际训练还会使用分阶段调度,例如前期覆盖广泛知识,后期增加高质量、长上下文或目标领域数据。
5. 合成数据
合成数据常用于补充稀缺任务、构造推理过程和覆盖模型当前的薄弱区域。一条较可靠的生产流程包括任务生成、候选回答、自动验证、质量过滤、去重、难度平衡和人工抽检。

图 4:OpenThoughts 对问题进行过滤、去重和抽样,再为每题生成多个回答。 图引自 Stanford CS336 课程材料。
我们可以让教师一次生成多个回答,但生成之后仍要筛选。数学答案、代码测试和工具 schema 提供了一些可自动检查的条件,开放文本则更依赖事实来源和人工抽样。若教师总在生成学生已经会做的题,即使通过率很高,新增训练价值也有限。因此还要观察学生错在什么地方,保留难度适当且能被可靠验证的样本。
6. 开放数据与可追踪性
Common Pile 等工作尝试构造来源和授权更清晰的开放预训练语料。公开数据集的价值不仅在于可下载,还在于能够说明每个子集从哪里来、经过哪些处理、允许怎样使用。

图 5:Common Pile 的开放数据来源。 图引自 Stanford CS336 课程材料。
这又把我们带回了最初的原始文件。某个样本进入了哪个分片、使用哪版过滤器、与哪些文档重复,都应能顺着记录查回去。来源、时间、许可证、语言和处理版本既服务于复现,也帮助处理删除请求与污染分析。只有一份最终文本,通常不足以回答这些问题。
7. 数据规模之外
所以,当我们比较两份同样大小的语料时,还应追问:它们经过什么筛选,剩下多少重复,哪些领域被上采样,合成答案又怎样验证?这些选择共同决定模型反复接触的分布。token 数只是这份分布的大小,无法单独说明它的训练价值。
参考资料:Stanford CS336 Data I 与 Data II;Dubey et al., The Llama 3 Herd of Models;Li et al., DCLM;Lee et al., Deduplicating Training Data Makes Language Models Better。