DeepSeek 内网部署实战:从模型启动到 WebUI 接入全流程命令手册
DeepSeek 私有化部署方案|附完整命令
随着大模型在企业知识库、代码助手、智能客服、数据分析、办公自动化等场景中的应用越来越深入,越来越多团队开始关注 DeepSeek 私有化部署。相比直接调用公有云 API,私有化部署最大的优势在于:数据不出内网、权限可控、成本可预测、可深度集成企业系统,并且可以根据业务需求进行模型微调、量化、缓存和推理优化。
本文将从部署方案选型、硬件配置建议、环境准备、Ollama 快速部署、vLLM 高性能部署、Open WebUI 可视化接入、API 调用、Docker Compose 一体化部署、内网访问、安全加固、常见问题等方面,完整介绍 DeepSeek 私有化部署方案,并附上可直接执行的命令。
一、DeepSeek 私有化部署适合哪些场景?
DeepSeek 私有化部署并不是单纯“把模型跑起来”,而是将大模型能力纳入企业内部 IT 架构中,形成可控、可维护、可扩展的 AI 服务。
常见适用场景包括:
-
企业知识库问答
- 内部制度、产品文档、技术文档、合同条款、售后手册等资料问答。
- 可结合 RAG 检索增强生成方案,避免模型胡编乱造。
-
代码助手
- 支持代码解释、代码生成、SQL 编写、Bug 排查、接口文档生成。
- 对研发团队而言,私有化部署可以避免代码外泄风险。
-
智能客服
- 在企业内网部署模型,对接客服系统、工单系统、CRM 系统。
- 可针对行业话术、产品信息进行定制优化。
-
办公自动化
- 邮件撰写、会议纪要、周报生成、文本润色、数据分析。
- 可部署在内网,满足合规和审计要求。
-
数据安全要求高的行业
- 金融、医疗、政务、制造、能源等行业,对数据出境、数据泄露非常敏感。
- 私有化部署可以实现本地推理,不依赖外部 API。
二、方案选型:Ollama、vLLM、Transformers 如何选择?
DeepSeek 私有化部署常见方案主要有三类:Ollama、vLLM 和 Transformers 原生推理。
| 部署方式 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| Ollama | 部署简单、命令少、适合快速体验 | 高并发能力有限,深度调优空间较小 | 个人、团队内部测试、小规模服务 |
| vLLM | 推理性能强、支持 OpenAI API 格式、高并发友好 | 环境要求更高,需要 GPU 支持 | 企业生产环境、API 服务、高并发 |
| Transformers | 灵活度最高,适合研究和二次开发 | 需要写代码,性能优化复杂 | 模型研究、微调、特殊推理逻辑 |
如果你是第一次部署 DeepSeek,建议先使用 Ollama 快速跑通;如果要在生产环境对外提供 API 服务,建议使用 vLLM;如果你需要做模型微调、结构修改或复杂实验,可以使用 Hugging Face Transformers。
三、模型选择建议
DeepSeek 旗下模型较多,实际部署时应根据硬件资源和业务需求选择合适版本。常见选择如下:
| 模型 | 特点 | 适合场景 |
|---|---|---|
| DeepSeek-R1-Distill-Qwen-1.5B | 体积小,资源要求低 | 低成本测试、边缘设备 |
| DeepSeek-R1-Distill-Qwen-7B | 综合能力较好 | 个人电脑、小型服务器 |
| DeepSeek-R1-Distill-Llama-8B | 推理能力较强 | 代码、问答、推理任务 |
| DeepSeek-R1-Distill-Qwen-14B | 能力更强,资源要求更高 | 企业内部助手 |
| DeepSeek-R1-Distill-Qwen-32B | 综合能力优秀 | 高质量问答、复杂推理 |
| DeepSeek-R1 | 原版推理能力强 | 高端 GPU 集群或专业推理服务 |
一般建议:
- 本地笔记本体验:选择 1.5B、7B 量化模型。
- 单张消费级显卡:可以尝试 7B、8B、14B 量化模型。
- 单张高显存专业卡:可以部署 32B 量化或半精度模型。
- 多 GPU 服务器:可以考虑更大模型或更高并发服务。
四、硬件配置建议
大模型部署对显存要求较高。以下配置仅供参考,实际还会受到量化方式、上下文长度、并发数、推理框架等因素影响。
1. 最低体验配置
适合跑 1.5B 或 7B 量化模型。
CPU:8 核以上
内存:16GB 以上
GPU:可选,推荐 8GB 显存以上
硬盘:SSD,至少 50GB 可用空间
系统:Ubuntu 22.04 / Debian 12 / CentOS Stream / Windows WSL2
2. 中小团队配置
适合跑 7B、8B、14B 模型,供内部少量用户使用。
CPU:16 核以上
内存:64GB 以上
GPU:NVIDIA RTX 3090 / 4090 / A5000 / A6000
显存:24GB 以上
硬盘:SSD,至少 200GB 可用空间
系统:Ubuntu 22.04 LTS
3. 企业生产配置
适合部署 32B 或更大模型,并提供 API 服务。
CPU:32 核以上
内存:128GB 以上
GPU:A100 40GB / A100 80GB / H100 / 多卡服务器
显存:40GB-80GB 以上
硬盘:NVMe SSD,500GB 以上
网络:万兆内网优先
系统:Ubuntu 22.04 LTS
五、基础环境准备
以下示例以 Ubuntu 22.04 为例。
1. 更新系统
sudo apt update
sudo apt upgrade -y
2. 安装常用工具
sudo apt install -y curl wget git vim htop net-tools lsof unzip build-essential
3. 查看系统信息
uname -a
lsb_release -a
free -h
df -h
4. 查看 GPU 信息
如果服务器有 NVIDIA GPU,执行:
nvidia-smi
如果提示命令不存在,说明未安装 NVIDIA 驱动或环境未配置。
六、安装 NVIDIA 驱动与 CUDA
如果你的机器已经可以正常执行 nvidia-smi,可以跳过本节。
1. 查看推荐驱动
ubuntu-drivers devices
2. 自动安装推荐驱动
sudo ubuntu-drivers autoinstall
安装完成后重启:
sudo reboot
重启后验证:
nvidia-smi
如果能看到 GPU 型号、驱动版本、显存使用情况,说明驱动安装成功。
七、方案一:使用 Ollama 快速部署 DeepSeek
Ollama 是最适合快速体验大模型的工具之一。它安装简单、模型管理方便,并提供本地 API 服务。
1. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
2. 启动 Ollama 服务
通常安装后会自动启动,如果没有启动,可以执行:
sudo systemctl start ollama
设置开机自启:
sudo systemctl enable ollama
查看服务状态:
sudo systemctl status ollama
3. 拉取 DeepSeek 模型
例如拉取 DeepSeek R1 7B 版本:
ollama pull deepseek-r1:7b
如果你想部署更小的版本:
ollama pull deepseek-r1:1.5b
如果机器性能较好,可以尝试:
ollama pull deepseek-r1:14b
或者:
ollama pull deepseek-r1:32b
4. 运行模型
ollama run deepseek-r1:7b
进入交互界面后,可以直接输入问题:
请用中文解释一下什么是私有化部署?
5. 查看已安装模型
ollama list
6. 删除模型
ollama rm deepseek-r1:7b
7. Ollama API 调用测试
Ollama 默认监听本地 11434 端口。可以使用 curl 调用:
curl http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1:7b",
"prompt": "请写一段关于企业知识库建设的介绍",
"stream": false
}'
8. 开启局域网访问
默认情况下,Ollama 可能只监听 127.0.0.1。如果希望局域网其他机器访问,需要配置监听地址。
创建或编辑 systemd 配置:
sudo systemctl edit ollama
填入:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存后执行:
sudo systemctl daemon-reload
sudo systemctl restart ollama
检查端口监听:
ss -lntp | grep 11434
如果看到 0.0.0.0:11434,说明已经允许局域网访问。
9. 局域网调用示例
假设服务器 IP 为 192.168.1.100:
curl http://192.168.1.100:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1:7b",
"prompt": "请总结一下私有化部署大模型的优势",
"stream": false
}'
八、方案二:使用 vLLM 部署 DeepSeek API 服务
如果企业需要更高性能、更高并发、更接近 OpenAI API 格式的接口,推荐使用 vLLM。
vLLM 的优势包括:
- 支持连续批处理,提高吞吐量;
- 支持 OpenAI Compatible API;
- 对长文本和高并发更友好;
- 适合作为企业内部模型服务网关。
九、使用 Conda 准备 Python 环境
1. 安装 Miniconda
mkdir -p ~/software
cd ~/software
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
安装过程中按提示确认。安装完成后刷新环境变量:
source ~/.bashrc
查看 conda 是否可用:
conda --version
2. 创建 Python 环境
conda create -n deepseek python=3.10 -y
conda activate deepseek
3. 升级 pip
python -m pip install --upgrade pip
十、安装 PyTorch 与 vLLM
不同 CUDA 版本对应的 PyTorch 安装命令可能不同。下面以 CUDA 12.1 为例。
1. 安装 PyTorch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
验证 PyTorch 是否识别 GPU:
python - <<'PY'
import torch
print("CUDA available:", torch.cuda.is_available())
print("GPU count:", torch.cuda.device_count())
if torch.cuda.is_available():
print("GPU name:", torch.cuda.get_device_name(0))
PY
2. 安装 vLLM
pip install vllm
验证安装:
python -m vllm.entrypoints.openai.api_server --help
十一、下载 DeepSeek 模型
这里以 Hugging Face 模型为例。由于不同地区网络环境不同,企业环境中通常建议提前离线下载模型,再放到服务器指定目录。
1. 安装 huggingface_hub
pip install -U huggingface_hub
2. 下载模型
例如下载 DeepSeek-R1-Distill-Qwen-7B:
mkdir -p /data/models
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
--local-dir /data/models/DeepSeek-R1-Distill-Qwen-7B
如果要下载 14B:
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-14B \
--local-dir /data/models/DeepSeek-R1-Distill-Qwen-14B
如果要下载 32B:
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \
--local-dir /data/models/DeepSeek-R1-Distill-Qwen-32B
3. 查看模型文件
ls -lh /data/models/DeepSeek-R1-Distill-Qwen-7B
通常会看到:
config.json
generation_config.json
model-00001-of-0000x.safetensors
tokenizer.json
tokenizer_config.json
十二、启动 vLLM OpenAI API 服务
1. 单卡启动 7B 模型
CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server \
--model /data/models/DeepSeek-R1-Distill-Qwen-7B \
--served-model-name deepseek-r1-7b \
--host 0.0.0.0 \
--port 8000 \
--dtype auto \
--max-model-len 8192 \
--gpu-memory-utilization 0.90
参数说明:
--model:模型路径;--served-model-name:对外暴露的模型名称;--host 0.0.0.0:允许局域网访问;--port 8000:API 服务端口;--dtype auto:自动选择精度;--max-model-len 8192:最大上下文长度;--gpu-memory-utilization 0.90:使用 90% GPU 显存。
2. 后台启动
nohup python -m vllm.entrypoints.openai.api_server \
--model /data/models/DeepSeek-R1-Distill-Qwen-7B \
--served-model-name deepseek-r1-7b \
--host 0.0.0.0 \
--port 8000 \
--dtype auto \
--max-model-len 8192 \
--gpu-memory-utilization 0.90 \
> /data/logs/deepseek-vllm.log 2>&1 &
如果 /data/logs 不存在,先创建:
mkdir -p /data/logs
查看日志:
tail -f /data/logs/deepseek-vllm.log
3. 多卡启动 32B 模型
如果你有 2 张 GPU,可以使用张量并行:
CUDA_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.openai.api_server \
--model /data/models/DeepSeek-R1-Distill-Qwen-32B \
--served-model-name deepseek-r1-32b \
--host 0.0.0.0 \
--port 8000 \
--dtype auto \
--tensor-parallel-size 2 \
--max-model-len 8192 \
--gpu-memory-utilization 0.90
如果有 4 张 GPU:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m vllm.entrypoints.openai.api_server \
--model /data/models/DeepSeek-R1-Distill-Qwen-32B \
--served-model-name deepseek-r1-32b \
--host 0.0.0.0 \
--port 8000 \
--dtype auto \
--tensor-parallel-size 4 \
--max-model-len 16384 \
--gpu-memory-utilization 0.90
十三、测试 vLLM API
vLLM 提供 OpenAI Compatible API,可以像调用 OpenAI 一样调用本地 DeepSeek。
1. 查看模型列表
curl http://localhost:8000/v1/models
2. Chat Completions 调用
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1-7b",
"messages": [
{
"role": "system",
"content": "你是一个专业的企业级 AI 助手,请使用中文回答。"
},
{
"role": "user",
"content": "请说明 DeepSeek 私有化部署的主要优势。"
}
],
"temperature": 0.6,
"max_tokens": 1024
}'
3. Python 调用示例
安装 OpenAI SDK:
pip install openai
创建测试文件:
vim test_deepseek.py
写入:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8000/v1",
api_key="EMPTY"
)
response = client.chat.completions.create(
model="deepseek-r1-7b",
messages=[
{"role": "system", "content": "你是一个专业的中文助手。"},
{"role": "user", "content": "请用三点说明私有化部署大模型的价值。"}
],
temperature=0.6,
max_tokens=800
)
print(response.choices[0].message.content)
执行:
python test_deepseek.py
十四、使用 Docker 部署 Open WebUI
如果希望给业务人员、测试人员或团队成员提供一个类似 ChatGPT 的网页界面,可以部署 Open WebUI。
1. 安装 Docker
curl -fsSL https://get.docker.com | bash
启动 Docker:
sudo systemctl enable docker
sudo systemctl start docker
将当前用户加入 docker 组:
sudo usermod -aG docker $USER
重新登录终端后验证:
docker version
2. 安装 Docker Compose
较新版 Docker 通常自带 compose 插件:
docker compose version
如果没有,可以安装:
sudo apt install -y docker-compose-plugin
3. 使用 Open WebUI 接入 Ollama
如果你使用 Ollama,可以执行:
docker run -d \
--name open-webui \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--add-host=host.docker.internal:host-gateway \
--restart always \
ghcr.io/open-webui/open-webui:main
访问:
http://服务器IP:3000
例如:
http://192.168.1.100:3000
4. 使用 Open WebUI 接入 vLLM
如果使用 vLLM 的 OpenAI Compatible API,可以这样启动:
docker run -d \
--name open-webui \
-p 3000:8080 \
-e OPENAI_API_BASE_URL=http://host.docker.internal:8000/v1 \
-e OPENAI_API_KEY=EMPTY \
-v open-webui:/app/backend/data \
--add-host=host.docker.internal:host-gateway \
--restart always \
ghcr.io/open-webui/open-webui:main
访问页面后,在模型列表中选择 deepseek-r1-7b,即可进行对话。
十五、Docker Compose 一体化部署示例
如果你希望通过 Docker Compose 管理 Open WebUI,可以创建目录:
mkdir -p /data/deepseek-stack
cd /data/deepseek-stack
创建文件:
vim docker-compose.yml
写入以下内容,用于接入 vLLM:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
environment:
- OPENAI_API_BASE_URL=http://host.docker.internal:8000/v1
- OPENAI_API_KEY=EMPTY
volumes:
- open-webui:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always
volumes:
open-webui:
启动:
docker compose up -d
查看容器:
docker ps
查看日志:
docker logs -f open-webui
停止:
docker compose down
十六、配置 Nginx 反向代理
如果企业内部希望通过统一域名访问,例如:
http://deepseek.intra.company.com
可以使用 Nginx 做反向代理。
1. 安装 Nginx
sudo apt install -y nginx
2. 创建配置文件
sudo vim /etc/nginx/conf.d/deepseek-webui.conf
写入:
server {
listen 80;
server_name deepseek.intra.company.com;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
}
测试配置:
sudo nginx -t
重载:
sudo systemctl reload nginx
十七、生产环境安全建议
私有化部署不等于天然安全,尤其当服务开放给多个部门使用时,需要做好安全控制。
1. 限制访问来源
如果只允许内网访问,可以使用防火墙限制端口。
安装 ufw:
sudo apt install -y ufw
允许 SSH:
sudo ufw allow 22/tcp
允许 WebUI:
sudo ufw allow from 192.168.0.0/16 to any port 3000
允许 vLLM API:
sudo ufw allow from 192.168.0.0/16 to any port 8000
启用防火墙:
sudo ufw enable
查看规则:
sudo ufw status
2. 不建议裸露 API 到公网
无论是 Ollama 的 11434 端口,还是 vLLM 的 8000 端口,都不建议直接暴露到公网。原因包括:
- 容易被恶意调用产生高额资源消耗;
- 可能被提示词攻击;
- 可能泄露内部模型能力和数据;
- 缺乏统一鉴权和审计。
如果必须外部访问,建议通过 VPN、堡垒机、API 网关、Nginx 鉴权、OAuth2 或企业 SSO 进行控制。
3. 增加 Nginx Basic Auth
安装工具:
sudo apt install -y apache2-utils
创建账号:
sudo htpasswd -c /etc/nginx/.htpasswd admin
修改 Nginx 配置,在 location / 中增加:
auth_basic "DeepSeek Private Service";
auth_basic_user_file /etc/nginx/.htpasswd;
重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
十八、性能优化建议
1. 控制上下文长度
上下文长度越大,显存占用越高,推理速度越慢。如果业务不需要超长文本,不建议盲目设置 32K、64K。
例如:
--max-model-len 8192
通常已经可以满足大多数企业问答场景。
2. 合理设置显存利用率
--gpu-memory-utilization 0.85
如果设置过高,可能导致 OOM;如果设置过低,模型并发能力受限。一般建议在 0.85 到 0.92 之间调整。
3. 使用量化模型
如果显存不足,可以使用量化模型,例如 AWQ、GPTQ、GGUF 等格式。量化可以大幅降低显存占用,但可能带来一定精度损失。
4. 分离模型服务和应用服务
生产环境建议将模型推理服务、WebUI、RAG 检索服务、数据库、向量库分开部署,便于扩展和故障隔离。
5. 使用日志与监控
可以监控以下指标:
- GPU 利用率;
- GPU 显存占用;
- 请求量;
- 平均响应时间;
- Token 生成速度;
- 错误率;
- 并发数。
查看 GPU:
watch -n 1 nvidia-smi
查看端口:
ss -lntp
查看进程:
ps aux | grep vllm
十九、常见问题排查
1. CUDA out of memory
原因通常是模型太大、上下文太长或并发过高。
解决方法:
--max-model-len 4096
或者降低显存利用率:
--gpu-memory-utilization 0.80
也可以换更小模型,例如从 14B 换成 7B。
2. nvidia-smi 正常,但 PyTorch 识别不到 GPU
检查 PyTorch CUDA 版本是否正确:
python -c "import torch; print(torch.version.cuda); print(torch.cuda.is_available())"
如果不匹配,重新安装对应 CUDA 版本的 PyTorch。
3. Open WebUI 访问不到 vLLM
检查 vLLM 是否正常:
curl http://127.0.0.1:8000/v1/models
检查容器是否能访问宿主机:
docker exec -it open-webui bash
curl http://host.docker.internal:8000/v1/models
如果不通,确认启动容器时是否添加:
--add-host=host.docker.internal:host-gateway
4. Ollama 局域网无法访问
检查监听地址:
ss -lntp | grep 11434
如果仍是 127.0.0.1:11434,需要配置:
Environment="OLLAMA_HOST=0.0.0.0:11434"
然后重启:
sudo systemctl daemon-reload
sudo systemctl restart ollama
5. 模型下载速度慢
可以采用以下方式:
- 在网络较好的机器提前下载;
- 使用企业镜像仓库;
- 使用离线拷贝;
- 将模型文件放入统一模型目录;
- 在生产环境禁用临时在线下载。
二十、推荐落地架构
一个较完整的企业 DeepSeek 私有化部署架构可以设计为:
用户浏览器
↓
Nginx / API 网关 / SSO
↓
Open WebUI / 企业业务系统
↓
RAG 服务 / Agent 服务 / 权限控制服务
↓
vLLM DeepSeek 推理服务
↓
GPU 服务器 / 模型文件 / 日志监控
如果是知识库问答,还可以增加:
文档上传
↓
文档解析
↓
文本切分
↓
Embedding 向量化
↓
向量数据库
↓
检索召回
↓
DeepSeek 生成答案
常见向量库可以选择 Milvus、Qdrant、Weaviate、Elasticsearch、pgvector 等。
二十一、最终建议
如果只是快速体验 DeepSeek 私有化部署,建议使用:
curl -fsSL https://ollama.com/install.sh | sh
ollama pull deepseek-r1:7b
ollama run deepseek-r1:7b
如果是企业生产环境,建议使用:
conda create -n deepseek python=3.10 -y
conda activate deepseek
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model /data/models/DeepSeek-R1-Distill-Qwen-7B \
--served-model-name deepseek-r1-7b \
--host 0.0.0.0 \
--port 8000 \
--dtype auto \
--max-model-len 8192 \
--gpu-memory-utilization 0.90
再配合 Open WebUI:
docker run -d \
--name open-webui \
-p 3000:8080 \
-e OPENAI_API_BASE_URL=http://host.docker.internal:8000/v1 \
-e OPENAI_API_KEY=EMPTY \
-v open-webui:/app/backend/data \
--add-host=host.docker.internal:host-gateway \
--restart always \
ghcr.io/open-webui/open-webui:main
总结
DeepSeek 私有化部署的核心价值,在于将大模型能力安全、稳定、可控地引入企业内部系统。对于个人和小团队,Ollama 是最快的入门方式;对于企业级生产环境,vLLM 更适合提供高性能 API 服务;如果需要网页交互体验,可以接入 Open WebUI;如果要建设知识库问答,则需要进一步结合 RAG、向量数据库、权限系统和日志审计。
真正落地时,建议按照“先跑通、再优化、再治理”的顺序推进:
- 先用 Ollama 或 vLLM 跑通 DeepSeek 模型;
- 再接入 WebUI 或业务系统;
- 再根据并发、延迟、显存占用做性能调优;
- 最后补齐鉴权、监控、日志、安全审计和知识库能力。
只要硬件资源规划合理、模型选择得当、服务边界清晰,DeepSeek 完全可以成为企业内部 AI 助手、知识库平台、代码助手和智能业务系统的重要基础能力。