Transformer 模型架构的核心计算主要围绕 自注意力机制(Self-Attention) 和 前馈神经网络(Feed-Forward Network, FFN) 展开。与传统卷积神经网络(CNN)依赖卷积运算不同,Transformer 完全基于注意力机制 和矩阵运算 ,尤其在大模型时代,其计算模式以大规模矩阵乘法为主。
✅ 一、Transformer 的主要计算构成
Transformer 模型的主要计算可以分为两大块:
| 模块 | 核心计算 | 占比(估算) |
|---|---|---|
| 1. 自注意力机制(Self-Attention) | QKV 计算、注意力分数、加权求和 | ~40%-60% |
| 2. 前馈网络(FFN) | 两个线性变换 + 激活函数 | ~40%-50% |
| 其他(LayerNorm、残差连接等) | 向量/标量运算 | <10% |
💡 在大模型(如 LLaMA、GPT)中,FFN 的计算量通常略大于 Self-Attention,尤其是在宽前馈层(large intermediate size)的设计下。
✅ 二、1. 自注意力机制(Self-Attention)的核心计算
自注意力是 Transformer 的标志性模块,其主要计算步骤如下:
📌 步骤 1:生成 Q、K、V 矩阵
python
Q = X @ W_Q # 矩阵乘法
K = X @ W_K # 矩阵乘法
V = X @ W_V # 矩阵乘法
X: 输入序列(shape:[seq_len, d_model])W_Q,W_K,W_V: 可学习权重矩阵- 核心运算:矩阵乘法(GEMM)
📌 步骤 2:计算注意力分数
python
编辑
scores = Q @ K.T / sqrt(d_k) # 矩阵乘法 + 缩放
attn = softmax(scores) # Softmax 激活函数
Q @ K.T: 计算所有 token 之间的相似度,得到[seq_len, seq_len]的注意力矩阵- 核心运算:矩阵乘法 + Softmax
📌 步骤 3:加权求和
python
编辑
output = attn @ V # 矩阵乘法
- 使用注意力权重对 Value 进行加权求和
- 核心运算:矩阵乘法
⚠️ 传统实现中,
attn矩阵显式存储,显存占用大(O(N²))。FlashAttention 等优化技术通过融合计算避免显式存储,大幅提升效率。
✅ 三、2. 前馈神经网络(FFN)的核心计算
每个 Transformer Block 中都有一个 FFN,结构通常为:
python
编辑
FFN(x) = W_2 @ GELU(W_1 @ x + b_1) + b_2
分解为:
x @ W_1→ 升维(如d_model=4096→d_ff=16384)GELU激活函数@ W_2→ 降维回d_model
- 核心运算:两个大矩阵乘法 + GELU
- 在 LLaMA 等模型中,
d_ff ≈ 4 × d_model,因此 FFN 的参数量和计算量通常超过 Self-Attention
✅ 四、整体计算特点总结
| 特性 | 说明 |
|---|---|
| 主导运算 | 矩阵乘法(GEMM) 是绝对主导,占总 FLOPs 的 90% 以上 |
| 并行性 | 高度并行,适合 GPU/TPU 加速 |
| 内存瓶颈 | 注意力矩阵(Q @ K.T)和 KV Cache 是显存瓶颈 |
| 计算密度 | FFN 通常比 Attention 更"重"(更多 FLOPs) |
| 优化技术 | FlashAttention、PagedAttention、量化、稀疏化等用于提升效率 |
✅ 五、与 CNN 的对比
| 特征 | CNN(如 ResNet) | Transformer |
|---|---|---|
| 核心运算 | 卷积(Convolution) | 矩阵乘法(GEMM) |
| 局部性 | 强(滑动窗口) | 全局(Self-Attention) |
| 计算模式 | 空间局部 + 深度可分卷积 | 全连接式注意力 + 宽前馈层 |
| 显存占用 | 相对较低 | 高(尤其长序列) |
| 可扩展性 | 有限 | 极强(适合大模型) |
✅ 六、实际模型中的计算分布(以 LLaMA-7B 为例)
| 模块 | 计算占比(FLOPs) |
|---|---|
| Self-Attention | ~40% |
| FFN | ~60% |
| 其他 | ~0%(可忽略) |
🔹 原因:LLaMA 使用
d_ff = 4 × d_model,且 FFN 不共享权重,因此计算量更大。
✅ 七、图示说明(文字版)
text
编辑
输入 X
│
▼
┌─────────────────────┐
│ Multi-Head Attention│
│ │
│ Q = X @ W_Q ──┐ │
│ K = X @ W_K ├──┤ 矩阵乘法
│ V = X @ W_V ──┘ │
│ │
│ attn = softmax(Q@Kᵀ/√d) │
│ O_att = attn @ V │ 矩阵乘法
└─────────┬───────────┘
│
▼
LayerNorm + Residual
│
▼
┌──────────────────┐
│ Feed-Forward │
│ Network (FFN) │
│ │
│ X @ W_1 → GELU │ 矩阵乘法 + 激活
│ @ W_2 │ 矩阵乘法
└─────────┬────────┘
│
▼
LayerNorm + Residual
│
▼
输出 O
✅ 总结
🔹 Transformer 的主要计算是:
- 自注意力机制中的矩阵乘法(Q@K.T, attn@V)
- 前馈网络中的大规模矩阵乘法(W_1, W_2)
🔹 核心运算是:矩阵乘法(GEMM),占总计算量的 90% 以上。
🔹 与 CNN 的卷积不同,Transformer 是"全连接 + 矩阵运算"架构,更适合现代加速器(GPU/TPU)并行计算,但也带来更高的显存和计算需求。
📌 一句话回答 :
Transformer 模型的主要计算是自注意力机制和前馈网络中的大规模矩阵乘法(GEMM),其中矩阵乘法是绝对主导运算。