vLLM中的Continuous Batching实现方案主要借鉴了论文《Orca: A Distributed Serving System for Transformer-Based Generative Models》中的技术。以下是其实现方案的关键点:
-
迭代级调度(Iteration-level Scheduling):vLLM通过LLM引擎类
LLMEngine
接收请求并生成文本。在每次迭代后,检测到完成的请求,并立即将生成的Token返回给客户端。对于新到达的请求,有机会在当前的迭代执行后进行处理,从而减少等待时间。 -
高效的内存管理:vLLM利用PagedAttention技术高效管理注意力键和值的内存,以最大化服务的吞吐量。
-
模型执行优化:vLLM支持CUDA/HIP图快速模型执行,并集成了FlashAttention和FlashInfer等优化CUDA内核。
-
量化技术:vLLM支持GPTQ、AWQ、INT4、INT8和FP8等量化技术,以提高模型执行效率。
-
分布式执行器:vLLM调用分布式执行器执行模型,处理模型输出,包括解码相关输出和根据采样参数更新已调度的序列组。
-
请求调度:vLLM使用三个双端队列(waiting,running,swapped)来维护所有用户的请求的调度,确保请求的高效处理。
-
支持多种硬件:vLLM支持NVIDIA GPU、AMD CPU和GPU、Intel CPU和GPU、PowerPC CPU、TPU以及AWS Trainium和Inferentia加速器,以适应不同的硬件环境。
通过这些技术,vLLM实现了连续批处理,提高了LLM推理的吞吐量,同时减少了延迟。这种实现方案使得vLLM在LLM推理框架中具有竞争力,能够提供高效、快速的服务。