vllm算法原理
一 基本介绍
vLLM(Vectorized Large Language Model Serving System)是一个用于大型语言模型推理加速的工具。它的核心技术主要包括:
PagedAttention技术:这是一种内存管理技术,可以在不连续的内存空间中存储注意力机制中的键和值,从而减少显存碎片并提高显存利用率。
连续批处理:vLLM能够连续批处理接入的请求,充分利用GPU资源,提高吞吐量。
CUDA核心优化:vLLM对CUDA核心进行了优化,确保了速度与效率。
分布式推理支持:vLLM支持分布式推理,能够在多台GPU上并行运行模型,进一步提高推理速度。
一、PagedAttention算法概述
(PagedAttention)受操作系统虚拟内存和分页思想启发,将原本连续的 KV cache 存储在不连续的空间,以避免 KV cache 带来的显存浪费。
PagedAttention算法是一种针对大型语言模型推理过程的优化方案。其核心思想是将每个序列的KV cache(键值缓存)分块(blocks),每块包含固定数量的token的key和value张量。通过这种方式,算法可以在显存中更灵活地管理键和值,实现了内存的高效利用和共享。
二、内存管理与块映射
在PagedAttention算法中,KV cache被划分为多个块,这些块在内存空间中不必连续。这种设计使得算法可以像操作系统的虚拟内存分页一样,以更灵活的方式管理键和值。具体而言,算法将block视为page,将token视为bytes,将序列视为进程。序列的连续逻辑块通过block table映射到非连续物理块。这种映射方式使得物理块可以在生成新token时按需分配,从而减少了显存的浪费。
三、内存共享与性能提升
PagedAttention算法还通过内存共享的方式进一步减少了显存占用。不同序列可以通过将其逻辑块映射到同一物理块来共享块。这种共享机制使得显存占用减少了55%,同时吞吐量提升了2.2倍。这种性能提升对于在实际应用中部署大型语言模型具有重要意义。