跳到主要内容

大模型是什么

核心要点

  • LLM = 学 next-token 概率 + 自回归循环
  • 数据流:token → embedding → block × L → LM head
  • Self-attention 同时解掉 RNN 两个根本约束
  • 训练并行,推理串行,走同一条管线
  • 本篇只画地图,机制留给 03-08 章

名词定义

本篇使用的共享名词在父总览 1 总览 已统一定义。大小写约定:架构名首字母大写 (Transformer / RNN / LSTM),算子或机制名小写 (self-attention / cross-attention / causal mask)。本篇新引入两个名词:

名词定义
Next-token predictionLLM 的核心训练目标:给定前 $t-1$ 个 token,预测第 $t$ 个 token 的概率分布 $P(x_t \mid x_1, \ldots, x_{t-1})$
Autoregressive (自回归)生成时把刚预测出的 token 接回输入末尾,再预测下一个,如此循环直到结束

@tbl-anatomy-glossary 本篇新引入名词

LLM 到底在做什么?

核心问题:一个能写代码、做翻译、做推理的大语言模型,内部本质上在学什么?

LLM 是一个学习 next-token 概率分布的函数,配自回归循环把单步预测拼成长输出。一个公式说完:

$$\begin{equation} P(x_t \mid x_1, x_2, \ldots, x_{t-1}) \label{eq:anatomy-next-token} \end{equation}$$

这一句话包含两个独立但缺一不可的部件:

  • 概率函数 (next-token prediction):模型本体是个数学函数,吃一段 token 序列,吐"下一个 token 是词表里哪个" 的概率分布。训练时这是唯一的优化目标 (详见 06-预训练/02-语言建模目标)。
  • 自回归循环:模型一次只能预测一个 token,把"对话 / 写代码 / 做推理" 变成可生成的长输出,靠的是把单步预测拼成循环——预测一个 → 接回输入 → 再预测下一个 → 直到生成结束符。

为什么这一个目标能涌现各种能力,是 LLM 的核心反直觉:模型只学了 next-token,但这个目标蕴含"读懂前文才能预测准下一个" 的隐含要求,在海量文本上优化它就附带学到了语义、语法、世界知识、推理模式 (详见 06-预训练/04-scaling-laws)。

一次前向跑过哪些部件?

核心问题:从读者输入的字符串到模型吐出下一个 token,数据具体经过哪些处理?

数据流是一条线性管线,内嵌一个 L 层的 Transformer block 堆叠。整条管线走一遍 = 预测出 1 个 token():

图 2.1: 从输入字符串到下一个 token 的完整数据流 (单步)

先建立两个直觉

  • 一次前向 = 1 个 token:上图走一遍只产出 1 个新 token。生成 100 个 token 要走 100 遍——但 KV cache 让第 2 遍之后的计算量大幅下降 (详见 08-推理/03-kv-cache)。
  • 训练和推理走同一条管线:唯一区别是训练时一次前向同时算"每个位置预测下一个 token" 的 loss 并反传,推理时只取最后位置的输出并采样 (详见 08-推理/01-总览)。

部件清单对应到全景图每一格():

部件职责张量形状详见
Tokenizer字符串切成离散 token idstring → [s]03-02
Token embeddingtoken id 查表到 $h$ 维向量[s][s, h]03-03
位置编码注入"第几位" 信息[s, h][s, h]03-04
Self-attentiontoken 之间互相看,加权求和[s, h][s, h]04
FFN (MLP)单 token 内非线性加工[s, h][s, h]05-02
LayerNorm + 残差稳定训练 + 让深层堆叠不退化[s, h][s, h]05-03
Transformer block上述四件套组装[s, h][s, h]05-04
LM head最后一层隐向量投到词表,得到 logits (GPT-2/3 与 embedding 共享权重 = weight tying; Llama / Qwen 大模型 untie,详见 03-token-embedding)[s, h][s, V]06-02
Samplinglogits → 1 个 token id[V] → int08-04
自回归循环单步预测拼成长输出多次重跑前向08-02

