动机

上周写了 DeepSeek 系列文章,很多朋友问同一个问题:能不能在自己电脑上跑?答案是可以的——前提是选对模型、用对工具。

这篇文章以我身边的配置为基准——RTX 3060 12GB、Linux 系统——把整个流程走一遍,从硬件要求到实际运行,全部是实操细节,不是空谈。

硬件要求

先给一个明确的对照表:

配置项 推荐值 最低值 备注
GPU 12GB 显存 4GB 显存 7B 模型推荐 12GB+
内存 16GB 8GB 模型加载前
磁盘空间 10GB 可用 6GB Q4 量化后约 4GB
系统 Linux / Windows 10+ / macOS 同左 Linux 优先

对于 RTX 3060 12GB,能跑什么级别的模型:

模型 量化后大小 能否运行 实际体验
DeepSeek-R1-Distill-Qwen-1.5B ~1GB ✅ 轻松 速度极快,约 80+ tokens/s
DeepSeek-R1-Distill-Qwen-7B ~4GB ✅ 流畅 速度约 8-12 tokens/s
DeepSeek-R1-Distill-Qwen-32B ~20GB ❌ 显存不够 即使 Q3 量化也超 12GB
DeepSeek-R1(671B) ~270GB ❌ 绝对不行 除非你有 8 张 H100

结论:7B 是 RTX 3060 12GB 能跑到的最佳选择。

环境准备

检查 GPU 是否被正确识别

在 Linux 上,先确认驱动正常:

1
2
3
4
5
6
7
# 检查 NVIDIA 驱动
nvidia-smi

# 输出应该类似:
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 |
# | ... | GPU-0 | NVIDIA GeForce RTX 3060 | ... |

如果 nvidia-smi 报错,先装驱动再往下走。

安装 Ollama

Ollama 是目前最简单的本地模型部署工具,一条命令搞定:

1
2
3
4
5
6
# Linux 一键安装
curl -fsSL https://ollama.com/install.sh | sh

# 验证安装
ollama --version
# 输出示例:Ollama version 0.5.x

安装完成后会自动启动后台服务。可以用以下命令确认状态:

1
ollama serve

如果这个命令没输出且没有报错,说明后台服务已经在运行(它会一直挂在后台)。

拉取模型

推荐方案:7B Q4 量化

1
ollama pull deepseek-r1:7b

这条命令会做三件事:

  1. 从 HuggingFace 下载量化后的模型文件(约 4GB)
  2. 自动选择合适的量化格式(Q4_K_M)
  3. 将模型注册到本地

下载进度会实时显示,大概需要 5-15 分钟,取决于网速。

备选方案:1.5B 极速版

如果磁盘空间紧张或想体验更快的速度:

1
ollama pull deepseek-r1:1.5b

1.5B 版本只需要约 1GB 空间,推理速度极快,但质量会明显低于 7B。

运行模型

交互式对话

1
ollama run deepseek-r1:7b

启动后直接和模型对话:

1
2
3
4
5
6
7
>>> 请解释什么是 MoE 架构

<antThinking>
...(模型的内部推理过程)...
</antThinking>

MoE(Mixture of Experts,专家混合)是一种深度学习架构...

注意:模型的推理过程会被 <antThinking> 标签包裹,你在终端里能看到完整的思考过程,这是 R1 系列模型的特征。

退出

按 Ctrl+D 退出 Ollama 交互模式。模型会留在后台,下次直接 ollama run deepseek-r1:7b 即可。

通过 API 调用

Ollama 会自动提供一个 HTTP API,默认监听 localhost:11434:

1
2
3
4
5
6
7
# 用 curl 直接调用
curl http://localhost:11434/api/generate \
-d '{
"model": "deepseek-r1:7b",
"prompt": "解释 Transformer 架构",
"stream": false
}'

Python 调用

1
2
3
4
5
6
7
8
9
10
import requests

data = {
"model": "deepseek-r1:7b",
"prompt": "用 Python 写一个快速排序",
"stream": False
}

response = requests.post("http://localhost:11434/api/generate", json=data)
print(response.json()["response"])

使用 OpenAI 兼容 API

Ollama 还支持 OpenAI 兼容格式,可以直接用 OpenAI SDK:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from openai import OpenAI

client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # 不需要真实 key
)

response = client.chat.completions.create(
model="deepseek-r1:7b",
messages=[
{"role": "user", "content": "用 Python 写一个快速排序"}
]
)

print(response.choices[0].message.content)

性能实测

在我的环境(RTX 3060 12GB + OpenCloudOS 9.4)上实测数据:

指标 deepseek-r1:7b (Q4) deepseek-r1:1.5b (Q4)
显存占用 ~4.2GB ~1.1GB
首 token 延迟 ~800ms ~300ms
tokens/秒 ~10 ~85
上下文长度 8192 4096

注意:这些数字是参考值,实际速度取决于系统负载、显存带宽、模型加载状态等多种因素。

如何查看显存使用情况

1
2
# 在模型运行过程中打开另一个终端
watch -n 1 nvidia-smi

观察 GPU Memory Usage 和 Vbios 行的显存占用,确认没有接近 12GB 上限。

常见配置

修改模型大小

如果你想指定使用 Q5 或 Q8 量化(质量更高但显存需求更大):

1
2
3
4
5
# 使用 Q5 量化(约 5GB)
ollama pull deepseek-r1:7b-q5

# 使用 Q8 量化(约 7GB)
ollama pull deepseek-r1:7b-q8

对于 12GB 显存,Q4(默认)是最稳妥的选择,Q5 可以尝试但会牺牲上下文长度。

限制上下文长度

1
2
3
4
5
# 启动时指定最大上下文长度
OLLAMA_MAX_LOADED_MODELS=2 ollama serve

# 在对话中指定
ollama run deepseek-r1:7b "你的回答不能超过 100 字。"

模型管理与维护

列出本地模型

1
ollama list

删除不用的模型

1
ollama rm deepseek-r1:1.5b

导出模型文件

如果需要手动备份模型文件:

1
2
3
4
5
# 查看模型存储位置
OLLAMA_MODELS=~/.ollama/models ollama serve

# 模型文件在 ~/.ollama/models/ 目录下
ls ~/.ollama/models/

与 API 对比:什么时候该用哪个

场景 推荐方案
日常学习、实验 Ollama 本地 7B
需要处理超长文档 DeepSeek API(100万 token)
需要最强推理能力 DeepSeek API V4-Pro
有敏感数据不能外传 Ollama 本地
需要批量处理任务 DeepSeek API
成本敏感 Ollama 本地(免费)

总结

在 RTX 3060 12GB 上跑 DeepSeek R1 7B 的完整流程:

1
2
3
4
5
6
7
8
9
10
11
12
# 1. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 2. 拉取模型(约 4GB,5-15 分钟)
ollama pull deepseek-r1:7b

# 3. 运行
ollama run deepseek-r1:7b

# 4. 通过 API 调用(可选)
curl http://localhost:11434/api/generate \
-d '{"model": "deepseek-r1:7b", "prompt": "你好", "stream": false}'

就这么简单。7B 的推理能力(AIME 50.4%)已经超过了 GPT-4 的水平,而成本为零。对于学习和日常开发来说,这是一个非常值得投入的选项。