教程适用范围
本文面向希望在个人电脑或小型工作站运行DeepSeek推理模型的用户,部署对象是Ollama模型库中的 `deepseek-r1:7b`。该标签对应DeepSeek-R1-Distill-Qwen-7B系列,而不是完整的671B DeepSeek-R1。
Ollama模型库当前为7B标签提供约4.7GB的模型文件。文件大小不等于运行时显存:上下文、缓存、并发和运行时仍会额外占用内存。本文不承诺某块显卡的固定生成速度,性能应在目标机器上实测。
1. 硬件怎么选
建议把需求分为三个层次:
- 仅验证功能:可以尝试CPU运行,但速度取决于CPU和内存带宽。
- 单人日常使用:建议使用8GB以上显存的受支持GPU,并保留足够系统内存。
- 长上下文或多人访问:需要更大显存,并限制并发与上下文,避免缓存挤占资源。
开始前确认磁盘至少有15GB可用空间,用于安装程序、模型、临时下载和后续版本。Windows用户还应确认模型目录所在磁盘不是即将写满的系统盘。
2. Windows安装与检查
从Ollama官方网站下载安装程序,完成后打开PowerShell:
ollama --version
ollama list如果提示找不到命令,先关闭并重新打开终端;仍然无效时检查安装目录是否进入PATH。确认后台服务:
Get-Process | Where-Object { $_.ProcessName -like "*ollama*" }下载并运行7B模型:
ollama pull deepseek-r1:7b
ollama run deepseek-r1:7b首次下载可能持续较长时间。不要在下载过程中反复执行相同命令,也不要直接删除临时文件。进入交互后先发送一个短问题验证,再输入 `/bye` 退出。
3. Linux安装与服务检查
安装方式应以Ollama官方Linux页面当前命令为准。安装完成后检查版本和服务:
ollama --version
systemctl status ollama --no-pager
journalctl -u ollama -n 100 --no-pager随后拉取模型:
ollama pull deepseek-r1:7b
ollama run deepseek-r1:7b如果服务没有运行,可先启动并设置开机启动:
sudo systemctl enable --now ollama生产机器不要在未检查安装脚本内容和软件来源的情况下直接执行网络脚本。安装后记录Ollama版本,升级前保留当前配置。
4. Docker部署
Docker路线适合希望隔离运行环境的用户。NVIDIA GPU宿主机必须先完成驱动和NVIDIA Container Toolkit配置。先用基础容器验证GPU透传,再启动Ollama:
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi创建持久化数据卷并启动服务:
```bash docker volume create ollama-data
docker run -d --name ollama --restart unless-stopped --gpus all -p 127.0.0.1:11434:11434 -v ollama-data:/root/.ollama ollama/ollama ```
在容器内下载并运行模型:
docker exec -it ollama ollama pull deepseek-r1:7b
docker exec -it ollama ollama run deepseek-r1:7b端口示例绑定在 `127.0.0.1`,默认不向局域网或公网开放。数据卷用于保存模型,删除容器不会同时删除模型文件。
5. 调用本地API
Ollama默认API端口为11434。先查看模型:
curl http://127.0.0.1:11434/api/tags发送非流式对话请求:
curl http://127.0.0.1:11434/api/chat -H "Content-Type: application/json" -d '{
"model": "deepseek-r1:7b",
"messages": [
{"role": "user", "content": "请说明张量并行和数据并行的区别。"}
],
"stream": false,
"options": {"temperature": 0.6}
}'Python调用示例:
```python import requests
payload = { "model": "deepseek-r1:7b", "messages": [{"role": "user", "content": "给出检查GPU显存占用的步骤。"}], "stream": False, "options": {"temperature": 0.6}, } response = requests.post("http://127.0.0.1:11434/api/chat", json=payload, timeout=300) response.raise_for_status() print(response.json()["message"]["content"]) ```
6. 确认是否真正使用GPU
模型推理期间另开终端观察:
nvidia-smi -l 1同时查看Ollama运行状态:
ollama ps不要仅凭“请求成功”判断GPU已经工作。若GPU显存和利用率始终没有变化,应检查驱动、容器GPU透传和Ollama日志。
7. 模型目录迁移
模型文件较大,不建议长期占用系统盘。迁移前先停止服务,复制原目录并验证新目录完整,再配置Ollama使用新的模型路径。Windows和Linux的配置方式不同,应以官方环境变量说明为准。
迁移时不要直接剪切唯一一份模型。推荐步骤是:停止服务、复制、校验目录大小、修改配置、启动验证,最后再删除旧副本。Docker环境优先使用命名卷或明确的宿主机目录挂载。
8. 局域网访问与安全
不要为了方便直接把11434端口暴露到公网。Ollama原生接口不应被视为完整的公网API网关。如果需要局域网共享,至少增加:
- 防火墙来源限制。
- 反向代理与访问认证。
- 请求大小、并发和超时限制。
- 日志脱敏,避免保存敏感提示词。
- 用量监控与异常请求阻断。
Docker中把端口从 `127.0.0.1:11434:11434` 改成其他监听方式前,先确认访问控制已经生效。
9. 常见问题
下载中断或校验失败
先检查磁盘空间、代理、DNS和系统时间,再重新执行 `ollama pull deepseek-r1:7b`。不要从来历不明的网盘复制所谓完整模型。
模型运行缓慢
确认是否使用GPU,观察CPU、内存和GPU指标。CPU运行时速度较慢属于预期现象。首次响应还可能包含模型加载时间,应在模型保持加载后再次测试。
提示模型不存在
执行 `ollama list` 核对完整标签。`deepseek-r1`、`deepseek-r1:7b` 和其他尺寸不是同一个明确版本,客户端应使用实际下载的标签。
内存或显存不足
关闭其他占用GPU的程序,缩短上下文并减少并发。如果仍然无法稳定运行,应改用更小尺寸,而不是依靠重复重启。
输出重复或质量波动
DeepSeek官方建议R1系列温度设置在0.5到0.7之间,推荐0.6,并建议将主要指令写在用户提示中。评测时应对相同任务多次测试,不能用单次回答代表模型稳定能力。
10. 验收清单
- `ollama list` 能看到准确模型标签。
- 服务重启后模型仍可使用。
- API返回结构、结束状态和错误处理正常。
- 已确认CPU或GPU实际执行位置。
- 记录首轮加载时间和稳定阶段响应时间。
- 模型目录位于有空间监控和备份策略的磁盘。
- API没有直接暴露到不受信任网络。
来源与边界
模型身份、尺寸系列和R1使用建议来自DeepSeek官方模型卡;Ollama标签、下载体积和API示例来自Ollama官方模型库。本文是中文部署实践,不复制官方全文。不同Ollama版本和操作系统可能调整安装路径、服务配置或命令参数,执行前应打开原文核对当前版本。




