Skip to content

预训练目标与数据

预训练是大模型一切能力的根基,「烧钱最多、决定上限」的一步。本文深入预训练目标、数据流水线、训练范式与并行、以及继续预训练等高频考点。算力与并行细节见 分布式训练,规模规律见 缩放定律

一、什么是预训练?

预训练(Pre-training)= 在海量无标注文本上做自监督学习,让模型学到语言规律和世界知识,产出基座模型(Base Model)

  • 自监督:训练目标从数据本身构造(如「预测下一个词」),不需要人工标注——这是能利用万亿级语料、能 scale 的前提。
  • 产出的 Base 模型只会「续写」,还不会对话;要经 SFT对齐 才变成 Chat 模型。

二、预训练目标

不同架构对应不同的自监督目标:

目标全称做法代表
CLMCausal LM(因果语言建模)预测下一个 token,单向GPT、LLaMA
MLMMasked LM(掩码语言建模)随机遮盖约 15% token 让模型还原,双向BERT
PrefixLM / Span Corruption前缀语言建模 / 片段还原还原被遮盖的连续片段T5、GLM

主流 LLM 用 CLM(下一个 token 预测),原因:训练目标统一、能利用全部文本(每个位置都有监督信号)、天然适配生成与对话、规模扩展表现好、in-context learning 强。

损失函数是交叉熵——让模型预测的下一个 token 概率分布尽可能接近真实的下一个 token:

$$\mathcal{L} = -\frac{1}{T}\sum_{t=1}^{T} \log P_\theta(x_t \mid x_{<t})$$

训练用 teacher forcing:每个位置都用真实前文(而非模型自己的预测)作为条件,从而所有位置可并行计算损失。

三、训练数据:质量决定上限

「Garbage in, garbage out」——数据质量往往比数量更决定模型上限。近年共识:数据是大模型的核心竞争力

3.1 数据来源

网页(Common Crawl)、书籍、代码(GitHub)、百科、论文(arXiv)、问答社区、新闻等。不同来源贡献不同能力(代码提升推理、书籍提升长文连贯、多语言数据提升跨语言)。

3.2 数据处理流水线(高频考点)

原始语料(数十 TB)
  │ 1.清洗     去 HTML/乱码/过短过长/低质页面
  │ 2.去重     文档级+句子级(MinHash/SimHash)
  │ 3.质量过滤  规则 + 分类器(「像不像维基」)
  │ 4.去毒/隐私 过滤有害内容、PII
  │ 5.配比混合  调代码/中英文/数学等比例
  │ 6.Tokenize 切 token、拼成定长序列、打包

训练就绪的 token 序列(数万亿 token)

每一步都关键:

  • 去重:重复数据让模型过度记忆、降低泛化、浪费算力。研究表明充分去重显著提升下游效果。
  • 质量过滤:用分类器筛掉低质内容是性价比极高的一步(FineWeb、Phi 系列都强调)。
  • 配比(Data Mixture):不同来源的比例直接塑造能力分布——加代码强推理、加多语言强跨语言。配比是「数据炼丹」的核心。

3.3 数据量级

预训练是万亿(trillion)token 量级(如 LLaMA 3 用 15T token);而 SFT 通常只需几万到几百万条高质量样本,差好几个数量级。

四、训练范式与并行

超大模型单卡放不下,必须分布式并行(详见 分布式训练):

  • 数据并行(DP):每卡放完整模型、喂不同数据、同步梯度。
  • 张量并行(TP):把单层大矩阵切到多卡(层内拆分,机内高带宽)。
  • 流水线并行(PP):把不同层放不同卡(层间拆分,有流水线气泡)。
  • ZeRO / FSDP:把优化器状态、梯度、参数分片到多卡,大幅降单卡显存。

超大模型训练通常是这几种的组合(3D 并行)。混合精度(BF16)+ 梯度累积 + 梯度检查点 是标配;BF16 因动态范围大、不易溢出成为首选。

五、训练全景与稳定性

完整训练还涉及:学习率 warmup + 余弦衰减、梯度裁剪、loss spike 处理等(详见 训练深入)。超大规模训练的「炼丹」难点在于稳定性——一次 loss 飙升可能毁掉几天的算力。

六、继续预训练(Continue Pre-training)

在已有基座上用特定领域语料(医疗、法律、代码、金融)继续做 CLM 训练,注入领域知识,再做 SFT。常用于行业大模型。关键是配比——混入部分通用数据防止灾难性遗忘。

七、高频追问

Q:预训练为什么用自监督而不是监督学习? 监督学习需人工标注,无法覆盖万亿语料。自监督用「预测下一个 token」等从数据本身构造的目标,无需标注,才能利用海量无标注文本——这是大模型 scale 的前提。

Q:CLM、MLM、Span Corruption 的区别?主流用哪个? CLM 预测下一 token(单向,GPT/LLaMA);MLM 还原被遮盖 token(双向,BERT);Span Corruption 还原连续片段(T5)。主流用 CLM——目标统一、用满数据、适配生成。

Q:BERT(MLM)和 GPT(CLM)的本质区别? BERT 双向、看得到全文,擅长理解类任务(分类/NER/检索)但不能直接生成;GPT 单向、只看前文,天然适配自回归生成。

Q:为什么去重这么重要? 重复数据导致过度记忆、泛化下降、算力浪费,还可能放大某些偏见。充分去重(MinHash 等)能显著提升下游效果,是数据流水线的关键一步。

Q:数据配比为什么重要? 不同来源塑造不同能力——代码数据提升推理与结构化能力、多语言数据提升跨语言、数学数据提升计算。配比直接决定模型的能力分布,是预训练「炼丹」的核心调参点。

Q:预训练和微调的数据量差多少? 预训练万亿 token 量级;SFT 几万到几百万条高质量样本,差几个数量级。这也呼应「预训练学知识、微调学对齐格式」的分工。

Q:什么是继续预训练?和微调有什么区别? 继续预训练在基座上用领域语料继续做 CLM(注入领域知识,仍是自监督、数据量大);微调用指令-回答对教模型遵循指令(监督、数据量小)。行业大模型常「继续预训练 + SFT」组合。

Q:teacher forcing 是什么?有什么问题? 训练时每个位置用真实前文作条件(而非模型自己的预测),使损失可并行计算、训练稳定。问题是训练(用真实前文)与推理(用自己生成的前文)存在差异(exposure bias),但实践中影响可控。

基于 MIT 许可发布