跳转到内容

输入关键词开始搜索

    KV Cache

    概念更新 2026-07-19置信度 high#概念#基础#长青#架构#注意力

    自回归 Transformer 推理时缓存历史 token 的 Key 和 Value 张量,避免每一步重复计算,以内存换速度的核心推理优化技术。

    自回归生成时,每个新 token 需要与所有历史 token 做注意力计算。若不缓存,每一步都要重新计算所有历史 token 的 K 和 V — 计算量随序列长度平方增长。

    KV Cache 的核心思想:每生成一个 token,只计算新 token 的 K、V,将其追加到缓存中。后续步骤直接读取缓存中的历史 K、V,避免重复计算。生成第 t 个 token 时,注意力计算量从 O(t²) 降至 O(t)。

    1. 推理效率的基石:自回归生成中,KV Cache 将每步计算量从 O(n²) 降至 O(n),是 LLM 服务的核心优化
    2. 推理内存瓶颈:KV Cache 是长上下文推理时的主要内存消耗 — 大 batch / 长序列场景下,缓存大小可能远超模型权重
    3. 推动架构创新:KV Cache 的显存压力直接催生了 GQA(分组建模)、MQA(复用 KV)、MLA(低秩压缩)等一系列注意力机制改进,是 LLM 架构演进的核心驱动力

    无 KV Cache(每步重算所有 K,VK,V):

    Qt[K1,,Kt][V1,,Vt]O(t) 次 K/V 投影Q_t,[K_1,\ldots,K_t]^\top,[V_1,\ldots,V_t]\quad\Longrightarrow\quad O(t)\ \text{次 }K/V\text{ 投影}

    有 KV Cache(仅计算新 token 的 Kt,VtK_t,V_t 并追加到缓存):

    Qt[K1cache,,Kt][V1cache,,Vt]O(1) 次 K/V 投影Q_t,[K^{\mathrm{cache}}_1,\ldots,K_t]^\top,[V^{\mathrm{cache}}_1,\ldots,V_t]\quad\Longrightarrow\quad O(1)\ \text{次 }K/V\text{ 投影}

    QtK1:tO(t) 次点积Q_tK_{1:t}^{\top}\quad\Longrightarrow\quad O(t)\ \text{次点积}

    后者是注意力的本质开销,无法避免。

    显存估算:每层每个 token 缓存 2 × n_kv_heads × d_head 个元素(K + V)。以 Llama 2 70B 为例:80 层 × 8 KV 头 × 128 维 × 2 × 2 字节(bf16) ≈ 320KB/token。2048 token 上下文 → 约 640MB。

    阶段 方案 关键思想
    原始 Transformer (2017) MHA + 完整 KV Cache 标准方案,缓存占用 = 模型权重数
    MQA (PaLM, 2022) 所有头共享 KV KV 缓存减少 n_heads 倍
    GQA (Llama 2, 2023) 分 G 组共享 KV MHA 与 MQA 的折中,2023-24 主流
    MLA (DeepSeek-V2, 2024) 低秩联合压缩 缓存减少 57×,性能反超 MHA
    • “KV Cache 加速了每步计算” — 它只是避免了重复计算,单步的注意力计算量 O(t) 无法消除(但 FlashAttention 等优化加速了实际执行)
    • “KV Cache 大小与序列长度线性增长” — 正确,但这恰是核心问题:长上下文 + 大批次时内存爆炸
    概念 关系
    GQA 通过减少 KV 头数来降低 KV Cache 大小,是压缩 KV Cache 的主流方案
    MLA 通过低秩压缩从根本上减少每个 token 的 K、V 维度,压缩比远超 GQA
    MQA GQA 的极端情况(G=1),KV Cache 最小但质量损失大
    PagedAttention KV Cache 的内存管理优化(而非压缩),类比操作系统分页