本地部署vLLM+Qwen3:高性能大模型推理引擎,比Ollama强在哪?

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

在人工智能快速发展的今天,越来越多企业开始部署自己的大语言模型。然而面对动辄数十亿参数的大模型,如何高效稳定地运行它们成为技术团队面临的共同挑战。今天我们就来深入解析两款主流的大模型推理引擎------vLLM和Ollama,帮助您做出正确的技术选型。

什么是vLLM?它为何如此高效?

vLLM(Vectorized Large Language Model)是由加州大学伯克利分校团队开发的高性能大语言模型推理引擎,专门用于提升大模型推理的效率和速度

vLLM的核心突破在于其创新的PagedAttention技术 ,这项技术巧妙地借鉴了操作系统的虚拟内存分页机制 传统推理框架在处理大模型时,需要为每个请求分配一块连续的显存空间来存储注意力机制的键值对(KV Cache)。这就像停车场要求每辆车必须停靠在连续的车位中,即使只剩零散车位也无法使用,导致显存利用率通常只有60%左右

而vLLM的PagedAttention技术将KV Cache划分为固定大小的"块",这些块可以非连续地存储在显存中 ,并通过页表管理它们的映射关系。这种方法就像让车辆可以分散停放在停车场的任何空位,极大提升了显存利用率,可达到95%以上 除了PagedAttention外,vLLM还有两大核心技术:

连续批处理(Continuous Batching) :传统批处理需要等待一批请求全部完成后才能处理下一批,而vLLM允许新请求随时加入处理队列,确保GPU持续工作,显著提高吞吐量

前缀共享(Prefix Sharing) :当多个请求有相同提示前缀时,vLLM可以共享这部分计算的KV Cache,避免重复计算

这些技术使得vLLM在相同硬件上能同时服务5-10倍的请求量,成为企业级高并发场景的理想选择

2.vLLM与Ollama

虽然vLLM和Ollama都是大模型推理框架,但它们在设计理念和适用场景上有着显著差异。

2.1定位与核心优势

Ollama 是一个轻量级的本地推理平台,主打简单易用和快速部署。它基于Go语言实现,将模型权重、依赖库和运行环境整合为统一容器,用户只需一条命令即可启动模型服务。Ollama特别适合个人开发者、教育演示和本地测试场景

vLLM 则专注于高性能推理和服务端扩展,面向需要处理高并发请求的生产环境。它通过先进的内存管理和调度算法,最大化GPU利用率,适合企业级的大规模部署

2.2性能表现对比

从性能数据来看,两个框架有明显差异。以DeepSeek-R1-Distill-Qwen-32B模型为例:

显存占用:Ollama(4-bit量化)为19-24GB,而vLLM(FP16)为64-96GB

推理速度:Ollama为5-15 tokens/秒,vLLM可达30-60 tokens/秒

硬件需求:Ollama可在高端消费级GPU(≥24GB)上运行,vLLM需要多卡专业级GPU

特性 Ollama vLLM
核心优势 易用性、快速启动 高性能、高并发
显存管理 动态分块加载 PagedAttention分页管理
批处理 基础批处理 连续动态批处理
硬件需求 消费级GPU即可 需要专业级GPU
部署复杂度 简单,一条命令 相对复杂,需要调优

简单来说,选择标准很清晰:个人开发测试用Ollama,企业生产部署用vLLM

3.vLLM的软硬件要求与部署实践

3.1硬件要求

vLLM对硬件有较高要求,推荐使用专业级GPU显存需求 :至少能容纳模型参数和KV Cache,例如70B模型需要140-210GB显存,支持张量并行:通过多GPU并行计算加速推理

本次实验采用一张魔改的 2080显卡,22G现存

3.2软件环境

操作系统 :Linux(Ubuntu 20.04+或Rocky Linux 9+),驱动要求:NVIDIA驱动版本535+

本次实验环境采用 Rocky Linux 10 版本

3.3操作系统基础安装

bash 复制代码
# 更换镜像源为阿里云镜像源  
sed -e 's|^mirrorlist=|[#mirrorlist]()=|g' \  
    -e 's|^[#baseurl]()=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \  
    -i.bak \  
    /etc/yum.repos.d/[Rr]ocky*.repo  
  
# 安装EPEL 仓库  
dnf install -y epel-release  
  
 # 和yum是一样的  
dnf clean all  
dnf makecache  
  
  
# 更新系统软件(非必要)  
yum -y update  
  
# 禁用 SELinux  
setenforce 0  
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config  
# 获取 SELinux 状态  
getenforce   
  
# 关闭防火墙(生产环境慎重)  
systemctl stop firewalld  
systemctl disable firewalld  
  
