本地部署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 | client = OpenAI( api_key=os.getenv("AliDeep"), |
Ollama部署DeepSeek-R1
环境准备
操作系统:Ubuntu 22.04,显卡:T4(16G显存)
使用 nvidia-smi 命令,确认 GPU 卡的驱动已经装好,可以被识别。
1 | root@lptest001:~# nvidia-smi |
安装 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 | root@lptest001:~# docker ps |
创建ollama容器,经常会报如下的错误:
1 | root@lptest001:~# docker run -dp 8880:11434 --gpus device=0 --name DeepSeek-R1-1 docker.1ms.run/ollama/ollama:0.5.11 |
这是因为服务器的 NVIDIA Container Toolkit 没有装,需要执行如下命令安装一下:
1 | distribution=$(. /etc/os-release;echo $ID$VERSION_ID) |
安装完成后,执行 docker info 命令,确保 docker 守护进程已经正确配置 GPU 支持。命令和输出如下:
1 | root@lptest001:~# docker info | grep -i nvidia |
此时再重新 docker run,就可以将 Ollama 容器拉起了。
部署与测试 DeepSeek-R1
Ollama 官方提供了一个可视化的模型仓库,便于我们了解 Ollama 已经支持了哪些模型,以及下载模型。仓库的地址是:https://ollama.com/library
点开链接后,找到 DeepSeek-R1 模型,共分为 1.5b 到 671b 多个版本。
点进去之后可以选择模型版本以及看到模型运行命令,更新记录等。
两种 Ollama 拉起 DeepSeek-R1 的方案
在容器内下载模型和拉起
我们需要进入到 Ollama 容器的内部,去执行模型运行命令。进入容器的命令为:
1 | docker exec -it <你的容器名称或 ID> /bin/bash |
然后执行模型运行命令:
1 | ollama run deepseek-r1:32b |
输出如下,由于本地没有模型,所以,会先在模型仓库下载模型,我们需要耐心等待模型下载完毕。
下载完成后,就会加载模型,直到出现 success,模型就加载好了。
直接输入对话,测试效果。例如:
可以看到,模型带有 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, |