问题域/PD-446

KV Cache 分页与前缀缓存

Paged KV Cache & Prefix Caching

解决 LLM 推理中 KV Cache 内存碎片化和重复计算问题,通过分页管理和内容哈希实现高效缓存复用

子问题

1.KV Cache 内存碎片化

2.前缀重复计算

3.Block 引用计数与生命周期

4.内容哈希冲突处理

5.Decode 阶段 Block 边界跨越时的增量分配时机

6.CUDA Graph 固定张量尺寸与可变 block_table 长度的兼容

7.Preempt 抢占后序列重新入队的缓存失效处理

各项目的解法1 solutions

Signals

横向对比

维度nano-vllm
分页策略固定 256 token Block,deque 空闲池 O(1) 分配
前缀缓存xxhash 链式哈希内容寻址,碰撞时 token_ids 精确比对
引用计数Block 级 ref_count,多序列共享,归零即回收
显存分配warmup 峰值探测后一次性分配 6 维张量池
KV 写入Triton JIT kernel 按 slot_mapping 并行写入
调度集成Scheduler 双阶段调度,preempt 抢占释放 Block

最佳实践

1.使用 xxhash 等快速哈希算法做内容寻址

2.Block 粒度对齐到 256 token 以平衡碎片与命中率

3.链式哈希将前一 Block 哈希作为 prefix 参与计算,确保前缀连续性

4.cache_miss 一旦触发即传播到后续所有 Block,避免断裂的部分命中

5.warmup 模型后用峰值显存差值计算可用 Block 数,最大化显存利用