单个序列的 KV 缓存字节数可用如下一阶公式估算:
KV 缓存大小(字节) = 2 × L × H_kv × D × S × P
其中各参数含义为:2 表示键与值两个独立张量;L 为 Transformer 层数;H_kv 为键值头(KV Head)数量;D 为每个头的维度;S 为上下文长度(token 数);P 为每个元素的字节数(FP16 / BF16 为 2 字节,INT8 为 1 字节,INT4 为 0.5 字节)。
单 token 的缓存大小为 2 × L × H_kv × D × P 字节,它随层数、键值头数、头维度与精度的增加而增加。例如采用多头注意力(MHA)的 LLaMA-2 7B(32 层、32 个键值头、头维度 128、FP16)单 token 缓存约为 512 KiB,在 4K 上下文下约占用 2 GB 显存。
同一模型下,将缓存精度从 FP16 降到 FP8 或 INT4,可直接减半或减至四分之一的单 token 缓存;而采用分组查询注意力(GQA)或低秩压缩(MLA)等架构,则通过减少键值头数或压缩表示维度,从结构上缩小单 token 缓存。