GitHub | Documentation | Paper | Blog

简介

vLLM是一个开源的大模型推理加速框架,通过PagedAttention高效地管理attention中缓存的张量,实现了比HuggingFace Transformers高14-24倍的吞吐量。

Untitled

vLLM 的吞吐量比 HF 高 14 倍 - 24 倍,比 TGI 高 2.2 倍 - 2.5 倍

PagedAttention 是 vLLM 的核心技术,它解决了LLM服务中内存的瓶颈问题。传统的注意力算法在自回归解码过程中,需要将所有输入Token的注意力键和值张量存储在GPU内存中,以生成下一个Token。这些缓存的键和值张量通常被称为KV缓存。

主要特性

PagedAttention

PagedAttention,这是一种受操作系统中虚拟内存和分页的经典思想启发的注意力算法。与传统的注意力算法不同,PagedAttention 允许在不连续的内存空间中存储连续的键和值。具体来说,PagedAttention 将每个序列的 KV 缓存划分为块,每个块包含固定数量 token 的键和值。在注意力计算过程中,PagedAttention 内核有效地识别并获取这些块。

PagedAttention:KV Cache 被划分为块。块在内存空间中不需要是连续的

PagedAttention:KV Cache 被划分为块。块在内存空间中不需要是连续的

因为 blocks 在内存中不需要是连续的,所以我们可以像在操作系统的虚拟内存中一样以更灵活的方式管理键和值:可以将 blocks 视为页面,将 token 视为字节,将 sequences 视为进程。序列的连续logical blocks 通过块表映射到非连续 physical blocks。当 tokens 生成时,物理块会按需分配。

KV cache

使用 PagedAttention 的请求生成过程示例

使用 PagedAttention 的请求生成过程示例