这本书要造什么 — LLM 是什么、两阶段训练、全书施工图
这一章讲三件事: 大语言模型到底是什么;它是怎么被训练出来的(为什么是「 两段式」); 以及这本书打算怎么把一个模型从零写出来——一份三阶段的施工图。 这是全书的地基:后面九章里写的每一行代码,都是在执行这一章画的图。 不需要任何基础,遇到的生词都在当场解释。
1. 这一章讲什么
这本书的目标一句话可以说完:用 PyTorch 从零写出一个和 ChatGPT 同族的模型,并真的把它训练出来。
「同族」这个词是刻意的:你手里的模型会很小(最小的一款只有 1.24 亿个可调数字,而 GPT-3 有 1750 亿个), 但它和真正的大家伙用的是同一套概念、同一个架构1。
这一章不动手写代码,只解决三个理解问题:这台机器在干什么、它怎么学会干活、我们分几步把它造出来。
2. 顶层全景
这本书要造的东西(第 2~7 章逐一实现):
文字 ──→ 切成小块(标记)──→ 查表变成数串 ──→ 一台「猜下一个词」的机器 ──→ 吐出一个词
│
└─ 把这个词接回末尾,再问一遍(循环)
这台机器怎么学会猜:
第一段(预训练):读海量普通文字,不用任何人标注,自己出题自己改
↓ 得到一个「基座模型」:会续写,但不会听指令
第二段(微调):用有标注的小数据再训一小会儿
↓ 变成专用工具:垃圾分类器,或者会听指令的助手
图说:全书 = 先把机器造出来(第 2~4 章),再做第一段训练(第 5 章),
再做第二段训练(第 6、7 章)。
3. 核心原理
3.1 大语言模型:一台「猜下一个词」的机器
先给主角下个定义。大语言模型(LLM,large language model)是一种神经网络—— 「神经网络」是一种由大量简单计算单元按层排开、靠调整内部数字来拟合规律的计算结构—— 它被训练来理解、生成和回应人类的文字2。
它学的任务简单得近乎无聊:给一段文字,猜下一个词是什么。
书里特意点了一句:这个任务「非常简单,以至于很多研究者惊讶于它居然能训出这么能干的模型」3。 这句话值得停一下:整本书回答的核心问题,就是「为什么这么简单的任务能养出会写邮件、会翻译、会答问题的机器」。 答案要到第 5 章(训练)和第 7 章(教它听指令)才完整。
「大」字有两层意思,都烧钱:
- 参数多。「参数」是模型内部那些训练时会微调的数,每个数就是一个小旋钮。 这类模型通常有几百亿到上千亿个参数4。参照物:书的前言里给了一个对照—— 用传统统计方法给鸢尾花分类,两个参数就能做到 90% 以上的准确率;而 LLM 是几十亿个5。
- **数据多。**训练集有时覆盖互联网上公开文字的一大部分6。
它干活的方式还有一个名字,后面会反复出现:因为每生成一个新词都要把「自己已经写出来的词」当作下一步的输入, 这种模型叫自回归模型(autoregressive model)——「自己生成的输出,回过头来当输入」7。
3.2 它是怎么学会的:两段式训练
先看一个反直觉的事实:训练这台机器,不需要任何人给它标答案。
传统的做法(书上叫监督学习,supervised learning)是:人先标好几千几万条「这是垃圾短信 / 这不是」, 机器再照着学。预训练不这样,它用的是普通文字本身。
书里管这个叫自监督学习(self-supervised learning): 「标签」不用人给,直接从数据本身 的结构里取:把一句话的下一个词遮住,让模型猜,答案就在原文里。 这样出题可以无限量供应,所以才能用上海量无标注文本8。
于是整个训练分成两段:
第一段:预训练(pretraining)
在海量无标注文字上反复玩「猜下一个词」
→ 得到基座模型(foundation model,也叫 base model,基础模型):
会续写、有一点「看几个例子就会做新任务」的能力,但还不会听人话
第二段:微调(fine-tuning)
在小得多的有标注数据上继续训
→ 两种主流做法:
· 分类微调:给文本打标签(比如垃圾短信识别)
· 指令微调:给它「指令+标准答案」对,教它按指令办事
这个两段式不是这本书的发明,是 GPT-3 以来整个行业的标准流程9。 书里还给了「为什么要自己造一个」的三条现实理由,都是工程判断而不是学术好奇: 领域定制能赢过通用模型(书里举了彭博社为金融专门训的 BloombergGPT); 数据隐私(敏感数据不必发给第三方);小模型可以直接跑在笔记本和手机上10。
3.3 家谱:Transformer、BERT 与 GPT
这本书造的模型,架构名字叫 Transformer——一种 2017 年才出现的神经网络架构, 出自论文《Attention Is All You Need》,最初是为机器翻译设计的(英语译德语、法语)11。 它的关键零件叫注意力机制:让模型在处理一个词的时候,能有选择地「回头看」输入里其他相关的词, 而不是对前文一视同仁12。这个零件太重要,原书用整整一章(第 3 章)手写它,我们也拆成两章(第 03、04 章)讲透。
原始的 Transformer 有两个半件:
- 编码器(encoder):负责读。把输入文字整个读进去,转成一串数值表示;
- 解码器(decoder):负责写。拿着编码器的输出,一个词一个词地把译文写出来13。
后来的模型把这个架构拆成两支,各自只取一半:
| 模型 | 取了哪一半 | 训练它干什么 | 擅长 |
|---|---|---|---|
| BERT | 编码器 | 猜被遮住的词(句子里挖空,让它填) | 文本分类,比如判断一条帖子有没有毒(X 平台就在这么用) |
| GPT | 解码器 | 猜下一个词 | 生成:续写、翻译、写代码 |
这是书里的一张对照表,也是我们全书的立场:这本书只走 GPT 这一路——只留解码器、只管生成14。
书里还专门澄清了一个常见的用词混乱:今天「Transformer」和「LLM」经常被当成同义词用, 但严格说,不是所有 Transformer 都是 LLM(它可以拿去处理图像), 也不是所有 LLM 都是 Transformer(有用循环结构或卷积(每个位置只跟邻近一小片做乘加的那种计算,图像处理出身)结构造的,动机是算得更省)。 本书说的 LLM 一律指 GPT 这类基于 Transformer 的15。
GPT 还有两个值得记住的副产品:
-
不给任何例子直接让它干活,这叫零样本(zero-shot); 在输入里塞几个示范再让它做,这叫少样本(few-shot)——它都接得住,不需要为此改结构、改训练16。
-
没人专门训练它做、读得够多它自己却会了——这种现象叫涌现(英文 emergent behavior,也常译「涌现能力」)。 书里原话是:这个能力「最初出乎研究者的意料」17。比如没人教它翻译,但读够了多语言文本之后它自己会翻。
3.4 规模感:GPT-3 读了什么、花了多少
主走查来了。这一节用书里给的 GPT-3 的真实数字,把「大」落成具体的量。
GPT-3 是 ChatGPT 初版所用的基座模型(只做完第一段预训练、还没微调的「毛坯」模型,行话也叫 foundation/base model)。它的预训练数据长这样18:
| 数据集 | 内容 | 词元数 | 训练时占比 |
|---|---|---|---|
| CommonCrawl(过滤后) | 网页爬取 | 4100 亿 | 60% |
| WebText2 | 网页爬取 | 190 亿 | 22% |
| Books2 | 网络 书籍 | 550 亿 | 8% |
| Books1 | 网络书籍 | 120 亿 | 8% |
| 维基百科 | 高质量文本 | 30 亿 | 3% |
「词元」就是模型读字的最小单位(第 02 章细讲,大致是一个词或一个词片段)。 表里合计约 4990 亿个词元,但 GPT-3 实际只训练了其中 3000 亿个—— 为什么没用全部,论文作者没有说明,书里照实记了这笔悬案19。
给个参照物:仅 CommonCrawl 这一份(4100 亿词元)就要占约 570 GB 存储20; 作为对照,这本书后面带你训练的模型,读的是一篇 2 万字符的短篇小说——六个数量级的差距, 但用的是同一套流程。
钱的账更直接:GPT-3 的预训练成本估计为 460 万美元(按云计算额度计)21。 再给一个更近的参照:书里另一处算了 Llama 2(70 亿参数)的账——18 万多个 A100 GPU 小时, 按当时云价约合 69 万美元22。预训练是富人的游戏,这就是为什么「加载别人训好的权重」 在第 5、6、7 章反复出现。