Skip to content

vLLM:一款 LLM 推理引擎

vLLM: An LLM Inference Engine

vLLM 是一款专为大语言模型设计的开源推理引擎,专注于三个目标:

  • GPU 利用率不足:由于各个请求完成的时间不同,传统批处理方式会让 GPU 出现空闲
  • KV 缓存内存浪费:连续存储 KV 缓存会导致内存碎片化
  • 开发体验不佳:许多高性能系统都需要自定义代码和自定义 API

vLLM 通过以下方式解决了这三个问题:

  • 连续批处理(continuous batching)
  • 用 PagedAttention 实现内存高效的 KV 缓存
  • OpenAI 兼容 API

实际用起来,使用 vLLM 的体验和使用 OpenAI API 几乎一模一样,唯一的区别是模型由你自己来托管。

接下来,我们一步步看看如何用 vLLM 来提供模型服务。

#1)启动 vLLM 服务器

首先,我们启动 vLLM API 服务器。

这会把模型加载进 GPU 显存,并暴露一个遵循 OpenAI API 格式的 /v1 端点。

llm deployment p362 1

服务器一旦运行起来,就已经可以开始接受请求了。

#2)用 OpenAI 客户端发送请求

接下来,我们用标准的 OpenAI 客户端连接这个服务器。

我们使用标准的 Chat Completions 格式,只需把客户端指向我们的 vLLM 服务器即可。

llm deployment p363 1

此时,我们的本地部署行为就和任何一个托管的 LLM 端点一样了。

#3)扩展到多块 GPU

如果我们需要更高的吞吐量,或者想部署一个更大的模型,可以把它扩展到多块 GPU 上。

llm deployment p363 2

这会把模型分布到 4 块 GPU 上。

#4)加载 LoRA 适配器

我们还可以支持经过微调的 LoRA 变体,而不需要单独加载多个模型。

llm deployment p364 1

这样我们就能基于同一个基座模型,同时提供多个 LoRA 适配器的服务。

#5)自动享受连续批处理带来的收益

随着请求不断进来,vLLM 会自动把它们打包成批,以最大化 GPU 利用率。

llm deployment p364 2

这一切都不需要额外的配置。

#6)同时提供多个模型的服务

最后,如果我们的应用需要不止一个模型,我们可以把它们都托管在同一个服务器里。

llm deployment p365 1

每个请求只需指定要使用的模型即可。

本站内容仅供学习交流,版权归原作者所有。