Transformer 解剖:从 Attention 到推理系统

一个写给工程师的 Transformer 专栏:既讲数学,也讲它在 GPU 上每一秒钟在做什么。

打开任何一篇关于大语言模型的论文,最底下的 backbone 大概率都是这张图:

flowchart LR
  X[输入 token 序列] --> EMB[Embedding + 位置编码]
  EMB --> B1[Transformer Block × N]
  B1 --> NORM[Final LayerNorm]
  NORM --> HEAD[LM Head / 分类头]
  HEAD --> Y[输出 logits]

GPT、Llama、DeepSeek-V3、Claude、Gemini——它们的差异藏在每个 Block 内部的细节里:注意力是不是分组共享(GQA / MQA)、FFN 是不是稀疏激活(MoE)、位置编码是 RoPE 还是 ALiBi、归一化放前面还是后面(Pre-LN / Post-LN)、激活函数是 GELU 还是 SwiGLU。但「Transformer Block × N」这个骨架本身,已经九年没变过了。

九年没变过的东西,值得彻底解剖一次。

这个专栏在解剖什么

这个专栏有三条主轴,对应你看到一段大模型代码时心里会冒出来的三类问题。

第一条:Attention 到底是怎么算的。 Q、K、V 三个矩阵从哪来,缩放点积里的 √d 为什么不能省,softmax 把分布拉宽还是压窄,Multi-Head 是把同一件事做 N 遍还是把 N 件事做一遍。位置编码为什么从 sinusoidal 一路演化到 RoPE,每一次演化解决了什么具体问题。这是数学层。

第二条:Transformer 在工程上长什么样。 Encoder / Decoder / Decoder-only 各自的归宿,BERT 与 GPT 的范式之战,Tokenizer 选 BPE 还是 SentencePiece,词表多大算够用,从零写一个 mini-GPT 训练它写古诗——读者会在这部分动手把整个 Transformer 跑起来。这是工程层。

第三条:推理系统是怎么榨干这台机器的。 这是本专栏最厚的部分,也是大多数 Transformer 教程不讲的部分。你的显卡在跑一次推理时,时间到底花在了哪里?为什么 Prefill 阶段是计算密集、Decode 阶段是访存密集?KV Cache 凭什么能让一次推理快几百倍、又凭什么会把显存打满?PagedAttention 解决了 KV Cache 的什么病?INT4 量化为什么能省 75% 显存却几乎不掉点?投机解码是怎么用一个小模型替大模型「赌」出加速的?Flash Attention 为什么不是「更聪明的算法」而是「更懂内存层级的实现」?TP / PP / EP 三种并行各自适合多大的模型?

读完这三条主轴,你会建立一种很具体的能力:看到一段大模型代码、一段推理日志、一张 GPU 利用率曲线,能立刻在心里把它对应到 Transformer 的某个组件、某段计算、某个显存区域——而不是停留在「这是个黑盒」。

读完你能做到什么

  1. 手推注意力,再手写实现。 Self-Attention 的数学、多头为什么有效、位置编码的几种做法,然后从零写一遍(第2章 Self-Attention第3章 多头第4章 位置编码第8章 从零手写 Attention)。
  2. 搭一个能跑的 mini-GPT。 Transformer Block 的组装、tokenizer 的作用与坑,以及一个可训练的小模型(第5章 Transformer Block第9章 mini-GPT第10章 Tokenizer)。
  3. 解释为什么是 Decoder-only。 三种架构(Encoder-only / Decoder-only / Encoder-Decoder)的分工与胜负手、预训练目标的选择(第6章 架构谱系第7章 预训练)。
  4. 看懂显存账与推理优化。 KV Cache 为什么是推理的中心、量化省在哪、投机解码怎么换回时间、FlashAttention 与并行策略(第15章 KV Cache第16章 量化第17章 投机解码第18章 FlashAttention 与并行)。
  5. 理解规模与稀疏。 Scaling Laws 说了什么又没说什么、MoE 的路由与代价、长上下文的几条技术路线(第11章 Scaling Laws第12章 MoE第13章 长上下文)。
  6. 看清训练的两个阶段与之后。 预训练与后训练的分工,以及 Transformer 之后有哪些替代路线(第14章 两阶段第19章 Transformer 之外)。

这个专栏面向谁

前置知识:本专栏假设读者熟悉 Python、PyTorch(能看懂 nn.Linear / nn.Module / 反向传播),具备线性代数基础(矩阵乘法、向量内积、softmax),了解神经网络训练的基本概念(损失函数、优化器、梯度下降)。不要求读者读过 Attention 论文,也不要求懂 CUDA 或者并行计算——这些会在用到的章节随讲随用。

目录

第一部分 · 为什么是 Transformer

第二部分 · 注意力机制

第三部分 · 架构家族

第四部分 · 从零实现

第五部分 · 规模化

第六部分 · 推理系统

终章

与其他专栏的关联

引用与版本

本专栏涉及的论文与代码版本(2026 年 5 月锁定):

来源 版本 / 提交
Attention Is All You Need arXiv:1706.03762v7(2023 修订版)
GPT-2 / GPT-3 / GPT-4 OpenAI 公开技术报告
Llama 1 / 2 / 3 Meta 官方论文与 meta-llama/llama 仓库主分支
DeepSeek V2 / V3 DeepSeek 官方技术报告
Flash Attention 1/2/3 Tri Dao et al. 三代论文
vLLM v0.6.x 主分支
Karpathy nanoGPT 主分支(用于第 8、9 章实操)

每一条引用都会在出现处给出文献编号或仓库路径,读者可逐项核对。

版权声明

本专栏内容为 杨艺韬 版权所有,保留一切权利。未经书面许可,不得全文或大段转载、改编、翻译,或用于任何商业用途(含以本专栏内容训练模型、生成衍生课程或商品)。

欢迎分享本专栏的链接。引用少量内容用于评论、教学或研究时,请署名 杨艺韬 并附上原文链接。