跳到正文

第 L2 层

LLM 核心

  1. + 互联网上的海量文本

    1预训练

    能续写任何文本的基座模型

  2. + 好回答的示例

    2指令微调

    会回答问题的助手

  3. + 偏好与奖励

    3强化学习

    更有用、更谨慎的助手

  4. + 你自己的示例

    4微调

    适合你的任务的模型

这一层

这一层解决什么

两条完成标准:能从零实现并训一个 GPT;能把预训练到对齐的全流程讲给面试官听,每一步说得出「为什么」。本层的半衰期是慢变——Transformer 和预训练目标七八年没变,变的是配方(数据、scaling、后训练方法、MoE),所以每年复习一轮,不用每季度追。

各节点怎么连成一条线

总入口是 LLM:模型怎么工作:模型只做一件事,给一串 token 算下一个 token 的分布。其余节点是这件事的部件,按数据流的顺序排:

  • Tokenizer:文本怎么变成 id。字节级 BPE,词表决定了嵌入矩阵的大小和模型算术、拼写的毛病。
  • Transformer:模型本体。注意力替代循环,残差和归一化让它能叠深;本层的复现项目挂在这里。
  • 预训练与 scaling:把本体训成模型。预训练目标、数据、scaling laws 与 Chinchilla 的「参数与数据同比增长」。
  • 微调:教它你的任务 和 后训练:用奖励塑形:后训练。SFT 教格式,RLHF / DPO 用偏好塑形;两者合起来就是「对齐」。
  • 解码与推理:从分布里取 token。温度、top-p、beam,以及自回归为什么慢、推测解码怎么救。
  • 长上下文与 MoE 和 多模态:对骨架的两类改造。前者和注意力的平方代价谈判并让参数量与算力脱钩,后者把别的模态编码成 token 塞进同一个序列。

一条线讲下来就是面试的那道题:tokenizer → Transformer → 预训练(scaling)→ SFT → RLHF / DPO → 解码。

给资深工程师的减法

  • encoder-decoder、BERT 一族可以跳过,只学 decoder-only;需要时知道它们存在即可。
  • 原论文不必先读:先跟 Karpathy 写出来,再读「Attention Is All You Need」才读得懂。
  • scaling laws 只需要 Chinchilla 一篇的结论和一张图,不用复现幂律拟合。
  • RL 本身不用学:后训练用到的 PPO / GRPO 在 RLHF book 里有够用的篇幅。
  • 推理系统(KV cache 实现、batching、量化)属于 L3,本层只讲概念。
  • 多模态只需要知道两种接法,不用追最新模型。

推荐前十

按阅读顺序;每条链到下面的节点。

  1. 1

    Deep Dive into LLMs like ChatGPT — Andrej Karpathy free

    三个半小时建立从 token 到 RLHF 的全貌,之后每个节点都是它的放大 → LLM:模型怎么工作

  2. 2

    minbpe free

    自己写一遍 BPE,tokenizer 的一切毛病从此有解释 → Tokenizer

  3. 3

    Let's build GPT: from scratch, in code, spelled out. free

    两小时从二元模型写到多头注意力,完成标准第一条 → Transformer

  4. 4

    LLMs-from-scratch free

    把「从零实现并训一个 GPT」做成逐章可验收的清单,一直做到指令微调 → Transformer

  5. 5

    CS336: Language Modeling from Scratch free

    全流程的提纲,19 讲各对应一个部件,作业是自己实现 → 预训练与 scaling

  6. 6

    Training Compute-Optimal Large Language Models free

    每个参数约 20 个 token,之后所有训练配方的来源 → 预训练与 scaling

  7. 7

    Hugging Face LLM Course free

    用库微调一个小模型,看见 SFT 在数据层面长什么样 → 微调:教它你的任务

  8. 8

    RLHF book — Nathan Lambert free

    奖励模型、PPO、DPO、可验证奖励,后训练这一段讲给面试官听的底稿 → 后训练:用奖励塑形

  9. 9

    Generation strategies — Transformers documentation free

    贪心、采样、beam 各跑一遍,温度和 top-p 变成有手感的旋钮 → 解码与推理

  10. 10

    Mixtral of Experts free

    一篇短论文讲清 MoE 的路由和「激活参数」是什么 → 长上下文与 MoE

节点

LLM:模型怎么工作

半衰期: 慢变谁在招

llmdecoding-and-inferenceembeddingsfrontier-on-demandfrontier-weekly没有先修

