企业级模型推理部署工具vllm使用指南 - 部署最新deepseek-v3-0324模型

vLLM(Virtual Large Language Model)是由加州大学伯克利分校团队开发的高性能大模型推理框架,其核心特点围绕显存优化、高吞吐量、灵活性和易用性展开。

对比 ollama 作为个人开发者部署模型工具而言,vLLM 专注于高并发请求和大规模生产环境,适用于企业级应用和需要高效推理的场景。vLLM 通过优化内存管理和并发处理,适合处理高负载的生产环境 ‌。


一、vLLM 核心优势

高性能相关

1. PagedAttention 技术(分页注意力机制)

核心创新:借鉴操作系统虚拟内存分页机制,将注意力计算中的Key/Value 缓存(KV Cache) 划分为固定大小的"页",动态分配显存,显著减少内存碎片化。

  • 传统问题:传统框架需为每个请求预分配连续显存空间,导致利用率低(仅 20%-40%)。
  • vLLM 解决方案:按需分配显存页,支持动态扩展,显存利用率提升至接近 100%。

例如,LLaMA-7B 模型显存占用可从 14GB 压缩至 4GB(使用 INT4 量化)。 支持长上下文(如 128K 或 10M token)的高效处理,减少显存浪费。

2. 连续批处理(Continuous Batching)

动态合并请求:实时合并多个推理请求,避免静态批处理的等待延迟,最大化 GPU 利用率。

吞吐量提升:

  • 相比 Hugging Face Transformers,吞吐量提升 24 倍(如 LLaMA-7B 模型)。
  • 在高并发场景下,吞吐量可达传统框架的 5-10 倍。

3. 量化支持(模型压缩与加速)

兼容主流量化方法:支持 GPTQ、AWQ、SqueezeLLM、FP8 KV Cache 等,显著降低显存占用和计算开销。

量化效果:

  • INT4 量化:将 7B 模型显存需求从 14GB 压缩至 4GB,同时保持精度损失<1%。
  • 适用于消费级显卡(如 RTX 4090)部署 7B-13B 模型。

4. 高性能与分布式推理

多 GPU 张量并行:支持分布式部署,例如在 4 块 A100 GPU 上运行 70B 参数模型。

CUDA 优化:使用 CUDA/HIP 图(CUDA Graphs)加速模型执行。 -高性能 CUDA 内核优化,减少计算延迟。

易用性相关

5. 易用性与兼容性

与 Hugging Face 无缝集成:支持 50+主流模型(如 LLaMA、Qwen、Mistral、XVERSE 等)。

OpenAI API 兼容:可直接替换 OpenAI 接口,提供标准 API 服务(如/v1/completions)。

灵活的部署选项:支持流式输出、前缀缓存、多 LoRA 适配及离线批量推理。

6. 解码算法多样性

并行采样(Parallel Sampling):单次前向传播生成多个输出(如多种回答),降低计算成本。

波束搜索(Beam Search):提升生成文本的准确性和多样性。

自定义解码策略:支持根据场景选择最优解码算法。

二、部署环境准备

vLLM 是一个 Python 库,包含预编译的 C++ 和 CUDA (12.1) 二进制文件。

依赖环境

  • 操作系统:Linux
  • Python:3.8 - 3.12
  • GPU:计算能力 7.0 或更高(例如 V100、T4、RTX20xx、A100、L4、H100 等)

ps: vLLM 只能在 Linux 系统上才能完全运行。

使用 pip 安装

可以使用 python 的 pip 工具安装 vLLM:

ini 复制代码
# (Recommended) Create a new conda environment.
#(推荐)创建一个新的 conda 环境。

conda create -n myenv python=3.10 -y
conda activate myenv

# Install vLLM with CUDA 12.1.
# 安装带有 CUDA 12.1 的 vLLM。

pip install vllm

使用 docker 安装

vLLM 提供了一个官方 Docker 镜像用于部署。该镜像可用于运行与 OpenAI 兼容服务器,并且可在 Docker Hub 上以 vllm/vllm-openai 的形式获取。

bash 复制代码
docker run --runtime nvidia --gpus all \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    --env "HUGGING_FACE_HUB_TOKEN=<secret>" \
    -p 8000:8000 \
    --ipc=host \
    vllm/vllm-openai:latest \
    --model mistralai/Mistral-7B-v0.1

使用 ipc=host 标志或 --shm-size 标志来允许容器访问主机的共享内存。 vLLM 使用 PyTorch,而 PyTorch 在底层使用共享内存在进程之间共享数据,特别是在张量并行推理中。

默认情况下,为实现最广泛分发,vLLM 将为所有 GPU 类型进行构建。如果您只是针对机器运行的当前 GPU 类型进行构建,则可以为 vLLM 添加参数 --build-arg torch_cuda_arch_list= "" 来查找当前 GPU 类型并为其构建。


三、模型下载启动

这里用 DeepSeek 最新模型 V3-0324 模型下载来给大家作为参考。

