使用ollama本地部署DeepSeek大模型
在生成式AI快速发展的今天,本地部署的优势也比较多(当然没资源就别考虑了,老老实实用官方api,便宜得很)。
- 数据隐私保障(完全离线运行)
- 可定制的模型微调能力
- 不受网络延迟影响的推理速度
- 长期使用成本优势
一、环境准备与硬件要求
硬件配置对比表
模型名称 | 参数量 | 大小 | VRAM (Approx.) | 推荐 Mac 配置 | 推荐 Windows/Linux 配置 |
---|---|---|---|---|---|
deepseek-r1:1.5b | 1.5B | 1.1 GB | ~2 GB | M2/M3 MacBook Air (8GB RAM+) | NVIDIA GTX 1650 4GB / AMD RX 5500 4GB (16GB RAM+) |
deepseek-r1:7b | 7B | 4.7 GB | ~5 GB | M2/M3/M4 MacBook Pro (16GB RAM+) | NVIDIA RTX 3060 8GB / AMD RX 6600 8GB (16GB RAM+) |
deepseek-r1:8b | 8B | 4.9 GB | ~6 GB | M2/M3/M4 MacBook Pro (16GB RAM+) | NVIDIA RTX 3060 Ti 8GB / AMD RX 6700 10GB (16GB RAM+) |
deepseek-r1:14b | 14B | 9.0 GB | ~10 GB | M2/M3/M4 Pro MacBook Pro (32GB RAM+) | NVIDIA RTX 3080 10GB / AMD RX 6800 16GB (32GB RAM+) |
deepseek-r1:32b | 32B | 20 GB | ~22 GB | M2 Max/Ultra Mac Studio | NVIDIA RTX 3090 24GB / AMD RX 7900 XTX 24GB (64GB RAM+) |
deepseek-r1:70b | 70B | 43 GB | ~45 GB | M2 Ultra Mac Studio | NVIDIA A100 40GB / AMD MI250X 128GB (128GB RAM+) |
deepseek-r1:1.5b-qwen-distill-q4_K_M | 1.5B | 1.1 GB | ~2 GB | M2/M3 MacBook Air (8GB RAM+) | NVIDIA GTX 1650 4GB / AMD RX 5500 4GB (16GB RAM+) |
deepseek-r1:7b-qwen-distill-q4_K_M | 7B | 4.7 GB | ~5 GB | M2/M3/M4 MacBook Pro (16GB RAM+) | NVIDIA RTX 3060 8GB / AMD RX 6600 8GB (16GB RAM+) |
deepseek-r1:8b-llama-distill-q4_K_M | 8B | 4.9 GB | ~6 GB | M2/M3/M4 MacBook Pro (16GB RAM+) | NVIDIA RTX 3060 Ti 8GB / AMD RX 6700 10GB (16GB RAM+) |
deepseek-r1:14b-qwen-distill-q4_K_M | 14B | 9.0 GB | ~10 GB | M2/M3/M4 Pro MacBook Pro (32GB RAM+) | NVIDIA RTX 3080 10GB / AMD RX 6800 16GB (32GB RAM+) |
deepseek-r1:32b-qwen-distill-q4_K_M | 32B | 20 GB | ~22 GB | M2 Max/Ultra Mac Studio | NVIDIA RTX 3090 24GB / AMD RX 7900 XTX 24GB (64GB RAM+) |
deepseek-r1:70b-llama-distill-q4_K_M | 70B | 43 GB | ~45 GB | M2 Ultra Mac Studio | NVIDIA A100 40GB / AMD MI250X 128GB (128GB RAM+) |
二、Ollama安装与配置
1. 安装Ollama
windows、mac用户可以直接去官网下载安装包:https://ollama.com/download
# Linux安装命令
curl -fsSL https://ollama.com/install.sh | sh
2. 验证安装
ollama --version
# 预期输出:ollama version 0.1.25
三、DeepSeek模型部署
1. 获取模型文件
deepseek r1模型官方模型库地址:https://ollama.com/library/deepseek-r1
进去默认是7b参数的,7b说实话本地部署基本没啥用,可以作为试用。 配置好的话,选择更高参数的,替换命令尾部的tag。 目前可选的参数:
- 1.5b
- 7b
- 8b
- 14b
- 32b
- 70b
- 671b(部署成本极大)
下面拉取可能要挂梯子,我测试是不用的。
# 拉取7B基础版
ollama pull deepseek:7b
# 感兴趣可以试试拉取代码专用版
ollama pull deepseek-coder-v2:16b
2. 启动模型服务
# 基础启动命令
ollama serve
# 带GPU加速的启动方式
OLLAMA_NUM_GPU=2 ollama serve
# 指定端口和主机
ollama serve --host 0.0.0.0 --port 11434
3. 模型运行参数配置(可选)
创建 Modelfile
:
FROM deepseek:7b
PARAMETER num_ctx 4096
PARAMETER temperature 0.7
SYSTEM """
你是一个专业的AI助手,回答应准确简洁,使用中文输出。
"""
构建自定义模型:
ollama create custom-deepseek -f Modelfile
四、性能优化(可选)
1. GPU加速配置
# 查看可用GPU
nvidia-smi
# 启用CUDA加速
export CUDA_VISIBLE_DEVICES=0
OLLAMA_GPU_LAYERS=35 ollama run deepseek:7b
2. 量化模型压缩
# 4-bit量化
ollama quantize deepseek:7b --bits 4
# GGUF格式转换
ollama convert deepseek:7b --format gguf
3. 内存优化参数
# 限制显存使用
OLLAMA_GPUMEM=12 ollama serve
# CPU模式优化
OLLAMA_NUM_THREADS=8 ollama serve
五、API接口调用示例
1. RESTful API调用
curl http://localhost:11434/api/generate -d '{
"model": "deepseek:7b",
"prompt": "解释量子计算中的叠加原理",
"stream": false
}'
2. Python SDK集成
from ollama import Client
client = Client(host='http://localhost:11434')
response = client.chat(model='deepseek:7b', messages=[
{'role': 'user', 'content': '写一个快速排序的Python实现'}
])
print(response['message']['content'])
3. Web界面
这个用的会比较多,本地起个界面调用ollama的接口就行,开源方案很多。
比如这个十几万star的 https://github.com/AUTOMATIC1111/stable-diffusion-webui
简单就装个浏览器扩展就行,个人用户更推荐这个,比如ollama-ui ,搜下能发现很多:https://chromewebstore.google.com/search/ollama
六、不同配置下的性能对比
测试场景 | CPU模式 (i7-12700H) | GPU模式 (RTX 3060) | GPU模式 (RTX 4090) |
---|---|---|---|
7B模型首次加载 | 18s | 9s | 5s |
代码生成(1000字) | 23s | 7s | 2s |
数学推理(10题) | 41s | 15s | 6s |
内存占用 | 12GB | 8GB + 4GB VRAM | 6GB + 8GB VRAM |
七、常见问题排查
1. 内存不足处理
# 启用交换空间
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
2. 模型响应缓慢优化
# 设置优先级
nice -n -20 ollama serve
# 减少上下文长度
PARAMETER num_ctx 2048
3. 中文输出异常处理
在Modelfile中添加:
SET keep_alive "使用中文回答,避免Markdown格式"
八、进阶应用场景
1. 多模型并行服务
# 使用不同端口启动多个实例
ollama serve --port 11435 &
ollama serve --port 11436 &
2. 结合LangChain构建RAG系统
from langchain.llms import Ollama
from langchain.document_loaders import WebBaseLoader
llm = Ollama(base_url="http://localhost:11434", model="deepseek:7b")
loader = WebBaseLoader("https://example.com/tech-article")
docs = loader.load()
九、扩展资源
- Ollama官方文档:https://ollama.ai/docs
- DeepSeek微调指南:https://github.com/deepseek-ai
- HuggingFace模型库:https://huggingface.co/deepseek