你能调用的每一个模型都是两步做出来的。预训练读完互联网的一大片,只学一件事:预测下一个 token——得到的是一个能续写任何文本的模型。后训练再给它看好回答的例子、奖励更好的那一个,它才变成会回答问题的助手。理解这一点,就能预料它哪里会错:数不准、记不清、上下文一长就忘、越自信越可能是编的。这一页只看一样东西的话,就看那条视频:它从 token 一路讲到后训练,没有跳过解释「模型为什么出错」的那些部分。本节点是整张图的起点,L2 的其他节点是它的部件,L4 全部建在它之上。

之后
解码与推理 · Embedding:把意思变成向量 · 有事再查:前沿参考清单(≤ 15) · 每周必看:前沿信息流(≤ 5) · 调用模型 API:token、流式、工具、成本 · Serving:自己跑模型 · Tokenizer
  • Deep Dive into LLMs like ChatGPT — Andrej Karpathy free

    video — Three and a half hours from tokens to RLHF, from one of OpenAI's founding members — the mental model every later choice rests on.

  • AI Engineering — Chip Huyen · O'Reilly paid

    book · only ch. 2 — Chapter 2 is this skill — training data, architecture, post-training, sampling — for people who build on models; the rest is the AI Engineer track at length: evals, RAG, agents, cost.

复现项目: Ship one LLM feature end to end — Structured output with schema validation, streaming, a fallback model, and per-request cost and latency logged — then write down the numbers.

落选 (4)
  • Stanford CS336 — 已作为 预训练与 scaling 的候选,它是本节点的「动手版」。
  • Raschka「Build a Large Language Model (From Scratch)」 — 已作为 Transformer 的候选。
  • Jay Alammar「The Illustrated GPT — 2」(2019) — 读图好,但 Karpathy 的深潜视频覆盖了它并且更新。
  • Hugging Face LLM Course — 已作为 微调:教它你的任务 的导入精选。

Tokenizer

半衰期: 慢变

llmtokenizerpretraining-and-scaling

模型看不到字符,只看到 token 的整数 id;tokenizer 决定了「一个词是几个 token」「中文为什么比英文贵」「为什么数数和倒序拼写做不好」。主流做法是字节级 BPE:从字节开始,反复把最常见的相邻对合并成新 token,直到词表满。它是 LLM:模型怎么工作 的第一道门:预训练与 scaling 里的词表大小决定嵌入矩阵和输出层的规模,解码与推理 里每一步采样的都是它的 id。训练数据和 tokenizer 不匹配是很多「模型莫名变笨」的根源。

先修
LLM:模型怎么工作
之后
预训练与 scaling
  • minbpe free

    repo · 3 小时跟写 — 最小的字节级 BPE 实现,训练、编码、解码加上 GPT-4 的正则切分都在几百行里;自己写一遍,就能解释为什么同一段文字在不同模型上 token 数不同、为什么模型算术和拼写会翻车——从零写 GPT 的第一个部件。

复现项目: 训一个自己的 tokenizer — 用 minbpe 在一份中英混合语料上训一个 1k 词表的 BPE,对比它和 GPT-4 的 cl100k 在同一段中文上的 token 数,解释差距来自哪里。

落选 (3)
  • Karpathy「Let's build the GPT Tokenizer」视频 — 已作为 调用模型 API:token、流式、工具、成本 的导入精选(0:00–14:56 段),这里不重复;minbpe 就是它的代码版。
  • Hugging Face LLM Course ch. 6 — 讲的是用库训 tokenizer,和 微调:教它你的任务 导入的课程同源。
  • SentencePiece 论文 — 工程细节多,看过 BPE 之后按需读。

Transformer

半衰期: 慢变

linear-algebrabackprop-and-losspytorchtransformerai-history-scalinglong-context-and-moemultimodalparallel-training

2017 年之后几乎所有大模型的骨架:把序列建模交给注意力(每个 token 按相关性加权看所有 token),叠成可并行的层。它解决的问题是循环网络训练不能并行、长距离依赖传不远;代价是注意力对序列长度是平方级的,后面的 KV cache、长上下文、MoE 都是在和这个代价谈判。

