vLLM 本地部署 DeepSeek 全流程实战(Linux + NVIDIA GPU + OpenAI API 兼容)

vLLM 本地部署 DeepSeek 全流程实战(Linux + NVIDIA GPU + OpenAI API 兼容)

在实际项目中,若想将大模型作为标准 API 服务对外提供能力,而非仅在本机运行简单 Demo,vLLM 是绕不开的高性能推理框架选择。相比 Ollama 这类偏向“开箱即用”的本地体验工具,vLLM 更聚焦于服务端部署的核心需求,主打高吞吐推理、显存高效利用,且原生支持 OpenAI API 兼容,能无缝对接各类业务系统。

本文将以实战风格,完整演示 Linux 环境下基于 NVIDIA GPU 部署 vLLM + DeepSeek 的全流程,所有步骤均可直接复制运行,助力开发者快速搭建企业级的大模型推理服务。

✅ Linux 环境安装 vLLM

✅ NVIDIA GPU 环境适配

✅ 使用 ModelScope 加速模型下载

✅ 启动 DeepSeek 并对外提供 OpenAI 兼容 API 服务

📌 系列文章

👉 大模型本地部署实践(总览):为什么要做本地部署及方案选型
👉 如何在本地部署 DeepSeek?Ollama 一步跑通全流程实战
👉 Docker 部署 Ollama 全流程指南:支持 CPU/GPU、生产环境可用的工程化实践
👉 Docker 部署 vLLM 实战指南(NVIDIA CUDA / AMD ROCm 全流程)

一、vLLM 本地部署环境要求

vLLM 对运行环境有明确的适配要求,尤其在操作系统和硬件层面,需提前做好环境校验,避免部署过程中出现兼容问题。

1️⃣ 操作系统

  • 核心支持:Linux(Ubuntu、Debian、CentOS 等主流发行版)
  • ⚠️ 重要提示:vLLM 不支持 Windows 原生运行

若你是 Windows 用户,可通过以下两种方式适配:

  • 安装 WSL(Windows Subsystem for Linux),模拟 Linux 环境
  • 使用 Linux 版本的 Docker 容器运行 vLLM

2️⃣ Python 版本

支持 3.10 – 3.13 全系列,推荐使用 3.12,该版本兼具稳定性和对新特性的支持,与 vLLM 各依赖库兼容性最佳。

3️⃣ GPU 支持情况

vLLM 对不同硬件的支持度差异较大,本文示例基于NVIDIA GPU(官方最优支持),各硬件适配详情如下表:

设备支持情况备注
NVIDIA CUDA✅ 官方原生支持提供预编译 CUDA 12.8 二进制
AMD ROCm✅ 兼容支持建议使用 Docker 部署,需 ROCm 6.3+
Intel XPU⚠️ 实验性支持需手动从源码构建 vLLM
CPU❌ 不推荐推理速度极慢,无实际使用价值

二、直接安装部署(NVIDIA GPU 专属)

本章节所有操作均基于 Linux + NVIDIA GPU 环境,全程采用uv进行 Python 环境管理(相比传统 venv + pip,uv 安装速度更快、环境隔离更干净),一步到位完成部署。

2.1 前置依赖检查

vLLM 基于 CUDA 实现 GPU 加速,需提前确保系统已安装NVIDIA 显卡驱动CUDA 环境,二者版本需匹配。

在终端执行验证命令,检查环境是否可用:

nvidia-smi 

若能正常输出显卡型号、CUDA 版本、显存使用等信息,说明前置环境已就绪;若提示命令未找到或无显卡信息,需先安装对应版本的 NVIDIA 驱动和 CUDA 工具包。

2.2 创建 Python 虚拟环境

推荐使用 uv 管理 Python 虚拟环境,其安装和使用流程简洁高效,官方安装文档:https://docs.astral.sh/uv/getting-started/installation/

步骤1:安装 uv

在 Linux 终端执行官方一键安装脚本:

curl -LsSf https://astral.sh/uv/install.sh | sh 

安装完成后,重新打开终端,执行 uv -V 验证,输出版本号即安装成功。

步骤2:创建并激活 Python 3.12 环境
# 创建 Python 3.12 虚拟环境,--seed 初始化依赖配置 uv venv --python 3.12 --seed # 激活虚拟环境 source .venv/bin/activate 

激活成功后,终端前缀会显示 (.venv),表示已进入隔离的 Python 环境。

2.3 安装 vLLM

uv 会自动检测本机 CUDA 版本,匹配对应的 torch 版本,无需手动指定,执行以下命令一键安装 vLLM:

uv pip install vllm --torch-backend=auto 

安装完成后,执行验证命令,检查 vLLM 版本:

