Skip to content

预训练(Pre-training)

一句话 TL;DR:在大规模无标注数据上先训练一个通用模型,再用少量标注数据适配具体任务。这个"先通用后专用"的两阶段范式,是现代深度学习(尤其 NLP)的基石。它把 AI 从"每个任务从头训"带进"一次预训练服务无数任务"的时代。


L1 · 一句话点破

预训练的本质是:用海量无标注数据 + 自监督目标(如预测下一个 token),训练出一个通用的基础模型,再通过 微调 或 prompt 适配到具体任务。

它的革命性在于:把标注数据的瓶颈从"每个任务都要标"变成"只在微调阶段要少量"。预训练阶段吃的是互联网上几乎免费的海量文本,这让 scaling law 成为可能。

L2 · 通俗类比

想象培养一个员工:

  • 预训练前(传统监督学习):你想让他做客服,就只给他看客服对话,训出来只会客服;想让他做翻译,再从头训一个翻译员工。每个岗位一个员工,互不通用,培训成本高。
  • 预训练后:先让他读遍图书馆(互联网文本),不教具体任务,只让他做"猜下一个字"的练习。几年下来,他对语言、世界知识、推理逻辑都有了底层理解。这时再让他做客服、翻译、写代码,每个岗位只需几天专项培训(微调)就能上手。

关键洞察:"读万卷书"阶段不用人标注--书本身就有答案(下一个字是什么),模型从书的内在规律中自学。这把"标注瓶颈"从预训练阶段移除了,让训练可以无限 scale。

这就是为什么 GPT-3 能用 175B 参数 + 5000 亿 token 训练--如果靠人工标注,这个数据量不可能实现。

L3 · 正经定义

预训练(Pre-training) 是指在大规模无标注数据上,用自监督学习目标训练模型参数的阶段。它产出一个基础模型(foundation model),具备通用语言/视觉能力,可被适配到多种下游任务。

预训练的核心要素:

  1. 无标注数据:互联网文本、代码、网页等,无需人工标注。数据规模可达 TB 级、万亿 token。
  2. 自监督目标:从数据本身构造监督信号。NLP 主流两种:
    • 自回归语言模型(GPT 路线):预测下一个 token,$\mathcal{L} = -\sum_t \log P(x_t | x_{<t})$
    • 掩码语言模型(BERT 路线):预测被 mask 的 token
  3. 大规模模型:参数量从几亿到几千亿,配合大规模数据训练。

预训练后,模型通过以下方式适配下游任务:

  • 微调(Fine-tuning):用少量标注数据更新全部或部分参数
  • Prompt / In-context learning:不更新参数,通过上下文示例引导
  • 参数高效微调(PEFT):如 LoRA,只更新少量附加参数

两阶段范式(预训练 + 微调)由 Devlin et al., 2018 (BERT)Radford et al., 2018 (GPT) 在 NLP 确立,但预训练思想更早源于 CV(ImageNet 预训练)。

参考资料

L4 · 原理深挖

4.1 自监督学习:从无标注数据造监督信号

预训练能 scale 的根本原因是自监督学习:不需要人工标注,从数据本身构造训练信号。

以"预测下一个 token"为例:

输入序列:  "今天天气真"
目标:      "好"

这个"目标"不是人标的,而是原始文本里本来就有的下一个字。模型预测错就改参数,预测对就强化。整个互联网文本都可以这样切成"前文-下一个字"对,无需任何人工干预。

自监督的精髓:数据本身包含的规律(语法、语义、世界知识)通过"预测任务"被提取出来,编码进模型参数。这就是 Ilya 说的"压缩即理解"--一个能完美预测下一个 token 的模型,必然压缩了文本的所有可学习规律。

对比传统监督学习:

  • 监督学习:人工标 10 万条数据 -> 训一个 1 亿参数模型
  • 自监督预训练:无标注 5000 亿 token -> 训一个 1750 亿参数模型

数据规模差 5 万倍,这就是预训练能 scale 的原因。

4.2 Scaling Law:预训练的可预测性

Kaplan et al., 2020 发现的关键规律:预训练损失随计算量、参数量、数据量呈幂律下降

$$ L(N, D) = \left(\frac{N_c}{N}\right)^{\alpha_N} + \left(\frac{D_c}{D}\right)^{\alpha_D} + L_\infty $$

其中 $N$ 是参数量,$D$ 是数据量,$L_\infty$ 是不可约损失。这个公式的实践意义:

  1. 可预测:给定算力预算,可以预测最终损失,不需要"训完才知道"。
  2. 三者协同:算力、参数、数据必须协同增长,任何一项短板都会限制效果。
  3. 大模型回报递减但仍正向:参数翻倍损失只降一点点,但仍降。这让"砸钱 scale"成为理性策略。

Chinchilla 法则(Hoffmann et al., 2022)进一步精确化:给定算力预算 $C$,最优参数量和数据量应大致相等增长,每个参数约配 20 个 token。这解释了为什么 LLaMA(参数少、数据多)能以小博大--它在数据维度上做对了。

4.3 预训练数据的"暗物质":质量比数量更重要

scaling law 说"数据越多越好",但 2023 年后的实践发现一个反直觉的事实:数据质量比数据量更重要

GPT-3 用的 Common Crawl 含大量低质内容(广告、重复、乱码),训练出来效果一般。LLaMA、GPT-4 等在预训练前做了大量数据清洗:

  • 去重:近似重复文档去掉(MinHash、LSH)
  • 质量过滤:用小模型或规则打分,只保留高质量文档
  • 配比控制:网页、书籍、代码、论文按比例混合(代码数据对推理能力贡献大)
  • 毒性过滤:去掉有害内容