先修
线性代数 · 损失与反向传播 · PyTorch:自己训一个网络
之后
第三次浪潮:scaling 与 LLM · 长上下文与 MoE · 多模态 · 并行训练:为什么一张卡不够 · 预训练与 scaling
  • Let's build GPT: from scratch, in code, spelled out. free

    video · 2 小时视频 + 4 小时跟写 — 两小时里从二元语言模型一路写到多头注意力和残差块,每一行代码都对应 Transformer 的一个部件;看完能从零实现 GPT,正是本层的完成标准。

  • nanoGPT free

    repo — 三百行能复现 GPT-2 训练的最小实现;看懂它等于看懂预训练循环,改它是最便宜的消融实验台。

  • LLMs-from-scratch free

    repo · 每章 2–4 小时,共 7 章 — 《Build a Large Language Model (From Scratch)》全书的代码:从注意力到加载 GPT-2 权重、预训练、分类微调、指令微调,每一步一个 notebook;Karpathy 的视频给直觉,这套仓库把「能从零实现并训一个 GPT」做成可逐章验收的清单。

复现项目: 从零写并训一个 GPT — 照视频手写 decoder-only Transformer,在一份小语料上训到能续写;再改一个设计选择(头数、位置编码、层归一化位置)做一次消融,记录损失曲线。

落选 (4)
  • Jay Alammar「The Illustrated Transformer」(2018) — 读图最好的入门,但不带代码;跟完 Karpathy 的视频再回来看图巩固。
  • Vaswani 等「Attention Is All You Need」(2017) — 原论文,实体已在 Attention Is All You Need;写完代码再读才读得懂。
  • Harvard NLP「The Annotated Transformer」 — 逐行注释原论文的实现,但是 encoder-decoder,和现在的 decoder-only 主流有距离。
  • Stanford CS25 Transformers United — 讲座合集,适合建立全貌,不适合当第一门课。

预训练与 scaling

半衰期: 慢变

transformertokenizerinformation-theorypretraining-and-scalingfine-tuning

预训练的目标只有一个:在尽可能多的文本上最小化下一个 token 的交叉熵。本节点讲三件事:数据怎么来、怎么去重和过滤;scaling laws——loss 随参数量、数据量、算力的幂律关系,以及 Chinchilla 给出的「算力固定时两者应同比增长」;训练配方里的学习率调度、batch size、混合精度。它把 Transformer 和 Tokenizer 变成一个真正的模型,输出交给 微调:教它你的任务 和 后训练:用奖励塑形 去对齐;算力和并行的工程细节属于 L3,这里只讲到「为什么要那么多卡」。

先修
Transformer · Tokenizer · 信息论
之后
微调:教它你的任务
  • CS336: Language Modeling from Scratch free

    course · 19 讲,每讲 80 分钟;作业另计 — 唯一一门把「从零造一个语言模型」当主线的公开课:tokenizer、架构、MoE、GPU、并行、scaling laws、数据、对齐各一讲,作业是自己实现每一块。要把预训练到对齐的全流程讲给面试官听,它就是提纲。

  • Training Compute-Optimal Large Language Models free

    paper · 2 小时 — 给定算力,参数量和数据量应该同比例增长、每个参数约 20 个 token——这一条改写了之后所有模型的训练配方;读原文能回答「为什么现在的模型参数没变大但数据多了十倍」。

复现项目: 在小模型上画一条 scaling 曲线 — 用 nanoGPT 在同一语料上训三个尺寸(参数量各差 4×)的模型,各训到同样的 token 数,把验证 loss 对参数量画成对数坐标;再固定算力换一次数据量,看 Chinchilla 的结论在玩具规模上是否成立。

落选 (3)
  • Kaplan 等「Scaling Laws for Neural Language Models」(2020) — 第一篇 scaling 论文,但 Chinchilla 修正了它的结论,先读后者。
  • Stanford CS224n — 面更宽(NLP 全史),预训练只占两讲;CS336 更对本节点。
  • Raschka「Build a Large Language Model (From Scratch)」ch. 5 — 预训练一章很好,但整本已作为 Transformer 的候选。

微调:教它你的任务

半衰期: 慢变谁在招

预训练权重冻结LoRA可训练你的示例更擅长你的任务

微调用你自己的例子接着训练,让模型在一件窄活上变好:一种格式、一个领域、一种语气。LoRA 这类方法只训一个小的附加模块而不是全部权重,所以一张 GPU 放得下。等提示和检索都不再有进步时再用它,而且必须有一个评测证明它赢过了只用提示的模型;没有基线对比的微调不算数。

先修
PyTorch:自己训一个网络 · Evals:知道它有没有变好 · 预训练与 scaling
之后
后训练:用奖励塑形
  • Hugging Face LLM Course free

    course — Tokenizers, the Trainer, and fine-tuning chapters in runnable notebooks — enough to fine-tune a small open model on your own data.

  • TRL documentation — Hugging Face free

    docs — The library behind most supervised fine-tuning and preference tuning (DPO, GRPO) you will be asked about, with working recipes.

