0x00 前言
随着近期 DeepSeek 的爆火,相信很多同学都已经在试用了。
使用下来发现,效果确实让人惊艳,可以说是目前国产开源大模型最好的,甚至在某些领域有超越 GPT 的迹象,不愧是国产之光。
但是模红是非多,随着使用率暴涨、加上漂亮国的黑客下场,在线版的 DeepSeek 开始变得不稳定,频频报错 “服务器繁忙,请稍后再试。”
由于 DeepSeek 是开源的,于是不少同学开始从线上使用转向线下部署了:
其实我在上一篇文章《快速搭建本地大模型与知识库》中,已经介绍了如何使用 Ollama 在本地部署 AI 大模型。
安装好 Ollama 后,一行命令即可本地启用:
ollama run deepseek-r1:7b
目前 deepseek-r1 提供了 1.5b
、7b
、8b
、14b
、32b
、70b
、671b
等不同参数规模供下载。
这里使用 7b
对机器的配置要求已经很低了,但是依然有同学发现,运行 deepseek-r1:7b
电脑会卡得不行。
一查任务管理器,发现压力全给到 CPU 了,GPU 几乎毫无波澜:
由此引出了本文要解决的问题: Ollama 如何调用 GPU ?
0x10 结论
其实我之前翻看了很多网上教程,他们说的方法大部分都是错的(不起作用)。
后来我才找到 Ollama 官方针对 GPU 的调用方法,这里直接给结论:
Ollama 是自动调用 GPU 的,如果不能调用,可能:
- Ollama 不支持你的 GPU 系列
- Ollama 支持你的 GPU 系列,但是你的是 N 卡且 CUDA 版本太低
- 你的 GPU 显存不够大
所以你唯一能做的,不外乎换一块支持的显卡,然后装上对应的 CUDA 。
小知识: CUDA 并非显卡驱动
CUDA 的全称是 Compute Unified Device Architecture,一般指的是 CUDA Toolkit。
按照 NVIDIA 官方的说法,CUDA 是一个并行计算平台和编程模型,能够使得使用 GPU 进行通用计算变得简单和优雅。
简而言之,CUDA 是 NVIDIA 为了帮助大家更好地使用他们生产的 GPU 而开发的一个辅助工具。
打比喻就是,汽车厂商(NVIDIA)卖给你了车(GPU),帮你请了司机(显卡驱动),又负责教司机如何开车开得简单又优雅(CUDA)。
不要过于追求新版的 CUDA,更高级的 CUDA 工具包只有更高级别的驱动才能学会。
0x20 Ollama GPU 选择
截至 2025-02,根据 Ollama 官方给出的最新显卡清单,目前支持的显卡系列为:
- Nvidia(N卡): 需要 CUDA 支持
- AMD(A卡): 需要 ROCm 支持(可以理解为类似 CUDA 的存在)
至于 Intel(I卡)和集显是完全不支持的。
0x21 支持的 Nvidia 具体型号
CUDA 版本 | 系列 | 显卡型号 |
---|---|---|
9.0 | NVIDIA | H100 |
8.9 | GeForce RTX 40xx | RTX 4090 RTX 4080 SUPER RTX 4080 RTX 4070 Ti SUPER RTX 4070 Ti RTX 4070 SUPER RTX 4070 RTX 4060 Ti RTX 4060 |
NVIDIA Professional | L4 L40 RTX 6000 |
|
8.6 | GeForce RTX 30xx | RTX 3090 Ti RTX 3090 RTX 3080 Ti RTX 3080 RTX 3070 Ti RTX 3070 RTX 3060 Ti RTX 3060 RTX 3050 Ti RTX 3050 |
NVIDIA Professional | A40 RTX A6000 RTX A5000 RTX A4000 RTX A3000 RTX A2000 A10 A16 A2 |
|
8.0 | NVIDIA | A100 A30 |
7.5 | GeForce GTX/RTX | GTX 1650 Ti TITAN RTX RTX 2080 Ti RTX 2080 RTX 2070 RTX 2060 |
NVIDIA Professional | T4 RTX 5000 RTX 4000 RTX 3000 T2000 T1200 T1000 T600 T500 |
|
Quadro | RTX 8000 RTX 6000 RTX 5000 RTX 4000 |
|
7.0 | NVIDIA | TITAN V V100 Quadro GV100 |
6.1 | NVIDIA TITAN | TITAN Xp TITAN X |
GeForce GTX | GTX 1080 Ti GTX 1080 GTX 1070 Ti GTX 1070 GTX 1060 GTX 1050 Ti GTX 1050 |
|
Quadro | P6000 P5200 P4200 P3200 P5000 P4000 P3000 P2200 P2000 P1000 P620 P600 P500 P520 |
|
Tesla | P40 P4 |
|
6.0 | NVIDIA | Tesla P100 Quadro GP100 |
5.2 | GeForce GTX | GTX TITAN X GTX 980 Ti GTX 980 GTX 970 GTX 960 GTX 950 |
Quadro | M6000 24GB M6000 M5000 M5500M M4000 M2200 M2000 M620 |
|
Tesla | M60 M40 |
|
5.0 | GeForce GTX | GTX 750 Ti GTX 750 NVS 810 |
Quadro | K2200 K1200 K620 M1200 M520 M5000M M4000M M3000M M2000M M1000M K620M M600M M500M |
具体每种型号的 GPU 支持什么 CUDA 版本,可以查看 Nvidia 官方显卡说明
0x22 支持的 AMD 具体型号
Windows
在 ROCm v6.1 中,以下 GPU 在 Windows 上受支持:
系列 | 显卡型号 |
---|---|
AMD Radeon RX | 7900 XTX 7900 XT 7900 GRE 7800 XT 7700 XT 7600 XT 7600 6950 XT 6900 XTX 6900XT 6800 XT 6800 |
AMD Radeon PRO | W7900 W7800 W7700 W7600 W7500 W6900X W6800X Duo W6800X W6800 V620 |
Linux
在 Linux 下,Ollama 同样使用 AMD ROCm 库,但由于 LLVM(Low-Level Virtual Machine) 并未为所有 AMD GPU 架构提供完整或符合 ROCm 要求的目标描述,因此支持型号也受限:
系列 | 显卡型号 |
---|---|
AMD Radeon RX | 7900 XTX 7900 XT 7900 GRE 7800 XT 7700 XT 7600 XT 7600 6950 XT 6900 XTX 6900XT 6800 XT 6800 Vega 64 Vega 56 |
AMD Radeon PRO | W7900 W7800 W7700 W7600 W7500 W6900X W6800X Duo W6800X W6800 V620 V420 V340 V320 Vega II Duo Vega II VII SSG |
AMD Instinct | MI300X MI300A MI300 MI250X MI250 MI210 MI200 MI100 MI60 MI50 |
0x20 案例
以我自己的显卡为例,RTX 2080 Ti
在 Ollama 支持的 GPU 清单范围内,且要求 CUDA >=
7.5。
那么其实我只需要检查:
- CUDA 是否有安装,没有安装则到 Nvidia 官方下载对应版本
- CUDA 版本是否大于 7.5 ,命令行输入
nvidia-smi
检查:
然后重启 Ollama,通过任务管理器可以发现已经切换到 GPU 模式了:
此后,当 Ollama 在回答问题时,你可以新建另一个终端,输入命令 ollama ps
,就可以实时查看这次交互使用了多少比例的 GPU 算力:
当你发现 GPU 的比例有点低时(算力过剩),可以
- 在终端执行命令
ollama run ${MODEL_NAME}
进入 Ollama 交互模式 - 在交互模式中输入指令
/set parameter num_ctx 4096
(默认是 2048)
这个命令可以设置模型上下文的 token 数量,值越大、记忆上下文的文本数量就越多、需要的算力就越多。
没有软上限,物理上限就是显存大小,设置过大会交互时报错内存溢出
当然,如果你有多张 GPU 想让 Ollama 使用它们的算力,你还可以在交互模式中输入指令 /set parameter num_gpu 2
(数字是你期望使用 GPU 的数量)
Ollama 的 API 也支持指定这些参数,详细可以看官方文档