企业级模型推理部署工具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 凭借其灵活性和高效性,成为大模型落地的首选工具。无论是本地开发还是云服务器部署,只需根据硬件资源调整参数,即可快速实现高并发、低延迟的推理服务。

相关推荐
GIS思维6 小时前
ArcGIS Pro图斑属性自动联动更新-在线卫星底图图斑采集
python·arcgis·arcgis pro·deepseek
yutianzuijin9 小时前
大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置
服务器·ubuntu·llm·大模型推理
CoderJia程序员甲12 小时前
RAG_Techniques:探索GitHub热门RAG技术开源项目
ai·llm·github·ai教程·rag技术
小白白搭建1 天前
wordperss AI插件:AI图文+视频+长尾关键词自动生成,已内置deepseek、kimi全模型,支持简单一键接入更多自定义API
人工智能·wordpress·ai插件·deepseek·wordprerss插件·wordpress ai插件
struggle20251 天前
Sim Studio 是一个开源的代理工作流程构建器。Sim Studio 的界面是一种轻量级、直观的方式,可快速构建和部署LLMs与您最喜欢的工具连接
人工智能·开源·deepseek
CoderJia程序员甲1 天前
PandasAI:对话式数据分析新时代
ai·数据挖掘·数据分析·pandas·deepseek
reasonsummer2 天前
【办公类-99-04】20250504闵豆统计表excle转PDF,合并PDF、添加中文字体页眉+边框下划线
python·pdf·deepseek
水煮蛋不加蛋2 天前
从 Pretrain 到 Fine-tuning:大模型迁移学习的核心原理剖析
人工智能·机器学习·ai·大模型·llm·微调·迁移学习
AI大模型顾潇2 天前
[特殊字符] 人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总) [特殊字符]
数据库·人工智能·语言模型·自然语言处理·大模型·llm·prompt
奔跑吧邓邓子2 天前
DeepSeek与MySQL:开启数据智能新时代
数据库·mysql·融合·deepseek