paged attention

https://zhuanlan.zhihu.com/p/720157057

主要用于解决 KV cache 的内存碎片问题。

类比于操作系统的内存碎片管理。

有两种碎片:

操作系统的解决办法:

将进程的虚拟地址空间,分成一个一个的 page。把物理地址空间也分成一个一个的 frame。page 跟 frame 的大小要一样。然后用一个 page table 来维护他们之间的映射关系(page → frame 的单向映射关系)。

image.png

在 LLM 推理中如何工作:

每一个 sequence 都需要申请显存用来存放 kv cache。sequence 完成之后,kv cache 就可以释放。不同 sequence 之间的 kv cache 互不干涉。所以每个 sequence 可以类比为一个进程,为 sequence 申请 kv cache 类比为申请内存。

image.png

paged attention 跟操作系统内存管理策略的类比对比

image.png