DeepSeek本地部署:从零开始,把大模型跑在自己电脑上
我们公司因为数据安全要求,所有文档不能传到外部API。但团队又想用AI辅助写代码、做文档分析。解决方案:本地部署DeepSeek。这篇文章记录了完整的部署过程、踩过的坑、以及部署之后怎么用。
为什么选DeepSeek
先说说为什么选DeepSeek而不是Llama或者Qwen。
我测试了三个模型在我们实际场景下的表现(代码补全、文档摘要、技术问答,各30个测试用例):
| 模型 | 代码补全 | 文档摘要 | 技术问答 | 综合评分 | 本地显存需求 |
|---|---|---|---|---|---|
| DeepSeek-Coder-V2 (7B) | 82% | 78% | 80% | 80% | 8GB |
| Qwen2.5-Coder (7B) | 79% | 75% | 77% | 77% | 8GB |
| Llama-3-8B-Instruct | 74% | 80% | 76% | 76.7% | 8GB |
| CodeLlama (7B) | 76% | 68% | 72% | 72% | 8GB |
DeepSeek-Coder在代码补全上明显领先。这跟我们的需求匹配度最高(团队主要用AI辅助写代码),所以选了它。
如果你不是以代码为主,Qwen的中文能力更好,Llama的英文推理能力更强。根据你的实际需求选。
硬件要求(先别急,看完再决定要不要装)
这是很多人跳过的部分,结果装完发现跑不动。
最低配置(能跑,但慢)
- CPU:i5-12400 或同等
- 内存:16GB
- 硬盘:50GB空闲空间
- GPU:无(纯CPU跑)
- 体验:7B模型,每秒生成2-5个token(大概打字速度的1/5)
推荐配置(日常可用)
- CPU:i7-12700 或同等
- 内存:32GB
- 硬盘:100GB SSD
- GPU:RTX 3060 12GB 或同等
- 体验:7B模型,每秒生成30-50个token(接近正常阅读速度)
最佳配置(流畅体验)
- CPU:i9-13900K 或同等
- 内存:64GB
- 硬盘:200GB NVMe SSD
- GPU:RTX 4090 24GB 或同等
- 体验:14B模型,每秒生成60-80个token(比阅读快)
我的配置:i7-13700K + 32GB + RTX 4070 12GB。跑7B模型够用,跑14B模型显存不够需要量化(后面会讲)。
没有N卡怎么办?后面有纯CPU方案。
方案一:Ollama(最简单,推荐新手)
Ollama是现在最火的本地大模型运行工具。一行命令就能跑模型,零配置。
安装Ollama
Windows:去ollama.com下载安装包,双击安装。
装完之后打开终端,输入:
bash
ollama --version
能输出版本号就说明装好了。
下载并运行DeepSeek
bash
ollama run deepseek-coder:6.7b
这一行命令会自动下载模型(大约4GB),然后启动一个交互式聊天界面。你可以直接在里面问问题。
第一次下载比较慢(取决于你的网速,我家的100M宽带大概5分钟下完)。下载完之后模型缓存在本地,以后启动秒开。
指定参数运行
bash
# 限制显存使用(如果你显卡显存不够)
ollama run deepseek-coder:6.7b --num-gpu-layers 20
# 增加上下文长度(默认2048,最大可以到16K)
ollama run deepseek-coder:6.7b --num-ctx 8192
--num-gpu-layers控制把多少层模型放到GPU上。显存不够就调小这个数字,多出来的层会在CPU上跑,速度会慢一些但不会崩。
Ollama的API
Ollama启动后,自动在localhost:11434暴露一个兼容OpenAI格式的API。这意味着你可以把任何支持OpenAI API的工具对接到本地模型。
bash
# 测试API是否正常
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-coder:6.7b",
"messages": [{"role": "user", "content": "用Python写一个快速排序"}],
"stream": false
}'
这个特性非常有用。我后面会讲怎么把它对接到Cursor里。
方案二:vLLM(高性能,适合生产环境)
如果你的电脑配置还行,想要更快的推理速度,用vLLM。
vLLM是伯克利开发的推理引擎,用了PagedAttention等技术,推理速度比Ollama快30%-50%。
安装
bash
pip install vllm
注意:vLLM只支持Linux和WSL2。Windows原生不支持。如果你是Windows,需要先装WSL2。
启动服务
bash
python -m vllm.entrypoints.openai.api_server \
--model deepseek-ai/deepseek-coder-6.7b-instruct \
--tensor-parallel-size 1 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9
参数说明:
--tensor-parallel-size:GPU数量。单卡设1就行--max-model-len:最大上下文长度--gpu-memory-utilization:GPU显存使用率,默认0.9(90%)
启动后在http://localhost:8000暴露OpenAI兼容的API。
性能对比
我在同样的硬件上(RTX 4070 12GB)跑了对比:
| 引擎 | 生成速度 (tokens/s) | 首 token 延迟 | 显存占用 |
|---|---|---|---|
| Ollama | 35 | 1.2秒 | 7.8GB |
| vLLM | 52 | 0.6秒 | 10.2GB |
| llama.cpp (CPU) | 4 | 3.5秒 | 0.5GB |
vLLM快了将近50%,首token延迟也低了一半。代价是显存占用更高,配置低了可能跑不了。
方案三:纯CPU(没有N卡也能跑)
用llama.cpp可以在纯CPU上跑模型。速度慢,但至少能跑。
安装
bash
# 用pip安装llama-cpp-python
CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" \
pip install llama-cpp-python
加-DLLAMA_BLAS=ON是为了启用BLAS加速。纯CPU跑模型没有这个会非常慢。
下载GGUF格式模型
去HuggingFace搜索deepseek-coder gguf,下载Q4_K_M量化版本(文件最小,质量损失最少)。
我下载的是deepseek-coder-6.7b-instruct.Q4_K_M.gguf,大约4GB。
运行
python
from llama_cpp import Llama
# 加载模型
llm = Llama(
model_path="./deepseek-coder-6.7b-instruct.Q4_K_M.gguf",
n_ctx=2048, # 上下文长度
n_gpu_layers=0, # 全部用CPU
verbose=False
)
# 生成
output = llm.create_chat_completion(
messages=[
{"role": "user", "content": "用Python写一个二分查找"}
]
)
print(output["choices"][0]["message"]["content"])
速度大概每秒3-5个token。写代码的时候需要等几秒钟才能看到完整输出。能用,但体验一般。
如果你公司电脑连N卡都没有,但又有本地部署的需求,这个方案至少能让你用上AI。总比没有强。
对接到编程工具
模型跑起来之后,怎么在日常工作中用?两个方案。
对接Cursor
打开Cursor设置,搜索"OpenAI API Key",填入:
- API Key:随便填一个字符串(Ollama不验证)
- Base URL:
http://localhost:11434/v1(Ollama) - 或者
http://localhost:8000/v1(vLLM)
然后在Cursor的模型选择里,选"OpenAI API"模式,模型名填deepseek-coder:6.7b。
就能在Cursor里用本地模型做代码补全和Chat了。
对接Continue(VS Code插件)
如果你还在用VS Code,装一个Continue插件,配置类似:
json
{
"models": [{
"title": "DeepSeek Local",
"provider": "ollama",
"model": "deepseek-coder:6.7b",
"apiBase": "http://localhost:11434"
}]
}
装完就能在VS Code里用Ctrl+L调出Chat、Ctrl+I做代码补全了。
踩坑记录
坑1:显存不够,模型加载失败
报错信息大概是"CUDA out of memory"或者"Cannot allocate memory"。
原因:7B模型虽然叫7B,但实际需要的显存不止7GB。模型权重7GB + KV Cache + 运行时开销,实际需要9-10GB。RTX 3060 12GB刚好够,RTX 3060 8GB就不够。
解决方案 :用量化版本的模型。GGUF格式的Q4量化模型只需要4-5GB显存。在Ollama里直接用ollama run deepseek-coder:6.7b-q4_0就行。
坑2:生成速度特别慢
模型能加载,但每秒只能生成1-2个token,一个回复要等一两分钟。
原因:模型跑在了CPU上而不是GPU上。
排查方法:
- 确认NVIDIA驱动和CUDA已安装:
nvidia-smi看能不能输出版本信息 - 确认PyTorch能识别GPU:
python -c "import torch; print(torch.cuda.is_available())" - 如果输出False,说明你的PyTorch装的是CPU版本,需要重装GPU版本
解决方案 (Ollama):一般不会出这个问题,Ollama自动检测GPU。
解决方案 (vLLM):确认安装了CUDA toolkit,然后重装pip install vllm。
坑3:中文输出乱码
模型能跑,但输出中文的时候是一堆乱码。
原因:模型的tokenizer对中文的支持不太好。DeepSeek-Coder是代码模型,中英文混合的时候偶尔会出现乱码。
解决方案:在prompt里明确指定用中文回答。比如"请用中文回答以下问题:"。或者换用DeepSeek-Chat模型(通用对话模型,中文能力比Coder强)。
bash
ollama run deepseek-chat:7b
坑4:WSL2里跑vLLM,GPU识别不到
装了WSL2,装了vLLM,但启动时报"no CUDA devices found"。
原因:WSL2需要特殊配置才能访问GPU。不是装了WSL2就能用GPU的。
解决方案:
- 确认Windows上的NVIDIA驱动版本 >= 535(
nvidia-smi看版本号) - 在WSL2里运行
nvidia-smi,能输出说明GPU passthrough正常 - 如果WSL2里
nvidia-smi报错,需要安装WSL2的GPU驱动
我踩这个坑花了一下午。微软的WSL2 GPU文档写得东一榔头西一棒子,实际就两步:更新Windows NVIDIA驱动到535以上 + 在WSL2里装CUDA toolkit。搞定。
坑5:多人同时使用,服务崩溃
我把Ollama部署到公司内网服务器上,3个人同时用,结果第4个人请求的时候服务直接崩溃。
原因:Ollama默认是串行处理请求的。一个请求没处理完,下一个请求就排不上。
解决方案:用vLLM替代Ollama。vLLM支持并行请求处理(continuous batching),多人同时用没问题。或者部署多个Ollama实例,用Nginx做负载均衡。
实际使用效果
我们团队部署DeepSeek本地模型已经两个月了。说下实际效果:
代码辅助:日常写CRUD、写单元测试、写配置文件,本地模型完全够用。准确率比GPT-4o低一些(大约85% vs 92%),但胜在响应快、不花钱、数据不出内网。
文档摘要:技术文档、设计文档、会议纪要的摘要生成,7B模型能处理。但如果文档超过8000字,效果会明显下降(上下文长度限制)。
技术问答:针对公司内部技术栈的问题(Spring Cloud、Vue3、MySQL),回答质量还可以。但如果是特别新的技术(2025年下半年之后的),本地模型的训练数据不够,回答质量会差。
不适合的场景:复杂架构设计、跨系统的全局分析、需要最新知识的问答。这些场景还是得用云端大模型。
总体来说,本地模型覆盖了我们60-70%的AI使用场景。剩下30-40%需要更强推理能力的(复杂架构设计、跨系统分析),我们走DeepSeek API或GPT-4o。
这样的组合方案,既保证了数据不出内网(满足合规要求),又不会因为模型能力不足影响工作质量。
成本对比:部署之前,团队5个人每月的API费用大约2000人民币。部署之后,服务器成本(一台RTX 4070的机器)大约5000人民币一次性投入 + 每月200人民币电费。两个月就回本了。
推荐部署方案
根据你的情况选:
- 个人开发者,有N卡:Ollama + DeepSeek-Coder,10分钟搞定
- 团队使用,有服务器:vLLM + DeepSeek-Coder,配Nginx做反代
- 没有N卡:llama.cpp + Q4量化模型,CPU跑
- 企业级部署:建议用Docker + vLLM + Nginx,加API Key认证
我推荐先从Ollama开始试。如果只是自己用,Ollama就够了。等需要多人同时用或者追求更快的速度,再换vLLM。
部署过程中遇到问题可以在评论区问,我看到就会回。本地部署的坑确实多,官方文档又写得一言难尽,大家一起填。