之前写过一些本地部署大模型的文章,但更多的是面向个人使用。也有朋友问我,如何部署一个可以商业化使用的企业级大模型呢?今天我就写一篇单卡4090部署DeepSeek-R1-32B模型,并且可以提供给局域网内其他设备进行请求调用的教程。为了降低部署门槛,我将尽量使用最简单的方法来实现。所以即使你对大模型一无所知,只要硬件设备满足要求,并且不手残基本都能部署成功。无需感到压力。全篇教程分为三大部分,第一个部分是准备阶段,第二个部分是部署阶段,第三部分为调用阶段。整个部署过程的核心步骤我将用一张思维导图来圈出来,方便大家查阅。
一、准备阶段
首先本地部署面临的第一个问题,往往是应该如何选择模型以及如何选择推理框架。那么我们首先来看看应该选择什么推理框架比较合适。目前主流的大模型推理框架主要有以下四种:SGLang、Ollama、VLLM和LLaMA.cpp, 下表整理了四种架构的基本信息以及对比差异,小伙伴们可以结合自己的需求和设备来选择合适的推理框架。
推理框架 | 性能表现 | 易用性 | 适用场景 | 硬件需求 | 模型支持 | 部署方式 | 系统支持 |
---|---|---|---|---|---|---|---|
SGLang | 零开销批处理提升 1.1 倍吞吐量,缓存感知负载均衡提升 1.9 倍,结构化输出提速 10 倍 | 需一定技术基础,但提供完整 API 和示例 | 企业级推理服务、高并发场景、需要结构化输出的应用 | 高端GPU推荐 A100/H100,支持多 GPU 部署 | 全面支持主流大模型,特别优化 DeepSeek 等模型 | Docker、Python 源码 | Linux |
Ollama | 继承 llama.cpp 的高效推理能力,提供便捷的模型管理沙盒 | 小白友好,提供图形界面安装程序一键运行命令,支持 REST API | 个人开发者项目验证、学生辅助学习、日常问答、创意写作等个人轻量级应用 | 与 llama.cpp 相同,但提供更简便的资源管理 | 模型库丰富,涵盖 1700 多款,支持一键下载安装 | 独立应用程序安装包 | Windows、macOS、Linux |
vLLM | 高效性能,通过 PagedAttention 技术和 Continuous Batching 技术提高效率,吞吐量相较于原生 HF Transformers 可提升高达 24 倍,支持多种量化技术进一步压缩模型显存占用 | 需一定技术基础,特别是对参数的配置 | 大模型开发与商业推理服务 | CPU/GPU,支持多机多卡 GPU 部署 | 广泛的模型支持 | Docker、Python 源码 | Linux、macOS |
LLaMA.cpp | 极高性能,CPU/GPU协同计算,甚至无GPU也可以推理,是没有显卡玩家的最大福音 | 相对复杂 | 商业应用与研究 | CPU/GPU | 专属 LLaMA 模型 | 本地部署、分布式部署 | Linux、Windows |
目前网上已经有很多人写了如何使用ollama拉取Q4或者Q8量化的模型在本地推理的教程了,Ollama虽然轻便但是并发能力和推理速度不是以GPU推理为核心的框架,因此如果你是有计划在生产上部署DeepSeekR1系列模型的话,那么ollama并不应该成为首选,而我本地的显卡为双卡4090,SGlang这种大规模集群部署的推理框架也不太合适。因此我决定采用Vllm来进行推理。
好的,既然推理框架已经选好了,接下来就是根据本地设备来选择合适的模型参数了。目前DeepSeek-R1系列模型在Huggingface上共计开源了8种,按照参数量排序依次为:
- DeepSeek-R1 671B
- DeepSeek-R1-Zero 671B
- DeepSeek-R1-Distill-Llama-70B
- DeepSeek-R1-Distill-Qwen-32B
- DeepSeek-R1-Distill-Qwen-14B
- DeepSeek-R1-Distill-Llama-8B
- DeepSeek-R1-Distill-Qwen-7B
- DeepSeek-R1-Distill-Qwen-1.5B
DeepSeek-R1系列包含两大核心成员:
DeepSeek-R1-Zero
-
参数规模:6710亿(MoE架构,每个token激活370亿参数)
-
训练特点:完全基于强化学习的端到端训练
-
核心优势:展现出自我验证、长链推理等涌现能力
-
典型表现:AIME 2024基准测试71%准确率
DeepSeek-R1
-
参数规模:与Zero版保持相同体量
-
训练创新:多阶段混合训练策略
-
核心改进:监督微调冷启动 + 强化学习优化
-
性能提升:AIME 2024准确率提升至79.8%
其他不同参数规模的模型,则是以DeepSeek-R1作为教师模型使用不同的学生模型例如Qwen或者llama蒸馏而来。这种蒸馏的方式极大的降到了模型微调的门槛和成本,并且能够快速提升小参数规模大模型的推理能力,这也是DeepSeek能火爆AI圈很大的一个原因。
不同参数量要求的硬件门槛也各不相同,我这里简单的将不同参数规模的部署硬件门槛也列了一个表给各位做个参考。
模型参数 | 最低GPU配置 | 最低CPU配置 | 建议内存 | 建议硬盘空间 |
---|---|---|---|---|
R1 or R1-Zero满血版 | A/H100(80G)x18 | Xeon 8核 | 192GB | 2TB固态 |
R1-distill-llama70B | RTX 4090(24GB)x2 | i9-13900K | 64GB | 1TB固态 |
R1-distill-Qwen32B | RTX 4090(24GB) | i7-13700K | 64GB | 1TB固态 |
R1-distill-Qwen14B | RTX 4060S(16GB) | Ryzen 7 | 32GB | 500G固态 |
如果你不知道本地显卡的型号和显存大小,那么可以使用win+r后输入cmd,然后在命令提示符中输入命令:
nvidia-smi
来查看显卡信息,可以看到我这边本地的设备是两张4090,cuda最高支持12.7。接下来我们需要去下载安装本次部署的工具docker。
docker是最常用的虚拟化容器,你可以简单的理解为这个容器内把代码,环境,依赖,模型都可以打包进去,然后单独在沙盒空间里面运行,和你的主环境互不干扰,是目前主流的轻量便捷部署方式。docker支持windows、Mac和linux各种平台。下面我以windows平台为例,介绍一下如何下载和使用docker。
docker的官网主页为:
Docker Desktop: The #1 Containerization Tool for Developers | Dockerwww.docker.com/products/docker-desktop/
在官网主页中,找到下载客户端的地方:
这里就根据你本地电脑的操作系统来选择安装包,然后点击下载,无脑安装即可。docker安装完成后,需要启动一下然后去添加一下docker镜像源。下图为进入docker后可以看到的容器管理页面,我因为之前已经安装和使用docker下载了一些容器,因此这里不是空白的。
然后点击右上角的设置按钮
在左侧侧边栏中找到docker engine按钮:
我们需要在这个里面添加docker国内镜像源,目前国内可以正常使用的docker镜像源可以说用一个少一个,我这里给出几个暂时还能用的镜像源,大家且用且珍惜,如果镜像拉取失败,请自行寻找可用的镜像源进行替代。
- https://docker.xuanyuan.me
- https://docker.1ms.run
- docker.m.daocloud.io
- docker.imgdb.de
- docker.hlmirror.com
添加镜像源的方法很简单,只需在"registry-mirrors": []的括号中添加进入相应的地址即可。例如:
{
"builder": {
"gc": {
"defaultKeepStorage": "200GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
如果是linux系统,使用以下命令进行配置即可:
#!/bin/sh
cat <<-EOF > /etc/docker/daemon.json {
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
好的,到了这里我们第一部分准备阶段工作就全部完成了。
二、部署模型
接下来我们开始部署模型部分了,首先我们去拉取vLLM的最新代码,vLLM是我们本次部署模型推理采用的框架,我这里选择vLLM还有几个原因,一个是vLLM对并发需求支持比Ollama要好,另外一点就是vLLM可以把模型封装成openAI格式的API接口,除了在本地使用之外,还可以通过暴露端口到公网IP的方式对外提供API服务,我想这对商业化需求比较强的开发者来说非常有价值了。vLLM的github主页在此:
GitHub - vllm-project/vllm: A high-throughput and memory-efficient inference and serving engine for LLMsgithub.com/vllm-project/vllm
首先使用git把代码拉到本地。
git clone https://github.com/vllm-project/vllm.git
vLLM部署方式可以使用python源码通过创建anaconda虚拟环境安装依赖的方式来启动,也可以使用docker拉取镜像来使用。这里需要注意的是,目前*vLLM还不支持直接在windows环境下启动*,因此如果你要源码部署的话,务必去wsl里面创建虚拟环境才可以。
为了方便期间,我这里是在wsl中使用docker来启动的,首先打开在vllm项目路径下打开wsl。我这里vllm的路径为d:/pycharm/vllm,在wsl中访问windows路径要在前面加/mnt
然后接下来我们就要去下载模型文件了。大家可以根据前面准备阶段在的表格根据自己的硬件配置,来选择合适的模型参数,而本次教程部署的是32B模型是经过量化后的模型,如果没有量化那么单卡4090使用Vllm也是无法部署起来的,这次量化模型我选择的是Valdemardi (Ville Ahlgren)对DeepSeek-R1-Distill-Qwen-32B 进行AWQ量化的版本,模型下载链接在此:
Valdemardi/DeepSeek-R1-Distill-Qwen-32B-AWQ · Hugging Facehuggingface.co/Valdemardi/DeepSeek-R1-Distill-Qwen-32B-AWQ
对于无法访问Huggingface的国内用户来说,可以通过HF_MIRROR的镜像网站来下载模型:
Valdemardi (Ville Ahlgren)hf-mirror.com/Valdemardi
这里下载模型有2种方式:
1.通过网页端手动一个一个下载模型文件。
2.使用Huggingface-cli命令一次性拉取整个模型文件夹到本地路径。使用Huggingface命令行下载的话需要简单进行一些设置。首先使用pip安装命令行工具Huggingface-hub
pip install -U huggingface_hub
然后设置Huggingface的镜像站环境变量:
对于linux系统或者WSL,直接在终端中输入
export HF_ENDPOINT=https://hf-mirror.com
windows系统则是输入
set HF_ENDPOINT=https://hf-mirror.com
然后使用Huggingface-cli命令进行下载,这个命令的使用方法如下所示:
huggingface-cli download Valdemardi/DeepSeek-R1-Distill-Qwen-
32B-AWQ --local-dir models/DeepSeek-R1-32B
其中Valdemardi/DeepSeek-R1-Distill-Qwen-32B-AWQ对应的是Huggingface上项目的链接地址,–local-dir参数为你本地要保存的模型路径,我这里是在vllm文件夹下新建了一个models文件夹用于存放模型文件。
这样使用一条命令就可以快速拉取全部模型文件夹了。接下来我们需要创建一个docker启动的参数文件,文件名命名为docker-compose.yml
大家可以参考我的参数直接进行创建:
services:
vllm:
container_name: vllm
restart: no
image: registry.cn-hangzhou.aliyuncs.com/hanfangyuan/vllm-openai:latest
ipc: host
environment:
- CUDA_VISIBLE_DEVICES=0,1 # 指定使用 GPU 0 和 1
volumes:
- ./models:/models command: [
"--model", "/models/DeepSeek-R1-Distill-Qwen-32B-AWQ",
"--served-model-name", "DeepSeek-R1-Distill-Qwen-32B-AWQ",
"--trust-remote-code",
"--quantization", "awq_marlin",
"--max-model-len", "18432",
"--max-num-batched-tokens", "512",
"--max-num-seqs", "1",
"--tensor-parallel-size", "2",
"--port", "8003",
"--enforce-eager",
"--gpu-memory-utilization", "0.95",
"--enable-chunked-prefill"
]
ports:
- 8003:8003
deploy:
resources:
reservations:
devices:
- - driver: nvidia
count: all
capabilities: [gpu]
这里简单说明一下配置参数的含义:
model: “./models/DeepSeek-R1-Distill-Qwen-32B-AWQ” # 替换为你实际的模型路径
tensor_parallel_size: 2 # 使用双卡 4090
trust_remote_code: true
max_model_len: 18432 # 最大模型长度
max-num-batched-tokens: 512 # 设置批量处理的token数为512,平衡处理速度和显存占用。
gpu_memory_utilization: 0.95 # GPU 内存利用率
quantization: “awq_marlin” # 指定量化方式为 AWQ
enable-chunked-prefill: true # 启用分块预填充,减少显存碎片。
enforce-eager: true # 启用 eager 模式,加快推理速度。
port: 8003 #使用8003端口号
配置文件创建完成后,记得保存!!!然后在终端中输入:
docker compose up -d
然后可以在终端中看到docker拉取镜像:
当出现如下提示时,就代表docker镜像已经拉取完成了
镜像拉取完成后,后台会自动启动vllm,但是我们看不到启动的进程,这个时候我们需要在终端再输出查看docker日志的命令
docker-compose logs -f
然后就可以看到后台进程了,这里需要注意的是,因为我是使用wsl部署的,因此加载模型比较耗费时间,如下图所示,进程走到加载模型这里就问题不大了,接下来就只需要等模型加载完成
如下图所示。当出现Uvicorn running on http://0.0.0.0:8003 (Press CTRL+C to quit) 这一行信息时,说明模型已经加载并成功启动。
到了这一步说明我们本地模型部署已经成功了,我们查看一下显存占用:
可见两张4090 共计48G的显存几乎要跑满了,这个时候你可能会疑问,真的需要这么大的显存吗?其实单卡4090就可以跑这款32B模型,因为我们部署的是AWQ量化后的模型,结合我前面设置的参数大致只需要22.79G的显存即可运行,之所以目前两张卡都占满,是因为我设置gpu_memory_utilization: 0.95这个参数,这个意思是显存占用率设置为95%,目的是尽可能的设置更长的上下文,以及更高更快的token输出速度。我知道目前网上已经有很多神人1bit量化671B满血版的都大有人在,但是在我看来,类似R1这种强推理模型如果损失了太多上下文会严重影响推理效果,众所周知推理模型中间的思考过程会占用非常高的输出token,如果上下文太短,很难用起来。因此这里我设置了尽可能高的上下文长度的原因就在于此。
三、调用测试
接下来我们换一台设备,在局域网内调用在docker部署的DeepSeek-R1-32B大模型。在推理测试阶段,我们使用的图形显示框架为openwebUI,这是一个类chatGPT前端页面风格的开源项目,整体的页面风格是这样的:
openwebUI的github项目主页为:
open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, …)github.com/open-webui/open-webui
我们依旧使用docker来部署openwebUI
首先还是使用git从GitHub上拉取项目代码:
git clone https://github.com/open-webui/open-webui.git
然后在终端中输入如下docker命令:
docker run -d -p 3000:8080 -e OPENAI_API_KEY=magicyang2025 -e OPENAI_API_BASE_URL=="http://192.168.90.8:8003/">http://192.168.90.8:8003 -v open-webui:/app/backend/data --name open-webui --restart always http://ghcr.io/open-webui/open-webui:main
请注意!!!这里需要将192.168.90.8替换为你实际的IP地址,如果你是同一台设备部署openwebUI这里就填localhost或者127.0.0.1,如果是局域网内其他设备这里就需要填你部署deepseek的那台设备的局域网IP。
当镜像拉取完毕之后,就可以在本地打开 http://localhost:3000/
这个就是openwebUI本地的主页面了,正常第一次登陆需要输入管理员账号和密码,这个随便设置即可。设置完以后登陆账号,即可见到主页面如下:
到了这一部,我们还不一定可以使用模型,左上角有一个选择一个模型的按钮,点击进去看看是否有我们部署好的deepseek-R1模型
如果这里没有看到我们部署的模型,我们就需要手动去配置一下了,配置模型过程如下:
1.首先左下角管理员名称哪里点击一下,会显示设置按钮:
2.在设置中找到管理员设置
3.点击进入管理员设置后选择外部链接。
然后把右上角的openAI API的开关打开,在地址栏中输入http://<你部署deepseek- R1模型设备的IP地址>:8003/v1,后面加密的部分实际上是API key,这里你可以随便填写。
4.选择模型
如果你的局域网连接正常的话,这里就可以显示deepseek的模型名称了,记得右上角的开关要点开,这样模型才能启用。
接下来回到主页面,输入你的问题。
OK到这里说明我们已经成功完成了将32B的deepseek- R1模型部署为openAI格式的API接口,可以提供给局域网内的用户请求访问,因为我这次采用了双卡进行部署,因此无论是kv cache还是输出token的速度都基本上可以达到商用使用级别,查看docker后台日志可以看到token的输出速度可以达到31.8tokens/s的速度。这种速度在本地是可以流畅访问使用的。
点击thought按钮还可以看到模型输出的思考过程:
四、联网搜索
最后我们再加入一个重磅功能也就是让Deepseek-R1搭配上搜索引擎直接起飞,使用openwebUI搭配搜索引擎配置会相对简单许多。首先在管理员设置页面找到联网搜索,然后打开右上角的开关。
在开关下方的菜单栏中选择一个搜索引擎,我这里选择的是可以免费使用的duckduckgo,这里如果有搜索引擎的API也可以选择其他搜索引擎。选择好后,点击保存回到主页面,在主页面聊天框左侧+号这里点击打开联网搜索的开关。
OK,到这里我们可以发现deepseek已经具备使用搜索引擎联网检索信息的功能了!到这里我们的部署教程也全部结束了,如果你也想本地部署甚至是在公网部署提供API服务,或者独立建站,本教程都是一个不错的开始,赶快开始行动吧!
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。