vLLM提升长上下文推理效率
原文:Efficient Decode Context Parallelism with vLLM for Long Context Workloads
使用vLLM实现高效解码上下文并行处理以应对长上下文工作负载 1. 引言 长上下文推理对于代理型人工智能变得越来越重要,在这些场景中,助手可能需要推理大型代码库和长时间的聊天记录。当前的代理跟踪基准测试已经达到了从64K到100万 tokens 的范围,相应的 KV 缓存也相应增大。在传统的张量并行(TP)设置下,KV 缓存按注意力头进行分割,这对其缩小程度设置了硬性限制。现代模型使用两种注意力机制中的某一种,但两者都会遇到这个限制。分组查询注意力(GQA)模型存储少量的 KV 头,TP 只能将 KV 缓存分割到每个 GPU 一个头;一旦 TP 超过 KV 头的数量,缓存就会在 GPU 之间重复。潜在多头注意力(MLA)模型使情况变得更糟:MLA 将 Key/Value 压缩成一个在所有查询头之间共享的低秩潜在向量,因此它实际上只有一个 KV 头。在正常的 TP 下,没有按头分割的内容,这意味着潜在 KV 缓存在每个 TP 层级上都被完整复制。在这两种情况下,重复的 KV 缓存都会占用 GPU 内存,几乎没有空间来服务额外的请求。这限制了系统可以处理的并发请求数量,降低了吞吐量并推高了每个 token 的成本。解码上下文并行处理(DCP)通过在 GPU 之间分割 KV 缓存来解决这个问题,这样每个 GPU 只存储和读取部分 KV 缓存。这释放了 GPU 内存,允许每个 GPU 承担更多请求,从而以更大的批量大小运行。在具有高带宽 GPU 间互连的系统上,这有助于在同时服务许多长上下文代理的同时保持交互式响应能力。vLLM 几乎支持 DCP 一年了,但我们现在写这篇博客是为了强调这个功能,以及我们最近对其进行的改进和增强,因为长上下文代理用例的增加使其优势更加相关。