跳到正文
动手理解 · CONCEPT LAB

跟着一枚 Token 穿过 Transformer Block

这里采用现代 decoder-only 模型常见的 Pre-Norm Block:归一化、因果注意力、残差合流和 FFN 依次发生。原始 Transformer 是 Post-Norm encoder–decoder,Decoder 还多一层 cross-attention;完整 Pre-Norm 语言模型通常也会在 Block 栈后接 final norm 与 LM Head。

已经发生 正在观察 接下来
01 / 03

状态传导图

h 输入残差流
N1 RMSNorm
QKV 生成 Q/K/V
ATTN 因果注意力
+ 第一次残差
N2 第二次 RMSNorm

残差流同时保留一条旁路,等待主分支结果回来相加。

观察点 01

归一化后,Token 生成 Q、K、V

在这个 Pre-Norm 示例里,当前隐藏向量先经 RMSNorm,再投影成 Query、Key、Value。Q 表示“我在找什么”,K 表示“我能被怎样找到”,V 是随后按权重汇总的内容。

跨 Token 信息交换正在准备
原信息保留通道残差旁路
此刻要记住

Q/K 决定看谁,V 决定取回什么。

基础 · Transformer / Attention

Transformer:注意力混合位置,FFN 改写通道

GPT 的「T」就是 Transformer。许多公开大语言模型仍以「注意力 + 前馈网络 + 残差流」为骨架,另一些则混入线性注意力或 State Space Model(状态空间模型,SSM)Mixture of Experts(混合专家,MoE)Key–Value Cache(键值缓存,KV Cache)则分别改造容量与运行时状态。这篇用大图 + 类比把边界拆开:注意力算什么、一个 Block 怎样流动,以及现代模型究竟替换了哪一笔账。

01 · 为什么

在它之前,模型「读句子」很吃力

Transformer(2017) 之前,序列建模常用 Recurrent Neural Network(循环神经网络,RNN)Long Short-Term Memory(长短期记忆网络,LSTM)——像一个 token 一个 token 顺着读。长距离信息要穿过许多递归步骤,同一序列内的时间步又依赖前一步,因此更难沿序列维并行训练;这不等于 RNN 无法建模长依赖,也不等于 Transformer 的自回归生成可以并行吐出所有新 token。

旧办法(RNN)
顺序逐 token 读 → 长句里「它指代谁」「开头和结尾的关系」要跨很多递归步传递;序列内计算依赖前一步,训练并行度受限。
Transformer 的突破
注意力把任意两个允许互看的位置直接连起来;Encoder 的位置可以看全序列,GPT 类因果 Decoder 的位置只能看当前及左侧前缀。训练时,各位置的计算仍可成批并行。
一句直觉
读「猫追老鼠,因为饿了」时,你要理解「它」指谁,会回看此前内容、重点匹配可能的指代对象。注意力提供了这种按内容加权取信息的通道,但某个注意力头权重高并不自动等于“模型的完整推理理由”。
📰 原始论文的可复核里程碑:WMT 2014 英法任务上,Transformer big 在一台 8×NVIDIA P100 机器训练 300K step、约 3.5 天。论文摘要与 Table 2 报告 41.8 BLEU 的当时单模型最佳结果;相邻正文段落却写成 41.0,本站采用摘要与表格口径并明确记录这处原文不一致。BLEU 全称 Bilingual Evaluation Understudy,是机器翻译自动指标。
02 · 核心机制

自注意力:每个位置去「问」允许访问的位置

Self-Attention(自注意力)的精髓:每个位置按内容决定该从哪些位置取多少信息。能访问哪些位置由 Attention Mask(注意力掩码)决定:双向 Encoder 可看两侧,GPT 类因果 Decoder 只能看当前及左侧。匹配与取值靠三个角色完成——Q / K / V

Q · Query 我想找什么

当前这个词发出的「查询」——我在找跟我相关的信息。

K · Key 我是什么标签

每个词亮出的「钥匙/名牌」——用来被别人匹配。

V · Value 我的实际内容

每个词真正携带的信息——被关注后会按权重被吸收。

一次缩放点积注意力怎样流动

怎么算:用当前位置的 Q 去和所有允许访问位置K 算相关度 → 加 mask → softmax 归一化成一组权重(加起来=1) → 按权重把对应 V 加权求和。双向 Encoder 可访问两侧;GPT 类因果 Decoder 只能访问当前及左侧。
沿箭头读一遍:X → Q/K/V → 分数矩阵 → 因果 mask → Softmax → A×V;每一步都标出了张量形状。

GPT 因果注意力示例:词「它」在问「我指代谁」 (示意值;未来的「饿了」被 mask,权重只能是 0)

