外观
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 端点。

服务器一旦运行起来,就已经可以开始接受请求了。
#2)用 OpenAI 客户端发送请求
接下来,我们用标准的 OpenAI 客户端连接这个服务器。
我们使用标准的 Chat Completions 格式,只需把客户端指向我们的 vLLM 服务器即可。

此时,我们的本地部署行为就和任何一个托管的 LLM 端点一样了。
#3)扩展到多块 GPU
如果我们需要更高的吞吐量,或者想部署一个更大的模型,可以把它扩展到多块 GPU 上。

这会把模型分布到 4 块 GPU 上。
#4)加载 LoRA 适配器
我们还可以支持经过微调的 LoRA 变体,而不需要单独加载多个模型。

这样我们就能基于同一个基座模型,同时提供多个 LoRA 适配器的服务。
#5)自动享受连续批处理带来的收益
随着请求不断进来,vLLM 会自动把它们打包成批,以最大化 GPU 利用率。

这一切都不需要额外的配置。
#6)同时提供多个模型的服务
最后,如果我们的应用需要不止一个模型,我们可以把它们都托管在同一个服务器里。

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