技术面试题

LLM KV Cache:为什么生成是O(n)不是O(n²)

KV Cache是什么?对LLM推理为什么关键?

为什么面试官会问这道题

2026年AI基础设施面试的必问。不懂KV Cache就聊不了服务时延和内存容量。

如何回答

  1. 1

    自回归每步attention要读所有历史token的K/V。朴素每步重算是每步O(n²)。

  2. 2

    KV Cache把每层K、V张量存下来。生成第t+1个token只需算第t个token的K、V,然后对整个cache做attention。

  3. 3

    内存:cache大小=2×层数×头数×头维×序列长×batch×精度。70B模型4K上下文每请求能吃几十GB。

  4. 4

    服务优化:PagedAttention(vLLM)像操作系统虚拟内存页一样管理KV——避免碎片。FlashAttention-2融合计算。

  5. 5

    取舍:上下文越长cache越大。cache量化(fp16→int8/int4)省2-4倍内存,质量略损。

参考回答示例

自回归生成每个新token的attention要用到前面所有token的K、V。不缓存就每步重算所有历史——二次方。KV Cache:算过就存;第t+1步只给新生成的token算K、V,对已存cache做attention。每步从O(n²)降到O(n)。代价是内存——两个张量×所有层×所有头×头维×序列长×batch。70B模型4K上下文每请求就能破10GB。这也是vLLM引入PagedAttention的原因——像虚拟内存分页管KV,不浪费slot,一张GPU扛高并发。再不够就量化KV Cache(int8甚至int4)。

实用技巧

  • KV Cache的存在导致首token时延(prefill)和单token时延(decode)性质不同——prefill计算密集、decode内存密集。

  • 滑动窗口attention(Mistral)在长上下文下也能限住KV Cache大小。

  • 即答侠把KV Cache跟具体数字绑(Llama 70B每token多少MB)——答起来像工程师而不是学生。

常见问题

不能重算省内存吗?

每步重算二次方——4K上下文等于每token多1600万次操作。时延不可用。

KV Cache能跨请求共享吗?

能——prefix caching把公共system prompt的KV共享给所有用户。聊天类应用大幅降本。

面试时担心忘词?即答侠实时助你

即答侠 AI 实时监听面试对话,自动识别问题并即时生成回答建议——无感辅助,让你从容应对每一道题。

免费试用即答侠