2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

使用 VLLM 部署 DeepSeek:基于 Ubuntu 22.04 + RTX 4090 + Docker 的完整指南

发布日期:2025-03-17 18:51:09 浏览次数: 4095
作者:写代码的中年人

微信搜一搜,关注“写代码的中年人”

推荐语

掌握VLLM部署技能,高效运行DeepSeek模型。

核心内容:
1. VLLM推理引擎的高性能优势与核心特性
2. Ubuntu 22.04环境下的显卡驱动与CUDA安装
3. Docker环境下VLLM的部署与运行流程

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家
最近,大语言模型(LLM)的部署已经成为 AI 开发者绕不开的核心技能。而 VLLM 作为一款高性能、低延迟的推理引擎,在大模型推理领域迅速崛起。今天,我就带大家从零开始,在 Ubuntu 22.04 + RTX 4090 + Docker 环境下,部署 DeepSeek模型,并让它跑起来!


这篇文章适合那些想快速上手 vLLM 的开发者,文章涵盖了显卡驱动、CUDA、Docker 环境的安装,以及 vLLM 的完整运行流程。让我们开始吧!



什么是 VLLM?


VLLM(Very Large Language Model Inference)是一个 高性能、优化显存管理 的大模型推理引擎。它的目标是 最大化推理吞吐量,并降低显存消耗,让大语言模型(LLMs)在 单卡或多 GPU 服务器 上运行得更高效。


VLLM 的核心优势:

高吞吐量:支持批量推理,减少 token 生成延迟,高效 KV 

缓存管理:优化 GPU 显存,支持 更长的上下文

多 GPU 支持:Tensor Parallel 加速推

OpenAI API 兼容:可以作为 本地 API 服务器 运行


环境准备


在正式部署 VLLM 之前,我们需要先确保机器环境可用,包括 显卡驱动、CUDA、Docker 等核心组件。


01

确保系统环境


我们使用 Ubuntu 22.04,建议先更新系统并重启系统:

sudo apt update && sudo apt upgrade -y
sudo reboot

02

安装 NVIDIA 显卡驱动


在 Ubuntu 22.04 中,禁用原有的 GPU 驱动(尤其是默认的 nouveau 驱动或已安装的旧版 NVIDIA 驱动)非常重要,以避免与新的 NVIDIA 驱动 发生冲突。执行如下命令禁用原有GPU驱动后,重启系统。
sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<EOFblacklist nouveauoptions nouveau modeset=0EOF
sudo update-initramfs -u
执行上面命令后,重启系统:
sudo reboot
重启后,执行如下命令安装推荐的 NVIDIA 驱动:(以 RTX 4090 为例)
sudo apt install -y nvidia-driver-535
安装完后 NVIDIA 驱动后,进行重启:
sudo reboot

然后再次运行 nvidia-smi,如果能正确显示显卡信息,就说明驱动安装成功。


03

安装 CUDA


VLLM 需要 GPU 加速,而 CUDA 是核心库之一。我们使用 CUDA 12.1(推荐版本):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.debsudo dpkg -i cuda-keyring_1.0-1_all.debsudo apt updatesudo apt install -y cuda-toolkit-12-1
验证 CUDA 是否正确安装:
nvcc --version

04

安装 cuDNN


cuDNN 是深度学习加速库,我们执行如下命令安装cuDNN:
wget https://developer.download.nvidia.com/compute/cudnn/9.8.0/local_installers/cudnn-local-repo-ubuntu2204-9.8.0_1.0-1_amd64.debsudo dpkg -i cudnn-local-repo-ubuntu2204-9.8.0_1.0-1_amd64.debsudo cp /var/cudnn-local-repo-ubuntu2204-9.8.0/cudnn-*-keyring.gpg /usr/share/keyrings/sudo apt-get updatesudo apt-get -y install cudnn

05

安装Docker


执行下面命令,安装Docker:
# Add Docker's official GPG key:sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:echo \  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \  sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
执行如下命令,运行Docker:
sudo systemctl start docker


06

安装NVIDIA Container Toolkit  



NVIDIA Container Toolkit 是一款用于在容器化环境中高效运行 GPU 加速应用 的工具,通常与 Docker 配合使用,能够让开发者将基于 NVIDIA GPU 的应用程序打包到容器中并在支持 NVIDIA GPU 的服务器上运行。NVIDIA Container Toolkit 使得我们可以 在容器内使用 GPU,实现高效的并行计算,特别适用于 深度学习、高性能计算(HPC) 和 图形渲染 等任务。


NVIDIA Container Toolkit本质上是一个为 NVIDIA GPU 提供容器化支持的工具包,它能让 Docker 容器直接访问 GPU 资源,而无需繁琐的配置。


执行如下命令,安装NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
安装完成后,对Docker进行配置并重启Docker:
sudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker

07

拉取VLLM镜像


执行如下命令安装VLLM镜像:
docker pull vllm/vllm-openai

08

下载模型


