把大模型跑在自己机器上,正在从「极客玩具」变成工程师的刚需。DeepSeek 本地部署 之所以火,是因为它在保持强推理能力的同时,把参数规模压到了个人显卡也能负担的区间。本文用两条最实用的路线——Ollama 快速体验、vLLM 高并发服务——带你把 DeepSeek-R1 系列模型部署到自有算力,并和同类的 Qwen 本地方案做选型对比。
一、为什么要把 DeepSeek 部署到本地
云端 API 虽方便,但有三个绕不开的痛点:数据要出网、调用按 token 计费、高峰期限流。对涉及代码仓库、内部文档、客户资料的场景,本地部署能把数据留在内网;对需要批处理 thousands 条请求的任务,一次性买断显存比长期付 API 费更划算;对做产品原型的人,本地模型还能随便改温度、改系统提示词而不怕账单爆炸。
DeepSeek 的优势在于「小而强」:蒸馏后的 7B/8B 版本在消费级显卡上就能跑,671B 的满血 R1 则适合用多卡或量化方案在服务器落地。下面先帮你算一笔显存账,避免一上来就买错卡。
二、先算账:不同规格的显存需求
模型参数量、量化精度、上下文长度共同决定显存占用。经验公式:显存(GB) ≈ 参数量(B) × 每参数字节数 × 1.2(激活/碎片冗余)。FP16 每参数 2 字节,INT8 约 1 字节,INT4(GPTQ/AWQ)约 0.5 字节。
| 模型规格 | 量化方式 | 约需显存 | 适用设备 |
|---|---|---|---|
| DeepSeek-R1-Distill 7B | Q4_K_M | ~5 GB | RTX 3060 / 4060 8G |
| DeepSeek-R1-Distill 14B | Q4_K_M | ~9 GB | RTX 4070 Ti 12G |
| DeepSeek-R1-Distill 32B | Q4_K_M | ~20 GB | RTX 4090 24G |
| DeepSeek-V3/R1 671B | INT8/FP8 专家 | ~600 GB+ | 多卡 A100/H100 集群 |
对个人开发者,最划算的起步是「Distill 7B/14B + Q4 量化」,体验完整推理链路几乎零成本;等确认需求再上 32B 或更大的满血版本。
三、方案一:Ollama 五分钟跑通 DeepSeek
Ollama 把模型拉取、量化、服务封装成一条命令,适合快速验证想法。先确认本机已装好Ollama 与 Modelfile 的模型管理技巧,然后直接拉起蒸馏版:
# 拉取并运行 8B 蒸馏版(自动选 Q4 量化)
ollama run deepseek-r1:8b
# 想指定更激进的量化以省显存
ollama run deepseek-r1:8b-q4_K_M
# 查看已安装模型
ollama list
如果默认 tag 不满足需求,可以用 Modelfile 自定义。下面这个例子基于官方 GGUF 构建,并调低上下文以适配小显存:
FROM deepseek-r1:8b
PARAMETER num_ctx 4096
PARAMETER temperature 0.6
SYSTEM "你是一个严谨的中文技术助手,回答需给出可验证的步骤。"
构建并运行:ollama create my-deepseek -f Modelfile 然后 ollama run my-deepseek。Ollama 默认在 11434 端口暴露 OpenAI 兼容接口,后面接界面或代码都方便。
四、方案二:vLLM 部署高并发推理服务
当请求量上来——比如给团队几十人共用、或做批量评测——Ollama 的单进程吞吐就不够了。vLLM / SGLang / Ollama 推理引擎的选型里我们对比过,vLLM 靠 PagedAttention 把显存碎片压到最低,throughput 通常是 Ollama 的数倍。
# 安装(建议独立虚拟环境)
pip install vllm
# 启动 OpenAI 兼容服务,加载量化后的模型
vllm serve deepseek-ai/DeepSeek-R1-Distill-Llama-8B \
--quantization awq \
--gpu-memory-utilization 0.90 \
--max-model-len 8192 \
--port 8000
服务起来后,直接用 OpenAI SDK 调用,业务代码几乎零改动:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY", # vLLM 本地服务无需真实 key
)
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
messages=[{"role": "user", "content": "用 Python 写一个快速排序"}],
temperature=0.6,
)
print(resp.choices[0].message.content)
如果要做工具调用,可参考Function Calling 让大模型调用 API 的实战,把本地 DeepSeek 包装成能查数据库、发请求的智能体后端。
五、套上可视化界面:Open WebUI
命令行能验证,但日常使用还是图形界面更顺手。Ollama + Open WebUI 搭建团队 AI 助手已经讲透了部署姿势:只要让 Open WebUI 指向本地的 11434(Ollama)或 8000(vLLM)端口,就能获得对话历史、多会话、文档问答等能力,全员通过内网访问,数据完全不出公司。
# 用 Docker 一键起 Open WebUI,连到本机 Ollama
docker run -d -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
六、接 Dify 搭私有知识库
如果想让 DeepSeek 吃进公司文档做 RAG,Dify + Ollama 搭建私有 AI 知识库是现成的脚手架:在 Dify 里把模型供应商填成本地 Ollama/vLLM 地址,上传 PDF/Word,就能生成带引用的问答。整个链路不碰公网,满足很多企业的合规底线。
七、与 Qwen 本地部署怎么选
同属国产第一梯队,Qwen 本地部署和 DeepSeek 经常被人拿来比。简单说:Qwen 在中文理解和多语言更广谱,DeepSeek 在推理、数学、代码上更锐利。选型看场景:
| 维度 | DeepSeek(蒸馏版) | Qwen(同量级) |
|---|---|---|
| 代码 / 数学推理 | 更强 | 良好 |
| 中文长文本理解 | 良好 | 更强 |
| 工具调用生态 | 逐步完善 | 较成熟 |
| 本地显存门槛 | 相近 | 相近 |
| 典型用途 | 解题、写码、Agent | 文档、客服、多语 |
实操里常见做法是两个都部署,用 LiteLLM 做路由:简单问答走 Qwen,重推理走 DeepSeek,成本与效果双赢。
八、性能调优与三个常见坑
部署只是开始,跑稳才是关键。三个高频坑:
- 显存爆了(CUDA OOM):先降
num_ctx和量化位宽,再调gpu-memory-utilization,别一上来就用最长上下文。 - 首 token 慢:蒸馏版冷启动要加载权重,配合
--enforce-eager排查是否是 CUDA graph 兼容问题;生产环境用--enable-prefix-caching复用系统提示词前缀。 - 并发上不去:vLLM 默认张量并行为 1,多卡要显式
--tensor-parallel-size N,并确认模型权重已分片到各卡。
# 多卡并发示例(2 卡)
vllm serve deepseek-ai/DeepSeek-R1-Distill-Llama-8B \
--tensor-parallel-size 2 \
--enable-prefix-caching \
--max-num-seqs 64
另一个常被忽略的点是显存监控:部署后务必用 nvidia-smi 或 dcgm-exporter 盯住显存占用与温度,避免长上下文把卡撑满导致服务雪崩。量化选型上,优先 AWQ/GPTQ 这类训练后量化,比单纯降精度更保精度;如果显存实在紧张,再考虑把部分层 offload 到 CPU,代价是延迟上升。监控数据接进 Prometheus 后,还能对「首 token 延迟」「每秒 token 数」做长期基线,方便后续容量规划。
九、安全与访问控制
本地服务一旦暴露到公网就成风险点。最小闭环:用反向代理加一层 Basic Auth 或 OAuth,再限制来源 IP;vLLM 的 api_key 参数要设成真实随机串而非留空;Ollama 的 OLLAMA_HOST 不要直接绑 0.0.0.0,改走内网地址或 socket。团队共用时,用 LiteLLM 统一收口密钥与限流,既安全又好审计。
十、小结
DeepSeek 本地部署的门槛比想象中低:消费级显卡用 Ollama 五分钟就能跑通蒸馏版,要扛并发就换 vLLM,再叠 Open WebUI 做界面、Dify 做知识库,一条「数据不出内网」的私有 AI 链路就成型了。和 Qwen 互补部署,基本能覆盖绝大多数工程场景。下一步可以试试用 Function Calling 把本地模型接进你自己的业务系统,让推理真正闭环。




