vLLM:让大语言模型服务变得简单高效
随着ChatGPT等大语言模型(LLM)的兴起,人工智能正在深刻改变各行各业。然而,部署和服务这些庞大的语言模型却并非易事,即使在昂贵的硬件上也可能出现令人意外的性能瓶颈。为了解决这一问题,来自加州大学伯克利分校的研究人员开发了vLLM - 一个开源的高性能LLM推理和服务库。vLLM凭借其创新的PagedAttention技术,重新定义了LLM服务的性能标准:与HuggingFace Transformers相比,vLLM可以实现高达24倍的吞吐量提升,而无需对模型架构做任何改动。
vLLM的核心优势
vLLM的卓越性能主要得益于以下几个方面:
-
PagedAttention技术: 这是vLLM的核心创新,灵感来自操作系统中的虚拟内存和分页技术。PagedAttention允许将连续的键和值存储在非连续的内存空间中,大大提高了内存利用效率。
-
连续批处理: vLLM能够持续批量处理传入的请求,最大化硬件利用率。
-
CUDA图优化: 利用CUDA图技术加速模型执行。
-
量化支持: 支持GPTQ、AWQ、INT4、INT8和FP8等多种量化方案。
-
优化的CUDA内核: 包括与FlashAttention和FlashInfer的集成。
-
推测解码: 通过预测性生成提高解码速度。
-
分块预填充: 优化长序列处理效率。
灵活易用的设计
除了出色的性能外,vLLM还提供了灵活易用的特性:
- 无缝集成流行的HuggingFace模型
- 支持多种解码算法,如并行采样、束搜索等
- 支持张量并行和流水线并行的分布式推理
- 流式输出
- 提供OpenAI兼容的API服务器
- 支持NVIDIA GPU、AMD CPU和GPU、Intel CPU和GPU、PowerPC CPU、TPU以及AWS Neuron等多种硬件平台
- 前缀缓存支持
- 多LoRA支持
广泛的模型支持
vLLM几乎支持HuggingFace上所有流行的开源模型,包括:
- Transformer类LLM(如Llama)
- 混合专家LLM(如Mixtral)
- 嵌入模型(如E5-Mistral)
- 多模态LLM(如LLaVA)
快速上手
使用pip即可轻松安装vLLM:
pip install vllm
vLLM可用于离线推理和在线服务。以下是一个简单的离线推理示例:
from vllm import LLM
prompts = ["Hello, my name is", "The capital of France is"]
llm = LLM(model="lmsys/vicuna-7b-v1.3")
outputs = llm.generate(prompts)
要启动一个OpenAI API兼容的服务器,只需运行:
python -m vllm.entrypoints.openai.api_server --model lmsys/vicuna-7b-v1.3
广泛应用与社区支持
自2023年4月以来,vLLM已经在LMSYS的Vicuna聊天机器人和Chatbot Arena中得到了广泛应用,为数百万用户提供服务。vLLM的开发得到了包括Andreessen Horowitz(a16z)在内的多家机构的支持。项目还定期举办社区meetup,促进技术交流与合作。
结语
vLLM通过其创新的PagedAttention技术和优化的实现,大大提高了LLM服务的效率和可访问性。无论是学术研究还是工业应用,vLLM都为大语言模型的广泛部署铺平了道路。随着AI技术的不断发展,vLLM这样的开源项目将在推动大语言模型民主化方面发挥越来越重要的作用。