Data Mix 指预训练中不同数据来源、语言、领域、质量层级和格式类型的采样比例。它不是简单的数据清单,而是在定义模型要学习什么、优先学习什么、以及在哪些能力上承担风险。

在 next-token prediction 中,模型优化的是训练分布上的平均 log-likelihood。因此,data mix 本质上改变了训练分布 。如果一个能力在数据中出现得少、质量低或格式不稳定,模型很难在预训练阶段稳定获得它。

数据类型与能力影响

数据类型主要贡献典型风险
Web text常识、百科、长尾知识、自然语言广度噪声、重复、SEO spam、偏见、安全风险
Books长篇叙事、篇章结构、语言质量版权、题材偏差、更新慢
Code程序结构、符号推理、工具 API、格式约束许可证、重复仓库、生成不安全代码
Math形式化表达、证明、逐步推理、符号操作规模小、格式不统一、题目泄漏
Academic papers专业知识、严谨表达、公式和引用结构PDF/OCR 噪声、领域偏差、版权
Q&A / Forum问题解决、对话式解释、实践经验低质回答、过时信息、风格污染
Multilingual data多语言能力、跨语言迁移、低资源覆盖tokenizer fertility 高、质量差异大
Synthetic data定向补足稀缺能力、可控格式模型自我污染、模式单一、错误放大
Instruction-like text指令跟随雏形、问答格式、解释风格与 post-training 边界模糊,可能引入 assistant 风格偏差

一个通用 base model 通常需要广覆盖;一个 code/math model 则会主动提高 code、math、竞赛题、证明、执行轨迹或技术文档比例。关键是要把比例与目标能力绑定,而不是照搬另一个模型的数据配方。

Mix Ratio 不是 Corpus Ratio

原始语料大小不等于训练采样比例。常见做法是先把数据分成多个 corpus 或 domain,然后定义训练时采样概率 。如果第 个数据源有 token 占比 ,可以使用温度采样:

其中:

  • 表示按原始 token 占比采样;
  • 会压平分布,提高小数据源采样比例;
  • 会更偏向大数据源;
  • 实际系统常对某些高价值或高风险数据源额外设置 cap、floor 或人工权重。

例如,代码数据在原始 corpus 中可能只占少数,但训练时可以被上采样,以增强程序能力。低资源语言也常被上采样,否则它们会被英语网页数据淹没。上采样的代价是重复 epoch 增加,过拟合和模式重复风险上升。

Quality 比 Quantity 更关键

Data mix 需要和 Quality FilteringDeduplication 联动。低质量 token 会消耗 compute,却不一定提供有效信息。

高质量数据通常具有:

  • 文档结构完整;
  • 语言自然、信息密度高;
  • 来源可信或可追溯;
  • 格式稳定;
  • 重复率低;
  • 不包含明显广告、模板、乱码和机器翻译噪声;
  • 与目标能力相关。

质量过滤也有风险。过强过滤可能让模型失去长尾知识、口语表达、多语言变化和真实用户噪声适应能力。对 safety 或 toxicity 的过滤也需要谨慎:完全删除某类内容可能降低模型识别和拒答能力,而保留过多又可能增加生成风险。

Deduplication 与 Contamination

去重影响两个层面:

  • 训练效率:重复数据会让模型反复学习相同模式,降低有效 token;
  • 评测可信度:benchmark 泄漏会让评测结果虚高。

去重至少包括 exact dedup 和 near dedup。对代码数据,还要处理 fork、vendor dependency、自动生成文件和 minified 文件。对数学和 benchmark 相关数据,需要更严格的 contamination 检查,因为题目、答案、解析或变体都可能泄漏。

需要注意,去重不是越狠越好。某些高频模板、API 用法和语言常用表达确实应该被模型多次看到。真正的问题是无信息重复和评测泄漏。

Curriculum 与 Annealing

Data mix 可以在训练过程中变化,而不是全程固定。常见策略包括:

  • 早期使用更广泛的数据,帮助模型建立通用语言和世界知识;
  • 中期提高高质量、代码、数学或目标领域比例;
  • 后期使用更干净、更高质量或更接近目标分布的数据做 annealing;
  • 在 long context 扩展阶段提高长文档、书籍、论文和多轮结构数据比例。

这种 curriculum 的直觉是:早期需要覆盖和稳定优化,后期更强调能力塑形和分布对齐。但动态 data mix 会让 scaling law 更难拟合,因为训练分布随时间变化。记录每个阶段的数据比例和 token milestone 非常重要。

多语言与 Tokenizer 耦合

多语言 data mix 不能只按文档数或字节数估计。不同语言在同一 tokenizer 下的 tokenization fertility 差异很大。某些语言会被切成更多 token,导致:

  • 训练 compute 被更多 token 消耗;
  • 单位文本的信息密度比较困难;
  • PPL 和 loss 跨语言不可直接解释;
  • 低资源语言即使文档数不少,也可能因质量和 tokenizer 不适配而表现差。

因此,多语言预训练要同时检查:

  • 每种语言的文档质量;
  • token 数、字符数和字节数;
  • fertility,即单位字符/词对应的 token 数;
  • domain 覆盖;
  • held-out multilingual validation loss;
  • 跨语言 benchmark 和翻译污染。

相关内容见 Tokenizer

Instruction-like Data 的边界

预训练语料中经常包含问答、教程、论坛、issue、README、StackExchange、notebook、代码注释等 instruction-like 数据。这些数据会让 base model 提前接触“问题-回答”“步骤解释”“代码修复”等模式,对后续 SFT 有帮助。

但 pretraining 不等于 post-training。过多 assistant-style 或 synthetic instruction 数据可能让 base model:

  • 过早形成固定对话风格;
  • 学到低质量解释模板;
  • 模仿错误答案;
  • 增加与后续 SFT/RLHF 的分布耦合;
  • 在纯 language modeling 评测上出现不可解释偏移。

比较稳妥的做法是区分自然出现的 instruction-like text、人工高质量 instruction 数据和模型生成 synthetic instruction,并分别记录比例与来源。

Data Mix 的评估

Data mix 需要用分域评测闭环,而不是只看总 validation loss。

建议至少维护:

  • general web validation;
  • books / long-form validation;
  • code validation;
  • math validation;
  • academic / technical validation;
  • multilingual validation;
  • safety / toxicity probes;
  • contamination-sensitive benchmark holdout;
  • downstream task set。

如果总 loss 改善但 code loss 变差,说明 mix 可能牺牲了代码能力。如果多语言平均 loss 正常但低资源语言很差,说明采样或 tokenizer 仍有问题。如果 benchmark 提升异常大,优先检查 contamination。

常见失败模式

  • 把更多数据等同于更好数据:名义 token 增加不一定带来有效 token 增加。
  • 忽略重复 epoch:小而高质量的数据被过度上采样后可能造成过拟合。
  • 只用总 validation loss 决策:会掩盖关键领域能力退化。
  • 混入过多低质合成数据:模型会学习模板化、错误或过窄分布。
  • 过滤策略过强:可能丢失长尾知识、真实噪声和低资源语言。
  • 数据来源不可追溯:后续无法解释能力变化、版权风险和污染问题。

相关概念