0.64
0.04
老鼠0.14
因为0.03
它(当前)0.15
饿了0.00

这组人为设定的示意权重表示「它」主要混入了左侧「猫」位置的 V;数学上把右侧未来词「饿了」的 logit 写成 −∞,实现中也常用布尔 mask 或足够小的有限值配合稳定 masked softmax,使无效位置最终权重为 0。它帮助理解一次信息混合,不是在声称真实模型一定用这一头完成指代,更不能单凭注意力图证明因果解释。训练时所有目标位置可用矩阵运算并行计算;生成时仍要逐 token 解码。

双向注意力示意矩阵:每个位置对每个位置打权重 (行=谁在看,列=看谁;非 GPT 因果 mask)

Q\K
老鼠
.60
.20
.10
.10
.40
.30
.20
.10
老鼠
.20
.30
.40
.10
.72
.05
.13
.10

每一行是一个位置的注意力分布(softmax 逐行归一化,一行加起来=1)。颜色越深=这一层这一头混入该位置 V 的权重越大。整张表是 softmax 之后的权重,并且是便于讲解的双向示意;若画 GPT 的 causal mask,主对角线右上方所有“未来位置”都必须为 0。
注:注意力权重能帮我们观察「信息怎么混合」,但不完全等于模型做判断的因果理由——Jain & Wallace (2019) 等工作展示了二者可能不一致。

这一切,浓缩成一个公式

Attention(Q,K,V)=softmax ⁣(QKdk+M)V\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}+M\right)V

Q·Kᵀ 算两两相关度,得到原始分数(logits) → 除以 √d_k 控制尺度 → 加 mask M(双向注意力可取 0;因果注意力在数学上把未来位置设为 −∞)→ softmax 对每一行归一化 → 乘 V 加权求和。原论文给出的直觉假设是:若 Q/K 各分量独立、均值 0、方差 1,则点积方差为 d_k;除以 √d_k 后回到约 1 的量级,避免大 logit 把 softmax 推入低梯度区。它是解释缩放的近似假设,不是实际激活必然独立同分布的保证。

手算一次 softmax
假设某个 query 对三个可见 key 的缩放后分数是 [2,1,0]。指数化得到约 [7.39,2.72,1],除以总和 11.11 后,权重约为 [0.67,0.24,0.09]。输出就是 0.67V₁+0.24V₂+0.09V₃。如果第三个位置被 causal mask 挡住,它的分数会先变成 −∞,权重随即变成 0,再在前两个位置间归一化。
类比
开会时你(Q)环视全场,看每人的名牌(K)决定听谁,把重要发言(V)按重视程度综合进脑子。每个人都同时这么做。
专业延伸
「自」注意力 = Q/K/V 都由同一序列的同一层输入表示投影得到;若 Q 来自一组表示、K/V 来自另一组表示(如翻译里的目标端查源端),就是 cross-attention
Q / K / V Query / Key / Value softmax 归一成总和为 1 的权重 self-attention Q/K/V 同源于同一组输入表示 cross-attention Q 与 K/V 来自两组输入表示
进阶

矩阵视角:它到底在算什么

The Matrix View
把一个序列的所有位置表示摞成矩阵 X ∈ ℝ^(n×d)(n 个位置、每个 d 维),注意力的主干由批量矩阵乘法组成,中间再插入 mask 与 softmax——这让训练时各位置的投影和注意力计算能高效映射到 GPU。

① 用三个可学习的权重矩阵,把 X 投影成 Q、K、V:

Q=XWQ,K=XWK,V=XWVQ=XW^{Q},\qquad K=XW^{K},\qquad V=XW^{V}

② 多头:用各头的可学习投影得到 h 组子空间表示,各算一次注意力再拼接,最后过 W^O 融合:

MultiHead(X)=Concat(head1,,headh)WO,headi=Attention(XWiQ,XWiK,XWiV)\mathrm{MultiHead}(X)=\mathrm{Concat}(\mathrm{head}_1,\dots,\mathrm{head}_h)\,W^{O},\quad \mathrm{head}_i=\mathrm{Attention}(XW_i^{Q},XW_i^{K},XW_i^{V})

🔧 维度怎么走

  • X: n×dQ,K: n×d_kV: n×d_v(原 Transformer 常设 d_k=d_v=d/h,故每头 d/h)
  • QKᵀ: n×n 注意力分数矩阵(softmax 之前);逐行 softmax 后才是上面那张权重热力图
  • ×V → 每头输出 n×d_v,h 个头拼回 n×d
  • 若总头宽保持 h·d_k=h·d_v=d,Q/K/V/O 四个投影的参数量约为 4d²;只把同一总宽度切成更多头,不会把总参数乘以头数

