1. 基础结构
原始文本
↓ tokenizer
token 编号
↓ embedding
初始向量 X₀
↓ 第 1 个 Transformer 层
上下文相关表示 X₁
↓ 第 2 个 Transformer 层
更深的表示 X₂
↓ ……
最终表示
↓ 输出层
下一个 token 的概率
2. QKV:Transformer 注意力机制的最核心实现形式
2.1 是什么
每一层都有三个矩阵,将 token 映射为 QKV 三个向量:
- Q: 本 token 需要找什么信息
- K: 本 token 的特征(可以因为什么而被找到)
- V: 如果关注本 token ,则应该带走什么信息
模型用 Query 与所有前续 token 的 Key 做点积,(经 softmax )算出一个权重,这个权重代表信息的关联程度;最终把相应 Value 做加权。
原本每个 token 都只包含他自己的信息,而经过一层模型的处理,每个 token 都携带上了与之相关联的额外信息。
多层、多头注意力反复进行,模型便能逐渐形成从语法关系到篇章主题、代码依赖、事实关联等不同层次的表示。
TODO: 多层、多头注意力
2.2 KV Cache
生成下一个 token 时,我们需要按照 2.1 节的描述,计算本 token 的 Q,并且与前序 token 的 K、V 做运算。
而前序 token 的 K、V 在前几轮生成过程中就已经计算过了,且不会随着生成后继 token 而改变。因此显然这个步骤可通过缓存提速与降本。另,也是显然地,由于 Q 只用于下一轮 token 的生成,一般没有必要进行缓存。