Phi 系列(Gunasekar et al., 2023)证明:用 1B 高质量"教科书级"数据训练,效果可以匹敌用 100B 低质数据训练的模型。"数据质量"成为预训练的新瓶颈,而非数据量。

这也是为什么 2024 年后,"合成数据"(用大模型生成高质量训练数据)成为热点--真实人类数据快被用完了。

4.4 预训练的工程难点:算力与稳定性

预训练一个大模型的工程挑战远超想象:

① 算力规模

GPT-3 训练用了约 355 GPU-年(V100),LLaMA-3 405B 估计用 16K H100 GPU 训练 50 天。这是千万美元级的算力投入。

② 分布式训练

单卡装不下大模型,必须切分:

  • 数据并行:不同 GPU 处理不同 batch
  • 张量并行:把单个矩阵乘法切到多 GPU
  • 流水线并行:把不同层分到不同 GPU
  • ZeRO / FSDP:把优化器状态、梯度、参数分散

这些技术的组合是预训练工程的核心。

③ 训练稳定性

大模型训练容易"崩溃"--loss 突然飙升或出现 NaN。原因包括:

  • 梯度爆炸/消失
  • 数值精度问题(FP16 下溢)
  • 学习率过大

对策:梯度裁剪、学习率 warmup、用 BF16 替代 FP16、QK-norm 等。GPT-3 论文专门有一节讨论"如何让它训起来不崩"。

4.5 预训练之后:基础模型的适配路径

预训练产出的是"基础模型",它懂语言但不会"对话"或"完成任务"。适配路径演化:

方式是否更新参数数据需求代表
Prompt engineering0GPT-3 原始用法
In-context learning几个示例GPT-3 few-shot
微调(Full fine-tuning)是,全部千-万条BERT 时代
PEFT(LoRA 等)是,少量附加千-万条当前主流
指令微调(SFT)万-十万条高质量ChatGPT
RLHF偏好数据ChatGPT

注意:预训练是"教知识",SFT/RLHF 是"教行为"。一个只预训练的模型(基础模型)会续写但不听话,需要后续对齐才变成可用的 chatbot。

L5 · 沿革与坑

沿革

  • 2012-2017:CV 领域率先用 ImageNet 预训练 + 下游微调范式,效果显著。NLP 此时还在用 word2vec 等静态词向量,预训练概念存在但未成主流。
  • 2018 年:ELMo、GPT、BERT 三篇论文在几个月内相继发表,把"预训练 + 微调"范式带入 NLP。BERT 在 11 项任务刷榜,标志 NLP 进入预训练时代。
  • 2020 年:GPT-3 展示 in-context learning,证明足够大的预训练模型可以不微调直接用。这开辟了"基础模型"路线。
  • 2021 年:Bommasani 等人提出"基础模型"概念,把预训练范式系统化。
  • 2022 年:Chinchilla 法则发表,明确数据与参数配比。同年 ChatGPT 展示预训练 + SFT + RLHF 的完整链路威力。
  • 2023-2024 年:开源大模型(LLaMA、Qwen、DeepSeek)普及预训练技术。数据质量、合成数据成为新焦点。

常见误解

  • 误解:预训练就是"用大数据训大模型",没什么技术含量。 ✅ 真相:预训练的工程难度极高--分布式训练、训练稳定性、数据清洗、配比调优、学习率调度,每一项都是专门技术。能复现 LLaMA 训练的团队全球屈指可数,"用大数据训"听起来简单,落地极难。

  • 误解:预训练数据越多效果越好。 ✅ 真相:在质量相同的前提下越多越好。但低质数据多了反而有害(噪声、重复、有害内容)。Phi 系列证明 1B 高质数据 > 100B 低质数据。质量是首要约束。

  • 误解:预训练完的模型就能用了。 ✅ 真相:基础模型只懂"续写",不会对话、不遵循指令、可能输出有害内容。必须经过 SFT + RLHF 对齐才能成为可用的 ChatGPT 类产品。预训练是地基,对齐是装修。

  • 误解:scaling law 是万能的,只要继续 scale 就能更强。 ✅ 真相:scaling law 在当前范式下成立,但有上限--高质量数据可能用完("数据墙"问题),且收益幂律递减。2024 年的研究开始讨论"scaling 是否在放缓"。预训练 scale 不是无限游戏。

  • 误解:预训练和微调是竞争关系,二选一。 ✅ 真相:它们是协作关系。预训练提供通用能力,微调/对齐提供任务适配和安全性。即使 in-context learning 减少了对微调的依赖,预训练本身仍是不可省略的基础。

面试怎么考

  1. "什么是预训练?它解决了什么问题?" --必考。用无标注数据 + 自监督目标训通用模型,解决"每个任务都要标数据"的瓶颈(见 L1-L2)。
  2. "预训练为什么能 scale?" --自监督学习消除标注瓶颈 + scaling law 的可预测性(见 4.1-4.2)。
  3. "什么是 Chinchilla 法则?" --算力预算下,参数和数据应 1:1 增长(每参数约 20 token)。堆参数不堆数据是低效的。
  4. "预训练数据质量 vs 数量,哪个更重要?" --质量优先(Phi 系列证明),数量在质量保证前提下越多越好(见 4.3)。
  5. "预训练完的模型能直接用吗?为什么?" --不能,需要 SFT + RLHF 对齐。基础模型只会续写,不会对话(见 4.5)。
  6. "预训练的工程难点有哪些?" --分布式训练(三种并行)+ 训练稳定性 + 数据清洗 + 配比调优(见 4.4)。

延伸阅读


上一篇:模型组件 -- 基础架构的积木。下一篇:微调 -- 预训练之后的适配阶段。

内容采用 CC BY-SA 4.0,代码采用 MIT。