复现项目: Fine-tune against a prompted baseline — LoRA-tune a small open model on one narrow task and compare it with a prompted frontier model on the same eval set — quality, latency and cost per 1,000 calls.

落选 (3)
  • Ouyang 等「Training language models to follow instructions with human feedback」(InstructGPT, 2022) — SFT → RM → PPO 三段式的原文,概念已被 后训练:用奖励塑形 的 RLHF book 覆盖。
  • Hu 等「LoRA」(2021) — 原论文短,但 TRL / PEFT 文档已经把它讲成可用的 recipe。
  • Unsloth 文档 — 工具类、更新快,不作为原理精选。

后训练:用奖励塑形

半衰期: 慢变谁在招

模型回答 A回答 B奖励A 更好训练让它向 A 靠拢

强化学习从分数里学,而不是从例子里学:模型试几个回答,一个奖励说哪个更好(人的偏好,或者「通过测试」这类检查),训练把它推向得分高的方向。基础模型就是这样变成有用的助手的,推理模型也是这样学会一步步解题的。能被钻空子的奖励,模型也一定会学着钻,发现这一点是工作的一部分。理解它,你才知道「对齐」「拒答」「谄媚」从哪里来。

先修
微调:教它你的任务
  • RLHF book — Nathan Lambert free

    book — Post-training as practised on language models — reward models, PPO, DPO, verifiable rewards — by a researcher who post-trains open models, free to read online.

  • TRL documentation — Hugging Face free

    docs — Runnable GRPO and DPO trainers, so the book's methods become an experiment on a laptop-sized model.

复现项目: Preference- or reward-tune a small model on a verifiable task — GRPO on arithmetic or unit-test-checked code with a small open model; plot reward against a held-out eval and explain where it starts to game the reward.

落选 (4)
  • Rafailov 等「Direct Preference Optimization」(2023) — DPO 原文,RLHF book 有专章,先读书再读论文。
  • Lilian Weng「Reinforcement Learning from Human Feedback」/ 早期 RL 系列 — 综述质量高,但 RLHF book 更新、更完整。
  • Sutton & Barto, Reinforcement Learning: An Introduction — 经典 RL 教材,LLM 后训练只用到其中一小角,不值整本。
  • Stanford CS336 对齐三讲 — 已通过 预训练与 scaling 的候选进入本层。

解码与推理

半衰期: 慢变

llmprobabilitydecoding-and-inferenceserving

训练好的模型只给出下一个 token 的分布,怎么从分布里取 token 是解码:贪心、beam search、带温度的采样、top-k / top-p 截断。温度在改分布的平坦度,top-p 在砍掉长尾,beam 在找整体最可能的序列而不是逐步最可能。推理这一侧则是自回归的代价:每生成一个 token 都要过一遍整个模型,瓶颈在显存带宽,KV cache 和推测解码是两种对策。本节点讲概念,服务系统(batching、量化、调度)在 L3 的 Serving:自己跑模型。它直接用 概率与统计 的词汇,建立在 LLM:模型怎么工作 之上。

先修
LLM:模型怎么工作 · 概率与统计
之后
Serving:自己跑模型
  • Generation strategies — Transformers documentation free

    docs · 1 小时 — 贪心、采样、beam 各是什么、各适合什么任务,每种都给一段可运行的 generate() 调用;页尾链到解释 top-k / top-p 的长文。跑一遍,temperature 和 top_p 对你就是有手感的旋钮而不是名词。

  • Fast Inference from Transformers via Speculative Decoding free

    paper · 1 小时 — 小模型猜几个 token、大模型一次验证,输出分布和大模型完全一致却快两三倍;它是理解「自回归解码的瓶颈在访存而不是算力」最直接的入口,也是面试里最常被问的推理加速概念。

复现项目: 手写采样循环 — 拿一个开源小模型,不用 generate(),自己写一个逐 token 的循环,实现温度、top-k、top-p,再实现最朴素的推测解码(小模型草拟 4 个 token、大模型验证),测三种方式的每秒 token 数。

落选 (3)
  • Hugging Face「How to generate text」博客 (2020) — 讲 top-k / top-p 的名文,但文档页已链到它,HN 背书不过线。
  • Holtzman 等「The Curious Case of Neural Text Degeneration」(2019) — top-p 的原论文,按需读。
  • Lilian Weng「Large Transformer Model Inference Optimization」 — 内容属于 L3。

长上下文与 MoE

