09-Pre-training/预训练:AI的"通识教育"

Pre-training/预训练:AI的"通识教育"

这篇文章带你理解大模型的第一课------预训练,明白AI是怎么"读万卷书"的。

前言

你一定听过这些说法:

"GPT-3预训练用了45TB的文本数据" "预训练成本高达1200万美元" "这个模型是预训练好的,可以直接微调"

什么是预训练?为什么AI要先"预训练"才能用?

今天,我们把"预训练"这个黑话翻译成人话。


一、黑话原文 vs 人话翻译

场景模拟

arduino 复制代码
🎯 AI研究组会议:

研究员A:"我们的模型在预训练阶段收敛了"
研究员B:"用的什么预训练数据?"
研究员C:"Common Crawl加Wikipedia,大概2TB"
研究员A:"预训练loss稳定在2.5左右"
研究员B:"可以开始微调了"

人话翻译表

黑话 人话翻译 一句话理解
Pre-training 预训练 AI的"通识教育"
预训练数据 训练用的文本 AI读的"书"
Loss/损失 错误程度 考试分数的倒数
收敛 学习稳定了 成绩不再波动
Epoch 轮次 把书读几遍
Checkpoint 检查点 学习进度的存档

二、预训练是什么?

2.1 一句话定义

Pre-training = 让AI在海量文本上"自学",学会语言的基础知识

人话版:就像让一个学生把整个图书馆的书都读一遍,虽然不是专攻某一科,但什么都懂一点。

2.2 为什么叫"预"训练?

arduino 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    AI训练的两阶段                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  阶段1:预训练 (Pre-training)                               │
│  ────────────────────────────                               │
│  目标:学会语言的"通用知识"                                 │
│  内容:互联网上的所有文本                                   │
│  类比:读完整个图书馆,成为"通识生"                         │
│                                                             │
│  阶段2:微调 (Fine-tuning)                                  │
│  ────────────────────────                                   │
│  目标:学会特定任务                                         │
│  内容:特定领域的数据                                       │
│  类比:参加专业培训,成为"专家"                             │
│                                                             │
│  先"预"训练 → 再微调                                        │
│  所以叫"预"训练                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.3 生活类比

diff 复制代码
预训练就像:

📚 通识教育
- 小学+中学:学语文、数学、英语...
- 不是为了某个具体工作
- 而是为了"有文化"

🎓 专业培训(微调)
- 大学/职校:学编程、学设计...
- 针对具体职业
- 成为"专业人士"

AI也是一样:
- 先预训练:学会"说话"
- 再微调:学会"好好说话"

三、预训练学什么?

3.1 预训练的目标

sql 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    预训练的核心任务                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  最常见的预训练任务:语言模型 (Language Modeling)           │
│                                                             │
│  简单说就是:猜下一个字                                     │
│                                                             │
│  输入:"今天天气真___"                                      │
│  预测:"好"(概率最高)                                     │
│                                                             │
│  通过大量"猜字游戏",AI学会:                              │
│  ├── 语法规则(怎么说话通顺)                               │
│  ├── 词汇关系(苹果和水果的关系)                           │
│  ├── 常识知识(下雨要打伞)                                 │
│  └── 世界知识(北京是中国的首都)                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3.2 预训练数据从哪来?

复制代码
常见的预训练数据来源:

┌─────────────────────────────────────────────────────────────┐
│                    预训练数据来源                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  🌐 互联网网页                                              │
│  ├── Common Crawl:网页快照,数千TB                         │
│  └── 问题:质量参差不齐,需要清洗                           │
│                                                             │
│  📚 知识类网站                                              │
│  ├── Wikipedia:维基百科                                    │
│  ├── 百度百科                                               │
│  └── 优点:质量高,知识丰富                                 │
│                                                             │
│  📖 书籍                                                    │
│  ├── 电子书库                                               │
│  └── 优点:文字质量高                                       │
│                                                             │
│  💻 代码                                                    │
│  ├── GitHub 公开代码                                        │
│  └── 让AI学会编程                                           │
│                                                             │
│  📰 新闻、论文                                              │
│  ├── 专业内容                                               │
│  └── 获取特定领域知识                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3.3 数据量有多大?