🔧 复杂度与代价

  • 固定模型宽度时,一层注意力的 Q/K/V/O 投影约为 O(n·d²);分数 QKᵀ 与加权值 AV 合计约为 O(n²·d)。究竟哪项主导取决于序列长 n 相对宽度 d 的大小,不能只写一个 O(n²)
  • 朴素实现还会为每个 batch/head 物化 n×n 中间矩阵;FlashAttention 通过分块重算与片上归约减少 HBM 读写和中间物化,但不消除稠密注意力的二次 token-pair 计算
  • 推理时靠 KV Cache 缓存旧前缀的 K/V,新增 token 不必再次生成这些旧 K/V;但它仍要生成自己的 Q/K/V,并让当前 Q 读取所需历史 K/V
  • 因果掩码:数学上把 n×n 矩阵主对角线以上(未来位置 j>i)置 −∞;实现可用布尔 mask 或足够负的值,稳定 softmax 后无效权重为 0
03 · 还差几个零件

多头注意力、位置编码、前馈网络

光有一套注意力还不够。要好用,还得加三样东西。

多头

多头注意力

Multi-Head Attention · MHA
单头也能形成复杂权重,但多头允许模型在不同投影子空间中并行混合信息,再把结果拼起来;这增加了表示通道,不保证每个头都对应一个人类可命名的“关系”。

🔑 要点

  • 用每个头自己的 Q/K/V 投影得到若干子空间表示(实现中常 reshape 成多个 head),各头独立做注意力后再拼接并过输出投影;不是先把原始输入机械切块就结束
  • 不同头能学到不同「视角」:部分头会呈现语法/指代/邻近等可解释倾向,但并非每个头都有稳定分工(很多头其实冗余、可剪枝)
  • 公开模型常见从个位数到上百个 Query 头,但“头越多就一定越好”并不成立;头数还要和总宽度、每头维度、训练规模共同设计。总头宽固定时,增加头数主要是在重新分块,不会自动增加投影参数。现代模型常用 GQA:Query 头多、K/V 头少,省显存

📌 类比

多个专家同看一句话一个专家管语法、一个管指代、一个管远距离呼应,各自给意见,最后汇总成更全面的理解。
位置

位置编码

Positional Encoding
不带位置特征、也不带方向性 mask 的内容自注意力对整体重排是等变的:输入位置一起换序,输出只会跟着换序。因果 mask 已经提供“只能看左边”的方向约束,但通常仍不足以表达丰富的相对距离;所以模型还会把位置关系注入表示或注意力计算。

🔑 要点

  • 在不含方向性 mask 的内容注意力中,位置信号用来打破“整体重排只会让输出跟着重排”的对称性;在因果模型中,它进一步显式编码位置或距离差异(「猫追老鼠」≠「老鼠追猫」)
  • 原始 Transformer 使用固定正弦/余弦绝对位置编码,也有模型学习绝对位置向量;许多当代 decoder-only 家族改用 Rotary Position Embedding(旋转位置编码,RoPE),但并非唯一方案
  • 显式位置编码不是所有因果 Decoder 的数学必需项:causal mask 本身已让不同位置拥有不同的可见前缀,NoPE(No Positional Encoding,无显式位置编码)研究也展示了可训练的 causal Transformer;这不等于它在所有长度泛化与任务上都优于 RoPE
  • Llama 3、Qwen3、DeepSeek-V3 等使用 RoPE;Llama 4 的 iRoPE(i 表示 interleaved,交错式)在多数 RoPE 层之间穿插不使用位置嵌入的注意力层,并配合推理时注意力温度缩放和长上下文训练。Meta 为 Scout 标称 10M 输入窗口,但同时披露其预训练/后训练(pre/post-training)长度为 256K:前者是推理支持与长度泛化口径,不是训练序列长度,也不应理解成“只改一个位置编码”
  • RoPE 是位置方案;YaRN(Yet another RoPE extensioN)才是扩展 RoPE 窗口的方法之一。把窗口撑到 128K/1M 还涉及位置缩放、长序列训练数据、注意力机制、kernel(计算内核)、KV 状态与评测,不是只换 RoPE

📌 例子

顺序很重要「我欠你钱」和「你欠我钱」用词一样,角色含义取决于位置关系——位置处理就是给模型这类顺序线索。
FFN

前馈网络 + 残差 + 归一化

Feed-Forward Network · Residual · Normalization
注意力负责「词之间互相看」,Feed-Forward Network(前馈网络,FFN)负责「每个词各自深加工」。再加残差和归一化,让几十上百层叠得起来、训得动。

