本地部署Ollama+DeepSeek-R1

什么是 Ollama ?

Ollama是一个专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的开源框架,它可以用简单的命令行快捷部署多种大模型,例如 DeepSeek、Qwen、Llama3 等等模型。


Ollama 有一个非常出色的特性,这也是众多开发者选择它的关键原因,即 Ollama 为所有支持的模型封装了统一的 API,并且兼容 OpenAI 数据格式。这一点至关重要,由于模型是由不同公司或团队训练的,每种模型原本都提供各自的开发接口。因此,Ollama进行统一封装后,用户在使用时就变得极为便。

比如,我们编写 Agent 代码时,就会把标准的 OpenAI SDK 的 base_url 参数和模型名称做出修改。同样地,如果通过 Ollama 访问 DeepSeek,只需将 base_url 修改为 Ollama 的地址即可。后期如果需要切换到 Qwen 模型,也无需再修改 base_url,只需更换模型名称即可。

1
2
client = OpenAI( api_key=os.getenv("AliDeep"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")

Ollama部署DeepSeek-R1

环境准备

操作系统:Ubuntu 22.04,显卡:T4(16G显存)
使用 nvidia-smi 命令,确认 GPU 卡的驱动已经装好,可以被识别。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@lptest001:~# nvidia-smi                                                                                                                                                
Mon Mar 17 12:14:48 2025
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.76 Driver Version: 515.76 CUDA Version: 11.7 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:07.0 Off | 0 |
| N/A 42C P0 25W / 70W | 2MiB / 15360MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+

安装 Ollama

官方推荐的 Docker 方式部署 Ollama,便于进行版本的管理与测试。
首先将 Ollama 镜像下载到本地,由于国内无法访问DockerHub,因此大家可以使用后面命令中的代理地址访问:

docker pull docker.1ms.run/ollama/ollama:0.5.11

之后使用命令启动 Ollama 容器:

docker run -dp 8880:11434 --gpus device=0 --name DeepSeek-R1-1 docker.1ms.run/ollama/ollama:0.5.11

命令详解:
-d 表示以守护进程方式运行容器,后台运行。
-p 8880:11434 将容器的11434端口映射到宿主机的8880端口,11434为Ollama默认提供API访问的端口。
–gpus device=0 表示该容器使用GPU 0号卡,通过前面执行nvidia-smi命令时知道的。
–name DeepSeek-R1-1 给容器起一个名字 最后是容器镜像的名称。

执行创建容器命令之后,可以通过docker ps命令查询到容器的信息。

1
2
3
root@lptest001:~# docker ps         
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7049f65fd9d3 docker.1ms.run/ollama/ollama:0.5.11 "/bin/ollama serve" 10 seconds ago Up 9 seconds 0.0.0.0:8880->11434/tcp, [::]:8880->11434/tcp DeepSeek-R1-1

创建ollama容器,经常会报如下的错误:

1
2
3
root@lptest001:~# docker run -dp 8880:11434 --gpus device=0 --name DeepSeek-R1-1 docker.1ms.run/ollama/ollama:0.5.11
7049f65fd9d3a539aa7660eb664caa585dba188720f0975701b73d87263b6cdf
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].

这是因为服务器的 NVIDIA Container Toolkit 没有装,需要执行如下命令安装一下:

1
2
3
4
5
6
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get update
apt-get install -y nvidia-docker2
systemctl restart docker

安装完成后,执行 docker info 命令,确保 docker 守护进程已经正确配置 GPU 支持。命令和输出如下:

1
2
root@lptest001:~# docker info | grep -i nvidia                                                                                                                              
Runtimes: io.containerd.runc.v2 nvidia runc

此时再重新 docker run,就可以将 Ollama 容器拉起了。

部署与测试 DeepSeek-R1

Ollama 官方提供了一个可视化的模型仓库,便于我们了解 Ollama 已经支持了哪些模型,以及下载模型。仓库的地址是:https://ollama.com/library
点开链接后,找到 DeepSeek-R1 模型,共分为 1.5b 到 671b 多个版本。
Alt

点进去之后可以选择模型版本以及看到模型运行命令,更新记录等。

两种 Ollama 拉起 DeepSeek-R1 的方案

在容器内下载模型和拉起

我们需要进入到 Ollama 容器的内部,去执行模型运行命令。进入容器的命令为:

1
docker exec -it <你的容器名称或 ID> /bin/bash

然后执行模型运行命令:

1
ollama run deepseek-r1:32b

输出如下,由于本地没有模型,所以,会先在模型仓库下载模型,我们需要耐心等待模型下载完毕。
Alt
下载完成后,就会加载模型,直到出现 success,模型就加载好了。
Alt
直接输入对话,测试效果。例如:
Alt
可以看到,模型带有 DeepSeek-R1 标志性的 也就是深度思考,但是由于我们问的问题太简单了,模型认为不需要深度思考就能回答,因此就直接回答了。

将模型文件挂载进容器(推荐)

高可用部署需要至少起两个 Ollama容器,因此用这种方式只下载一次模型文件就可以,比较方便。

执行如下命令,在服务器上安装 Ollama 工具。

1
curl -fsSL https://ollama.com/install.sh | sh

之后直接将模型下载到本地:

1
ollama pull deepseek-r1:32b

启动容器,将模型挂载进去,需要注意 Ollama 在 ubuntu 服务器上的默认是模型文件存放目录 /usr/share/ollama/.ollama/models,但是在容器中的目录是 /root/.ollama/models,挂载时要写成服务器目录: 容器目录的格式,注意不要写反了。

1
docker run -dp 8880:11434 --runtime=nvidia --gpus device=0 --name DeepSeek-R1-1 -v /usr/share/ollama/.ollama/models:/root/.ollama/models docker.1ms.run/ollama/ollama:0.5.11

最后查看容器中的模型是否已经运行:

1
root@lptest001:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9a44f04e78f7 docker.1ms.run/ollama/ollama:0.5.11 "/bin/ollama serve" 6 minutes ago Up 6 minutes 0.0.0.0:8880->11434/tcp,