在不使用缓存时,生成第 n 个 token 必须重新投影此前所有 n-1 个 token 的键、值并重算注意力,单步注意力计算量约为 O(n²)(n 为已生成序列长度)。引入 KV 缓存后,每步只需为新 token 计算一次投影,再与长度为 n 的缓存做注意力,单步复杂度降为 O(n)。
从生成整段长度为 n 的序列看,无缓存时每步 O(n²) 累计约为 O(n³),缓存后每步 O(n) 累计约为 O(n²)。也就是说,KV 缓存将序列生成的总注意力计算从 O(n³) 量级压低到 O(n²) 量级,并消除了随序列长度增长的重复计算。
这一量级下降直接对应延迟的改善:短回复时收益有限,但当序列达到数千乃至数十万 token 时,无缓存方案几乎不可行,而缓存方案使长文本生成保持在可接受的线性增长轨道上。