🔑 要点

  • 前馈网络 FFN:每个位置独立过同一组小网络。若采用经典 d→4d→d FFN,忽略 embedding / norm 等项时,其两个矩阵约占一个标准 Block 权重的 2/3;换成 SwiGLU、MoE 或不同扩张比后比例会变
  • 残差连接:给表示与梯度提供直接通路,改善深层网络优化;它不是“彻底保证不会梯度消失”的单一保险
  • 归一化:Layer Normalization(层归一化,LayerNorm)或 Root Mean Square Layer Normalization(均方根层归一化,RMSNorm)控制表示尺度并改善优化稳定性;是否发散还取决于初始化、学习率、精度和残差设计,不能把归一化当成单一保证

📌 类比

先开会再独立消化注意力像「开会交换信息」,FFN 像「会后每人回工位独立思考整理」,两步交替,理解越来越深。
常见配方,不是统一标准
许多 2024–2026 decoder-only 模型采用 RoPE + RMSNorm + 门控 FFN + Pre-Normalization(前置归一化,pre-norm)+ 分组查询或多头潜在注意力,但不同家族会替换其中一项,或同时使用前置与 Post-Normalization(后置归一化,post-norm)。
📰 实例:Llama 3 8B 的配置是 32 个 Query 头、8 个 K/V 头。DeepSeek-V2 的服务实验则同时采用 MLA、FP8 权重、平均 6-bit KV Cache 量化及其他系统优化;论文相对 DeepSeek 67B 报告整体 KV Cache 降 93.3%,并在单节点 8×H800、真实服务提示/输出长度分布下达到 5.76× 最大生成吞吐。这不是 MLA 单项消融收益,也不应外推成固定倍率。
现代零件

拆开看:现代大模型把哪些零件换新了

现代 Block 没有唯一配方:常见组合包括 RoPE、RMSNorm、门控 FFN,以及 Multi-Head Attention(多头注意力,MHA)、GQA、Multi-Query Attention(多查询注意力,MQA)或 Multi-head Latent Attention(多头潜在注意力,MLA),新模型也会加入对 Query/Key 做归一化的 QK-Norm、额外 post-norm、线性或稀疏注意力。这一节按“改了哪笔账”逐个拆开。

注意力

注意力家族:MHA → GQA → MQA;MLA 单列

省 KV Cache 的两条路线
在 MHA 中,每个 Query 头都有对应的 K/V 头;自回归推理要缓存历史 K/V(即 KV Cache)。在其他维度相同的条件下,K/V 头越多,缓存越大。MQA/GQA 因此让多个 Query 头共享更少的 K/V 头;DeepSeek-V2 的 MLA 则缓存压缩后的潜向量,并另存一个较小的解耦 RoPE key 分量。

一图看懂:共享 K/V 头与压缩 latent 是两条路线 (示意,真实头数更多)

MHA / GQA / MQA 比较 K/V 头共享程度;MLA 比较低秩 latent 压缩。DeepSeek-V2 的高效路径每 token、每层缓存 512 维 c_KV 与共享 64 维解耦 RoPE key,共 576 个元素(未计存储精度);W_UK吸收到查询侧、W_UV吸收到输出侧。Query 的低秩压缩用于减少训练激活,不计入推理 KV Cache。
变体K/V 怎么分特点谁在用
MHAMulti-Head Attention 多头注意力每个 Query 头配独立的 K/V 头在相同 Query 头数与每头维度下,KV Cache 最大原始 Transformer、早期 GPT
GQAGrouped-Query Attention 分组查询注意力Query 头分组,每组共享一组 K/VGQA 论文用原预训练算力的 5% 做 uptraining(继续训练式转换);其受控实验中质量接近 MHA、速度接近 MQALlama 3(8B:32Q/8KV、70B:64Q/8KV)、Mistral 7B、Qwen2/2.5 的部分规格
MQAMulti-Query Attention 多查询注意力所有 Query 头共享 1 组 K/VKV 最小;原始 MQA 论文报告解码更快、质量仅小幅下降,但结果依模型与训练而变PaLM、Falcon 等
MLAMulti-head Latent Attention 多头潜在注意力联合压缩内容 K/V;DeepSeek-V2 另缓存解耦的 RoPE key(不是简单减头数)V2 部署整体(MLA + 量化/系统优化)相对 DeepSeek 67B 报告 KV 降 93.3%、最大生成吞吐 5.76×;非 MLA 单项消融DeepSeek-V2/V3
+ 滑动窗口Sliding Window Attention (SWA)每个词只看固定窗口内的近邻长序列更省,可与 GQA 叠加Mistral 7B(窗口 4096)

