随着大语言模型的快速发展,其推理效率逐渐成为应用落地的关键瓶颈。vLLM作为近年来备受关注的LLM推理框架,以其高效的推理性能脱颖而出。本文将深入浅出地介绍vLLM背后的两大核心技术:Continuous Batching 和 PagedAttention。
一、Continuous Batching:持续批处理提升GPU利用率
在传统的静态批处理(static batching)模式下,批次内的所有序列需要等待最长序列生成完毕才能释放资源,这种方式导致了GPU资源的浪费。
例如,在聊天场景中,每个序列的生成长度可能差异巨大:部分序列较短快速完成,部分序列较长持续占用资源,从而产生大量GPU闲置时间。
Continuous Batching 的优势
Continuous Batching 针对上述问题提出了一种动态批处理方案:
- 实时动态调整:当批次内某个序列生成完成并输出结束token后,系统立即释放其资源并插入新的请求序列,持续保持GPU满负载运行。
- GPU利用率提升:极大减少了GPU等待和闲置时间,保证了推理吞吐量最大化。
可以形象地理解为“流水线作业”,一旦某个工位(序列)完成任务,立即换上新任务,保持流水线持续高效运行。
二、PagedAttention:高效KV缓存管理技术
PagedAttention是vLLM另一个核心加速技术,主要解决LLM推理过程中内存利用率低下的问题。
KV Cache 内存瓶颈
Transformer模型在自回归推理时,会产生大量键值(KV)缓存用于存储token的上下文信息。KV缓存通常占用大量GPU内存,并且随着序列长度动态变化,导致传统的连续内存管理方式效率低下,严重限制推理吞吐量。
PagedAttention的实现原理
vLLM借鉴了操作系统中虚拟内存分页管理的思想,提出了PagedAttention技术:
- 分页式缓存管理:将每个序列的KV缓存划分为固定大小的KV块(pages),每个KV块不要求连续存储在物理内存中。
- 动态内存分配:按需动态分配KV块,显著减少了碎片化问题和过度保留导致的浪费,内存利用率可提升至96%以上。
在计算Attention时,PagedAttention内核可以快速找到并访问分散在不同物理位置的KV块,而无需将整个序列的缓存存储于连续空间中。
PagedAttention 带来的收益
- 降低显存占用:有效减少KV缓存的浪费,允许更多请求并行处理,提升GPU利用率。
- 支持内存共享:如Parallel Sampling场景中相同prompt的KV缓存可共享,大幅节省内存开销。