python -c "import vllm; print(vllm.__version__)" 

若终端正常输出版本号(如 0.5.0),说明 vLLM 安装成功。

2.4 使用 ModelScope 下载模型(国内环境必看)

vLLM 默认从 HuggingFace 下载模型,国内环境下网络速度较慢,推荐切换为 ModelScope 源,大幅提升模型下载速度,步骤如下:

# 安装 ModelScope 库 uv pip install modelscope # 设置环境变量,让 vLLM 优先从 ModelScope 拉取模型 export VLLM_USE_MODELSCOPE=True 

2.5 启动 DeepSeek 模型服务

完成以上配置后,直接执行命令启动 DeepSeek 模型服务,本文以 deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B 为例(轻量版,适合入门体验):

vllm serve "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" 

首次运行会自动下载模型文件,下载完成后,vLLM 会启动推理服务,**默认监听地址为 **http://localhost:8000

当终端出现类似以下日志时,说明服务启动成功:

INFO 09-01 10:00:00 llm_engine.py:202] Initializing LLM engine with config: ... INFO 09-01 10:00:10 server.py:687] Started server process [12345] INFO 09-01 10:00:10 server.py:709] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) 

三、测试 OpenAI 兼容接口

vLLM 原生提供 OpenAI API 兼容接口,这意味着所有适配 OpenAI 接口的业务系统、第三方工具(如 Cherry Studio、ChatGPT 客户端)都可以无缝对接本地部署的 DeepSeek 服务,无需修改代码。

3.1 curl 命令快速测试

在新的终端窗口,执行以下 curl 命令,向本地 vLLM 服务发送请求:

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": "1+1 等于多少?"} ] }' 

3.2 验证返回结果

若服务正常响应,会返回标准的 OpenAI 格式 JSON 数据,包含模型回答、token 用量等信息,示例如下:

{ "id": "chatcmpl-xxxx", "object": "chat.completion", "created": 1725122400, "model": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "1+1等于2,这是基础的数学加法运算结果。" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 15, "total_tokens": 25 } } 

能正常返回该结果,说明你的 DeepSeek 模型服务已成功部署,且可对外提供 API 调用能力。

此时你已拥有一个本地可调用、后端系统可接入、OpenAI 协议兼容的大模型推理服务,可直接对接业务代码。

四、部署常见问题及解决方案

部署过程中,可能会遇到 CUDA 版本不匹配、显存不足、模型下载慢等问题,以下是高频问题的解决方案,覆盖90%的部署场景。

1️⃣ CUDA 版本不匹配

现象:启动 vLLM 时,报 torch/cuda 相关错误,如 CUDA version mismatchno kernel image is available for execution on the device

解决方式

  1. 升级 NVIDIA 显卡驱动,使其与系统安装的 CUDA 版本匹配;

若驱动无法升级,可手动安装匹配 CUDA 版本的 torch,再重新安装 vLLM:

# 示例:安装 CUDA 12.1 版本的 torch uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 uv pip install vllm --torch-backend=auto 

2️⃣ 显存不足

现象:启动模型时,报 out of memory 错误,终端提示显存占用超出显卡容量。

解决方式

  1. 更换更小参数量的 DeepSeek 模型版本。

调小模型最大上下文长度,减少显存占用:

vllm serve "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" --max-model-len 2048 

限制 GPU 显存利用率,预留部分显存:

vllm serve "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" --gpu-memory-utilization 0.8 

0.8 表示使用 80% 的显存,可根据显卡容量调整)

3️⃣ 模型下载慢/下载中断

现象:执行启动命令后,模型下载速度极慢,或中途断开连接,提示下载失败。

解决方式

  1. 确保已配置 VLLM_USE_MODELSCOPE=True,使用国内源下载;

手动从 ModelScope 官网下载模型到本地,再指定本地模型路径启动服务:

# 本地模型路径示例:/root/models/DeepSeek-R1-Distill-Qwen-1.5B vllm serve /root/models/DeepSeek-R1-Distill-Qwen-1.5B 

五、总结

本文完成了 Linux + NVIDIA GPU 环境下 vLLM 部署 DeepSeek 大模型的全流程实战,核心收获包括:

  1. 完成了 vLLM 部署的基础环境准备,掌握了 NVIDIA GPU + CUDA 环境的校验方法;
  2. 学会使用 uv 进行 Python 环境管理,实现了快速、干净的依赖安装;
  3. 成功安装 vLLM 并适配国内环境,通过 ModelScope 加速模型下载;
  4. 启动了 DeepSeek 模型的 OpenAI 兼容 API 服务,实现了大模型的标准化对外调用。