为什么这么省:对普通 MHA/GQA/MQA,单序列 KV Cache 元素数约为 层数 × 序列长 × KV 头数 × head_dim × 2(K 和 V),再乘 batch 与每元素字节数。减少 KV 头数会直接缩小缓存。DeepSeek-V2 MLA 的已发布配置是 128 个 Query 头、每头内容维 128、KV 压缩维 d_c=512、解耦 RoPE 维 d_h^R=64;高效路径每 token、每层缓存 512+64=576 个元素,不能把普通公式里的“KV 头数”简单设成 0。这里仍未乘 batch、层数、序列长与每元素字节数。

归一化

归一化:LayerNorm → RMSNorm,post-norm → pre-norm

让深网络训得稳
归一化帮助控制每层表示的数值尺度并改善优化条件;深层网络是否稳定还共同取决于初始化、残差布局、学习率、精度与训练技巧。现代模型常从形式与放置位置两方面调整它。

🔑 LayerNorm vs RMSNorm

  • LayerNorm(Layer Normalization,层归一化):减均值、除标准差,再缩放+偏移——原始 Transformer 使用
  • RMSNorm(Root Mean Square Layer Normalization,均方根层归一化)去掉「减均值」那步,只按均方根缩放,更简单;原论文在其测试任务上取得与 LayerNorm 可比的表现,并报告不同模型 7%–64% 的运行时间下降,不能视为所有 LLM 的固定加速比例

🔑 pre-norm vs post-norm

  • post-norm(归一化放子层之后):原始 Transformer 的布局;加深时往往更依赖 warmup(学习率预热)、初始化等稳定化设计
  • pre-norm(归一化放子层之前):通常更易优化深层网络,是许多 decoder-only LLM 的常见选择;并非所有现代模型都只用这一种布局
RMSNorm(x)=x1dixi2+ϵg\mathrm{RMSNorm}(x)=\frac{x}{\sqrt{\tfrac{1}{d}\sum_{i} x_i^{2}+\epsilon}}\odot g

RMSNorm:x 除以它自己的「均方根」再乘一个可学习的缩放 g。比 LayerNorm 少做中心化。Llama、Qwen、DeepSeek 等多个公开模型采用 RMSNorm,但具体是纯 pre-norm、额外 post-norm 还是其他稳定化设计,要看各模型配置。

FFN

FFN 与激活:ReLU → GELU → SwiGLU

每个词各自加工的小网络
FFN 是「升维 → 激活 → 降维」的小网络;在经典 d→4d→d dense(稠密)Block 且忽略小项时,两个 FFN 矩阵约占该 Block 权重的 2/3,换成门控比例或 MoE 后会改变。中间的激活函数负责「拐弯」(非线性),也一路在换新。

🔑 激活函数的进化

  • ReLU(Rectified Linear Unit):负数砍成 0,简单粗暴(AlexNet 点燃视觉革命;原始 Transformer 的 FFN 也用它)
  • GELU(Gaussian Error Linear Unit):平滑版的 ReLU,BERT、GPT-2 用
  • SwiGLU(Swish-Gated Linear Unit):门控变体(GLU 家族);原论文在其 Transformer 实验中优于所比 ReLU/GELU 方案,后来被多种 LLM 采用。代价是 FFN 多一条投影,通常会相应缩小中间维度来控制参数量

📌 例子

门控 FFN 全家Llama、PaLM、Qwen、Mistral、DeepSeek 多用 SwiGLU;Gemma 用它的 GLU 兄弟 GeGLU——都是「门控 FFN」一家。
FFNSwiGLU(x)=(Swish(xW1)xW3)W2\mathrm{FFN}_{\mathrm{SwiGLU}}(x)=\big(\mathrm{Swish}(xW_1)\odot xW_3\big)\,W_2

SwiGLU 的 FFN:用一个 门(gate)——Swish(xW₁) 按元素乘上另一条线性变换 xW₃,再经 W₂ 降维。忽略 bias 时,经典 d→4d→d FFN 有 8d² 个矩阵参数;中间宽度为 m 的 SwiGLU 有 3dm 个。令二者相等可得 m=8d/3,恰为经典 4d2/3;真实实现常再按硬件友好倍数取整。

凑齐四大件
加上前面的 RoPE(在注意力里旋转 Q/K),现代 Block 的常见配方是 RoPE + RMSNorm + 门控 FFN(SwiGLU/GeGLU) + 更省 KV 的注意力(GQA/MQA/MLA)。但别当死清单背:DeepSeek 走 MLA、Mistral 还叠滑动窗口、Gemma 用 GeGLU——真实差异还包括 tokenizer(分词器)、训练数据、MoE、长上下文训练与后训练。
注意力主战场

注意力层:现代大模型「最卷」的地方