erlang 复制代码
GPT-3的预训练数据:

| 数据集 | Token数量 | 占比 |
|-------|----------|------|
| Common Crawl | 410B | 60% |
| WebText2 | 19B | 22% |
| Books | 12B | 8% |
| Wikipedia | 3B | 3% |
| 其他 | 45B | 7% |
| 总计 | ~500B | 100% |

500B Token ≈ 3750亿个汉字
≈ 读37.5万本《红楼梦》

四、预训练的过程

4.1 训练流程

yaml 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    预训练流程                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Step 1: 数据准备                                           │
│  ├── 收集海量文本                                           │
│  ├── 清洗数据(去重、去噪)                                 │
│  └── Tokenize(转成数字)                                   │
│                                                             │
│  Step 2: 模型初始化                                         │
│  └── 参数随机初始化                                         │
│                                                             │
│  Step 3: 训练循环                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ for epoch in epochs:                                 │   │
│  │     for batch in data:                               │   │
│  │         prediction = model(batch)                    │   │
│  │         loss = calculate_loss(prediction, target)    │   │
│  │         update_parameters(loss)                      │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Step 4: 保存Checkpoint                                     │
│  └── 定期保存模型参数                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.2 Loss是什么?

复制代码
Loss(损失)= 预测错误程度

┌─────────────────────────────────────────────────────────────┐
│                    Loss变化示意                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Loss                                                       │
│   │                                                         │
│  10┤ ●                                                      │
│   │   ●●                                                    │
│   │     ●●●                                                 │
│   │        ●●●●                                             │
│   │            ●●●●●                                        │
│   │                 ●●●●●●●───────────── 收敛              │
│   └──────────────────────────────────────→ 训练步数        │
│                                                             │
│  Loss越低 = 预测越准 = 学得越好                             │
│  Loss稳定 = 收敛 = 学习完成                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.3 预训练有多贵?

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    预训练成本                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  GPT-3 预训练:                                             │
│  ├── 计算量:3640 PFLOP-days                               │
│  ├── 显卡:约10000张V100                                   │
│  ├── 时间:约1个月                                          │
│  ├── 电费:约500万美元                                      │
│  └── 总成本:约1200万美元                                   │
│                                                             │
│  GPT-4 预训练:                                             │
│  └── 估计超过1亿美元                                        │
│                                                             │
│  这就是为什么:                                              │
│  - 只有大公司能训练大模型                                   │
│  - 开源模型很珍贵                                           │
│  - 预训练好的模型很值钱                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

五、预训练 vs 微调

5.1 对比

维度 预训练 微调
数据量 海量(TB级) 少量(GB级)
数据类型 通用文本 特定任务数据
计算成本 极高 中等
时间 数周到数月 数小时到数天
目标 学会语言基础 学会特定任务

5.2 关系图

arduino 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    预训练 → 微调 → 部署                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  预训练模型                                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 读完整个互联网的"通识生"                             │   │
│  │ 能力:会说人话,有常识                               │   │
│  └──────────────────────┬──────────────────────────────┘   │
│                         │                                   │
│                         ▼ 微调                              │
│  微调模型                                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 经过专业培训的"专家"                                 │   │
│  │ 能力:能做特定任务(对话、代码、翻译...)            │   │
│  └──────────────────────┬──────────────────────────────┘   │
│                         │                                   │
│                         ▼ 部署                              │
│  应用                                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ ChatGPT、Claude等产品                                │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

六、预训练模型的价值

6.1 为什么预训练模型很值钱?

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    预训练模型的价值                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 省钱                                                   │
│     自己预训练:几百万到几亿美元                            │
│     用现成的:免费到几万美元                                │
│                                                             │
│  2. 省时                                                   │
│     自己预训练:几周到几个月                                │
│     用现成的:立即可用                                      │
│                                                             │
│  3. 效果好                                                 │
│     大公司有更好的数据、算力、技术                          │
│     开源模型效果往往不差                                    │
│                                                             │
│  4. 可定制                                                 │
│     预训练模型 + 自己的数据 → 专属模型                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6.2 著名的预训练模型

模型 公司 特点
BERT Google 理解能力强
GPT系列 OpenAI 生成能力强
LLaMA Meta 开源,可商用
Qwen 阿里 中文能力强
GLM 智谱 国产开源

