AI 术语表 · 进阶 · 效率与基础设施
分页注意力
分页注意力(PagedAttention)是一种内存管理技术:把 LLM 生成回答时不断累积的 KV缓存切分成小块(页),只按需放入 GPU 内存的空闲位置。推理引擎 vLLM 因这一技术而广为人知。
工作原理
KV缓存是保存迄今已读写 token 计算结果的空间,回答越长它就越大。以前的方式会为每个请求预先占好一段按最大长度连续的内存,回答一旦提前结束,那部分空间就白白浪费了。分页注意力把 KV缓存切成以固定 token 数为单位的块,需要时再逐个分配空块。即使块分散在内存各处,也会用块表记住位置,在计算注意力时找到并读取。
为什么重要
浪费的内存减少后,同一块 GPU 能同时承载更多请求。再结合连续批处理,吞吐量会大幅提升。以相同系统提示开头的请求也更容易共用前面的块,这成为服务器端提示缓存(prefix caching)的基础。现在许多推理引擎都以类似方式管理 KV缓存。
须知
一般很少需要自己实现,通常是在启动 vLLM 时,通过日志里打印的 KV缓存块数、GPU 内存使用比例(gpu-memory-utilization)或块大小设置接触到它。想有个直观概念,可以把它理解为“GPU 内存 − 模型权重 ≈ 可用于 KV缓存的空间”。这块空间越大,可同时接收的请求数和上下文长度就越大。分页注意力只是减少内存浪费,并不会让 KV缓存本身变小,所以上下文非常长时仍可能内存不足。
示例
假设一位开发者在一块 GPU 上用 vLLM 启动模型,结果报错称 KV缓存空间不足以支撑模型卡上标注的最大上下文长度。可以查看日志中的 KV缓存块数,把最大上下文长度降到服务实际需要的程度,或者提高 GPU 内存使用比例。如果仍然不够,就换成量化版模型,减少权重占用的空间,从而腾出更多 KV缓存块。