上一节的 MHA/GQA/MQA 与 MLA 只是冰山一角。截至 2026-07-15,公开模型中仍有全注意力、局部/稀疏注意力、线性注意力与 SSM 混合等多条路线;没有一种结构统一所有模型。它们分别在处理长上下文的计算、memory input/output(内存读写与数据搬运,memory I/O)、缓存状态与精确召回成本。

⚠️ 全量 softmax 注意力的两个成本
① Prefill(把已知输入一次性编码进缓存)的全注意力点积计算随序列长度 O(n²);朴素实现还会物化平方大小的中间矩阵,FlashAttention 则能显著降低 HBM 与片上存储之间的 memory I/O 及中间存储。② Decode(逐 token 生成)的 KV Cache 随上下文线性涨,每步仍要读取历史 K/V。要区分“算法计算量”“中间激活显存”和“缓存显存”,三者不是同一个 O(n²) 结论。

① KV 压缩派 仍是 softmax

MHA→GQA→MQA;MLA 单列(上一节):仍做内容寻址,但让 K/V 头共享,或把内容 K/V 压成 latent,省 KV Cache。代表:多种 Llama/Qwen 规格使用 GQA,DeepSeek 使用 MLA。

② 线性注意力派 O(n²)→O(n)

用核分解、门控或递推状态替代完整 softmax 注意力;在状态维固定时,沿序列长度可做到线性,并在推理时维护固定大小状态。不同方法并非都只是同一个“去 softmax + 结合律”公式。

③ 稀疏 / 窗口派 不必看全部

承认「不是每个 token 都要看所有历史」:只看近邻窗口(滑动窗口),或动态挑少量重要块(稀疏)。代表:Mistral、Gemma、DeepSeek Native Sparse Attention(原生稀疏注意力,NSA)。

④ 混合派 公开模型中的常见折中

部分线性/递推机制在精确复制、检索或 in-context learning(上下文学习)上可能弱于全注意力,因此一些模型用多数便宜层 + 少数全注意力层补足。代表案例包括 Qwen3-Next、MiniMax-M1 与 Jamba;这不是所有模型都必须遵循的配方。

线性

线性注意力:把 O(n²) 拉成 O(n)

Linear Attention
标准全注意力显式比较 n×n 对位置。部分核化线性注意力先用 feature map(特征映射)φ改写相似度,再按结合律计算 φ(Q)[φ(K)ᵀV],并按具体方法补上归一化;因果版本维护只累计到当前位置的前缀状态,不能混入未来。Gated DeltaNet 等方法则使用更复杂的门控递推。在层宽和状态维固定时,它们沿序列长度可做到 O(n),自回归时维护固定大小的层内状态;这不是把原始 softmax 注意力的 Q(KᵀV) 直接换括号。代价是压缩历史信息后,精确检索、复制或 in-context learning 可能弱于全注意力,具体取决于机制与训练。
代表方法一句话谁在用 · 数字
Lightning Attention以分块与高效 kernel 实现线性扩展MiniMax-01(456B 总参/45.9B 激活,训练到 1M、论文称推理外推到 4M token)、MiniMax-M1(标称原生 1M,是原版 DeepSeek-R1 128K 的 8×)——均使用混合架构(每 7 个 Lightning Attention block 配 1 个 softmax attention block)
Gated DeltaNet用 delta 规则增强线性注意力的关联记忆Qwen3-Next-80B-A3B:每 3 层 Gated DeltaNet 后接 1 层 Gated Attention(3:1);官方模型卡以 Qwen3-32B-Base 为基线报告,32K 以上上下文的整体推理吞吐约为 10×,没有分别宣称 prefill 与 decode 都超过 10×,且倍率依实现与硬件而变
Mamba / SSMSSM 是更宽泛的状态递推家族;Mamba 在其中加入输入依赖的选择机制Falcon Mamba、Jamba、Codestral Mamba(详见 神经网络·架构家族)
RWKV训练可并行,推理用 RNN 式固定状态;固定模型宽度时,单 token 状态与计算不随已读长度增长RWKV 系列(开源,曾训到 14B dense)
RetNetretention 机制支持并行、循环与分块三种计算形式;固定模型宽度时,循环形式的单步状态大小与单步成本不随已读长度增长微软研究提出;“O(1)”指每个新增 token 相对历史长度,不是生成整段文本总成本恒定

稀疏 / 窗口注意力:只看「该看的」