半衰期: 慢变

transformerlong-context-and-moe

两个方向都是在和 Transformer 的代价谈判。长上下文:注意力对序列长度是平方级,而且位置编码在训练长度之外会失效,所以有旋转位置编码(RoPE)及其外推、稀疏 / 滑窗注意力,以及「上下文长了模型未必用得好」的 lost-in-the-middle 现象。MoE:把每层的 FFN 换成多个专家、路由器只激活其中几个,让参数量和每个 token 的算力脱钩——大模型因此能在同样的推理成本下装更多知识。两者都建在 Transformer 之上,训练上的并行和推理上的显存代价属于 L3(Serving:自己跑模型)。

先修
Transformer
  • Mixtral of Experts free

    paper · 1 小时 — 最短的一篇能把 MoE 讲明白的论文:每层八个专家、路由器每个 token 选两个,47B 总参数只用 13B 算力;读完能解释「参数量」和「激活参数量」为什么是两个数,以及 MoE 换来了什么、付出了什么(显存)。

复现项目: 给 nanoGPT 加一个 MoE 层 — 把 [[transformer]] 项目里的 FFN 换成 4 个专家 + top-2 路由,加上负载均衡损失,对比同算力下的验证 loss 和显存占用;再把上下文从 256 拉到 2048,记录注意力的显存和速度变化。

落选 (4)
  • Hugging Face「Mixture of Experts Explained」(2023) — 讲解更友好,但 HN 29 分不过线,留作 Mixtral 论文的伴读。
  • Fedus 等「Switch Transformers」(2021) — MoE 的奠基论文,篇幅长;Mixtral 一篇足够建立模型。
  • Su 等「RoFormer」(2021) — RoPE 原文,Transformer 项目里改位置编码时再读。
  • Liu 等「Lost in the Middle」(2023) — 现象重要但结论一句话就能记住。

多模态

半衰期: 慢变

transformerclassic-architecturesmultimodal

让语言模型看图、听声、看视频,主流做法只有两种:把其他模态编码成 token 塞进同一个序列(LLaVA 一路),或者用交叉注意力把它们接进语言模型的中间层。两种都要一个预训练好的模态编码器(视觉常用 CLIP 风格的对比学习模型)和一段「对齐」训练。学会它,面试里「多模态模型和纯文本模型差在哪」就能从结构上答,而不是从产品上答。它建在 Transformer 上,视觉编码器的卷积 / ViT 基础在 经典结构:CNN、RNN / LSTM、残差;微调:教它你的任务 的指令微调在这里以图文对形式再出现一次。

先修
Transformer · 经典结构:CNN、RNN / LSTM、残差
  • Visual Instruction Tuning free

    paper · 1.5 小时 — 多模态 LLM 最简配方的原文:视觉编码器出 patch 特征,一个投影层把它们变成「图像 token」,塞进语言模型和文本一起续写,再用指令数据微调;读完能把「模型怎么看图」讲成三句话。

复现项目: 把一个视觉编码器接到小语言模型上 — 用现成的 CLIP 视觉编码器和一个 1B 以下的开源语言模型,只训一个线性投影层,在一个小的图文对数据集上做看图说话;记录它能答对什么、答错什么,解释投影层在对齐什么。

落选 (3)
  • Raschka「Understanding Multimodal LLMs」(2024) — 把两种架构比较得最清楚的综述,但独立背书不过线(HN 4 分);读完 LLaVA 后强烈建议当伴读。
  • Radford 等 CLIP 论文 (2021) — 视觉编码器的来源,被引极多,但它是对比学习而非多模态 LLM,按需读。
  • Chip Huyen「Multimodality and Large Multimodal Models」(2023) — 同样背书不够,内容与 Raschka 重叠。

完成标准自测

  • 不看参考,写出 decoder-only Transformer 的前向(嵌入、位置、多头因果注意力、FFN、残差与归一化),在小语料上训到能续写。
  • 解释为什么注意力要除以 √d、为什么要因果 mask、层归一化放前还是放后有什么区别。
  • 口述预训练 → SFT → RLHF / DPO 全流程,每一步说出它改变了模型的什么、用了什么数据。
  • 说出 Chinchilla 的结论,以及它为什么改写了之后模型的参数量 / 数据量配比。
  • 解释温度、top-p、推测解码各在做什么,以及 MoE 的「总参数」和「激活参数」为什么是两个数。

复现项目从零写并训一个 GPT,再改一个设计选择做一次消融,记录损失曲线(挂在 Transformer)。

作者的笔记原稿。