vLLM 作为高性能的大模型推理框架,其高吞吐、高显存利用率的特性,使其成为私有化部署、企业级推理服务、高并发 API 化改造的首选方案。基于本文的基础部署,开发者还可以进一步探索 vLLM 的高级特性,如多模型部署、负载均衡、量化推理等,打造更贴合业务需求的大模型服务架构。

后续笔者将继续更新大模型部署实战系列,包括 vLLM Docker 容器化部署 vLLM + DeepSeek、业务系统对接本地大模型 API 等内容,欢迎点赞、收藏、关注,第一时间获取更新~

Read more

【linux】 Linux 匿名管道:从 pipe 调用到通信测试(可运行代码 + 原理剖析)

【linux】 Linux 匿名管道:从 pipe 调用到通信测试(可运行代码 + 原理剖析)

前言:欢迎各位光临本博客,这里小编带你直接手撕**,文章并不复杂,愿诸君**耐其心性,忘却杂尘,道有所长!!!! IF’Maxue:个人主页  🔥 个人专栏: 《C语言》 《C++深度学习》 《Linux》 《数据结构》 《数学建模》 ⛺️生活是默默的坚持,毅力是永久的享受。不破不立! 文章目录 * 为什么要通信 * 怎么通信 * 什么是通信 * 匿名管道(基于血缘关系的通信) * 原理 * 代码测试 * 通信测试:子写父读 为什么要通信 * 数据传输:进程间传递信息 * 资源共享:多个进程共用一份资源 * 通知事件:一个进程告知另一个进程发生了特定事件 * 进程控制:管理其他进程的运行状态 怎么通信 * 进程间通信的本质:让不同进程先“看到”同一份资源,有了这个基础才能通信。 * 这份“内存”不能由任何进程自己提供,必须由操作系统分配—

By Ne0inhk
运维服务器监控不用蹲机房,node_exporter 远程看全靠cpolar

运维服务器监控不用蹲机房,node_exporter 远程看全靠cpolar

node_exporter 是一款轻量级的服务器监控工具,核心功能是实时采集服务器的 CPU、内存、磁盘、网络等运行指标,并将这些数据以标准化格式输出,供监控系统分析,它适配物理机、虚拟机、容器等多种部署环境,能帮助使用者及时发现服务器的性能瓶颈和异常状态。 作为日常管理多台服务器的运维人员,我最认可 node_exporter 的地方在于它的易用性和全面性:安装部署步骤简单,即使是运维新手也能快速上手;采集的指标维度足够细致,小到磁盘读写速度,大到 CPU 整体负载,都能清晰呈现,而且运行时几乎不占用服务器资源,不会影响业务程序的正常运行。 原本受限于局域网,使用 node_exporter 只能在办公室查看服务器状态,一旦外出,无论是客户现场调试需要确认服务器资源,还是周末在家遇到服务器告警,都无法及时查看指标。而用 cpolar 解决了局域网限制后,体验感大幅提升:出差时在咖啡厅就能通过公网地址查看公司服务器的运行数据,判断故障原因;居家时能随时监控家里 NAS 的存储空间和下载速度,不用再特意跑回家操作;甚至能把公网地址配置到监控系统中,实现

By Ne0inhk
【Linux】cut 命令提取文本列的方法

【Linux】cut 命令提取文本列的方法

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Linux这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 🐧【Linux】cut 命令提取文本列的方法 —— 从基础到实战,附Java实现对比 * 🔍 什么是 cut 命令? * 📚 基本语法结构 * 🎯 按字段提取:-f 与 -d 的黄金搭档 * 示例1:提取 /etc/passwd 中的用户名和 shell * 示例2:提取 CSV 文件中的姓名和邮箱 * 🧩 字段范围与复杂选择 * 示例3:提取第2列到最后一列 * 示例4:提取第1、3、5列(跳过中间) * 🔤 按字符/字节提取:-c 与 -b * 示例5:

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 build_runner 掌控鸿蒙应用代码生成的自动化引擎(工程提效核心)

Flutter for OpenHarmony: Flutter 三方库 build_runner 掌控鸿蒙应用代码生成的自动化引擎(工程提效核心)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 的 Flutter 应用开发时,我们经常会用到各种“自动生成”工具: 1. JSON 解析:使用 json_serializable 自动生成 fromJson。 2. 状态管理:使用 freezed 生成不可变模型和联合体。 3. 数据库:使用 drift 自动生成繁琐的 SQL 映射代码。 支撑所有这些“自动魔法”背后的核心驱动力,正是 build_runner。它不是一个普通的 Library,而是 Dart 生态中的“工业级构建入口”。它负责协调所有的生成器、维护文件的依赖关系图,并确保你的鸿蒙工程目录中不会出现冗余或过时的中间产物。 一、

By Ne0inhk