方法怎么做 · 谁在用
滑动窗口Sliding Window每个词只看固定窗口内近邻。Mistral 7B(窗口 4096);Gemma 35 层局部窗口 + 1 层全局(局部 span 1024),撑 128K 上下文(1B 版 32K)还压住 KV
原生稀疏NSA · DeepSeek 2025粗粒度压缩 + 细粒度挑重要块,可训练的稀疏注意力;64K 长序列前向/反向/解码都显著加速
DSADeepSeek Sparse AttentionDeepSeek-V3.2-Exp 引入。官方对照表中 MMLU-Pro 同为 85.0、AIME 2025 从 88.4 到 89.3,但 GPQA、HLE、LiveCodeBench 等也有下降;更准确的结论是官方报告整体相近、单项有升有降,而不是“稀疏化不掉点”
MoBAMixture of Block Attention把 MoE 思路搬到注意力:query 动态选少量 KV 块。已用于 Kimi 的长上下文
MSAMiniMax Sparse Attention · 2026每个 GQA 组先由轻量 Index Branch 选择 Top-k KV 块,Main Branch 再只在入选块内计算 softmax attention。论文在 109B 模型、1M 上下文、H800 的特定设置下报告:相对 GQA 每 token 注意力计算降 28.4×、prefill 提速 14.2×、decode 提速 7.6×;已用于 MiniMax M3,这些不是跨模型/硬件保证
Attention SinkStreamingLLM保留开头 sink token + 最近窗口;论文把 PG19 的 100 本测试书拼接成流,做超过 400 万 token 的 teacher-forced 连续语言建模并观察到困惑度稳定。它不扩展模型可回看的上下文:中间旧 token 会被丢弃,论文的长程问答实验也显示,当问题—答案距离超出缓存时准确率降为 0;因此这既不是自由采样生成 400 万输出 token,也不是 400 万 token 的可检索窗口
🧬 一条重要路线:混合架构(hybrid)
一些模型用多数更低成本的线性/局部层 + 少数全注意力层兼顾效率与精确取回:Qwen3-Next 为 3:1(Gated DeltaNet:Gated Attention)、Gemma 3 为 5:1(局部:全局)、MiniMax-M1 为 7:1(Lightning:softmax attention),Jamba 则混合 Transformer 与 Mamba。
受控范围案例:NVIDIA 团队把同数据训练的 8B Mamba-2-Hybrid 与 8B Transformer 比较,前者在 12 项任务平均高 2.65 分,并预测生成最多可快 8×。这是特定 8B 实验和性能模型,不是所有混合架构的保证。
04 · 拼起来

Decoder-only 主干 = Block 栈 + 最终归一化与输出头

把上面的零件组装:常见 decoder-only Block 含注意力与 FFN 两个子层,各自配残差与归一化。把它堆 N 层只得到隐藏状态主干;完整语言模型还要有输入 embedding,Pre-Norm 家族通常在栈末再做 final norm,最后经 Language Model Head(语言模型输出头,LM Head)映射到词表 logits。线性、稀疏或混合架构会替换其中的注意力子层。

架构图:一个 decoder-only Pre-Norm Block (彩色旁路=两次残差连接)

读图口诀:每个子层都是 h + Sublayer(Norm(h));紫色是主路径,橙色和绿色是两次彼此独立、端点完整的残差旁路。本图只画单个 Block,不含 Block 栈之后常见的 final norm 与 LM Head。

注:图采用现代 decoder-only 模型常见的 Pre-Norm 画法:h + Sublayer(Norm(h))。RoPE 在注意力里旋转 Q/K;MoE 模型会把 FFN 换成「路由 + 多个专家」。原始 2017 Transformer 是 Post-Norm 的 encoder–decoder,Decoder 还多一个 cross-attention 子层;不同现代模型也可能使用额外 post-norm 或其他稳定化设计。

🔑 两点关键

  • Decoder-only 为主:原论文有 Encoder+Decoder 两部分;GPT/Llama/Qwen/DeepSeek 等生成模型只保留带 causal self-attention 的 Block 栈,训练目标通常是预测下一个 token。这里的“decoder-only”是架构名称,不是说模型只能做狭义的解码任务;BERT 是 encoder-only,T5 是 encoder-decoder
  • 因果掩码(causal mask):当前位置只能看自己及左侧已出现 token,不能偷看右侧未来位置——这正好契合「预测下一个 token」的预训练目标(见训练全链路)

📌 规模感

参数量从哪来参数量不是简单的“层数×宽度”。Dense decoder 的 Block 权重粗略随 层数×宽度²增长,还要加词表 embedding;MoE 的专家总数与每个专家的尺寸主要决定总参数,路由的 top-k(每 token 激活几个专家)主要决定激活参数与计算量。头数更多常只是重新切分固定总宽度,不一定单独增加很多参数。
Embedding 词嵌入,把 token 映射成向量 Decoder-only 仅用因果自注意力 Block 栈,GPT 类常见 causal mask 因果掩码,挡住「未来」的词 Block 注意力 + FFN 组成的一层
05 · 影响

它为什么赢了,又长出哪些枝

