KV cache的内部原理是什么

KV cache用显存换计算:每个token每层的K、V只算一次并存下,生成新token时只需算新token并对缓存做一次查询,避免重算历史。

要点

  1. 没有缓存时,每生成一个token都要与前面所有token做注意力计算,重复计算历史且成本随长度平方级增长。
  2. 缓存做法是每个token每层的K、V只算一次并追加存储,新token只算自己的Q、K、V,再用新Q与缓存中所有K比对、加权求和V。
  3. 可类比开会记笔记:把每人发言的要点记在本子上,新人发言时对照本子,不必让所有人重讲一遍。
  4. 代价是显存,缓存大小约为2×层数×KV头数×每头维度×序列长度×每数字节数,长上下文通常先受限于显存。
  5. 相关优化包括prefill与decode两阶段、GQA/MQA共享KV头、KV量化、PagedAttention分页管理和prefix caching复用前缀。

来源