我们本次使用模型:DeepSeek-R1-Distill-Qwen-7B进行测试,模型下载页面:
https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
如果你下载不了,请使用镜像网站进行下载:
你也可以使用如下命令进行下载:
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local-dir  /root/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B

/root/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:为下载模型存储路径,依据实际情况自己定义。


运行模型


我们使用docker compose进行VLLM镜像运行,文件如下:
version: '3.9'services:  vllm_service:    image: vllm/vllm-openai:latest    container_name: vllm_deepseek_7b    restart: always    deploy:      resources:        reservations:          devices:            - driver: nvidia              count: all              capabilities: [gpu]    ports:      - "8000:8000"    volumes:      - /root/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:/app/model    command: [      "--served-model-name", "DeepSeek-R1:7b",      "--trust-remote-code",      "--enforce-eager",      "--gpu-memory-utilization", "0.8",      "--model", "/app/model/",      "--host", "0.0.0.0",      "--port", "8000",      "--max-model-len", "10000",      "--api-key", "12345678",      "--tokenizer", "/app/model/"    ]
下面是 VLLM 容器启动时传入的命令参数:


--served-model-name "DeepSeek-R1:7b"

设置模型名称为 DeepSeek-R1:7b。这是在容器内加载的模型名称。


--trust-remote-code

允许容器信任远程代码执行。这在使用外部模型时很有用,但在安全性较为敏感的情况下需谨慎使用。


--enforce-eager

启用急切执行模式(Eager Execution)。在某些情况下,急切执行模式可以帮助调试和查看模型的每个操作的结果。


--gpu-memory-utilization "0.8"

指定容器使用 GPU 显存的比例。在此配置中,0.8 表示容器将使用 GPU 显存的 80%。


--model "/app/model/"

指定模型文件的位置,即挂载到容器中的 /app/model/ 目录。这个路径将指向你的 DeepSeek 模型。


--host "0.0.0.0"

设置容器的绑定地址为 0.0.0.0,这意味着容器将接受来自所有 IP 地址的请求。


--port "8000"

设置容器服务监听的端口为 8000,也就是你通过 localhost:8000 或宿主机的 IP 地址和端口来访问该容器提供的 API 服务。


--max-model-len "10000"

该参数设置模型能够处理的最大输入文本长度,通常这个值的设置需要根据模型和任务的需求来进行调节。


--api-key "12345678"

设置访问 API 的密钥,这个密钥通常用于验证客户端请求的合法性和安全性。你可以将其替换为实际的 API 密钥。


--tokenizer "/app/model/"

设置 分词器 的路径,在这里,分词器位于 /app/model/ 目录下,这个目录包含了模型的相关资源文件,包括分词器。

其它参数可参考官方说明。


VLLM在多张GPU上运行


在运行 vLLM 时,使用 --tensor-parallel-size 参数指定 GPU 数量。例如,如果你有 2 张 RTX 4090,可以这样运行:

只需在上面的命令中加入:
"--tensor-parallel-size", "2"
这样,VLLM 会自动将计算任务拆分到 2 张显卡上。你可以通过 nvidia-smi 观察显存占用情况。如果你有 4 张 GPU,可以将 --tensor-parallel-size 设为 4,以获得更高的计算吞吐量。

KV 缓存优化


在 Transformer 结构中,每次生成新 token 时,模型需要重新计算所有之前的 token(自回归推理)。这会导致长文本推理速度越来越慢。KV 缓存(Key-Value Cache) 是一种优化策略,它将计算过的 Key(键)和 Value(值)存储起来,避免重复计算,从而加速推理。


vLLM 的 Paged KV 缓存

vLLM 采用了一种 Paged KV 缓存 技术,相比传统的 KV 缓存,它能更高效地管理显存,避免显存碎片化,提高推理效率。


特点:

动态分配内存 —— 仅在需要时分配缓存,减少不必要的显存占用

支持流式生成 —— 适用于长文本对话,避免显存溢出

减少重复计算 —— 加快推理速度,特别适用于长文本生成


开启 KV 缓存优化

vLLM 默认开启 KV 缓存,但如果要手动调整 KV 缓存的大小,可以使用 --max-num-batched-tokens 参数。如果你的模型处理长文本较多,建议调大 --max-num-batched-tokens,但要注意 GPU 显存的使用情况。


VLLM 常用参数简介


参数类别
关键参数
作用
核心设置--model
--tensor-parallel-size
选择模型 & 多 GPU 并行
显存管理--gpu-memory-utilization
--dtype
控制显存占用
推理优化--max-num-batched-tokens
--enable-kv-cache
提高吞吐量 & KV 缓存优化
API 服务器--port
--host
控制 vLLM API 监听地址
输出控制--max-tokens
--temperature
控制输出质量


如果你在使用 VLLM 过程中遇到 显存溢出(OOM) 或 推理速度慢 的问题,可以尝试调整:

  1. 降低 --max-num-batched-tokens
  2. 调整 --gpu-memory-utilization(一般设为 0.85~0.95)
  3. 使用 --dtype float16 减少显存占用
  4. 在多 GPU 服务器上增加 --tensor-parallel-size


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