DeepSeek 本地部署实战:从 Ollama 到 vLLM 的完整落地指南
DeepSeek 私有化部署方案|附完整命令
随着大模型在企业知识问答、代码辅助、智能客服、数据分析、办公自动化等场景中的应用越来越普遍,越来越多企业开始关注 DeepSeek 私有化部署。相比直接调用云端 API,私有化部署最大的优势在于:数据不出本地、权限可控、成本可预测、可与内部系统深度集成,并且能够根据企业自身需求进行模型选择、参数调优和应用封装。
本文将围绕 DeepSeek 私有化部署进行系统讲解,包含部署架构、硬件建议、环境准备、Ollama 部署方式、Docker 部署方式、Open WebUI 可视化界面部署、API 调用示例、常见问题和优化建议,并附上完整命令,方便直接落地实践。
一、为什么要私有化部署 DeepSeek?
DeepSeek 是近年来非常受关注的大语言模型系列,具备较强的推理、代码、中文理解和通用对话能力。对于企业来说,私有化部署 DeepSeek 主要有以下几个价值。
1. 数据安全可控
很多企业内部知识库、客户数据、合同文件、研发文档、财务数据等都不适合上传到外部平台。通过私有化部署,模型运行在企业内网或私有云环境中,数据无需离开本地,大幅降低数据泄露风险。
2. 降低长期使用成本
如果业务调用量较大,长期依赖云端 API 可能产生较高费用。私有化部署虽然前期需要投入服务器和 GPU 资源,但在高频调用场景下,长期成本更加可控。
3. 支持深度集成
私有化部署后,可以将 DeepSeek 接入企业已有系统,例如 OA、CRM、ERP、知识库、工单系统、代码仓库、数据中台等,实现内部智能助手、知识问答、文档总结、自动生成报表等功能。
4. 可按需选择模型
DeepSeek 有不同参数规模和不同用途的模型,例如通用对话模型、代码模型、推理模型等。企业可以根据自身硬件能力和业务要求选择合适的模型版本。
二、私有化部署整体方案
DeepSeek 私有化部署通常有几种方式:
| 部署方式 | 适合场景 | 优点 | 缺点 |
|---|---|---|---|
| Ollama 部署 | 个人、团队、轻量企业场景 | 部署简单、命令少、上手快 | 高级调优能力有限 |
| Docker + vLLM 部署 | 企业生产环境、高并发 API 服务 | 性能强、支持并发、适合服务化 | 部署复杂度较高 |
| LM Studio 本地部署 | 桌面端测试 | 图形化操作简单 | 不适合生产环境 |
| Open WebUI + Ollama | 企业内部聊天助手 | 有 Web 界面、体验好 | 依赖 Ollama 后端 |
| Kubernetes 部署 | 大规模企业集群 | 可扩展、易运维 | 成本和复杂度较高 |
本文重点介绍两种最常见、最容易落地的方案:
-
Ollama + DeepSeek + Open WebUI
适合快速搭建内部 AI 助手。 -
Docker + vLLM + DeepSeek
适合企业 API 服务化部署。
三、硬件配置建议
不同规模的 DeepSeek 模型对硬件要求不同。私有化部署前,建议先明确使用场景:是个人测试、部门内部使用,还是生产级高并发服务。
1. CPU 部署
CPU 也可以运行量化后的模型,但速度较慢,适合测试或低频使用。
建议配置:
CPU:16 核以上
内存:32GB 以上
磁盘:100GB SSD
系统:Ubuntu 22.04 LTS
2. 单卡 GPU 部署
适合中小团队使用,常见于知识问答、智能助手、代码辅助等场景。
建议配置:
GPU:NVIDIA RTX 3090 / 4090 / A5000 / A6000
显存:24GB 以上
内存:64GB 以上
磁盘:500GB SSD
系统:Ubuntu 22.04 LTS
3. 多卡 GPU 部署
适合较大模型和高并发 API 服务。
建议配置:
GPU:A100 / A800 / H100 / H800 / L20 / L40S
显存:80GB 或多卡并行
内存:128GB 以上
磁盘:1TB NVMe SSD
网络:万兆内网优先
系统:Ubuntu 22.04 LTS
4. 模型与显存参考
以下为大致参考,具体还要看量化方式、上下文长度、推理框架和并发数量。
| 模型规模 | 推荐显存 | 适合场景 |
|---|---|---|
| 1.5B | 4GB~8GB | 轻量问答、学习测试 |
| 7B / 8B | 8GB~16GB | 个人助手、轻量企业应用 |
| 14B | 16GB~24GB | 中文问答、代码辅助 |
| 32B | 40GB~80GB | 企业级推理、复杂任务 |
| 70B 以上 | 多卡 80GB | 高质量推理、大规模应用 |
四、环境准备
以下命令以 Ubuntu 22.04 LTS 为例。
1. 更新系统
sudo apt update && sudo apt upgrade -y
安装基础工具:
sudo apt install -y curl wget git vim htop unzip net-tools lsof build-essential
2. 检查 GPU
如果服务器有 NVIDIA GPU,先检查显卡是否识别:
lspci | grep -i nvidia
查看驱动状态:
nvidia-smi
如果提示找不到命令,说明 NVIDIA 驱动未安装。
3. 安装 NVIDIA 驱动
查看可用驱动:
ubuntu-drivers devices
自动安装推荐驱动:
sudo ubuntu-drivers autoinstall
重启服务器:
sudo reboot
重启后再次检查:
nvidia-smi
如果能看到 GPU 型号、驱动版本、显存占用等信息,则说明驱动安装成功。
五、方案一:使用 Ollama 快速部署 DeepSeek
Ollama 是目前非常流行的本地大模型运行工具,支持 macOS、Linux、Windows,可以快速拉取和运行多种开源模型。对于多数企业内网测试和轻量使用场景,Ollama 是最简单的选择。
1. 安装 Ollama
执行以下命令:
curl -fsSL https://ollama.com/install.sh | sh
安装完成后检查版本:
ollama --version
查看服务状态:
systemctl status ollama
如果服务没有启动,可以执行:
sudo systemctl start ollama
设置开机自启:
sudo systemctl enable ollama
2. 拉取 DeepSeek 模型
Ollama 支持多个 DeepSeek 相关模型。可以根据机器配置选择模型。
例如拉取 DeepSeek-R1 7B 量化模型:
ollama pull deepseek-r1:7b
如果显存更大,可以拉取 14B:
ollama pull deepseek-r1:14b
如果只是轻量测试,可以使用 1.5B:
ollama pull deepseek-r1:1.5b
查看本地模型:
ollama list
3. 命令行运行模型
启动对话:
ollama run deepseek-r1:7b
输入问题测试:
请用中文解释一下什么是 RAG 检索增强生成。
退出对话:
/bye
4. 通过 API 调用 Ollama
Ollama 默认监听本地 11434 端口。
测试接口:
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:7b",
"prompt": "请写一段关于企业知识库建设的说明",
"stream": false
}'
如果想使用流式输出:
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:7b",
"prompt": "请列出私有化部署大模型的优势",
"stream": true
}'
5. 修改 Ollama 监听地址
默认情况下,Ollama 只监听本机。如果希望局域网其他机器访问,需要修改环境变量。
创建 systemd 配置目录:
sudo mkdir -p /etc/systemd/system/ollama.service.d
创建配置文件:
sudo vim /etc/systemd/system/ollama.service.d/override.conf
写入以下内容:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
重新加载 systemd:
sudo systemctl daemon-reload
重启 Ollama:
sudo systemctl restart ollama
检查端口监听:
ss -lntp | grep 11434
开放防火墙端口:
sudo ufw allow 11434/tcp
此时,局域网其他机器可以通过以下地址访问:
http://服务器IP:11434
六、部署 Open WebUI 可视化界面
只有命令行和 API 对普通用户不够友好。可以通过 Open WebUI 提供类似 ChatGPT 的 Web 聊天界面,并连接 Ollama 后端。
1. 安装 Docker
如果服务器尚未安装 Docker,可以执行:
curl -fsSL https://get.docker.com | bash
启动 Docker:
sudo systemctl start docker
设置开机自启:
sudo systemctl enable docker
查看 Docker 版本:
docker --version
将当前用户加入 docker 用户组:
sudo usermod -aG docker $USER
重新登录终端,或者执行:
newgrp docker
2. 启动 Open WebUI
如果 Ollama 和 Open WebUI 部署在同一台服务器,可以执行:
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
在 Linux 上,有时 host.docker.internal 不生效,可以改用宿主机 IP,例如:
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://192.168.1.100:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
也可以添加 host 映射:
docker run -d \
--name open-webui \
--restart always \
--add-host=host.docker.internal:host-gateway \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
访问地址:
http://服务器IP:3000
首次进入需要创建管理员账号。登录后,在模型列表中选择 deepseek-r1:7b 即可开始使用。
3. 查看容器状态
docker ps
查看日志:
docker logs -f open-webui
停止服务:
docker stop open-webui
启动服务:
docker start open-webui
删除容器:
docker rm -f open-webui
七、方案二:使用 Docker + vLLM 部署 DeepSeek API 服务
如果企业需要更高性能、更高并发、更标准化的 API 服务,可以使用 vLLM。vLLM 是高性能大模型推理框架,支持连续批处理、PagedAttention、OpenAI API 兼容接口,非常适合生产服务化部署。
注意:vLLM 部署通常需要 NVIDIA GPU 和 CUDA 环境,建议在 Linux 服务器上使用。
1. 安装 NVIDIA Container Toolkit
Docker 想要调用 GPU,需要安装 NVIDIA Container Toolkit。
添加 NVIDIA 软件源:
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
更新软件源:
sudo apt update
安装工具包:
sudo apt install -y nvidia-container-toolkit
配置 Docker:
sudo nvidia-ctk runtime configure --runtime=docker
重启 Docker:
sudo systemctl restart docker
测试 GPU 容器:
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
如果可以正常显示 GPU 信息,说明 Docker 已经能够调用显卡。
2. 准备模型目录
创建模型目录:
mkdir -p /data/models
cd /data/models
如果需要从 Hugging Face 下载模型,可以先安装 Git LFS:
sudo apt install -y git-lfs
git lfs install
例如下载某个 DeepSeek 模型:
git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
进入模型目录:
cd /data/models/DeepSeek-R1-Distill-Qwen-7B
如果下载速度较慢,可以配置镜像站,或提前在有外网的环境下载后拷贝到内网服务器。
3. 启动 vLLM 服务
执行以下命令启动 OpenAI 兼容 API 服务:
docker run -d \
--name deepseek-vllm \
--restart always \
--gpus all \
-p 8000:8000 \
-v /data/models/DeepSeek-R1-Distill-Qwen-7B:/model \
vllm/vllm-openai:latest \
--model /model \
--served-model-name deepseek-r1-7b \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code
查看容器:
docker ps
查看日志:
docker logs -f deepseek-vllm
如果日志中出现类似以下信息,说明服务已经启动:
Uvicorn running on http://0.0.0.0:8000
4. 测试 vLLM API
查看模型列表:
curl http://localhost:8000/v1/models
调用聊天接口:
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.7,
"max_tokens": 1024
}'
流式输出:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1-7b",
"messages": [
{
"role": "user",
"content": "请用五点总结 RAG 系统的核心组成。"
}
],
"stream": true,
"max_tokens": 1024
}'
5. Python 调用示例
安装 OpenAI SDK:
pip install openai
创建测试文件:
vim test_deepseek.py
写入以下代码:
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://127.0.0.1:8000/v1"
)
response = client.chat.completions.create(
model="deepseek-r1-7b",
messages=[
{"role": "system", "content": "你是一个专业的中文助手。"},
{"role": "user", "content": "请解释什么是私有化部署大模型。"}
],
temperature=0.7,
max_tokens=1024
)
print(response.choices[0].message.content)
运行:
python test_deepseek.py
八、使用 Docker Compose 管理服务
生产环境建议使用 Docker Compose 管理 DeepSeek 服务,便于启动、停止、升级和迁移。
1. 创建目录
mkdir -p /data/deepseek-deploy
cd /data/deepseek-deploy
2. 创建 docker-compose.yml
vim docker-compose.yml
写入:
services:
deepseek-vllm:
image: vllm/vllm-openai:latest
container_name: deepseek-vllm
restart: always
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
ports:
- "8000:8000"
volumes:
- /data/models/DeepSeek-R1-Distill-Qwen-7B:/model
command:
- --model
- /model
- --served-model-name
- deepseek-r1-7b
- --host
- 0.0.0.0
- --port
- "8000"
- --trust-remote-code
启动服务:
docker compose up -d
查看日志:
docker compose logs -f
停止服务:
docker compose down
重启服务:
docker compose restart
九、Nginx 反向代理配置
如果需要统一域名、HTTPS、访问控制,可以用 Nginx 反向代理。
1. 安装 Nginx
sudo apt install -y nginx
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
2. 配置反向代理
创建配置文件:
sudo vim /etc/nginx/conf.d/deepseek.conf
写入:
server {
listen 80;
server_name deepseek.example.com;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8000;
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_read_timeout 600s;
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
}
}
检查配置:
sudo nginx -t
重载 Nginx:
sudo systemctl reload nginx
访问测试:
curl http://deepseek.example.com/v1/models
十、增加简单 API Key 认证
vLLM 默认可以设置 API Key。启动时增加:
--api-key your-secret-key
Docker 命令示例:
docker run -d \
--name deepseek-vllm \
--restart always \
--gpus all \
-p 8000:8000 \
-v /data/models/DeepSeek-R1-Distill-Qwen-7B:/model \
vllm/vllm-openai:latest \
--model /model \
--served-model-name deepseek-r1-7b \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--api-key your-secret-key
调用时增加请求头:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key" \
-d '{
"model": "deepseek-r1-7b",
"messages": [
{
"role": "user",
"content": "请介绍一下企业内部智能助手的建设流程。"
}
]
}'
生产环境中不建议直接暴露模型服务端口,应通过 Nginx、网关或内网访问控制进行保护。
十一、私有知识库增强:RAG 方案建议
单独部署 DeepSeek 只能让模型具备通用问答能力。如果希望模型回答企业内部文档、制度、产品资料、合同、代码规范等内容,就需要接入 RAG,即检索增强生成。
典型 RAG 架构如下:
用户问题
↓
问题向量化
↓
向量数据库检索
↓
召回相关文档片段
↓
拼接 Prompt
↓
DeepSeek 生成答案
↓
返回用户
常见组件包括:
| 类型 | 可选工具 |
|---|---|
| 文档解析 | Unstructured、MinerU、PyMuPDF、docling |
| 向量模型 | bge-m3、bge-large-zh、text2vec |
| 向量数据库 | Milvus、Qdrant、Weaviate、FAISS |
| 编排框架 | LangChain、LlamaIndex、Dify、FastGPT |
| 大模型服务 | Ollama、vLLM、TGI |
如果希望快速搭建企业知识库,可以考虑:
- Dify + DeepSeek API
- FastGPT + Ollama
- MaxKB + 本地模型
- LangChain + vLLM + Milvus
对于企业生产环境,建议将大模型服务、向量数据库、知识库管理平台、权限系统和日志系统分层部署,避免所有功能集中在单台机器上。
十二、性能优化建议
1. 选择合适的模型
不要盲目选择最大模型。模型越大,显存占用越高,推理速度越慢。对于一般企业知识问答,7B、14B、32B 已经能够覆盖大量场景。如果是复杂推理、代码生成、数学分析,可以考虑更大模型。
2. 使用量化模型
量化可以显著降低显存占用,例如 4bit、8bit 量化。代价是精度可能略有下降,但对很多业务场景影响不大。
3. 控制上下文长度
上下文越长,占用显存越多,响应速度越慢。RAG 场景中应控制召回文档数量和单段文本长度,避免把大量无关内容塞进 Prompt。
4. 合理设置并发
高并发场景应使用 vLLM,并根据 GPU 显存设置合理参数,例如:
--max-model-len 8192
--gpu-memory-utilization 0.9
--max-num-seqs 64
示例:
docker run -d \
--name deepseek-vllm \
--restart always \
--gpus all \
-p 8000:8000 \
-v /data/models/DeepSeek-R1-Distill-Qwen-7B:/model \
vllm/vllm-openai:latest \
--model /model \
--served-model-name deepseek-r1-7b \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--max-model-len 8192 \
--gpu-memory-utilization 0.9 \
--max-num-seqs 64
5. 使用缓存和网关
对于重复问题,可以增加缓存层;对于多业务系统调用,应通过 API 网关管理鉴权、限流、审计和日志。
十三、常见问题排查
1. Ollama 下载模型很慢怎么办?
可以尝试换网络环境,或提前在外网机器下载,再复制模型文件到内网。也可以选择使用国内镜像资源,但要注意模型来源可信度。
2. vLLM 启动时报显存不足怎么办?
可以尝试:
- 换更小模型;
- 使用量化模型;
- 降低
--max-model-len; - 降低并发参数;
- 使用多卡部署;
- 关闭其他占用 GPU 的进程。
查看 GPU 占用:
nvidia-smi
结束指定进程:
sudo kill -9 进程ID
3. Docker 无法调用 GPU 怎么办?
先测试:
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
如果失败,通常是以下原因:
- NVIDIA 驱动未安装;
- NVIDIA Container Toolkit 未安装;
- Docker 未重启;
- 驱动版本和 CUDA 镜像不兼容。
4. Open WebUI 连接不上 Ollama 怎么办?
检查 Ollama 是否启动:
systemctl status ollama
检查端口:
ss -lntp | grep 11434
检查 Open WebUI 环境变量 OLLAMA_BASE_URL 是否正确。如果容器内访问宿主机不通,可以使用宿主机 IP 或添加:
--add-host=host.docker.internal:host-gateway
5. API 响应很慢怎么办?
可以从以下方面优化:
- 使用 GPU 而非 CPU;
- 使用更小模型;
- 缩短上下文;
- 使用 vLLM;
- 减少并发;
- 使用更高性能显卡;
- 检查是否发生显存溢出或频繁交换内存。
十四、生产环境部署建议
如果要在企业内长期稳定使用,建议不要只停留在“能跑起来”,还需要考虑以下生产要求。
1. 权限控制
不同部门、不同角色应拥有不同访问权限。尤其是接入知识库后,模型回答内容可能涉及内部敏感信息,需要结合企业身份认证系统,例如 LDAP、OAuth2、单点登录等。
2. 日志审计
建议记录调用时间、用户、请求来源、模型名称、Token 消耗、响应耗时等信息。对于敏感场景,还需要对问题和回答进行审计。
3. 监控告警
需要监控 GPU 使用率、显存占用、CPU、内存、磁盘、服务状态、接口耗时、错误率等指标。常见方案包括 Prometheus、Grafana、NVIDIA DCGM Exporter。
4. 高可用设计
单机部署存在单点故障。生产环境可采用多实例部署,通过负载均衡或 API 网关分发请求。模型文件建议统一存储或提前同步到各节点。
5. 安全隔离
模型服务不建议暴露到公网。更合理的方式是部署在内网,通过 VPN、堡垒机、零信任网关或 API 网关访问。对于必须公网访问的场景,应启用 HTTPS、API Key、限流和 IP 白名单。
十五、推荐落地路径
如果你是首次部署 DeepSeek,建议按照以下路径推进:
阶段一:快速验证
使用 Ollama 部署 DeepSeek-R1 7B 或 14B,配合 Open WebUI 搭建一个内部聊天界面,让团队先体验模型能力。
curl -fsSL https://ollama.com/install.sh | sh
ollama pull deepseek-r1:7b
ollama run deepseek-r1:7b
阶段二:接入业务
将 Ollama 或 vLLM API 接入现有系统,例如知识库、客服系统、工单平台或代码平台。
阶段三:建设知识库
引入 RAG,将企业文档、制度、产品资料、FAQ 等内容向量化,并通过检索增强提高回答准确率。
阶段四:生产化治理
增加权限、审计、监控、限流、高可用和安全隔离,实现企业级稳定运行。
十六、总结
DeepSeek 私有化部署并不复杂,关键在于根据业务场景选择合适方案。如果只是快速体验和内部小范围使用,推荐采用 Ollama + Open WebUI,部署简单、成本低、体验友好;如果需要面向业务系统提供高并发 API,则推荐使用 Docker + vLLM,性能更强,也更接近生产化架构。
从企业落地角度看,私有化部署只是第一步。真正产生价值的关键在于:是否接入了企业知识库,是否与业务流程结合,是否具备权限管理、日志审计、监控告警和持续优化能力。只有将模型能力与企业数据、业务系统、组织流程结合起来,DeepSeek 才能从一个聊天工具升级为真正的企业智能基础设施。