预训练
前置知识
阅读本文前,建议先了解:
- 大语言模型概述 - 了解 LLM 基本概念
- Transformer 架构 - 了解 Transformer 架构
一、概述
预训练(Pre-training)是 LLM 训练的第一阶段,也是最关键的一步。在这个阶段,模型会在海量文本数据上进行训练,学习语言的基本规律和知识。
预训练后的模型称为 Base Model(基座模型)或 Foundation Model(基础模型)。
[!比喻] 预训练类比 如果把 LLM 比作培养一个人才:
预训练 = 小学到大学的通识教育
博览群书,学习各学科知识,成为通才。但还没有专业技能,也不懂得社会规范。
二、预训练的任务
2.1 核心任务:预测下一个词
预训练的核心任务非常简单:预测下一个词(Next Token Prediction)。
训练数据示例:
"太阳从东边升起"
"今天天气很好"
"人工智能是..."
"Python 是一种..."
...
模型学习:看到"太阳从",预测"东";看到"今天",预测"天气"...
这个过程不需要人工标注答案——互联网上的文本本身就是最好的”答案”。这种训练方式称为自监督学习(Self-supervised Learning)。
为什么不需要标注?
传统监督学习:需要人工标注”输入→输出”对,成本极高
自监督学习:文本本身就是”输入 + 输出”,天然标注
- 输入:“太阳从”
- 输出:“东边升起”
2.2 双向预测 vs 单向预测
根据注意力机制的不同,预训练有两种主要方式:
| 方式 | 说明 | 代表模型 | 用途 |
|---|---|---|---|
| 单向预测 | 只能根据上文预测下文,适合生成任务 | GPT 系列、LLaMA | 文本生成、对话 |
| 双向预测 | 可以同时看到上下文,适合理解任务 | BERT | 文本分类、命名实体识别 |
单向预测(因果语言模型):
[我] [爱] [学习] → 只能从左到右
↑
只能看到左边
双向预测(掩码语言模型):
[我] [MASK] [学习] → 可以看到"我"和"学习"来预测 MASK
↑
左右都能看到
为什么 ChatGPT 类模型都用单向预测?
因为生成任务需要从左到右的因果注意力,双向预测会”偷看”未来的内容,无法用于生成。
三、预训练数据
3.1 数据规模
预训练需要海量的文本数据:
| 模型 | 训练数据规模 | 参数量 |
|---|---|---|
| GPT-3 | ~3000 亿 Token | 175B |
| LLaMA 2 | ~2 万亿 Token | 7B-70B |
| Falcon | ~3.5 万亿 Token | 40B-180B |
| Grok-1 | ~5 万亿 Token | 314B |
Token 与文字的关系
- 英文:1 个 Token ≈ 4 个字母 ≈ 0.75 个单词
- 中文:1 个 Token ≈ 1.5 个汉字
1 万亿 Token ≈ 数百万本书的内容
3.2 数据来源
预训练数据通常来自:
| 数据源 | 比例(LLaMA 示例) | 说明 |
|---|---|---|
| 网页 | ~60% | CommonCrawl 等公开网页数据 |
| 代码 | ~15% | GitHub 等开源代码 |
| 书籍 | ~10% | Project Gutenberg 等公开书籍 |
| 维基百科 | ~5% | 多语言维基百科 |
| 其他 | ~10% | 新闻、论坛、问答等 |
数据配比的影响
代码比例高的模型,代码能力更强;多语言数据比例高的模型,多语言能力更好。
3.3 数据处理流程
原始数据
↓
数据清洗(去重、去噪声、质量过滤)
↓
分词(Tokenization)
↓
打包成训练序列
↓
预训练
关键步骤说明:
| 步骤 | 目的 | 方法 |
|---|---|---|
| 去重 | 防止模型死记硬背 | MinHash、LSH 等算法 |
| 质量过滤 | 提升数据质量 | 启发式规则、分类器 |
| 分词 | 将文本转为 Token | BPE、WordPiece、SentencePiece |
四、预训练学到了什么
经过海量文本的训练,模型逐渐学会:
| 能力 | 说明 | 示例 |
|---|---|---|
| 语言规律 | 语法、句法、表达方式 | 主谓宾结构、时态变化 |
| 世界知识 | 历史、科学、文化常识 | ”巴黎是法国首都” |
| 推理能力 | 逻辑思考、因果关系 | ”如果 A→B,B→C,则 A→C” |
| 代码能力 | 编程语法、常见算法 | 排序、递归、动态规划 |
| 涌现能力 | 规模足够大后,出现意想不到的能力 | 思维链、多步推理 |
预训练不学什么
预训练学习的是相关性而非因果性:
- 模型知道”打雷”后经常跟”下雨”
- 但不懂打雷为什么会导致下雨
这解释了为什么模型有时会”一本正经地胡说八道”。
五、Base Model 的特点
预训练完成后的模型称为 Base Model,它的特点是:
5.1 能力
- ✅ 具备广泛的知识
- ✅ 能够续写文本
- ✅ 有一定的推理能力
- ✅ 可以完成补全任务
5.2 局限
- ⚠️ 不太会”对话”(倾向于续写而不是回答)
- ⚠️ 可能生成不安全的内容
- ⚠️ 不太理解人类偏好
- ⚠️ 无法遵循指令
输入: "什么是人工智能?"
Base Model 可能的输出:
"什么是人工智能?这是一个值得探讨的问题。
近年来,人工智能技术发展迅速..."
(倾向于续写问题,而不是直接回答)
Chat Model 的输出:
"人工智能(AI)是计算机科学的一个分支,
致力于创建能够执行通常需要人类智能的任务的系统。"
(直接回答问题)
六、预训练的挑战
6.1 计算成本
预训练需要巨大的计算资源:
| 模型 | GPU 数量 | 训练时间 | 估算成本 |
|---|---|---|---|
| GPT-3 | 数千块 V100 | 数月 | 数百万美元 |
| LLaMA 2 | 数千块 A100 | 数月 | 数千万美元 |
6.2 数据质量
- 重复数据:会导致模型过拟合
- 低质量数据:会影响模型输出质量
- 偏见数据:会继承到模型中(性别偏见、种族偏见等)
6.3 训练稳定性
- 损失尖峰(Loss Spike):训练损失突然上升,可能恢复也可能崩溃
- 梯度问题:梯度消失或爆炸,深层网络常见
- 分布式训练:数千块 GPU 的协调和容错
七、预训练的计算细节
7.1 训练步数计算
预训练的步数由数据规模和 batch size 决定:
训练步数 = 总 Token 数 / Batch Size
示例(LLaMA 2 训练):
- 总 Token 数:2 万亿
- Batch Size: 4M tokens
训练步数 ≈ 2×10^12 / 4×10^6 = 50 万步
7.2 计算复杂度
对于 Transformer 模型,前向和反向传播的总计算复杂度:
FLOPs per token ≈ 6 × 参数量
训练总 FLOPs = 6 × 参数量 × Token 总数
示例(7B 模型,1 万亿 Token):
总 FLOPs = 6 × 7×10^9 × 10^12 = 4.2×10^22 FLOPs
为什么是 6 倍?
- 前向传播:2 × 参数量(一次乘法 + 一次加法)
- 反向传播:4 × 参数量(梯度计算和更新)
- 合计:6 × 参数量
7.3 训练时间估算
训练时间 = 总 FLOPs / (GPU 数量 × GPU 算力 × MFU)
示例(用 A100 训练 7B 模型):
- A100 FP16 算力:312 TFLOPs
- GPU 数量:512 块
- MFU(Model Flop Utilization):40%
训练时间 ≈ 4.2×10^22 / (512 × 312×10^12 × 0.4) ≈ 82 天
MFU 是什么?
MFU(Model Flop Utilization)是实际利用率,通常在 30%-50% 之间。
剩余时间消耗在:内存读写、GPU 间通信、数据加载等。
八、预训练的发展趋势
8.1 数据方面
| 趋势 | 说明 | 代表工作 |
|---|---|---|
| 高质量数据 | 更注重数据质量而非数量 | LLaMA 2 |
| 多语言数据 | 增加非英语数据的比例 | LLaMA 3 |
| 合成数据 | 用模型生成数据辅助训练 | phi-1, phi-2 |
| 长文本数据 | 增加长文档比例,提升长上下文能力 | Claude |
8.2 效率方面
| 趋势 | 说明 |
|---|---|
| 混合精度训练 | FP16/BF16 降低显存占用 |
| 模型并行 | 将模型拆分到多块 GPU(张量并行、流水线并行) |
| 数据并行 | 多 GPU 同时处理不同数据 |
| ZeRO 优化 | 零冗余优化器,减少显存占用 |
8.3 架构方面
| 趋势 | 说明 |
|---|---|
| MoE(Mixture of Experts) | 稀疏激活,增加参数量但不增加计算量 |
| 注意力优化 | FlashAttention、MQA、GQA 等 |
| 长上下文支持 | 从 4K 到 100K+ 上下文窗口 |
九、总结
预训练是 LLM 训练的第一阶段:
- 任务:预测下一个词,自监督学习
- 数据:万亿级别 Token,来自网页、书籍、代码等
- 产出:Base Model,具备通用知识和语言能力
- 挑战:计算成本高、数据质量要求高、训练稳定性
- 趋势:高质量数据、合成数据、MoE 架构、长上下文
预训练后的 Base Model 需要经过微调和人类对齐,才能成为真正”好用”的 Chat Model。
延伸阅读
- 02-概率预测机制 - 理解预训练的核心任务
- 02-微调技术 - 了解如何将 Base Model 变成 Chat Model
- 03-人类对齐与 RLHF - 了解如何让模型对齐人类价值观
- The Scaling Hypothesis - Gwern 关于规模假设的深度分析
| 更新日期 | 更新内容 |
|---|---|
| 2026-04-09 | 初始版本 |
| 2026-04-12 | 增加计算细节、发展趋势 |