参考自https://blog.vllm.ai/2023/06/20/vllm.html
介绍
vLLM是一个用于快速LLM推理和服务的开源库。vLLM 利用PagedAttention,可以有效地管理注意力键和值。PagedAttention 的 vLLM 重新定义了 LLM 服务的最新水平:它提供了比 HuggingFace Transformers 高 24 倍的吞吐量,而无需任何模型架构更改。
PagedAttention
在 vLLM 中,我们发现 LLM 服务的性能瓶颈在于内存。在自回归解码过程中,LLM 的所有输入标记都会产生其注意键和值张量,这些张量保存在 GPU 内存中以生成下一个标记。这些缓存的键和值张量通常称为 KV 缓存。KV 缓存是
- 大:LLaMA-13B中的单个序列占用高达1.7B
- 动态:其大小取决于序列长度,序列长度变化很大且不可预测。因此,有效管理 KV 缓存是一项重大挑战。我们发现现有系统由于碎片化和过度预留而浪费了**60% - 80%**的内存。
为了解决这个问题,我们引入了PagedAttention,这是一种注意力算法,其灵感来自操作系统中虚拟内存和分页的经典思想。与传统的注意力算法不同,PagedAttention 允许在非连续的内存空间中存储连续的键和值。具体来说,PagedAttention 将每个序列的 KV 缓存划分为块,每个块包含固定数量 token 的键和值。在注意力计算过程中,PagedAttention 内核会高效地识别和获取这些块。<