vllm:一键部署大模型高速推理引擎

555 阅读3分钟

vllm:一键部署大模型高速推理引擎

简介

vLLM一个开源的型(LLM)高速推理引擎伯克利分校的研究团队开发。它通过创新的 Paention 注意力算法 实现了,能显著提升模型推理速度,与 HuggingFace、ModelScope 模型无缝集成,大幅降低了大模型落地的硬件门槛和部署门槛。

核心特点

革命性性能优化

  • • PagedAttention 技术:
    借鉴操作系统内存分页机制,动态管理注意力键值缓存,减少显存碎片升 GPU 利用率。
  • • 吞吐量碾压级优势
    在 Llama-13B 等模型实测中,吞吐量比 HuggingFace Transformers 高 10-24倍,TGI 高 2.5倍
  • • 零冗余优化
    支持权重共享的多副本并行推理,避免重复加载模型参数。

开箱即用的便捷性

  • • 支持主流开源模型
    LLaMA、Mistral、Qwen、Baichuan、ChatGLM 等 50+ 模型即用。
  • • 兼容 OpenAI API 接口
    提供 /v1/completions、/v1/embeddings 等标准接口,无缝替代 ChatGPT 后端。
  • • 连续批处理(Continuous Batching)
    动态合并用户请求,显著提高 GPU 利用率。

快速开始

一、准备一台 GPU 实例

用以下链接注册可以免费使用4070算力(20 元算力,😊)
算多多GPU

登录后,在控制台选择"vLLM"镜像创建实例

二、运行 vllm 服务

登录到云实例
  1. 1. 等待实例状态变成"在线+无任务"(1-3分钟),点击快捷应用里的"JupyterLab",在新窗口打开 Web 服务

  1. 2. 新建一个 jupyter 终端窗口

提升权限
sudo -i
进入项目文件夹
cd /opt/vllm
激活 conda 环境
conda activate vllm

三、体验离线推理

执行推理脚本

镜像中已预置了一个离线推理脚本 /opt/vllm/test.py,可以直接执行进行推理体验:

python test.py

脚本默认使用 ModelScope 下载模型(防止科学上网不同),并且已预先下载了 deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B 模型,可以根据需求修改,具体内容如下:

# 设置环境变量,从魔搭下载模型
import os
os.environ['VLLM_USE_MODELSCOPE'] = 'True'
from vllm import LLM

llm = LLM(
    model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",
    trust_remote_code=True,
    gpu_memory_utilization=0.7,
    max_num_seqs=64,
)

output = llm.generate("我希望学习大模型,请给我指定一个学习路线?")
print(output)
推理结果

四、部署推理的 API 服务

1、运行服务

vllm 可以快速部署为 API 服务,快速向用户提供大模型推理服务,兼容 OpenAPI 的格式,使用非常简单。
在终端执行:

VLLM_USE_MODELSCOPE=True vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \
  --max-num-seqs 1 \
  --gpu-memory-utilization 0.8 \
  --enforce-eager \
  --max-model-len 8192 \
  --disable-log-stats
vLLM 服务启动参数说明表
参数/环境变量含义典型值说明
VLLM_USE_MODELSCOPE=True指定从 ModelScope 模型库(而非 HuggingFace)加载模型使用ModelScope
deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B加载的模型名称轻量蒸馏版 DeepSeek 模型(基于 Qwen-1.5B)
--max-num-seqs 1限制并发请求数每次仅处理 1 个请求(严格防溢出)
--gpu-memory-utilization 0.8GPU 显存占用上限最多使用 80% 显存(预留安全缓冲)
--enforce-eager禁用 PyTorch 图优化强制 eager 模式(规避编译错误)
--max-model-len 8192支持的最大上下文长度允许处理最长 8192 tokens 的文本
--disable-log-stats关闭性能统计日志生产环境减少日志输出
2、本地测试服务的可用性

在终端执行:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model""deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",
    "messages": [
      {"role""user""content""解释神经网络的工作原理"}
    ],
    "max_tokens"100
  }'

七、结语

至此,我们完成了利用云算力进行 vllm 离线推理和 API 部署的工作,更多功能可以参考 vllm官网:
vllm.hyper.ai/docs/