# 设置时区  
timedatectl set-timezone Asia/Shanghai  
  
# 配置时间同步服务  
systemctl status chronyd  
  
# 查看时间是否同步 V 大写  
chronyc sources -V  
MS Name/IP address         Stratum Poll Reach LastRx Last sample                 
===============================================================================  
^+ ntp8.flashdance.cx            2   7   377   104  +2245us[+2245us] +/-  104ms  
^* 211.68.71.26                  3   7   377   105  -8679us[-9888us] +/-  124ms  
^- mail.moe.cat                  2   8    61    94    -14ms[  -14ms] +/-  101ms  
^+ ntp1.flashdance.cx            2   7   377    40   +215us[ +215us] +/-  102ms  
  
# 安装常用插件  
yum install -y vim wget telnet net-tools lrzsz unzip gcc numactl  bind-utils tar tar perl pciutils

显卡检查时会用到 lspci命令,该命令在 pciutils包中

3.4 显卡相关

3.4.1 确认显卡型号

makefile 复制代码
lspci | grep -i nvidia  
01:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti Rev. A] (rev a1)  
01:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1)  
01:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Host Controller (rev a1)  
01:00.3 Serial bus controller: NVIDIA Corporation TU102 USB Type-C UCSI Controller (rev a1)  
  
# 确认你运行的内核版本,然后安装对应的开发包:  
# 查看当前运行的内核版本  
uname -r  
# 安装对应版本的内核开发包  
sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

确认内核版本以及安装对应版本内核开发包很重要,要不然驱动无法安装

3.4.2 检查是否存在开源驱动 nouveau

perl 复制代码
lsmod | grep nouveau

有输出说明存在。 开源驱动会与NVIDA 驱动冲突。我的是有输出的

如果存在,则需要关闭 nouveau 驱动

bash 复制代码
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf  
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf  
sudo dracut --force  
# 重启  
sudo reboot  
  
# 重启后确认,如果没有输出则表示已经关闭了  
lsmod | grep nouveau

3.4.3 下载驱动

官网:www.nvidia.com/en-us/drive...

选择一个版本下载

将下载的文件存放到 /usr/local/src目录备用

3.4.4 执行安装

bash 复制代码
cd /usr/local/src  
# 添加可执行权限  
 chmod +x NVIDIA-Linux-x86_64-580.105.08.run  
# 执行安装  
 sudo ./NVIDIA-Linux-x86_64-580.105.08.run

安装的时候,会让你选择许可证,我们直接选择 **NVIDIA Proprietary**即可

选项 许可证 特点 推荐选择
NVIDIA Proprietary 专有许可证 • 传统的NVIDIA专有驱动 • 经过长期测试,稳定性高 • 与各种NVIDIA功能完全兼容 大多数用户
MIT/GPL 开源许可证 • 较新的开源内核模块 • 更好的内核兼容性 • 遵循开源协议 特定场景用户

如果操作系统安装的是字符界面,则会出现一个警告:

WARNING: nvidia-installer was forced to guess the X library path '/usr/lib64' and X module path '/usr/lib64/xorg/modules';

这个警告信息表明NVIDIA安装程序无法自动检测到X Window系统的开发文件位置,解决这个警告你需要安装X.Org的开发包和pkg-config工具,

这个警告不会影响CUDA计算功能,只会影响图形显示,如果你只在字符界面使用Rocky Linux进行计算任务,可以暂时忽略这个警告

3.4.5 验证驱动是否安装成功

bash 复制代码
#  若输出显示显卡信息、驱动版本,则安装成功nvidia-smi

3.5.安装CUDA

CUDACompute Unified Device Architecture 的缩写,是NVIDIA推出的并行计算平台和编程模型

本质: 让GPU不仅能处理图形,还能进行通用计算的平台

作用: 允许开发者使用C/C++等语言直接在GPU上编写程序

应用领域: AI/深度学习、科学计算、数据分析、图形渲染等

前提条件,需要先安装 NVIDIA 驱动

bash 复制代码
nvidia-smi  # 有输出,则确认驱动正常工作

3.5.1 下载CUDA Toolkit并安装

RTX 2080 Ti 的最优 CUDA 版本为 11.7 或 11.8 ,我们选择 11.8 版本下载,下载地址:developer.nvidia.com/cuda-toolki... ,找到对应的版本,选择合适的环境下载。下载后,文件存放到 /usr/local/src

bash 复制代码
cd /usr/local/src  
  
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run  
  
sudo sh cuda_11.8.0_520.61.05_linux.run

安装的时候,会出现错误:unsupported compiler version: 14.2.1. Use --override to override this check. 此时使用下面命令跳过检查。 原因是当前系统版本的gcc版本过高 ,cuda_11.8.0 不识别这个gcc版本。生产环境可以降低 gcc版本,比如gcc 10 版本。因为现在是测试,直接跳过检查

