状态传导图
残差流同时保留一条旁路,等待主分支结果回来相加。
观察点 01
归一化后,Token 生成 Q、K、V
在这个 Pre-Norm 示例里,当前隐藏向量先经 RMSNorm,再投影成 Query、Key、Value。Q 表示“我在找什么”,K 表示“我能被怎样找到”,V 是随后按权重汇总的内容。
- 跨 Token 信息交换正在准备
- 原信息保留通道残差旁路
Q/K 决定看谁,V 决定取回什么。
这里采用现代 decoder-only 模型常见的 Pre-Norm Block:归一化、因果注意力、残差合流和 FFN 依次发生。原始 Transformer 是 Post-Norm encoder–decoder,Decoder 还多一层 cross-attention;完整 Pre-Norm 语言模型通常也会在 Block 栈后接 final norm 与 LM Head。
状态传导图
残差流同时保留一条旁路,等待主分支结果回来相加。
观察点 01
在这个 Pre-Norm 示例里,当前隐藏向量先经 RMSNorm,再投影成 Query、Key、Value。Q 表示“我在找什么”,K 表示“我能被怎样找到”,V 是随后按权重汇总的内容。
Q/K 决定看谁,V 决定取回什么。
状态传导图
在 Decoder-only 模型里,当前位置不能偷看未来 Token。
观察点 02
Q 与当前及左侧可见位置的 K 计算分数,因果掩码把未来位置设为不可见,Softmax 形成权重,再对 V 做加权汇总。多头让不同投影子空间并行混合信息。
注意力是内容寻址,不是把整段文字平均混合。
状态传导图
完成第二次残差相加后,结果成为下一层的输入。
观察点 03
Attention 输出与残差相加后,再归一化并进入 FFN 或 MoE。FFN 对每个 token 位置独立做通道扩张、门控与压缩,最后再次加回残差。
Attention 负责“跨位置取信息”,FFN 负责“单位置内变换”。
你现在应该能解释:Attention 负责“跨位置取信息”,FFN 负责“单位置内变换”。
GPT 的「T」就是 Transformer。许多公开大语言模型仍以「注意力 + 前馈网络 + 残差流」为骨架,另一些则混入线性注意力或 State Space Model(状态空间模型,SSM);Mixture of Experts(混合专家,MoE)和 Key–Value Cache(键值缓存,KV Cache)则分别改造容量与运行时状态。这篇用大图 + 类比把边界拆开:注意力算什么、一个 Block 怎样流动,以及现代模型究竟替换了哪一笔账。
Transformer(2017) 之前,序列建模常用 Recurrent Neural Network(循环神经网络,RNN)与 Long Short-Term Memory(长短期记忆网络,LSTM)——像一个 token 一个 token 顺着读。长距离信息要穿过许多递归步骤,同一序列内的时间步又依赖前一步,因此更难沿序列维并行训练;这不等于 RNN 无法建模长依赖,也不等于 Transformer 的自回归生成可以并行吐出所有新 token。
Self-Attention(自注意力)的精髓:每个位置按内容决定该从哪些位置取多少信息。能访问哪些位置由 Attention Mask(注意力掩码)决定:双向 Encoder 可看两侧,GPT 类因果 Decoder 只能看当前及左侧。匹配与取值靠三个角色完成——Q / K / V。
当前这个词发出的「查询」——我在找跟我相关的信息。
每个词亮出的「钥匙/名牌」——用来被别人匹配。
每个词真正携带的信息——被关注后会按权重被吸收。
这组人为设定的示意权重表示「它」主要混入了左侧「猫」位置的 V;数学上把右侧未来词「饿了」的 logit 写成 −∞,实现中也常用布尔 mask 或足够小的有限值配合稳定 masked softmax,使无效位置最终权重为 0。它帮助理解一次信息混合,不是在声称真实模型一定用这一头完成指代,更不能单凭注意力图证明因果解释。训练时所有目标位置可用矩阵运算并行计算;生成时仍要逐 token 解码。
每一行是一个位置的注意力分布(softmax 逐行归一化,一行加起来=1)。颜色越深=这一层这一头混入该位置 V 的权重越大。整张表是 softmax 之后的权重,并且是便于讲解的双向示意;若画 GPT 的 causal mask,主对角线右上方所有“未来位置”都必须为 0。
注:注意力权重能帮我们观察「信息怎么混合」,但不完全等于模型做判断的因果理由——Jain & Wallace (2019) 等工作展示了二者可能不一致。
Q·Kᵀ 算两两相关度,得到原始分数(logits) → 除以 √d_k 控制尺度 → 加 mask M(双向注意力可取 0;因果注意力在数学上把未来位置设为 −∞)→ softmax 对每一行归一化 → 乘 V 加权求和。原论文给出的直觉假设是:若 Q/K 各分量独立、均值 0、方差 1,则点积方差为 d_k;除以 √d_k 后回到约 1 的量级,避免大 logit 把 softmax 推入低梯度区。它是解释缩放的近似假设,不是实际激活必然独立同分布的保证。
[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,再在前两个位置间归一化。X ∈ ℝ^(n×d)(n 个位置、每个 d 维),注意力的主干由批量矩阵乘法组成,中间再插入 mask 与 softmax——这让训练时各位置的投影和注意力计算能高效映射到 GPU。① 用三个可学习的权重矩阵,把 X 投影成 Q、K、V:
② 多头:用各头的可学习投影得到 h 组子空间表示,各算一次注意力再拼接,最后过 W^O 融合:
X: n×d → Q,K: n×d_k、V: n×d_v(原 Transformer 常设 d_k=d_v=d/h,故每头 d/h)QKᵀ: n×n 注意力分数矩阵(softmax 之前);逐行 softmax 后才是上面那张权重热力图×V → 每头输出 n×d_v,h 个头拼回 n×dh·d_k=h·d_v=d,Q/K/V/O 四个投影的参数量约为 4d²;只把同一总宽度切成更多头,不会把总参数乘以头数O(n·d²);分数 QKᵀ 与加权值 AV 合计约为 O(n²·d)。究竟哪项主导取决于序列长 n 相对宽度 d 的大小,不能只写一个 O(n²)n×n 中间矩阵;FlashAttention 通过分块重算与片上归约减少 HBM 读写和中间物化,但不消除稠密注意力的二次 token-pair 计算n×n 矩阵主对角线以上(未来位置 j>i)置 −∞;实现可用布尔 mask 或足够负的值,稳定 softmax 后无效权重为 0光有一套注意力还不够。要好用,还得加三样东西。
d→4d→d FFN,忽略 embedding / norm 等项时,其两个矩阵约占一个标准 Block 权重的 2/3;换成 SwiGLU、MoE 或不同扩张比后比例会变现代 Block 没有唯一配方:常见组合包括 RoPE、RMSNorm、门控 FFN,以及 Multi-Head Attention(多头注意力,MHA)、GQA、Multi-Query Attention(多查询注意力,MQA)或 Multi-head Latent Attention(多头潜在注意力,MLA),新模型也会加入对 Query/Key 做归一化的 QK-Norm、额外 post-norm、线性或稀疏注意力。这一节按“改了哪笔账”逐个拆开。
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/V | GQA 论文用原预训练算力的 5% 做 uptraining(继续训练式转换);其受控实验中质量接近 MHA、速度接近 MQA | Llama 3(8B:32Q/8KV、70B:64Q/8KV)、Mistral 7B、Qwen2/2.5 的部分规格 |
| MQAMulti-Query Attention 多查询注意力 | 所有 Query 头共享 1 组 K/V | KV 最小;原始 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、层数、序列长与每元素字节数。
RMSNorm:x 除以它自己的「均方根」再乘一个可学习的缩放 g。比 LayerNorm 少做中心化。Llama、Qwen、DeepSeek 等多个公开模型采用 RMSNorm,但具体是纯 pre-norm、额外 post-norm 还是其他稳定化设计,要看各模型配置。
d→4d→d dense(稠密)Block 且忽略小项时,两个 FFN 矩阵约占该 Block 权重的 2/3,换成门控比例或 MoE 后会改变。中间的激活函数负责「拐弯」(非线性),也一路在换新。SwiGLU 的 FFN:用一个 门(gate)——Swish(xW₁) 按元素乘上另一条线性变换 xW₃,再经 W₂ 降维。忽略 bias 时,经典 d→4d→d FFN 有 8d² 个矩阵参数;中间宽度为 m 的 SwiGLU 有 3dm 个。令二者相等可得 m=8d/3,恰为经典 4d 的 2/3;真实实现常再按硬件友好倍数取整。
上一节的 MHA/GQA/MQA 与 MLA 只是冰山一角。截至 2026-07-15,公开模型中仍有全注意力、局部/稀疏注意力、线性注意力与 SSM 混合等多条路线;没有一种结构统一所有模型。它们分别在处理长上下文的计算、memory input/output(内存读写与数据搬运,memory I/O)、缓存状态与精确召回成本。
MHA→GQA→MQA;MLA 单列(上一节):仍做内容寻址,但让 K/V 头共享,或把内容 K/V 压成 latent,省 KV Cache。代表:多种 Llama/Qwen 规格使用 GQA,DeepSeek 使用 MLA。
用核分解、门控或递推状态替代完整 softmax 注意力;在状态维固定时,沿序列长度可做到线性,并在推理时维护固定大小状态。不同方法并非都只是同一个“去 softmax + 结合律”公式。
承认「不是每个 token 都要看所有历史」:只看近邻窗口(滑动窗口),或动态挑少量重要块(稀疏)。代表:Mistral、Gemma、DeepSeek Native Sparse Attention(原生稀疏注意力,NSA)。
部分线性/递推机制在精确复制、检索或 in-context learning(上下文学习)上可能弱于全注意力,因此一些模型用多数便宜层 + 少数全注意力层补足。代表案例包括 Qwen3-Next、MiniMax-M1 与 Jamba;这不是所有模型都必须遵循的配方。
φ改写相似度,再按结合律计算 φ(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 / SSM | SSM 是更宽泛的状态递推家族;Mamba 在其中加入输入依赖的选择机制 | Falcon Mamba、Jamba、Codestral Mamba(详见 神经网络·架构家族) |
| RWKV | 训练可并行,推理用 RNN 式固定状态;固定模型宽度时,单 token 状态与计算不随已读长度增长 | RWKV 系列(开源,曾训到 14B dense) |
| RetNet | retention 机制支持并行、循环与分块三种计算形式;固定模型宽度时,循环形式的单步状态大小与单步成本不随已读长度增长 | 微软研究提出;“O(1)”指每个新增 token 相对历史长度,不是生成整段文本总成本恒定 |
| 方法 | 怎么做 · 谁在用 |
|---|---|
| 滑动窗口Sliding Window | 每个词只看固定窗口内近邻。Mistral 7B(窗口 4096);Gemma 3 每 5 层局部窗口 + 1 层全局(局部 span 1024),撑 128K 上下文(1B 版 32K)还压住 KV |
| 原生稀疏NSA · DeepSeek 2025 | 粗粒度压缩 + 细粒度挑重要块,可训练的稀疏注意力;64K 长序列前向/反向/解码都显著加速 |
| DSADeepSeek Sparse Attention | DeepSeek-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 的可检索窗口 |
把上面的零件组装:常见 decoder-only Block 含注意力与 FFN 两个子层,各自配残差与归一化。把它堆 N 层只得到隐藏状态主干;完整语言模型还要有输入 embedding,Pre-Norm 家族通常在栈末再做 final norm,最后经 Language Model Head(语言模型输出头,LM Head)映射到词表 logits。线性、稀疏或混合架构会替换其中的注意力子层。
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 或其他稳定化设计。
层数×宽度²增长,还要加词表 embedding;MoE 的专家总数与每个专家的尺寸主要决定总参数,路由的 top-k(每 token 激活几个专家)主要决定激活参数与计算量。头数更多常只是重新切分固定总宽度,不一定单独增加很多参数。Transformer 成为大模型主干的重要原因之一,是训练时能把整段已知序列的各位置成批计算,并大量使用 GPU 友好的矩阵乘法;注意力还把允许访问的位置用短路径连接起来。它并非唯一可扩展架构,自回归生成也仍逐 token 进行。Scaling Laws(规模定律)描述的是参数、数据、算力与损失之间的经验关系,并不由 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 与混合架构也都存在 |
| 基础机制 | Attention Is All You Need · Attention is not Explanation |
| 注意力变体 | MQA · GQA · DeepSeek-V2 / MLA |
| 位置与稳定性 | RoFormer / RoPE · NoPE · YaRN · Pre-LN 分析 · RMSNorm · GLU Variants / SwiGLU |
| 公开模型配置 | Llama 3 架构表 · Mistral 7B / GQA + SWA · Llama 4 / iRoPE · Qwen3-Next 官方模型卡 |
| 线性与混合 | Linear Transformers / feature map · Gated DeltaNet · RWKV · RetNet · Mamba · MiniMax-01 · MiniMax-M1 · NVIDIA 8B Mamba-2-Hybrid 对照实验 |
| 稀疏 MoE | ST-MoE / 总参数与稀疏激活 · DeepSeek-V3 · Kimi K2 |
| 局部与稀疏 | Gemma 3 Technical Report · Native Sparse Attention · DeepSeek-V3.2-Exp / DSA · MoBA · MiniMax Sparse Attention / MSA |
| 流式与内存 I/O | StreamingLLM / Attention Sink · FlashAttention |
页面于 2026-07-15 逐项复核。厂商/作者报告的吞吐、上下文和 benchmark 数字均保留对照模型、硬件或实验口径;除非有跨实现复现,不把单次报告写成架构的固定收益。原始 Transformer 的 WMT 英法 BLEU 在摘要/Table 2 与相邻正文存在 41.8/41.0 的内部不一致,本文明确采用摘要与表格口径。
| 问题 | 答案 |
|---|---|
| 它解决什么 | 用直接的注意力连接替代序列内递归;Encoder 可看全序列,因果 Decoder 只看前缀,训练位置可并行 |
| 核心:自注意力 | 用 Q 和各词的 K 算相关度 → softmax 成权重 → 加权求和各词的 V |
| Q / K / V | Query 我想找什么 · Key 我是什么标签 · Value 我的实际内容 |
| 多头注意力 | 在不同投影子空间并行计算注意力再汇总;部分头有可解释倾向,但不保证固定分工 |
| 位置处理 | 无位置特征的双向内容注意力对重排等变;因果 mask 给方向约束,RoPE 等方案进一步编码位置/距离。长上下文还依赖训练、注意力、KV 与评测 |
| FFN / 残差 / 归一化 | 每个位置独立做非线性加工,并用残差通路与尺度控制改善深层优化 |
| 整体结构 | 输入 embedding → (注意力 + FFN) Block 栈;常见 Pre-Norm decoder-only 模型再接 final norm 与 LM Head。GPT 类使用因果掩码 |
| 为什么重要 | 序列维训练并行度高、易在 GPU 上扩展;MoE、KV Cache 与多类长上下文优化围绕这一骨架发展 |