← 返回概念解读

Concept Fable精修版

分页注意力

Paged Attention · Inference

先读故事。这里不急着给定义,先让问题自己长出来。

寓言故事

图书馆把长卷切成可借可还的小页箱

王都图书馆保存读者正在阅读的长卷。旧办法是每位读者占一整排书架,哪怕只用到其中几段,也要预留连续空间。

读者少时没人介意。后来长卷越来越多,很多书架明明有空格,却因为不连续而放不下一位新读者的整卷。馆员说书架满了,实际空间碎了一地。

馆长先扩建书库,又限制每人最多读几卷。扩建很贵,限制又伤害真正需要长资料的研究者,问题并没有消失。

有人把短卷和长卷分开放,可长卷读到哪里、下一页什么时候需要、哪些页已经不用,仍然让书架碎片越来越多。

一位修书师提出,把长卷拆成同样大小的小页箱。读者不再占连续书架,只领取若干页箱;页箱可以分散存放,目录负责把顺序连起来。

当读者读完一段,页箱就归还;新读者需要空间时,可以拿到任何空页箱,不必等待整排书架空出来。图书馆突然能服务更多人。长卷仍然完整,读者仍能按顺序阅读,只是底层存放从连续大块变成了分页管理。

馆长明白,拥堵不只来自容量不足,也来自容量被切碎后无法使用。管理碎片,往往比盲目买更多书架更值钱。

后来图书馆接待长卷研究者时,先检查页箱池和目录,而不是先看有没有一整排空架。真正的效率来自把记忆空间变成可分配、可回收的小块。后来馆员发现,目录本身也很关键。页箱散在各处,若目录记错顺序,读者读到的长卷就会断裂;若用完不还,页箱池仍会枯竭。于是每次借页、还页、换页都要登记。分页让空间灵活起来,登记则让灵活不变成混乱。图书馆靠两者一起服务越来越长的卷。后来书库高峰时,馆员先回收已读页箱,再接新读者。空间不再被一次性占死,长卷服务才有弹性。页箱能流动,长卷才不会堵死书库。碎片被管住,容量才回来。目录可靠,分页才可靠。

揭示

这个故事讲的是:分页注意力

分页注意力把 KV 缓存存在固定大小、可不连续的页或块里,而不是要求每条序列占用一大段连续显存。这样可以减少显存碎片,提高 GPU 内存利用率。

它能支持更长上下文和更高并发的请求吞吐,是 vLLM 等系统背后的重要内存管理思想。

隐喻映射

  • 长卷:请求上下文和生成历史
  • 连续书架:为每个 sequence 预留连续 KV cache memory
  • 空间碎片:GPU memory fragmentation
  • 小页箱:fixed-size KV cache blocks/pages
  • 目录:block table that maps logical positions to physical pages
  • 归还页箱:释放 completed sequence 的 cache blocks
  • 最后洞察:Paged Attention 通过分页管理 KV cache,让显存接近满效率使用,而不是被碎片浪费

Soloharness 判断

这个概念的实战价值,是帮你把“看起来聪明的 AI 功能”拆成可交付、可验收、可治理的工作单元。

KV cachevLLMmemory managementcontinuous batching