QKV 与 Prefix KV Cache 的一张可交互复习图

从 token 的 hidden state 出发,经过 QKV 投影、多头 reshape、attention,再看 prefix cache 如何让命中的 prefix 不重复完整 forward。

hidden / attention QKV compute prefix cache

token id

原始离散编号,例如“猫”对应词表里的某个 id。

scalar / ids

Embedding

查表得到初始向量,进入第一层 Transformer。

[T, d_model]

QKV 线性投影

一次矩阵乘法生成 Q、K、V,再 reshape 成多头。

[q,k,v] = X @ W_QKV

Q / Query

当前 token 要查什么上下文。

[T, Hq, Dh]

K / Key

当前 token 提供给别人查询的索引。

[T, Hkv, Dh]

V / Value

被 attention 权重读出来的内容。

[T, Hkv, Dh]

Prefix KV Cache

命中的 prefix 已经有 K/V,不再重复完整 prefill forward。

cached K/V by layer

Attention

新 token 的 Q 查当前 K + cached K,再读取当前 V + cached V。

softmax(QK^T) @ V

FFN / MLP / MoE

attention output 继续做逐 token 非线性变换。

back to [T, d_model]

这里的 @ 表示矩阵乘法。单 token 时是向量 @ 矩阵;prefill 中多 token 时是矩阵 @ 矩阵。