跳到主要内容

使用ollama本地部署DeepSeek大模型

勾玉aniki
博客作者,py&go后端开发,爱好动漫。邮箱tangssst@qq.com

在生成式AI快速发展的今天,本地部署的优势也比较多(当然没资源就别考虑了,老老实实用官方api,便宜得很)。

  • 数据隐私保障(完全离线运行)
  • 可定制的模型微调能力
  • 不受网络延迟影响的推理速度
  • 长期使用成本优势

一、环境准备与硬件要求

硬件配置对比表

模型名称参数量大小VRAM (Approx.)推荐 Mac 配置推荐 Windows/Linux 配置
deepseek-r1:1.5b1.5B1.1 GB~2 GBM2/M3 MacBook Air (8GB RAM+)NVIDIA GTX 1650 4GB / AMD RX 5500 4GB (16GB RAM+)
deepseek-r1:7b7B4.7 GB~5 GBM2/M3/M4 MacBook Pro (16GB RAM+)NVIDIA RTX 3060 8GB / AMD RX 6600 8GB (16GB RAM+)
deepseek-r1:8b8B4.9 GB~6 GBM2/M3/M4 MacBook Pro (16GB RAM+)NVIDIA RTX 3060 Ti 8GB / AMD RX 6700 10GB (16GB RAM+)
deepseek-r1:14b14B9.0 GB~10 GBM2/M3/M4 Pro MacBook Pro (32GB RAM+)NVIDIA RTX 3080 10GB / AMD RX 6800 16GB (32GB RAM+)
deepseek-r1:32b32B20 GB~22 GBM2 Max/Ultra Mac StudioNVIDIA RTX 3090 24GB / AMD RX 7900 XTX 24GB (64GB RAM+)
deepseek-r1:70b70B43 GB~45 GBM2 Ultra Mac StudioNVIDIA A100 40GB / AMD MI250X 128GB (128GB RAM+)
deepseek-r1:1.5b-qwen-distill-q4_K_M1.5B1.1 GB~2 GBM2/M3 MacBook Air (8GB RAM+)NVIDIA GTX 1650 4GB / AMD RX 5500 4GB (16GB RAM+)
deepseek-r1:7b-qwen-distill-q4_K_M7B4.7 GB~5 GBM2/M3/M4 MacBook Pro (16GB RAM+)NVIDIA RTX 3060 8GB / AMD RX 6600 8GB (16GB RAM+)
deepseek-r1:8b-llama-distill-q4_K_M8B4.9 GB~6 GBM2/M3/M4 MacBook Pro (16GB RAM+)NVIDIA RTX 3060 Ti 8GB / AMD RX 6700 10GB (16GB RAM+)
deepseek-r1:14b-qwen-distill-q4_K_M14B9.0 GB~10 GBM2/M3/M4 Pro MacBook Pro (32GB RAM+)NVIDIA RTX 3080 10GB / AMD RX 6800 16GB (32GB RAM+)
deepseek-r1:32b-qwen-distill-q4_K_M32B20 GB~22 GBM2 Max/Ultra Mac StudioNVIDIA RTX 3090 24GB / AMD RX 7900 XTX 24GB (64GB RAM+)
deepseek-r1:70b-llama-distill-q4_K_M70B43 GB~45 GBM2 Ultra Mac StudioNVIDIA 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模型首次加载18s9s5s
代码生成(1000字)23s7s2s
数学推理(10题)41s15s6s
内存占用12GB8GB + 4GB VRAM6GB + 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()

九、扩展资源