M3 · Transformer 如何处理和生成信息? - Transformer Architecture
所属知识库:Agent 全栈技术地图
所属领域:01 · AI
所属章节:02 · AI 模型是如何构建和工作的? - Model Architecture
文档类型:模型架构与技术机制研究
版本:v1.0
更新日期:2026 年 10 月 27 日
核心问题:Transformer 是什么?它为什么被提出?Token、Embedding、位置编码和注意力机制如何协同工作?Transformer Block 由哪些组件构成?Encoder、Decoder 和 Encoder–Decoder 有什么区别?现代大语言模型如何利用 Transformer 处理上下文并生成文本?
专题导读
M2 已经解释了神经网络的基本计算与学习机制。M3 将进一步研究 Transformer 的内部结构,重点回答:Transformer 为什么被提出?注意力机制如何工作?Token 如何在不同网络层之间传递信息?Encoder、Decoder 和现代大语言模型之间是什么关系?
本篇会重点区分 Transformer 的架构设计、信息处理机制与文本生成过程。模型训练和推理优化的深入内容仍分别留给 M6、M7。
一、研究概述
Transformer 是现代深度学习中具有重要影响力的神经网络架构之一,也是当前大量大语言模型的技术基础。
2017 年,Ashish Vaswani 等人在论文《Attention Is All You Need》中提出 Transformer 架构。[1]
在此之前,序列建模任务广泛使用循环神经网络(RNN)、长短期记忆网络(LSTM)以及其他相关结构。这些方法能够处理语言、时间序列等具有顺序关系的数据,但在长距离依赖建模和训练并行化方面存在一定限制。
Transformer 采用注意力机制(Attention Mechanism)作为处理序列信息的核心方法,使模型能够直接建立序列中不同位置之间的信息联系。
例如,在句子:
小明把书放进书包,因为他准备去学校。
中,模型处理“他”时,需要利用前文信息判断这个代词可能指向谁。
传统序列模型通常需要通过逐步更新的隐藏状态传递信息,而 Transformer 的自注意力机制允许一个位置直接聚合其他相关位置的信息。
这种计算方式为大规模并行训练和复杂上下文建模提供了重要基础。
但 Transformer 的意义并不只是引入注意力机制。
它实际上建立了一套完整的信息处理架构,将 Token 表示、位置编码、多头注意力、前馈神经网络、残差连接和归一化等组件组织为可以重复堆叠的计算模块。
这些模块共同完成信息表示、上下文交互和特征转换。
本篇将从 Transformer 的设计背景出发,逐步研究其核心组件、计算过程、主要架构类型,以及它与现代大语言模型之间的关系。
二、Transformer 为什么被提出?
2.1 序列建模需要解决什么问题?
许多 AI 任务需要处理具有顺序关系的数据。
例如:
- 自然语言文本;
- 语音信号;
- 时间序列;
- 视频帧;
- 程序代码。
这类数据的特点是:不同位置的信息可能相互依赖。
例如:
这本书虽然内容复杂,但它非常值得阅读。
理解“它”所指代的对象,需要利用前文信息。
在机器翻译中,模型还需要根据源语言的整体语义生成目标语言。
因此,序列模型不仅需要处理单个元素,还需要建立不同元素之间的关系。
2.2 RNN 如何处理序列?
循环神经网络(Recurrent Neural Network,RNN)通过隐藏状态逐步处理序列。
一个简化的 RNN 可以表示为:
其中:
:当前输入; :上一时间步的隐藏状态; :当前隐藏状态。
其处理过程可以表示为:
Token 1 → RNN → 状态 1
│
Token 2 → RNN → 状态 2
│
Token 3 → RNN → 状态 3
│
Token 4 → RNN → 状态 4由于当前状态依赖上一状态,标准 RNN 的序列计算具有较强的顺序依赖。
这会限制训练阶段沿序列维度进行并行计算的能力。
此外,较长序列中的信息需要经过多次状态传递,可能面临梯度传播和长期依赖建模等问题。
LSTM、GRU 等结构改善了部分问题,但没有完全消除顺序计算的限制。
2.3 注意力机制如何改变序列处理方式?
注意力机制允许模型根据当前任务或当前位置的需要,从一组信息中选择并聚合相关内容。
在神经机器翻译领域,Bahdanau 等人在 2014 年提出了具有代表性的神经注意力方法。[2]
Transformer 进一步采用自注意力机制,使序列中的不同位置能够直接进行信息交互。
例如:
输入序列:
Token 1 Token 2 Token 3 Token 4
│ │ │ │
└──────────┼──────────┼──────────┘
│
Self-Attention
│
┌──────────┼──────────┼──────────┐
│ │ │ │
输出 1 输出 2 输出 3 输出 4这个示意图表达的是:每个输出位置都可以根据允许访问的输入位置计算新的表示。
具体能够访问哪些位置,取决于注意力掩码和模型架构。
例如,双向 Encoder 可以允许位置访问整个输入序列,而自回归 Decoder 通常使用因果掩码,禁止当前位置访问未来 Token。
2.4 Transformer 的核心改进是什么?
Transformer 的重要贡献可以概括为三个方面。
第一,使用注意力机制建立序列位置之间的联系。 模型不必完全依赖循环状态逐步传递信息。
第二,采用适合并行计算的网络结构。 在训练阶段,许多序列位置的计算可以通过矩阵运算并行完成。
第三,形成可以重复堆叠的模块化架构。 注意力、前馈网络、残差连接和归一化共同构成 Transformer Block,使模型能够扩展到更大的网络规模。
需要注意,Transformer 并没有消除所有计算成本。
标准全注意力机制的计算和内存开销通常随序列长度呈二次增长,因此长序列处理仍然面临效率问题。
三、Transformer 的整体架构是什么?
3.1 原始 Transformer 的结构
2017 年提出的原始 Transformer 是一种 Encoder–Decoder 架构。
它主要面向机器翻译等序列到序列任务。
整体结构如下:
输入序列
│
▼
Token Embedding
│
▼
位置编码
│
▼
┌─────────────────┐
│ Encoder Block 1 │
├─────────────────┤
│ Encoder Block 2 │
├─────────────────┤
│ ... │
├─────────────────┤
│ Encoder Block N │
└─────────────────┘
│
│ Encoder 输出
│
▼
Cross-Attention ◄──── Decoder
│
▼
输出序列原始 Transformer 包含两个主要部分:
- Encoder:将输入序列转换为上下文相关的表示;
- Decoder:结合已经生成的目标序列和 Encoder 输出,预测后续输出。
3.2 Encoder 的作用
Encoder 负责处理输入序列。
例如,在机器翻译任务中:
I love learning.
Encoder 将输入文本转换为一组包含上下文信息的向量表示。
这些表示可以被 Decoder 使用。
3.3 Decoder 的作用
Decoder 负责生成输出序列。
例如:
我喜欢学习。
Decoder 可以根据已经生成的内容以及 Encoder 提供的信息,逐步预测后续 Token。
3.4 Transformer 不只有一种架构
随着技术发展,Transformer 形成了多种重要架构形式。
| 架构类型 | 主要特点 | 代表模型 |
|---|---|---|
| Encoder-only | 主要通过双向注意力理解输入 | BERT |
| Decoder-only | 通常通过因果注意力进行自回归生成 | GPT 系列 |
| Encoder–Decoder | 分别处理输入编码与输出生成 | T5、原始 Transformer |
这些架构具有不同的计算方式和适用任务。
现代大语言模型中,Decoder-only 是一种广泛采用的架构,但并不是唯一选择。
四、什么是 Token?Transformer 如何接收文本?
Transformer 本身处理的是数值张量,而不是直接处理人类阅读的字符串。
因此,文本需要经过一定的表示转换。
4.1 Token 的基本概念
Token 是模型处理文本时使用的离散单位。
一个 Token 可能对应:
- 一个词;
- 一个词的一部分;
- 一个字符;
- 标点符号;
- 其他文本片段。
Token 的具体划分取决于 Tokenizer。
例如:
Transformers are powerful.
可能被转换为若干 Token。
不同 Tokenizer 可能产生不同结果。
4.2 Tokenization
Tokenization 是将文本转换为 Token 序列的过程。
随后,Tokenizer 将 Token 映射为对应的 Token ID。
原始文本
│
▼
Tokenizer
│
▼
Token 序列
│
▼
Token ID 序列Token ID 是离散整数,便于模型查找对应的向量表示。
4.3 Embedding
Embedding 将离散 Token ID 映射为连续向量。
假设词表大小为:
模型隐藏维度为:
那么 Token Embedding 矩阵可以表示为:
每个 Token ID 对应矩阵中的一个向量。
例如:
其中:
:第 个 Token ID; :对应的向量表示。
这些向量是模型后续计算的基础。
4.4 Token Embedding 与语义表示
Embedding 向量通常通过训练学习得到。
它们可以承载与语言统计规律相关的信息。
但需要区分初始 Token Embedding 和 Transformer 计算后的上下文表示。
同一个 Token 的初始 Embedding 通常是固定的参数向量,而经过不同上下文中的 Transformer 计算后,它可以获得不同的上下文相关表示。
例如,“苹果”在水果和科技产品相关语境中,可能形成不同的上下文表示。
五、为什么 Transformer 需要位置信息?
5.1 注意力计算本身不直接编码顺序
标准自注意力机制根据输入向量之间的关系进行计算。
如果不加入位置相关信息,模型就难以仅凭自注意力计算区分某些不同顺序的输入。
例如:
小明喜欢小红。
与:
小红喜欢小明。
两句话包含相似的词语,但语义关系不同。
因此,Transformer 需要能够表示 Token 在序列中的位置或相对位置关系。
5.2 什么是位置编码?
位置编码(Positional Encoding)用于向模型提供位置信息。
原始 Transformer 使用正弦和余弦函数构造位置编码。
其典型形式为:
其中:
:Token 的位置; :向量维度索引; :模型隐藏维度。
位置编码与 Token Embedding 结合后,模型可以同时利用内容和位置信息。
5.3 现代模型有哪些位置表示方法?
Transformer 的位置表示方法已经形成多种技术路线。
| 方法 | 基本思想 |
|---|---|
| Sinusoidal Position Encoding | 使用固定正弦、余弦函数表示位置 |
| Learned Position Embedding | 通过训练学习位置向量 |
| Relative Position Encoding | 建模不同 Token 之间的相对位置 |
| RoPE | 通过旋转变换将位置信息引入注意力计算 |
| ALiBi | 在注意力分数中引入与位置距离相关的偏置 |
其中,RoPE(Rotary Position Embedding)在现代语言模型中具有重要应用。[3]
不同方法对长上下文处理、位置泛化和计算实现可能产生不同影响。
但位置编码并不是越复杂越好,具体选择需要结合模型架构与训练目标。
六、什么是注意力机制?
注意力机制(Attention Mechanism)是 Transformer 的核心技术之一。
它允许模型根据输入之间的相关性,为不同信息分配不同权重,并聚合相应内容。
6.1 从一个简单例子理解注意力
假设输入句子为:
小明把雨伞借给小红,因为她忘记带伞。
在处理“她”时,模型可能需要重点利用“小红”等相关上下文信息。
注意力机制可以让当前位置根据其他位置的信息计算权重。
例如:
当前处理:
她
可能参考:
小明
雨伞
借给
小红
忘记带伞模型会根据训练得到的参数和当前输入表示计算注意力权重。
这些权重用于聚合信息。
需要注意,注意力权重不等同于人类可解释的语义关系,也不能简单将最高注意力权重理解为模型真正的推理依据。
6.2 Query、Key 和 Value
Transformer 注意力机制通常使用三个重要概念:
- Query(查询向量,Q);
- Key(键向量,K);
- Value(值向量,V)。
可以将其理解为一种信息匹配与聚合机制。
Query 表示当前位置需要检索什么信息。
Key 用于与 Query 进行匹配。
Value 则提供被聚合的具体信息。
例如:
当前位置表示
│
▼
生成 Query
│
▼
与其他位置的 Key 匹配
│
▼
计算注意力权重
│
▼
加权聚合 Value
│
▼
得到新的位置表示这是帮助理解的功能性描述。
在实际模型中,Q、K、V 都是通过数学变换得到的向量,并不是显式的自然语言查询、索引和数据库记录。
6.3 Q、K、V 如何产生?
假设输入表示矩阵为:
其中:
:序列长度; :隐藏维度。
模型通过可学习的投影矩阵计算:
其中:
:Query 投影矩阵; :Key 投影矩阵; :Value 投影矩阵。
这些投影矩阵属于模型参数,会在训练过程中被调整。
因此,注意力机制并不是固定的规则匹配系统,而是一种可学习的计算结构。
七、Self-Attention 如何计算?
Self-Attention(自注意力)是 Transformer 的核心机制。
它允许一个序列中的不同位置根据彼此的信息更新表示。
7.1 Scaled Dot-Product Attention
Transformer 使用的经典注意力计算形式为:
其中:
:Query 矩阵; :Key 矩阵; :Value 矩阵; :Key 向量维度; :将分数转换为归一化权重。
这个公式可以分为四个步骤。
7.2 第一步:计算相关性分数
首先计算:
这一步通过向量点积计算不同位置之间的匹配分数。
如果序列长度为
的形状。
矩阵中的每个元素,表示一个 Query 位置与一个 Key 位置之间的匹配分数。
7.3 第二步:缩放分数
接下来计算:
缩放操作用于控制点积分数的数值尺度。
在一定统计假设下,向量维度增加可能使点积的数值幅度增大。
通过除以
7.4 第三步:计算注意力权重
使用 Softmax:
Softmax 通常沿 Key 维度计算,使每个 Query 对允许访问的 Key 位置形成归一化权重。
例如:
表示当前位置对四个信息位置分配了不同权重。
这些数值只是示意。
7.5 第四步:聚合 Value
最后计算:
模型根据注意力权重,对 Value 向量进行加权求和。
得到的输出包含从相关位置聚合的信息。
7.6 完整计算流程
输入表示 X
│
├─────────┬─────────┐
▼ ▼ ▼
Q K V
│ │ │
└────┬────┘ │
▼ │
QKᵀ │
│ │
▼ │
缩放分数 │
│ │
▼ │
Softmax │
│ │
▼ │
注意力权重 │
│ │
└──────┬───────┘
▼
加权聚合 Value
│
▼
输出表示这个过程解释了 Self-Attention 如何根据不同位置之间的关系更新信息表示。
八、什么是 Multi-Head Attention?
单个注意力计算可以学习一种信息匹配与聚合方式。
Multi-Head Attention(多头注意力)则通过多个注意力头并行计算,使模型能够在不同投影子空间中处理信息。
8.1 为什么需要多个注意力头?
不同注意力头具有不同的投影参数。
因此,它们可以学习不同的信息交互模式。
例如,在语言任务中,不同注意力头可能对局部上下文、长距离依赖或其他统计关系表现出不同敏感性。
但不能简单认为每个注意力头都具有固定且清晰的人类语义功能。
注意力头的具体行为由训练形成,并可能存在冗余。
8.2 多头注意力的计算
第
多个注意力头的输出进行拼接:
然后通过输出投影:
其中:
:注意力头数量; :各注意力头的投影参数; :输出投影矩阵。
8.3 多头注意力结构
输入表示
│
├───────────┬───────────┬───────────┐
▼ ▼ ▼ ▼
Attention 1 Attention 2 Attention 3 Attention N
│ │ │ │
└───────────┴───────────┴───────────┘
│
▼
Concat
│
▼
输出投影
│
▼
最终输出多头注意力是 Transformer Block 的重要组成部分。
现代模型还可能采用 Multi-Query Attention(MQA)、Grouped-Query Attention(GQA)等变体,以改善推理阶段的缓存和内存效率。
这些变体主要调整 Query、Key 和 Value 的头部组织方式,而不是改变注意力计算的基本思想。
九、什么是注意力掩码?
注意力掩码(Attention Mask)用于控制模型在注意力计算中能够访问哪些位置。
不同架构需要不同的注意力访问规则。
9.1 双向注意力
在典型的双向 Encoder 中,一个 Token 可以访问输入序列中的其他位置。
例如:
Token 1 ── 可访问 ── Token 2
Token 1 ── 可访问 ── Token 3
Token 2 ── 可访问 ── Token 1这种方式适合需要综合利用完整输入上下文的任务。
9.2 因果注意力
自回归语言模型通常使用因果注意力(Causal Attention)。
它要求当前位置不能访问未来 Token。
例如:
位置 1:可以访问 1
位置 2:可以访问 1、2
位置 3:可以访问 1、2、3
位置 4:可以访问 1、2、3、4对应的注意力访问矩阵可以表示为:
K1 K2 K3 K4
Q1 ✓ × × ×
Q2 ✓ ✓ × ×
Q3 ✓ ✓ ✓ ×
Q4 ✓ ✓ ✓ ✓这里的 ✓ 表示允许访问,× 表示禁止访问。
9.3 掩码如何参与计算?
注意力公式可以扩展为:
其中
对于禁止访问的位置,可以在 Softmax 之前加入负无穷或足够大的负值,使其归一化权重趋近于零。
9.4 为什么因果掩码重要?
自回归语言模型需要根据已有上下文预测后续 Token。
如果训练时允许当前位置直接访问未来 Token,就可能破坏下一 Token 预测任务所要求的信息约束。
因此,因果掩码是典型 Decoder-only 自回归语言模型的重要机制。
需要注意,因果掩码控制的是注意力信息访问范围,不等同于模型的安全策略或应用权限控制。
十、Transformer Block 由什么构成?
Transformer 并不是只有注意力机制。
一个典型 Transformer Block 还包含前馈网络、残差连接和归一化等组件。
10.1 Transformer Block 的基本结构
以一种常见的 Pre-Norm Decoder Block 为例:
输入 X
│
├──────────────────────────────┐
│ │
▼ │
Layer Normalization │
│ │
▼ │
Causal Self-Attention │
│ │
▼ │
相加 ◄────────────────────────────┘
│
│ X'
├──────────────────────────────┐
│ │
▼ │
Layer Normalization │
│ │
▼ │
Feed-Forward Network │
│ │
▼ │
相加 ◄────────────────────────────┘
│
▼
输出这是现代语言模型中常见的一种组织方式。
原始 Transformer 使用的归一化位置与部分现代模型不同,因此不能将这个结构视为所有 Transformer 的统一实现。
10.2 Self-Attention
Self-Attention 负责根据序列中不同位置之间的关系聚合信息。
它主要解决的是:
当前位置应该从其他允许访问的位置获取哪些信息?
10.3 Feed-Forward Network
前馈网络(Feed-Forward Network,FFN)负责对每个位置的表示进行进一步变换。
经典 Transformer 中的前馈网络通常包含两次线性变换和一次非线性激活:
其中:
:权重矩阵; :偏置; :非线性激活函数。
FFN 通常对各序列位置分别应用相同的参数化变换。
因此,可以将注意力与 FFN 的作用进行区分:
- 注意力主要负责不同位置之间的信息交互;
- FFN 主要负责每个位置内部的特征变换。
这是理解 Transformer Block 的一个重要视角。
10.4 Residual Connection
残差连接(Residual Connection)将模块输入与模块输出相加。
例如:
其中:
:模块输入; :模块计算结果。
残差连接可以改善深层网络中的信息和梯度传播。
它是训练深层 Transformer 的重要结构之一。
10.5 Layer Normalization
Layer Normalization 用于对中间表示进行归一化处理。
其作用包括改善数值尺度和训练稳定性。
现代 Transformer 还可能使用 RMSNorm 等归一化方法。
不同归一化方式会影响模型实现和训练特征。
10.6 一个 Block 的计算
以简化的 Pre-Norm 结构为例:
其中:
:输入; :注意力模块后的表示; :Block 输出。
实际模型还可能包含位置相关操作、注意力掩码、Dropout 或其他组件。
十一、多个 Transformer Block 如何形成完整模型?
单个 Transformer Block 可以完成一次上下文信息交互和特征变换。
实际 Transformer 模型通常将多个 Block 堆叠。
11.1 堆叠结构
输入 Token
│
▼
Token Embedding
│
▼
位置信息
│
▼
Transformer Block 1
│
▼
Transformer Block 2
│
▼
Transformer Block 3
│
▼
...
│
▼
Transformer Block N
│
▼
输出层每个 Block 接收上一层的输出,并进一步更新表示。
11.2 为什么要堆叠多个 Block?
多个 Block 允许模型进行多轮信息交互和非线性变换。
例如,一个位置的表示可以在不同层中不断结合新的上下文信息。
这种层级计算机制,有助于模型学习复杂的序列关系。
但并不意味着层数越多,模型一定越好。
模型表现还受到隐藏维度、注意力结构、训练数据、训练方法和计算资源等因素影响。
11.3 模型参数主要来自哪里?
Transformer 的可学习参数通常包括:
- Token Embedding;
- 注意力投影矩阵;
- FFN 权重;
- 归一化相关参数;
- 输出投影;
- 其他架构相关参数。
因此,Transformer 的参数规模与网络层数、隐藏维度、FFN 维度和其他架构设置有关。
十二、Encoder、Decoder 和 Encoder–Decoder 有什么区别?
Transformer 的三类主要架构,在注意力访问方式和任务组织方面存在差异。
12.1 Encoder-only
Encoder-only 模型主要使用 Encoder Block 处理输入。
典型模型包括 BERT。[4]
其特点是可以利用输入序列中双向的上下文信息。
例如:
输入文本
│
▼
Embedding
│
▼
Encoder Blocks
│
▼
上下文表示
│
▼
分类、抽取或其他任务这类架构适合多种文本理解任务。
12.2 Decoder-only
Decoder-only 模型主要使用具有因果注意力的 Decoder 风格网络。
典型代表包括 GPT 系列。[5]
其核心任务通常是根据已有 Token 预测后续 Token。
已有 Token
│
▼
Embedding
│
▼
Causal Transformer Blocks
│
▼
输出层
│
▼
下一个 Token 的分数需要注意,现代 Decoder-only 模型中的 Decoder Block 通常不包含原始 Encoder–Decoder Transformer 中用于读取独立 Encoder 输出的 Cross-Attention 子层。
因此,现代语言模型中使用的“Decoder-only”与原始 Transformer Decoder 的完整结构并不完全相同。
12.3 Encoder–Decoder
Encoder–Decoder 模型分别处理输入编码和输出生成。
例如:
输入序列
│
▼
Encoder
│
▼
输入表示
│
▼
Cross-Attention ◄── Decoder 当前状态
│
▼
Decoder
│
▼
输出序列典型模型包括 T5。[6]
这类架构适合机器翻译、文本摘要和其他序列到序列任务。
12.4 三种架构比较
| 维度 | Encoder-only | Decoder-only | Encoder–Decoder |
|---|---|---|---|
| 主要结构 | Encoder | 因果 Decoder 风格网络 | Encoder + Decoder |
| 注意力方式 | 通常双向 | 通常因果 | Encoder 双向、Decoder 因果 |
| 典型任务 | 理解、分类、抽取 | 自回归生成 | 序列到序列 |
| 代表模型 | BERT | GPT | T5 |
| 输出特点 | 上下文表示或任务预测 | 逐步生成 Token | 根据编码输入生成序列 |
这是一种典型分类。
实际模型可能通过特殊注意力机制或其他结构形成混合架构。
十三、Transformer 如何生成文本?
Transformer 的文本生成机制,可以通过典型 Decoder-only 自回归语言模型理解。
13.1 什么是自回归生成?
自回归生成(Autoregressive Generation)是根据已有序列逐步预测后续元素的方法。
对于 Token 序列:
其联合概率可以分解为:
也就是说,模型通过已有 Token 预测下一个 Token。
13.2 第一步:输入 Prompt
例如:
人工智能是一种
模型首先将文本转换为 Token 序列。
13.3 第二步:执行 Transformer 计算
Token 经过 Embedding 和多层 Transformer Block。
模型根据已有上下文计算当前位置的输出表示。
13.4 第三步:计算 Token 分数
输出层将隐藏表示映射为词表上的分数。
这些分数通常称为 Logits。
假设词表大小为:
那么输出可以表示为:
13.5 第四步:转换为概率分布
通过 Softmax,可以将 Logits 转换为概率分布:
不同 Token 获得不同概率。
13.6 第五步:选择下一个 Token
模型可以根据解码策略选择 Token。
例如:
- Greedy Decoding;
- Temperature Sampling;
- Top-k Sampling;
- Top-p Sampling。
这些策略可能产生不同结果。
13.7 第六步:重复生成
新生成的 Token 加入已有上下文。
模型继续预测后续 Token。
输入 Prompt
│
▼
Transformer
│
▼
预测 Token 1
│
▼
加入上下文
│
▼
Transformer
│
▼
预测 Token 2
│
▼
加入上下文
│
▼
继续生成生成过程通常在遇到停止标记、达到长度限制或满足其他停止条件时结束。
需要注意,Transformer 的训练阶段可以并行计算多个位置的预测,而典型自回归推理阶段需要按顺序生成后续 Token。
这是理解 Transformer 训练效率与生成延迟差异的重要基础。
十四、什么是 KV Cache?
KV Cache(Key-Value Cache)是现代自回归 Transformer 推理中的重要优化机制。
14.1 为什么需要缓存?
在自回归生成过程中,模型每次生成新 Token,都需要利用已有上下文。
如果每一步都重新计算所有历史 Token 的 Key 和 Value,会产生大量重复计算。
14.2 KV Cache 的基本思想
模型可以缓存历史 Token 在各注意力层中的 Key 和 Value。
生成新 Token 时,只需要计算新 Token 对应的相关表示,并结合历史缓存完成注意力计算。
已有 Token
│
▼
计算 K、V
│
▼
保存到 KV Cache
│
▼
生成新 Token
│
▼
计算新 Token 的 Q、K、V
│
▼
结合历史 K、V
│
▼
计算注意力14.3 KV Cache 的价值
KV Cache 可以减少重复计算,提高自回归生成效率。
但缓存需要占用内存或显存。
上下文越长,缓存通常越大。
因此,KV Cache 也是现代语言模型推理系统需要管理的重要资源。
具体的缓存布局、分页管理和推理优化方法,将在 M7 中深入研究。
十五、Transformer 的优势与局限是什么?
15.1 主要优势
第一,能够直接建模序列中不同位置之间的关系。 注意力机制允许模型根据内容聚合相关信息。
第二,适合大规模并行训练。 与标准循环网络相比,Transformer 在训练阶段具有较好的序列并行计算特征。
第三,具有模块化和可扩展性。 Transformer Block 可以通过堆叠和调整维度扩展模型规模。
第四,能够适配不同任务和模态。 Transformer 已经广泛应用于文本、图像、音频和多模态建模。
第五,形成了丰富的工程生态。 现代深度学习框架和推理引擎广泛支持 Transformer 相关结构。
15.2 主要局限
第一,标准全注意力机制具有较高的长序列计算成本。
对于序列长度
因此,长上下文处理可能面临较高的计算和内存开销。
需要注意,完整注意力计算复杂度还受到隐藏维度等因素影响。
第二,自回归生成存在顺序依赖。
即使训练可以并行计算多个位置,逐 Token 生成仍然需要依次完成。
这会影响输出延迟。
第三,长上下文并不保证有效利用全部信息。
模型即使能够接收较长输入,也可能在信息定位、长距离推理和内容保持方面出现性能下降。
第四,Transformer 的计算能力不等同于可靠推理。
注意力机制能够组织信息交互,但并不保证模型输出事实正确或逻辑严密。
第五,模型规模扩大带来资源需求。
大型 Transformer 模型可能需要大量训练计算、显存和推理资源。
因此,Transformer 的实际使用仍然需要结合任务需求、模型质量和系统成本进行设计。
十六、Transformer 与现代大语言模型有什么关系?
Transformer 是现代大语言模型的重要架构基础。
但 Transformer 本身并不等同于大语言模型。
16.1 Transformer 是架构
Transformer 定义了一套神经网络计算结构。
它可以用于不同任务和模型类型。
例如:
- 文本理解;
- 文本生成;
- 图像处理;
- 语音处理;
- 多模态建模。
16.2 大语言模型是具体的模型系统
大语言模型通常结合:
- Transformer 相关架构;
- 大规模训练数据;
- 语言建模目标;
- 大规模参数训练;
- 后训练方法;
- 推理与解码机制。
因此,Transformer 只是现代 LLM 的重要组成部分之一。
16.3 Transformer 为什么适合大语言模型?
Transformer 具有适合大规模并行训练的计算结构。
注意力机制能够处理复杂上下文关系。
模块化设计也便于通过增加网络层数、隐藏维度和训练计算资源扩展模型规模。
这些特点共同推动了 Transformer 在大语言模型中的广泛应用。
16.4 从 Transformer 到 Agent
在现代 LLM Agent 中,Transformer 模型通常负责理解输入、生成内容、辅助推理和提出行动建议。
例如:
用户任务
│
▼
Agent
│
▼
调用 LLM
│
▼
Transformer 模型计算
│
▼
生成回答或工具调用意图
│
▼
Agent 执行相应操作需要注意,Transformer 负责模型内部计算。
工具执行、任务状态管理、权限控制和工作流编排通常由模型之外的 Agent 运行机制完成。
因此,理解 Transformer 可以帮助我们理解 Agent 所使用的模型如何处理信息,但不能直接解释完整 Agent 系统的运行方式。
十七、核心结论
Transformer 是现代深度学习的重要神经网络架构,也是大量现代大语言模型的技术基础。
它通过注意力机制、多层计算模块和位置表示等技术,实现复杂序列信息的处理。
理解 Transformer,需要建立以下认识。
第一,Transformer 的核心创新是以注意力机制为主要序列交互方式。 它减少了对循环结构的依赖,并改善了训练阶段的并行计算能力。
第二,Transformer 处理的是数值表示,而不是直接处理自然语言字符串。 文本通常需要经过 Tokenization 和 Embedding 转换。
第三,位置信息是 Transformer 处理有序序列的重要组成部分。 不同模型可以采用不同的位置编码或位置表示方法。
第四,Self-Attention 通过 Query、Key 和 Value 计算信息匹配与聚合。 其经典形式为缩放点积注意力。
第五,Multi-Head Attention 允许模型在不同投影子空间中并行处理信息。
第六,注意力掩码决定不同位置之间的信息访问范围。 双向注意力与因果注意力适用于不同任务。
第七,Transformer Block 不只有注意力机制。 前馈网络、残差连接和归一化同样是重要组成部分。
第八,多个 Transformer Block 可以堆叠形成深层网络。 通过多层计算,模型逐步更新上下文表示。
第九,Encoder-only、Decoder-only 和 Encoder–Decoder 是三类重要架构形式。 它们在注意力方式和任务组织上存在差异。
第十,典型 Decoder-only 语言模型通过自回归方式生成文本。 模型根据已有上下文预测后续 Token,并重复这一过程。
第十一,KV Cache 是提高自回归推理效率的重要机制。 它通过缓存历史 Key 和 Value 减少重复计算。
第十二,Transformer 具有明显的扩展优势,但仍然受到计算成本、上下文处理和生成效率等限制。
从技术体系角度看,Transformer 将神经网络的基础计算机制组织为适合大规模序列建模的架构,为现代大语言模型的发展提供了重要基础。
理解 Transformer 之后,下一步需要研究:一个真正的大语言模型如何在 Transformer 架构基础上完成整体设计、规模化训练和能力构建。
十八、参考文献与延伸阅读
18.1 Transformer 原始研究
[1] Vaswani, A., et al. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems, 30.
提出 Transformer 架构,系统介绍多头注意力、位置编码和 Encoder–Decoder 结构。
论文:Attention Is All You Need
[2] Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural Machine Translation by Jointly Learning to Align and Translate.
神经机器翻译注意力机制的重要早期研究。
论文:Neural Machine Translation by Jointly Learning to Align and Translate
18.2 位置编码与注意力机制
[3] Su, J., et al. (2021). RoFormer: Enhanced Transformer with Rotary Position Embedding.
提出 Rotary Position Embedding(RoPE)。
论文:RoFormer
[4] Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.
提出 BERT,展示双向 Transformer Encoder 在语言理解任务中的应用。
论文:BERT
18.3 语言模型架构
[5] Brown, T. B., et al. (2020). Language Models Are Few-Shot Learners. Advances in Neural Information Processing Systems, 33.
介绍 GPT-3 及其语言建模能力。
论文:Language Models Are Few-Shot Learners
[6] Raffel, C., et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Journal of Machine Learning Research, 21(140), 1–67.
介绍 T5 及统一文本到文本的 Encoder–Decoder 建模方法。
论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
18.4 Transformer 推理优化
[7] Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness.
提出通过 IO 感知优化提高注意力计算效率的方法。
论文:FlashAttention
[8] Shazeer, N. (2019). Fast Transformer Decoding: One Write-Head is All You Need.
介绍 Multi-Query Attention 及其推理效率优势。
论文:Fast Transformer Decoding
[9] Ainslie, J., et al. (2023). GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints.
介绍 Grouped-Query Attention。
论文:GQA
18.5 官方工程文档
[10] PyTorch. MultiheadAttention Documentation.
介绍多头注意力模块及其工程实现。
官方文档:PyTorch MultiheadAttention
[11] Hugging Face. Transformers Documentation.
提供 Transformer 模型架构、配置、加载与推理的工程文档。
官方文档:Transformers Documentation
十九、关联研究
| 关联文档 | 研究内容 |
|---|---|
| M1 · AI 模型是什么?它由什么构成? | 模型架构、参数与基本计算机制 |
| M2 · 神经网络如何学习和处理信息? | 神经网络、前向传播与参数优化 |
| M4 · 大语言模型是如何构建的? | Transformer 在 LLM 中的整体应用 |
| M5 · AI 模型如何理解和处理不同模态? | Transformer 与多模态建模 |
| M6 · AI 模型如何通过训练获得能力? | 预训练、后训练和参数优化 |
| M7 · AI 模型如何生成输出? | 自回归推理、解码与 KV Cache |
| M8 · 如何评估 AI 模型的能力与局限? | 模型能力与性能评估 |
| E3 · 如何管理模型的上下文窗口? | Token、上下文长度与上下文管理 |
| E8 · 如何优化模型调用的成本与性能? | 推理效率与资源优化 |
| A2 · Agent 如何获得认知与推理能力? | Agent 的模型组件 |