从《Attention is All You Need》 到 当代大模型架构
本文结合chatgpt生成。
原始 Transformer:2017 年的起点
《Attention is All You Need》里的 Transformer 不是今天大模型最常见的形态。它最初是一个 Encoder-Decoder 架构,主要用于机器翻译。
核心模块是:
上式除以\(\sqrt d\)是因为点积的标准差是\(\sqrt d\),可以维持方差稳定。
多头注意力:
其中:
每层大致是:
FFN 当时通常是:
原始 Transformer 的几个特点是:
- Encoder-Decoder 架构。
- 使用 Post-LN,也就是残差之后再 LayerNorm。
- 使用绝对位置编码,论文里主要是 sinusoidal positional encoding。
- FFN 里用 ReLU。
- 每个 attention head 都有自己的 (Q,K,V)。
- 主要面向 seq2seq 任务,而不是今天这种统一的通用生成模型。
今天的大模型虽然仍然叫 Transformer,但很多关键细节已经变了。
二、最大变化之一:Encoder-Decoder 逐渐让位于 Decoder-only
原始 Transformer 是:
其中 Encoder 双向看输入,Decoder 自回归生成输出。
但 GPT 系列、LLaMA、Qwen、Mistral 等主流文本生成大模型大多使用 Decoder-only Transformer。
它的训练目标是自回归语言建模:
也就是根据前面的 token 预测下一个 token。
Decoder-only 的注意力矩阵带 causal mask:
其中:
这样第 i 个 token 只能看见自己和前面的 token,不能偷看未来。
为什么 Decoder-only 成为主流?
因为它简单、统一、可扩展。翻译、问答、代码、数学、对话、多轮推理,都可以转成“给定上下文,继续生成文本”的形式。
所以今天很多大模型的核心骨架可以写成:
这就是典型的 decoder-only block。
三、LayerNorm 位置变化:Post-LN 到 Pre-LN / RMSNorm
原始 Transformer 使用的是 Post-LN:
但大模型训练很深时,Post-LN 容易不稳定。后来主流模型普遍改成 Pre-LN:
这样梯度更容易沿着残差路径传播,训练更稳定。
很多现代 LLM 还进一步把 LayerNorm 换成 RMSNorm。LayerNorm 是:
RMSNorm 则去掉了减均值部分:
上面分母没有使用均值,是因为直接计算均值不适合衡量向量大小,正负数会抵消。开根号是因为开根号后才恢复成和 x 相同的量纲。
同时\(\text{RMSNorm}(x)\)模长为1,让每个 token 的 hidden state 具有稳定的整体尺度。即
LayerNorm 同时去掉均值并控制方差;RMSNorm 只控制整体幅度,不做中心化。
RMSNorm 的假设是:在 Transformer 中,控制 hidden state 的尺度比强制其均值为 0 更重要。因此它计算更简单,也常具有较好的训练稳定性。
RMSNorm 更简单,计算更省,也足够好。LLaMA、Qwen、Mistral 等很多现代模型都使用 RMSNorm。
所以原始 Transformer block:
逐渐变成:
这是现代 LLM 最常见的结构之一。
四、FFN 变化:ReLU / GELU 到 SwiGLU
原始 Transformer 的 FFN 是普通两层 MLP:
后来 BERT、GPT-2、GPT-3 等模型大量使用 GELU:
其中 \(\Phi(x)\) 是标准正态分布的累积分布函数。
再后来,PaLM、LLaMA、Mistral、Qwen 等模型普遍采用 GLU 系列门控 MLP,尤其是 SwiGLU。
SwiGLU 可以写成:
其中:
\(\odot\) 是逐元素乘法。
sigmoid \(\sigma(x)\)被保留下来的主要原因是它具有很合适的门控性质:连续且平滑;输出天然具有开关含义;与输入相乘后形成 SiLU,正区间近似线性;负区间不会像 ReLU 一样突然截断;导数容易计算,训练稳定。
可以理解为 FFN 不再只是:
而是变成:
即:
这让 MLP 子层有更强的特征筛选能力。现代大模型里,MLP 通常承担了非常大的参数量和知识存储能力,因此 FFN/MLP 的改进非常关键。
SwiGLU 被大量现代 LLM 采用,主要是实验结果表明它在给定参数量和计算量下通常优于普通 ReLU/GELU FFN。并不存在一个严格定理证明 SiLU 永远最优。
五、位置编码变化:Sinusoidal 到 RoPE / ALiBi / 相对位置
原始 Transformer 使用绝对位置编码:
其中 \(e_i\) 是 token embedding,\(p_i\) 是位置 embedding。
sinusoidal position encoding 是:
但绝对位置编码有一个问题:模型学到的是“第 1024 个位置是什么”,而不是更自然的“两个 token 相隔多远”。
后来出现了几类改进:
1. Relative Position Bias
T5 等模型使用相对位置偏置:
其中 \(B_{i-j}\) 表示 query 位置 i 和 key 位置 j 的相对距离偏置。
2. RoPE
现在很多 LLM 使用 Rotary Position Embedding,旋转位置编码。
它不是简单把位置向量加到 token embedding 上,而是对 (q,k) 做旋转:
注意力分数变成:
由于旋转矩阵的性质,可以得到它和相对位置 m-n 有关:
这很优雅:位置关系进入了 attention score,而且天然带有相对位置结构。
所以 RoPE 的核心优势是:它让 attention 同时感知 token 内容和相对位置关系。
LLaMA、Qwen、Mistral 等很多模型都使用 RoPE。
3. ALiBi
ALiBi 直接给 attention score 加一个和距离相关的线性偏置:
其中 \(m_h\) 是第 h 个 head 的斜率。
ALiBi 简单、外推能力较好,但在今天主流 LLM 中,RoPE 更常见。
六、Attention 结构变化:MHA 到 MQA / GQA
原始 Transformer 使用标准 Multi-Head Attention,每个 head 都有自己的 (Q,K,V)。
如果有 h 个头:
每个 head 都要缓存自己的 K,V。
但大模型推理时有一个巨大瓶颈:KV Cache。
自回归生成时,每生成一个新 token,都要访问之前所有 token 的 key/value。KV cache 的大小大致与下面几个量成正比:
其中 L 是上下文长度。
上下文越长、batch 越大,KV cache 压力越大。
于是出现了 MQA 和 GQA。
1. MQA:Multi-Query Attention
MQA 让所有 query heads 共享同一组 K,V。
也就是:
但:
这样 KV cache 大幅减少,但可能损失一些表达能力。
2. GQA:Grouped-Query Attention
GQA 是折中方案。多个 query heads 共享一组 (K,V)。
例如有 32 个 query heads,但只有 8 组 KV heads:
每一组 query heads 共享对应的 key/value。
GQA 在现代 LLM 中非常常见,比如 LLaMA 2/3、Mistral、Qwen 等很多模型都采用类似设计。
可以简单理解:
| 结构 | 表达能力 | KV cache | 推理效率 |
|---|---|---|---|
| MHA | 强 | 大 | 慢 |
| MQA | 较弱 | 小 | 快 |
| GQA | 较强 | 较小 | 较快 |
七、长上下文:从几百/几千 token 到几十万 token
原始 Transformer 的复杂度是:
因为每个 token 都要和所有 token 做 attention。
当上下文长度 n 变大时,attention 矩阵大小是:
这会非常昂贵。
所以长上下文方向出现了很多改进:
1. 位置编码外推
RoPE 本身不一定能直接泛化到远超训练长度的上下文,所以后来有很多 RoPE scaling 技术,例如 NTK-aware scaling、YaRN、LongRoPE 等。
大致思想是调整旋转频率,让模型能适应更长的位置范围。
原始 RoPE 中,不同维度使用不同频率:
长上下文扩展往往会修改这个频率分布。
2. 稀疏注意力 / 局部注意力
全注意力是:
局部注意力变成:
复杂度从:
下降到:
其中 w 是窗口大小。
Mistral 的 sliding window attention 就属于这一类思路。
3. 分块 attention / 记忆机制
一些模型会把上下文分块,或者引入 memory token、compressed memory、retrieval memory 等机制。
本质上都是想解决一个问题:
八、FlashAttention:不是数学架构变了,但工程上极其重要
FlashAttention 不改变 attention 的数学形式:
但它改变了计算方式。
普通 attention 会显式构造 QK^T,也就是 \(n\times n\) 矩阵,显存读写非常重。
FlashAttention 的核心是:
- 分块计算 attention。
- 避免显式 materialize 整个 attention matrix。
- 用 online softmax 保持数值正确。
- 尽可能利用 SRAM,减少 HBM 访问。
所以它不是“模型结构创新”,而是“让标准 attention 真的能高效跑起来”的关键系统优化。
对大模型来说,很多时候瓶颈不是 FLOPs,而是 memory bandwidth。
九、Dense 到 MoE:参数量越来越大,但每次只激活一部分
传统 Transformer 是 dense model。
每个 token 经过每一层 MLP 时,都会使用全部参数。
MoE,也就是 Mixture of Experts,把 FFN 换成多个专家:
其中 \(E_i\) 是第 \(i\) 个 expert,\(g_i(x)\) 是 router 给它的权重。
实际中常用 top-k routing:
例如 top-2 routing 就是每个 token 只送入两个专家。
MoE 的好处是:
总参数量可以很大,但每个 token 实际激活的参数量相对较小。
也就是:
这使得模型可以有更大的容量,同时推理计算量不按总参数量线性增长。
但 MoE 也带来问题:
- router 训练不稳定。
- expert 负载不均衡。
- 分布式通信复杂。
- 推理部署更困难。
Mixtral、DeepSeek-V2/V3 等公开模型都展示了 MoE 路线的影响力。
十、Embedding 和输出层:权重共享、词表扩大、多语言优化
原始 Transformer 就已经使用 token embedding 和输出 softmax:
很多现代模型会让输入 embedding 和输出 projection 共享权重:
这叫 weight tying,可以减少参数,也能带来一定正则化效果。
另一个变化是 tokenizer 和词表设计。早期英文模型更多使用 BPE;现代多语言模型常用更大的词表,兼顾英文、中文、代码、数学符号等。
这不完全是 Transformer block 的架构变化,但会显著影响模型能力,尤其是中文、代码和数学任务。
十一、多模态架构:Transformer 从文本骨架变成通用接口
现代大模型已经不只处理文本,还可以理解图像、音频、视频等信息。但很多多模态大模型并不是重新设计一套全新的 Transformer,而是保留一个强大的语言模型作为核心,然后想办法把其他模态转换成它能处理的形式。
以图像为例,LLM 本来只能接收文本 token,比如:
但图像不是文字,不能直接喂给语言模型。因此通常需要先用一个视觉编码器提取图像特征:
其中 I 表示输入图像,\(f_{\text{vision}}\) 表示视觉编码器,\(z_{\text{img}}\) 表示图像特征。
不过,视觉编码器输出的特征空间和 LLM 的词向量空间通常不一样,所以还需要一个投影层,把图像特征转换成 LLM 能接收的 hidden states:
这里的 \(x_{\text{img}}\) 就可以理解成“视觉 token”。它们不是文字 token,但在形状和语义空间上已经被转换成了 LLM 可以处理的输入。
所以,一个常见的多模态模型结构可以概括为:
也就是:
例如,当用户输入一张图片并提问“这张图里有什么?”时,模型大致会先把图片编码成一组视觉 token,再把这些视觉 token 和用户的文本 token 拼接起来,一起送入 LLM:
这样,LLM 就可以在生成答案时同时参考图像信息和文本问题。
更复杂的多模态模型还会加入 cross-attention、query tokens、Perceiver Resampler 等模块。它们的作用可以简单理解为:在把图像信息交给 LLM 之前,先对视觉特征进行筛选、压缩和整理,避免把过多、过杂的视觉信息直接塞进语言模型。
十二、现代 LLM 的典型结构长什么样?
以很多 LLaMA-like 模型为代表,一个现代 decoder-only Transformer block 通常类似:
其中 attention 使用:
然后对 (Q,K) 加 RoPE:
再做 causal attention:
整体可以概括为:
如果是更大规模模型,还可能加上:
十三、从 2017 到今天,核心变化总结
可以用一张表概括:
| 方面 | 2017 Transformer | 现代大模型常见做法 |
|---|---|---|
| 总体结构 | Encoder-Decoder | Decoder-only 为主 |
| 训练目标 | 机器翻译 seq2seq | 自回归 next-token prediction |
| Norm | Post-LN | Pre-LN / RMSNorm |
| FFN 激活 | ReLU | GELU / SwiGLU |
| 位置编码 | Sinusoidal absolute PE | RoPE / Relative Bias / ALiBi |
| Attention | 标准 MHA | MHA / MQA / GQA |
| 长上下文 | 通常较短 | RoPE scaling、滑窗、稀疏、分块 |
| 参数组织 | Dense | Dense + MoE |
| 推理 | 不强调 KV cache | KV cache 是核心机制 |
| 工程实现 | 普通 attention | FlashAttention、PagedAttention 等 |
| 模态 | 文本为主 | 文本、图像、音频、视频统一建模 |
| 典型模型 | 原始 Transformer | GPT、LLaMA、Qwen、Mistral、DeepSeek、Gemini/Claude 类模型 |

浙公网安备 33010602011771号