sudo sh cuda_11.8.0_520.61.05_linux.run --override

因为驱动已经安装了,所以这里需要将 "Driver" 选项去掉

安装完毕后,Toolkit 被安装在了 /usr/local/cuda-11.8, 同时有个链接文件 /usr/local/cuda指向了这个目录

3.5.2 配置环境变量

bash 复制代码
# 编辑bash配置文件  
vim ~/.bashrc  
  
# 添加以下内容(版本号根据实际安装调整)  
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}  
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}  
export CUDA_HOME=/usr/local/cuda  
  
# 使配置生效  
source ~/.bashrc

3.5.3 验证安装

yaml 复制代码
# 检查CUDA编译器  
nvcc --version  
nvcc: NVIDIA (R) Cuda compiler driver  
Copyright (c) 2005-2022 NVIDIA Corporation  
Built on Wed_Sep_21_10:33:58_PDT_2022  
Cuda compilation tools, release 11.8, V11.8.89  
Build cuda_11.8.r11.8/compiler.31833905_0  
  
# 检查CUDA工具包版本  
nvidia-smi  # 查看右上角的CUDA Version

nvidia-smi 显示的CUDA版本是驱动程序支持的最高 CUDA版本,不是实际安装的CUDA版本,使用 nvcc --version显示的才是实际安装的版本。

3.6 安装Conda

Conda 是一个开源的包管理和环境管理系统,最初由 Anaconda 公司开发,主要用于 Python 及其他语言(如 R、Ruby、Lua、Perl、Haskell、C/C++)的包管理和环境管理。它可以安装、更新、卸载软件包,并创建隔离的虚拟环境,使得不同项目之间的依赖不会相互干扰。Conda与pip的区别:

bash 复制代码
cd /usr/local/src   
# 下载安装脚本  
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  
  
 # 执行安装  
 sh Miniconda3-latest-Linux-x86_64.sh  
  
# 手动激活 base环境  
eval "$(/root/miniconda3/bin/conda shell.bash hook)"  
  
# 接收许可  
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main  
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r  
  
# 查看源  
conda config --show-sources  
==> /root/miniconda3/.condarc <==  
channels:  
  - defaults  
  
conda config --set show_channel_urls yes  
  
conda config --show channels  
  
 # 关闭自动激活base环境  
conda config --set auto_activate_base false

3.7 安装vLLM GPU版本

bash 复制代码
# 创建vllm虚拟环境  
conda create -n vllm_env python=3.11 -y  
# 激活vllm虚拟环境  
conda activate vllm_env  
  
# 查看已创建的所有Conda环境  
conda env list  
  
# 安装vllm 包  
pip install vllm  
  
# 检查vLLM命令行工具是否可用  
vllm --help  
  
# 在Python交互环境中尝试导入vLLM的核心模块  
python -c "from vllm import LLM; print('vLLM导入成功!')"

3.8 模型下载

这里先试用国内的 魔搭ModelScope社区 提供的SDK 来下载模型

bash 复制代码
# 安装ModelScope SDK  
pip install modelscope  
  
# 创建模型存放目录  
mkdir -p /home/models/modelscope/Qwen/Qwen3-0.6B  
# 下载模型  
modelscope download --model Qwen/Qwen3-0.6B --local_dir /home/models/modelscope/Qwen/Qwen3-0.6B

3.9 加载本地模型

bash 复制代码
# 加载。完全启动过后,会打开 8000 端口对外提供服务  
vllm serve /home/models/modelscope/Qwen/Qwen3-0.6B

GET http://192.168.6.133:8000/v1/models 此时会显示模型信息

单独开启一个窗口,执行命令:

bash 复制代码
curl http://localhost:8000/v1/completions -H "Content-Type: application/json" -d '{"prompt": "请介绍一下你自己"}'

有相应则加载成功

注意:控制台上按 Ctrl +C服务将会停止,回到命令行

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
Databend1 小时前
2KB histogram 背后:Databend 如何低成本追踪长尾延迟
大数据·数据分析·agent
笃行3501 小时前
用 CodeBuddy “复活“《山海经》:异兽图鉴网站的诞生
agent
这个DBA有点耶1 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技2 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
轻口味2 小时前
别被模型宣传骗了,真实 Agent 任务一跑就知道
agent·ai编程
Larcher3 小时前
从零搭建 MCP 服务——让 AI 拥有无限扩展能力
人工智能·程序员
小星AI3 小时前
Kimi Code CLI 超详细教程,附源码
人工智能·agent
Databend3 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
SamDeepThinking4 小时前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员