@tbl-anatomy-components 部件职责与外链 ($s$ 序列长度,$h$ 隐藏维度,$V$ 词表大小,定义见父总览 1 总览)

为什么用 Transformer 而不是 RNN?

核心问题:Transformer 之前 RNN/LSTM 主导语言建模十年,为什么被一个新算子在两年内全面取代?

RNN 用一个递推公式同时引入了两个对训练大模型致命的约束,Transformer 用 self-attention 把两条同时解掉

约束 1: RNN 长程依赖学不动

RNN 的核心递推:

$$\begin{equation} h_t = f(h_{t-1}, x_t) \label{eq:anatomy-rnn} \end{equation}$$

梯度沿时间反传时反复乘同一个权重矩阵,长序列下梯度要么爆炸要么消失,远端 token 对当前的影响被冲淡。Bengio, Simard, Frasconi 1994 给出梯度沿时间反传的理论分析[1]。LSTM (Hochreiter & Schmidhuber 1997) 用门控机制部分缓解[2],但实践中超过几百 token 仍然吃力。

约束 2: RNN 训练无法时间维并行

公式 \ref{eq:anatomy-rnn} 强制 $h_t$ 必须在 $h_{t-1}$ 算完后才能算。一段 4K token 序列要串行 4K 步,GPU 的大规模并行算力用不上,训练吞吐被这条数据依赖卡死。

Self-attention 同时解掉两条

Transformer (Vaswani et al. 2017) 把递推换成自注意力[3]:

$$\begin{equation} y_t = \sum_{i=1}^{t} \alpha_{t,i} \cdot v_i, \quad \alpha_{t,i} = \mathrm{softmax}_i\left(\frac{q_t \cdot k_i}{\sqrt{d}}\right) \label{eq:anatomy-attn} \end{equation}$$

每个位置的输出直接对所有位置加权求和,权重由 query / key 内积决定。两个根本变化:

  • 长程信息一跳即达:位置 $t$ 看位置 $i$ 不依赖中间任何位置,不存在沿时间衰减。任何两个 token 距离都是 1 跳。
  • 序列维全并行$y_t$ 之间没有数据依赖,训练时所有位置可以一次性算完——正好契合 GPU 的大规模并行算力,训练吞吐随算力规模线性扩展。

代价是 self-attention 复杂度 $O(s^2 \cdot h)$,对序列长度二次增长——这又催生了长上下文专题里的注意力变体 (详见 03-长上下文/04-注意力机制变体)。

Decoder-only 是后续所有模型的主线

Transformer 原论文是 encoder-decoder 结构 (翻译任务),GPT-1 把它简化成仅 decoder + 因果掩码,成了之后所有大模型的事实主线。Radford et al. 2018 用 12 层 decoder + 自回归 next-token prediction,在 12 个 NLP 任务里 9 个达到 SOTA[4]。这条 decoder-only 主线被 GPT-2/3、Llama、Qwen、DeepSeek 等全面沿用,也是本章节后续 04-08 章默认的架构基线。

训练和推理跑同一条管线吗?

核心问题:既然图里只画了一条管线,训练时跑的、推理时跑的是同一个东西吗?

是同一条管线,但两端的计算特征完全相反,这条差异是后续 06/07/08 三章共用的"为什么"

维度训练推理 (decode 阶段)
一次前向产出序列每个位置的 logits + 算 loss 反传只取最后位置,采样出 1 个 token
序列维并行完全并行 (一次吃 4K token,所有位置并行算)必须串行 (生成第 $t$ 个要等第 $t-1$ 个完成)
计算瓶颈compute-bound, MFU 看矩阵乘memory-bound,瓶颈在 KV cache 读取带宽
KV cache不用 (每步独立反传)必用 (否则每生成一个都要重算前文 K/V)