七、预训练的代码示例

7.1 简化的预训练过程

python 复制代码
import torch
from torch.utils.data import DataLoader

def pretrain(model, data_loader, optimizer, epochs):
    """
    简化的预训练代码
    """
    for epoch in range(epochs):
        total_loss = 0

        for batch in data_loader:
            # batch: [batch_size, seq_len]
            input_ids = batch[:, :-1]   # 输入:去掉最后一个
            targets = batch[:, 1:]      # 目标:去掉第一个

            # 前向传播
            outputs = model(input_ids)
            logits = outputs.logits

            # 计算Loss
            loss = torch.nn.functional.cross_entropy(
                logits.view(-1, logits.size(-1)),
                targets.view(-1)
            )

            # 反向传播
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

            total_loss += loss.item()

        avg_loss = total_loss / len(data_loader)
        print(f"Epoch {epoch}: Loss = {avg_loss:.4f}")

        # 保存Checkpoint
        torch.save(model.state_dict(), f"checkpoint_epoch_{epoch}.pt")

7.2 使用预训练模型

python 复制代码
from transformers import AutoModelForCausalLM, AutoTokenizer

# 加载预训练模型(省去预训练的时间和成本)
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")

# 直接使用
input_text = "今天天气"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=50)
print(tokenizer.decode(output[0]))

小结

黑话 人话 记忆口诀
Pre-training 预训练 AI的通识教育
预训练数据 训练文本 AI读的书
Loss 损失/错误程度 越低越好
收敛 学习稳定 成绩不波动
Epoch 轮次 读几遍
Checkpoint 存档 保存进度

关键认知

  • 预训练是AI的"通识教育"
  • 通过海量数据学会语言基础
  • 成本极高,所以预训练模型很值钱
  • 预训练后还需要微调才能做特定任务

黑话等级

复制代码
⭐⭐⭐ 进阶级
├── 理解预训练是什么
├── 知道预训练数据的来源
└── 明白预训练和微调的关系

下一期预告:Fine-tuning/微调 - 给AI上专业课

思考与练习

  1. 思考题

    • 为什么预训练能学到知识?
    • 预训练数据的质量重要还是数量重要?
  2. 动手练习

    • 下载一个开源预训练模型,试试效果
    • 对比不同预训练模型的能力
  3. 延伸探索

    • 了解预训练数据清洗的方法
    • 研究Scaling Law(缩放定律)

下期预告

下一篇文章,我们来聊:Fine-tuning/微调 - 给AI上"专业课"

会解答这些问题:

  • 微调是怎么让AI变专业的?
  • 全量微调 vs LoRA有什么区别?
  • 怎么用自己的数据微调模型?

关注专栏,不错过后续更新!


作者:ECH00O00 本文首发于掘金专栏《AI黑话翻译官》 欢迎评论区交流讨论,点赞收藏就是最大的鼓励

相关推荐
HAREWORK_FFF1 小时前
用CAIE认证为简历加分:AI学习者的标准学习周期与规划
人工智能·学习·百度
郝学胜-神的一滴1 小时前
深度学习入门全解析:从核心概念到实战基础 | 技术研讨会精华总结
人工智能·python·深度学习·算法·cnn
简单光学1 小时前
深度学习相位解包裹研究进展
人工智能·深度学习
云道轩2 小时前
Langflow 1.8 正式发布:集中式提供商配置、更可预测的工作流 API,以及 UI 中更快速的调试与迭代。
人工智能·智能体·langflow
火山引擎开发者社区2 小时前
ArkClaw让“养虾”更安全!火山引擎AI助手安全解决方案全面升级
人工智能
中杯可乐多加冰2 小时前
说实话,我建议还是自己写小龙虾的Skills,手把手教你打造阅读文献和生成阅读笔记的OpenClaw Skills
人工智能
道可云2 小时前
AI全球快讯(3月12日)丨Meta收购AI智能体社交平台Moltbook
人工智能
梯度下降中2 小时前
CNN原理精讲
人工智能·算法·机器学习
摆烂工程师2 小时前
2026年新国内如何注册 Claude 账号保姆教程(成功率95%)
人工智能·ai编程·claude