在 huggingface 搜索 deepseek-ai/DeepSeek-V3-0324 即可找到 deepseek v3 的最新模型,

点击 Use this model 即可找到下载模型命令,

在 vllm 种,我们要下载模型并使用其中一个模型来启动服务器,请使用 vllm serve 命令,例如:

arduino 复制代码
vllm serve "deepseek-ai/DeepSeek-V3-0324"

安装并启动后,服务启动在 http://localhost:8000/。

分布式推理和服务

vLLM 支持分布式张量并行推理和服务。目前,我们支持 Megatron-LM 的张量并行算法。我们还支持将管道并行作为在线服务的测试版功能。我们使用 Ray 或 python 的原生多进程来管理分布式运行时。在单节点部署时可以使用多进程,多节点推理目前需要 Ray。

这也是 vllm 对比 ollama 的核心优势。能有效地利用多核 CPU 和 GPU 资源,显著提升 LLM 的推理速度

单节点多 GPU 部署

要运行多 GPU 服务,在启动服务器时传入张量并行 --tensor-parallel-size 参数。例如要在 4 个 GPU 上运行 API 服务器:

bash 复制代码
# 设置张量并行(需多GPU)
vllm serve "deepseek-ai/DeepSeek-V3-0324" \
  --tensor-parallel-size 4 \  # 根据GPU数量调整

多节点多 GPU 部署

可以将张量并行与管道并行结合使用。张量并行大小是每个节点要使用的 GPU 数量,管道并行大小是要使用的节点数量.例如,如果 2 个节点中有 8 个 GPU(每个节点 4 个 GPU),则可以将张量并行大小设置为 4,将管道并行大小设置为 2。

arduino 复制代码
vllm serve "deepseek-ai/DeepSeek-V3-0324" \
    --tensor-parallel-size 4 \ # 根据GPU数量调整
    --pipeline-parallel-size 2 # 根据节点数量调整

关键参数说明

参数 说明
--tensor-parallel-size GPU 张量并行度,需与 GPU 数量匹配(如 4 卡设为 4)。
--max-batch-size 最大批量请求大小,默认 16,可调高以提升吞吐。
--swap-space 磁盘交换空间,避免显存溢出(如设为 20GiB)。
--enable-async-execution 启用异步执行,减少等待时间。

更多关于多节点多 GPU 部署的信息可以参考官方文档:docs.vllm.ai/en/stable/s...

四、跟 vLLM 推理服务交互

通过 python 代码交互

服务器运行后,可以通过 python 代码调用其 API:

ini 复制代码
from openai import OpenAI

client = OpenAI(base_url='http://localhost:3000/v1', api_key='na')

# Use the following func to get the available models
# model_list = client.models.list()
# print(model_list)

chat_completion = client.chat.completions.create(
   model="deepseek-ai/DeepSeek-V3-0324",
   messages=[
      {
            "role": "user",
            "content": "Tell me something about large language models."
      }
   ],
   stream=True,
)
for chunk in chat_completion:
   print(chunk.choices[0].delta.content or"", end="")

通过 cli 交互

lua 复制代码
curl -X POST "http://localhost:8000/v1/chat/completions" \
 -H "Content-Type: application/json" \
 --data '{
  "model": "deepseek-ai/DeepSeek-V3-0324",
  "messages": [
   {
    "role": "user",
    "content": "What is the capital of France?"
   }
  ]
 }

五、总结

通过本文,你已掌握 vLLM 从环境配置到高性能推理服务部署的全流程。vLLM 凭借其灵活性和高效性,成为大模型落地的首选工具。无论是本地开发还是云服务器部署,只需根据硬件资源调整参数,即可快速实现高并发、低延迟的推理服务。

相关推荐
探索云原生1 小时前
大模型微调实战:通过 LoRA 微调修改模型自我认知
ai·云原生·llm·sft
仙人掌_lz1 小时前
AI agents系列之智能体框架介绍
人工智能·ai·自然语言处理·llm·ai agents
supermfc3 小时前
Docker方式离线部署OpenWebUI
后端·deepseek
恶霸不委屈3 小时前
情感科技新纪元!基于DeepSeek的智能情绪价值引擎设计与实践!!!
人工智能·python·科技·deepseek
ShowMeAI4 小时前
聊一聊Tool、MCP和Agent来龙去脉 | 大白话技术科普系列
llm·mcp
arriettyandray4 小时前
Qt/C++学习系列之QGroupBox控件的简单使用
ai编程·deepseek
Goboy5 小时前
一文读懂什么是 MNIST 的经典入门
llm·aigc·ai编程
kuaile090611 小时前
DeepSeek 与开源:肥沃土壤孕育 AI 硕果
人工智能·ai·gitee·开源·deepseek
—Qeyser12 小时前
用 Deepseek 写的uniapp血型遗传查询工具
前端·javascript·ai·chatgpt·uni-app·deepseek
fleur20 小时前
LoRA微调大模型实践
llm