PagedAttention 给内存管理的启发

PagedAttention 给内存管理的启发

把操作系统那套搬过来

vLLM 在二零二三年的论文里提了一个朴素想法:KV Cache 的增长收缩,跟进程内存一模一样,那就用操作系统管理虚拟内存的老办法。PagedAttention 把缓存切成固定大小的块(默认十六个 token 一块),用块表做逻辑地址到物理地址的映射,请求之间还能共享同一段前缀的块,不必为每个请求复制一份,也顺带让碎片变成可管理的离散空闲块。

效果很直接:原来连续分配留下的百分之二十到四十碎片,被压到百分之四以下,吞吐比 FasterTransformer、Orca 这类系统高两到四倍,序列越长、模型越大越明显。关键不是算法多新,而是借用了已经被操作系统验证几十年的分页与共享机制,把成熟经验平移到推理场景,少走了很多弯路。

对内存管理的三点启发

  • 固定块比按请求整段分配更省:碎片来自长短不一,切小块就解决了大部分浪费,分配器也简单。
  • 引用计数和共享能做复用:相同前缀只算一次、存一份,多请求直接指向它,省算又省空间。
  • 分层不必一步到位:块是最小搬运单位,哪块热就留在显存,哪块冷就换到内存或磁盘,调度粒度很细。

把这套块抽象推广到「显存、内存、固态盘」三级,正是后来 LMCache、Mooncake 的思路来源。而块在层间来回搬,意味着内存上驻留的是被反复读写的真实缓存,对模块的稳定性要求比单纯当批处理内存更高,单条边缘失效会被放大成跨请求的错误,所以底层内存必须可信。HeroTEST 的模块级 DDR5 RDIMM 宽温测试与可信分级(含余量测试和高温老化)正是为这种负载准备的,欢迎联系我们评估。

相关阅读