Transformer 成为大模型主干的重要原因之一,是训练时能把整段已知序列的各位置成批计算,并大量使用 GPU 友好的矩阵乘法;注意力还把允许访问的位置用短路径连接起来。它并非唯一可扩展架构,自回归生成也仍逐 token 进行。Scaling Laws(规模定律)描述的是参数、数据、算力与损失之间的经验关系,并不由 Transformer 单独保证。

这些技术怎样接到 Transformer 骨架上

表中有的是替换某个 Transformer 零件,有的是运行时优化;MoE 本身早于 Transformer,Mamba 则是可独立使用也可混合进来的状态空间路线。点开对应专题可深入。

衍生改了哪个零件解决什么
MoE混合专家把 FFN 换成「多个专家 + 路由」每个 token 只激活一部分专家,减少相对总参数量的计算。公开口径示例:2024 DeepSeek-V3 为 671B 总参/37B 激活,2025 Kimi K2 为 1T 总参/32B 激活;这些不是 2026 全部后续版本的统一规格。路由/负载均衡/专家并行见 MoE 专题
KV Cache缓存历史位置的 K / V增量解码时避免为旧前缀重复计算 K/V;每个新 token 仍要过当前层并读取所需历史状态。长上下文/高并发时缓存也是显存大户
RoPE / YaRN注入位置 / 扩展 RoPE 窗口RoPE 注入位置关系;YaRN 等扩展方法才用于跨越原训练窗口。真正可用窗口还取决于长序列训练、注意力、KV、kernel 与检索/推理评测
GQA / MQA分组 / 多查询注意力让多个 Query 头共享较少的 K/V 头缩小 KV Cache、降低解码内存带宽;被多种 Llama/Qwen 规格采用
MLA多头潜在注意力联合压缩每个历史位置的内容 K/V;另处理位置 key高效实现可吸收内容上投影;DeepSeek-V2 的 MLA + 量化/系统优化部署整体相对其 67B 基线报告 KV Cache 降 93.3%、最大生成吞吐到 5.76×,不是 MLA 单项消融或无条件固定倍率
FlashAttention优化全注意力的数据搬运与分块算法算法上仍计算精确 dense attention;浮点归约顺序可能使结果并非逐 bit 相同。它避免把完整 n×n 中间矩阵写回 HBM,因此更快、更省中间显存,但不把全注意力的 O(n²) token-pair 计算变成 O(n)
线性/稀疏注意力简化注意力的「人人互看」降低长序列的计算量(默认随长度平方增长);MiniMax-M1 用 Lightning Attention 撑 1M 上下文
Mamba / SSM状态空间模型用状态递推替代全量注意力;Mamba 额外加入输入依赖的选择机制固定状态维度时沿序列长度线性扩展;SSM 不都采用同一种“选择性”设计,纯 SSM 与混合架构也都存在
一句话收尾
记住一张图:Token embedding → (注意力按 mask 混合位置间信息 + FFN 各位置独立加工) × N 层 → final norm → LM Head → 下一个 token 的 logits。许多现代模型在这个骨架上替换零件,也有混入 SSM 的架构。
资料来源

核查口径与原始资料

页面于 2026-07-15 逐项复核。厂商/作者报告的吞吐、上下文和 benchmark 数字均保留对照模型、硬件或实验口径;除非有跨实现复现,不把单次报告写成架构的固定收益。原始 Transformer 的 WMT 英法 BLEU 在摘要/Table 2 与相邻正文存在 41.8/41.0 的内部不一致,本文明确采用摘要与表格口径。

速查表

一张表回顾 Transformer

问题答案
它解决什么用直接的注意力连接替代序列内递归;Encoder 可看全序列,因果 Decoder 只看前缀,训练位置可并行
核心:自注意力用 Q 和各词的 K 算相关度 → softmax 成权重 → 加权求和各词的 V
Q / K / VQuery 我想找什么 · Key 我是什么标签 · Value 我的实际内容
多头注意力在不同投影子空间并行计算注意力再汇总;部分头有可解释倾向,但不保证固定分工
位置处理无位置特征的双向内容注意力对重排等变;因果 mask 给方向约束,RoPE 等方案进一步编码位置/距离。长上下文还依赖训练、注意力、KV 与评测
FFN / 残差 / 归一化每个位置独立做非线性加工,并用残差通路与尺度控制改善深层优化
整体结构输入 embedding → (注意力 + FFN) Block 栈;常见 Pre-Norm decoder-only 模型再接 final norm 与 LM Head。GPT 类使用因果掩码
为什么重要序列维训练并行度高、易在 GPU 上扩展;MoE、KV Cache 与多类长上下文优化围绕这一骨架发展