@tbl-anatomy-train-vs-infer 训练与推理的根本差异 (推理还有 prefill 阶段,特征接近训练前向,详见 08-02 prefill 与 decode)

这张表回答了三章的"为什么":为什么 06 预训练能跑 trillion token 数据集 (并行);为什么 08 推理需要专门优化 KV (decode 串行 + memory-bound);为什么 07 微调与对齐是个"小训练" (走训练前向,不走 decode)。

接下来怎么深入?

核心问题:拿到全景之后,想深挖某一块去哪里读?

按部件展开,跟图里的方框一一对应:

  • 数据如何进入模型 → 03-文本如何变成数字: tokenization / embedding / 位置编码
  • attention 的 4 步递进 → 04-注意力机制:简化自注意力 → Q/K/V → 因果掩码 → 多头
  • 从 attention 到完整模型 → 05-组装GPT: FFN / 归一化 / 残差 / block 堆叠
  • 模型怎么学到能力 → 06-预训练:语言建模目标 / 训练循环 / scaling laws
  • 怎么对齐人类偏好 → 07-微调与对齐: SFT / RLHF / DPO
  • 怎么把训练好的模型用起来 → 08-推理: prefill/decode / KV cache / 采样 / 量化

按主题深挖 (本章不展开但相关的进阶专题):

Takeaway

知识点核心结论
LLM 是什么$P(x_t \mid x_{<t})$ 的概率函数 + 自回归循环
单一目标 vs 涌现能力next-token 一个目标蕴含"读懂前文" 要求,海量数据下涌现语义/推理
数据流主线tokenizer → embedding → 位置编码 → Transformer block × L → LM head → sampling
一次前向只产出 1 个 token,长输出靠自回归循环
Transformer 取代 RNN 的理由self-attention 同时解掉"长程依赖"与"训练串行" 两条 RNN 根本约束
Decoder-only 是事实主线GPT-1 起,后续 GPT/Llama/Qwen/DeepSeek 全部沿用
训练 vs 推理同一条管线;训练并行 / compute-bound,推理 decode 串行 / memory-bound
本篇定位只画地图,不讲机制——机制全部留给 03-08 章

开放问题

知识层面 (LLM 主线尚未定论的开放方向):

  • Decoder-only 是否最终胜出:GPT 系把 decoder-only + next-token 推成事实主流,但 encoder-decoder (T5 / FLAN-T5) 在部分任务仍占优,学术界仍有争议。
  • Next-token prediction 是否足以 scale 到推理:o1 / DeepSeek-R1 等推理模型在 next-token 之上加了显式 chain-of-thought 与 RL 训练,单纯 scale next-token 能否涌现强推理仍是开放问题。
  • 非自回归 / 扩散范式的潜力:扩散语言模型 (LLaDA / Diffusion-LM 系) 试图打破自回归串行约束,能否在质量与吞吐上整体超越自回归待观察。

写作待办 (本篇文档层面):

参考资料

  1. Bengio, Simard, Frasconi. Learning Long-Term Dependencies with Gradient Descent Is Difficult. IEEE Transactions on Neural Networks, 5(2):157-166, 1994.
  2. Hochreiter, Schmidhuber. Long Short-Term Memory. Neural Computation, 9(8):1735-1780, 1997.
  3. Vaswani et al. Attention Is All You Need. NeurIPS 2017. https://arxiv.org/abs/1706.03762
  4. Radford et al. Improving Language Understanding by Generative Pre-Training (GPT-1). OpenAI 2018. https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

延伸阅读

  • Sebastian Raschka. Build a Large Language Model (From Scratch). Manning, 2024. Chapter 1.
  • Andrej Karpathy. Neural Networks: Zero to Hero. https://karpathy.ai/zero-to-hero.html
  • 父总览:1 总览 — 全章节地图 + 共享名词与形状约定。