文本生成推理文档

分块注意力(PagedAttention)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

分块注意力

大型语言模型(LLM)在生成过程中会遇到内存限制问题。在生成的解码部分,为之前的所有 token 生成的所有注意力键和值都会存储在 GPU 内存中以供重用。这被称为 KV 缓存,对于大型模型和长序列,它可能会占用大量的内存。

分块注意力(PagedAttention)试图通过将 KV 缓存划分为通过查找表访问的块来优化内存使用。因此,KV 缓存不需要存储在连续的内存中,并且根据需要分配块。内存效率可以提高 GPU 在内存受限工作负载上的利用率,从而支持更多的推理批次。

使用查找表访问内存块也可以帮助在多个生成之间共享 KV。这对于诸如 并行采样 这样的技术很有帮助,在这些技术中,为同一个提示同时生成多个输出。在这种情况下,缓存的 KV 块可以在生成之间共享。

TGI 的分块注意力实现利用了 vLLM 项目 开发的自定义 cuda 内核。您可以在 项目的页面 中了解更多关于此技术的信息。

< > 在 GitHub 上更新