上一篇 下一篇 分享链接 返回 返回顶部

DeepSeek 本地部署实战:从 Ollama 到 vLLM 的完整落地指南

发布人:慈云数据-客服中心 发布时间:24小时前 阅读量:1

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 部署 大规模企业集群 可扩展、易运维 成本和复杂度较高

本文重点介绍两种最常见、最容易落地的方案:

  1. Ollama + DeepSeek + Open WebUI
    适合快速搭建内部 AI 助手。

  2. 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

如果希望快速搭建企业知识库,可以考虑:

  1. Dify + DeepSeek API
  2. FastGPT + Ollama
  3. MaxKB + 本地模型
  4. 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 才能从一个聊天工具升级为真正的企业智能基础设施。

目录结构
全文