5.4 预训练数据:规模定律与数据质量的博弈

模型架构和训练目标固然重要,但决定预训练模型能力上限的还有一个关键要素——数据。近年来的实践表明,数据的规模和质量对模型性能的影响可能比架构创新更大。

5.4.1 规模定律的发现

2020 年,Kaplan 等人在 OpenAI 发表的论文中揭示了一个深刻的实验规律:模型性能(以交叉熵损失衡量)与模型参数量 $N$、数据量 $D$ 和计算量 $C$ 之间存在平滑的幂律关系。

L(N)NαN,L(D)DαD,L(C)CαCL(N) \propto N^{-\alpha_N}, \quad L(D) \propto D^{-\alpha_D}, \quad L(C) \propto C^{-\alpha_C}

这意味着模型越大、数据越多、训练越充分,性能就越好——且这种改善是可预测的、连续的。

2022 年,DeepMind 的 Chinchilla 论文进一步修正了这一认识,提出了计算最优的原则:给定固定的计算预算,模型参数量和训练数据量应该同比例增长。 Chinchilla 表明,许多大模型实际上是“过大欠训练”的——用更少的参数配合更多的训练数据,可以用同样的计算预算获得更好的性能。

然而,近年来的开源模型实践对 Chinchilla 定律提出了新的拓展与挑战:

  • DeepSeek 对 Chinchilla 定律的挑战:DeepSeek-V3 等模型的实践证明,“过度训练小模型”(即用远超 Chinchilla 最优比例的数据训练较小模型)在推理成本受限时是更优策略。较小模型在部署时的日常推理成本远低于大模型,因此在训练阶段投入过量计算资源榨干其能力上限,具有极高的经济效益。

  • Llama 3 的数据策略:Llama 3 使用了高达 15T 词元的数据进行训练,这一数据量远超 Chinchilla 预测的最优量。这一策略深刻验证了数据充分性的重要性,证明了小模型(如 8B 参数)在海量优质数据的训练下,性能提升的潜力远未触板。

下面的代码绘制了规模定律的典型 log-log 曲线,帮助读者直观理解“增大模型或数据量带来的性能改善是可预测的、幂律衰减的”:

import torch
import matplotlib.pyplot as plt

# 模拟 Scaling Law 的幂律关系 L(x) = a * x^(-alpha) + L_inf
fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# 左图:L(N)——损失随模型参数量的变化
N = torch.logspace(7, 11, 200)  # 10M 到 100B 参数
alpha_N = 0.076
L_inf_N = 1.69
a_N = 8.8
L_N = a_N * N ** (-alpha_N) + L_inf_N

axes[0].loglog(N.numpy(), L_N.numpy(), "b-", linewidth=2)
axes[0].set_xlabel("模型参数量 N")
axes[0].set_ylabel("交叉熵损失 L(N)")
axes[0].set_title("(a)损失随模型规模的幂律下降")
axes[0].grid(True, alpha=0.3, which="both")
axes[0].set_xlim(1e7, 1e11)

# 右图:L(D)——损失随训练数据量的变化
D = torch.logspace(8, 13, 200)  # 100M 到 10T 词元
alpha_D = 0.095
L_inf_D = 1.69
a_D = 5.0
L_D = a_D * D ** (-alpha_D) + L_inf_D

axes[1].loglog(D.numpy(), L_D.numpy(), "r-", linewidth=2)
axes[1].set_xlabel("训练数据量 D(词元数)")
axes[1].set_ylabel("交叉熵损失 L(D)")
axes[1].set_title("(b)损失随数据规模的幂律下降")
axes[1].grid(True, alpha=0.3, which="both")
axes[1].set_xlim(1e8, 1e13)

plt.tight_layout()
plt.savefig("scaling_law_curves.png", dpi=150)
plt.show()

图 5-1:规模定律的幂律曲线(log-log 坐标)

在 log-log 坐标下,幂律关系表现为近似直线——这正是规模定律的核心特征。左图展示了损失随模型参数量增长而平滑下降的趋势:从 1000 万参数到 1000 亿参数,损失持续降低,且降幅逐渐减小。右图展示了类似的数据规模效应。两条曲线都不会降到零,而是渐近趋向一个不可约的下限 $L_\infty$(约为 1.69),这代表了当前建模范式的理论极限。

5.4.2 数据来源与构建

大语言模型的预训练数据通常来自多种来源:

  • 网页抓取:Common Crawl 等项目提供了数万亿词元的网页文本,是最大的数据来源

  • 书籍:提供高质量、连贯的长文本

  • 学术论文:提供专业知识和科学推理

  • 代码:GitHub 等平台的代码数据,显著提升模型的编码和逻辑推理能力

  • 百科全书:Wikipedia 等提供结构化的事实知识

  • 社交媒体与论坛:提供对话风格的文本

5.4.3 数据质量的关键影响

规模虽重要,但并非唯一决定因素。数据质量通过多个维度影响模型能力:

去重(Deduplication):训练数据中大量重复的文本会导致模型过拟合这些内容,降低泛化能力。去重是预处理的关键步骤。

过滤(Filtering):低质量内容(如乱码、重复模板、垃圾网页)需要被过滤掉。许多团队使用分类器(甚至用已有的语言模型)来评估文本质量。

领域混合比例(Domain Mixture):不同来源的数据(网页、书籍、代码等)的混合比例显著影响模型的能力分布。增加代码数据的比例被发现能提升推理能力,即使对非代码任务也有帮助。

数据污染(Data Contamination):如果评估基准的测试数据出现在训练集中,评估结果会被人为抬高。防止数据污染是保证评估有效性的重要环节。

5.4.4 词元化的影响

不同的词元化(Tokenization)策略直接影响模型的有效训练长度和跨语言能力。例如,以英语为主训练的 BPE 分词器在处理中文时,每个汉字可能被拆分为多个词元,导致中文文本占用了更多的上下文窗口。

因此,多语言模型(如 Llama 3)在构建词汇表时会特意扩大词汇量(如从 32K 到 128K),并确保各语言有足够的覆盖率,以提升非英语语言的效率。

预训练数据的规模和质量是一个持续演进的领域。从 GPT-3 的约 3000 亿词元到 Llama 3 的超过 15 万亿词元,数据集规模仍在快速增长。正如一系列前沿探索所揭示的,**数据规模的大幅提升(数据充分性)精心策划的高质量数据(多维度提纯与配比)**相互交织,配合过度训练策略,能够让模型在推理阶段以更低的代价展现出惊人的潜能。

最后更新于