预训练(Pre-training)
一句话 TL;DR:在大规模无标注数据上先训练一个通用模型,再用少量标注数据适配具体任务。这个"先通用后专用"的两阶段范式,是现代深度学习(尤其 NLP)的基石。它把 AI 从"每个任务从头训"带进"一次预训练服务无数任务"的时代。
L1 · 一句话点破
预训练的本质是:用海量无标注数据 + 自监督目标(如预测下一个 token),训练出一个通用的基础模型,再通过 微调 或 prompt 适配到具体任务。
它的革命性在于:把标注数据的瓶颈从"每个任务都要标"变成"只在微调阶段要少量"。预训练阶段吃的是互联网上几乎免费的海量文本,这让 scaling law 成为可能。
L2 · 通俗类比
想象培养一个员工:
- 预训练前(传统监督学习):你想让他做客服,就只给他看客服对话,训出来只会客服;想让他做翻译,再从头训一个翻译员工。每个岗位一个员工,互不通用,培训成本高。
- 预训练后:先让他读遍图书馆(互联网文本),不教具体任务,只让他做"猜下一个字"的练习。几年下来,他对语言、世界知识、推理逻辑都有了底层理解。这时再让他做客服、翻译、写代码,每个岗位只需几天专项培训(微调)就能上手。
关键洞察:"读万卷书"阶段不用人标注--书本身就有答案(下一个字是什么),模型从书的内在规律中自学。这把"标注瓶颈"从预训练阶段移除了,让训练可以无限 scale。
这就是为什么 GPT-3 能用 175B 参数 + 5000 亿 token 训练--如果靠人工标注,这个数据量不可能实现。
L3 · 正经定义
预训练(Pre-training) 是指在大规模无标注数据上,用自监督学习目标训练模型参数的阶段。它产出一个基础模型(foundation model),具备通用语言/视觉能力,可被适配到多种下游任务。
预训练的核心要素:
- 无标注数据:互联网文本、代码、网页等,无需人工标注。数据规模可达 TB 级、万亿 token。
- 自监督目标:从数据本身构造监督信号。NLP 主流两种:
- 自回归语言模型(GPT 路线):预测下一个 token,$\mathcal{L} = -\sum_t \log P(x_t | x_{<t})$
- 掩码语言模型(BERT 路线):预测被 mask 的 token
- 大规模模型:参数量从几亿到几千亿,配合大规模数据训练。
预训练后,模型通过以下方式适配下游任务:
- 微调(Fine-tuning):用少量标注数据更新全部或部分参数
- Prompt / In-context learning:不更新参数,通过上下文示例引导
- 参数高效微调(PEFT):如 LoRA,只更新少量附加参数
两阶段范式(预训练 + 微调)由 Devlin et al., 2018 (BERT) 和 Radford et al., 2018 (GPT) 在 NLP 确立,但预训练思想更早源于 CV(ImageNet 预训练)。
参考资料:
- Bommasani et al., 2021 - On the Opportunities and Risks of Foundation Models - "基础模型"概念的系统论述
- Kaplan et al., 2020 - Scaling Laws
- Hoffmann et al., 2022 - Chinchilla - 数据与参数配比
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$ 是不可约损失。这个公式的实践意义:
- 可预测:给定算力预算,可以预测最终损失,不需要"训完才知道"。
- 三者协同:算力、参数、数据必须协同增长,任何一项短板都会限制效果。
- 大模型回报递减但仍正向:参数翻倍损失只降一点点,但仍降。这让"砸钱 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 engineering | 否 | 0 | GPT-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 减少了对微调的依赖,预训练本身仍是不可省略的基础。
面试怎么考
- "什么是预训练?它解决了什么问题?" --必考。用无标注数据 + 自监督目标训通用模型,解决"每个任务都要标数据"的瓶颈(见 L1-L2)。
- "预训练为什么能 scale?" --自监督学习消除标注瓶颈 + scaling law 的可预测性(见 4.1-4.2)。
- "什么是 Chinchilla 法则?" --算力预算下,参数和数据应 1:1 增长(每参数约 20 token)。堆参数不堆数据是低效的。
- "预训练数据质量 vs 数量,哪个更重要?" --质量优先(Phi 系列证明),数量在质量保证前提下越多越好(见 4.3)。
- "预训练完的模型能直接用吗?为什么?" --不能,需要 SFT + RLHF 对齐。基础模型只会续写,不会对话(见 4.5)。
- "预训练的工程难点有哪些?" --分布式训练(三种并行)+ 训练稳定性 + 数据清洗 + 配比调优(见 4.4)。
延伸阅读
- 📄 Bommasani et al., 2021 - Foundation Models
- 📄 Kaplan et al., 2020 - Scaling Laws
- 📄 Hoffmann et al., 2022 - Chinchilla
- 📄 Gunasekar et al., 2023 - Phi 系列(数据质量)
- 📝 LLaMA 训练细节 - 工程实践参考