KV Cache(键值缓存)是Transformer模型推理过程中的一种优化机制,用于缓存注意力计算中每个token对应的键(Key)和值(Value)向量。在自回归生成任务中,模型每步生成新token时无需重新计算历史token的键值对,而是直接复用缓存结果,从而显著降低重复计算量、提升推理效率。该机制以增加显存占用为代价换取计算速度的提升,是大语言模型部署优化的核心技术之一。
预填充阶段是计算密集型(compute-bound),需一次性处理全部输入token并生成KV Cache,注意力矩阵计算复杂度为O(n²)
当模型权重和 KV Cache 无法完全载入 GPU 显存时需将部分数据交换到主内存(offloading),会使推理速度下降一到两个数量级
GPU 在大模型推理时的核心瓶颈是内存带宽,自回归生成每个 Token 需从 HBM 加载完整 KV Cache,计算利用率通常不到 5%
传统 Transformer 推理中每个请求的 KV Cache 需预先分配连续显存空间,因序列长度不可预知常按最大长度预分配,导致显存碎片浪费,实际利用率有时不足 50%
由于自回归特性,每个decode step都需要访问之前所有token的KV Cache
在block_size=16的配置下,每个物理block存储16个token的KV向量,slot是KV Cache的最小寻址单位
KV Cache group的概念源自GQA(Grouped Query Attention)等技术,多个query head共享同一组KV head
在FP16精度、head_dim=128的配置下,单个slot存储一对KV向量需要2×128×2=512字节(乘以attention head数量)
KV Cache地址计算示例:position=31时,logic_block=31//16=1,offset=31%16=15,若physical_block=12则slot_id=12*16+15=207
对于一个32层、4096维的模型,处理2048个Token的KV Cache约占用1GB显存
还有 40 条时间轴事件
PagedAttention是vLLM框架的核心技术,借鉴操作系统虚拟内存管理思想将KV Cache分页存储
90%已验证以LLaMA-3 70B(80层、64头、每头128维)为例,单个token的KV Cache约占2.6MB(FP16精度),32K上下文的KV Cache总量约达83GB
80%已验证Transformer架构的自注意力机制在处理长序列时面临二次方复杂度的计算开销,上下文长度翻倍则计算量增长四倍
80%已验证KV Cache是Transformer架构的核心推理优化机制,其显存占用量会随序列长度和并发批次线性增长
80%已验证KV Cache 通过在 GPU 显存中缓存已计算的 Key-Value 对,将自注意力计算复杂度从 O(N²) 降至 O(N),但显存占用随序列长度线性增长
75%已验证KV缓存将已计算的Key-Value矩阵存储在显存中实现增量计算,代价是显存占用随序列长度线性增长
75%已验证对于70B参数的模型,8K上下文的KV Cache可能额外占用数GB显存
75%已验证DeepSeek API对缓存命中的Token提供显著折扣
70%已验证KV Cache 是 Transformer 注意力机制中间态的持久化存储,记录每层注意力头对已处理token的键和值向量,从而跳过重复的前向传播计算
65%已验证PagedAttention将KV缓存分成固定大小的页按需分配,显存利用率可提升2-4倍
65%已验证当上下文长度扩展至百万Token时,KV Cache本身就会占用数十GB显存
65%已验证KV Cache大小约等于 2 × 层数 × 注意力头数 × 头维度 × 序列长度 × 精度字节数
65%已验证分组查询注意力(GQA)和多查询注意力(MQA)通过让多个Query头共享同一组Key/Value头减小推理时KV Cache显存占用,是Llama 3、Mistral等模型的标配优化
65%已验证PagedAttention将KV Cache的内存利用率从不足40%提升至接近100%
65%已验证KV Cache占用的显存随序列长度线性增长
65%已验证KV Cache将Transformer增量生成的时间复杂度从O(L²)降至O(L)
65%待验证上下文长度从4K扩展到8K时,KV Cache占用的显存会近乎翻倍
90%待验证一个7B参数模型在FP16格式下仅模型权重就需要约14GB显存,训练总显存需求可能膨胀到50-80GB
85%部分验证KV Cache将已计算的历史键值矩阵缓存在内存中,将自回归生成的复杂度从随序列长度平方增长降至线性
65%待验证KV Cache(键值缓存)机制通过缓存自注意力层生成的 Key 和 Value 向量来避免重复计算以加速推理,但上下文越长需驻留显存的向量越多,内存压力呈近线性增长
60%