本文将介绍Ollama使用GPU运行模型的环境部署
1.背景介绍
对于像Llama 3 8B这样的小模型,使用CPU或集成显卡可以很好地工作。然而,如果您的计算机有Nvidia独立显卡,并且您希望运行更大的模型或实现更快的响应时间,您需要安装CUDA Toolkit以更好地利用独立显卡。
注意:使用GPU加速仅适用于具有计算能力5.0以上的Nvidia GPU。如果您使用的是AMD GPU,您可以查看支持的设备列表以确认您的显卡是否受Ollama支持。然而,CUDA Toolkit仅适用于Nvidia GPU,AMD GPU未深究。
GPU支持信息:ollama-doc/ollama/docs/Ollama 对GPU 支持信息.md at main · qianniucity/ollama-doc
Ollama支持的AMD GPU
系列 | 显卡和加速器 |
---|---|
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 |
Nvidia GPU用户应检查您的计算能力以确认您的显卡是否受支持:CUDA GPUs - Compute Capability | NVIDIA Developer
计算能力 | 系列 | 显卡 |
---|---|---|
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 |
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 |
2.相关环境检查及部署
2.1、检查当前显卡驱动能支持的最高CUDA版本
2.1.1、命令行
nvidia-smi
其中显示的cuda version就是支持的最高版本
2.1.2、控制面板
也有说法说安装新版本的cuda ,会自动将当前显卡驱动升级(没试过)
2.2、安装visual studio2022
visual studio 的版本需要与cuda版本兼容,如果版本不兼容可能会导致安装cuda失败
2.3、安装cuda
2.3.1、下载CUDA Toolkit:CUDA Toolkit 12.6 Update 3 Downloads | NVIDIA Developer
下载适用于Windows x64架构的CUDA安装程序
2.3.2、运行安装程序并点击确定:
勾选这几个必须的就行,(nvtx可以不安装, nsight开头的都可以不安装),然后安装结束会提示其他版本visual studio没安装,勾选lunch samples!!! 没报错就安装完成了其他的默认安装就可以,如果此项没有选择自定义安装,可能会存在安装失败的风险。
2.3.3、打开命令行,输入
nvcc -V
2.4、配置环境变量
下面两个就是你的安装目录,会自动配置好,和Path同级
CUDA_SDK_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
环境变量配置完记得重启
进入安装路径,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\extras\demo_suite
输入bandwithTest.exe
和deviceQuery.exe
分别提示Result = PASS则安装成功
2.5、如何确认Ollama使用正确的GPU运行模型?
您可以开始运行一个模型,并询问它一个需要长时间回答的问题(例如“写一篇1000字的关于库里的文章”)。当它在响应时,打开一个新的命令行窗口并运行ollama ps
,以检查Ollama是否使用了GPU以及使用率。此外,您可以使用Windows任务管理器监控GPU使用率和内存使用情况,以确定Ollama正在使用哪种硬件进行推理。
可以通过任务管理器来查看GPU的使用情况 在回答的瞬间会占满100%后归0
2.6、其他
2.6.1、Nvidia驱动程序(先安装驱动再安装CUDA)
在选择NVIDIA驱动程序时,有两种主要类型:Game Ready Driver (GRD) 和 Studio Driver (SD)。这两者的选择取决于您的主要用途:
-
Game Ready Driver (GRD):这种类型的驱动程序主要针对游戏玩家设计,确保最新的游戏能够在发布时获得最佳性能和体验。如果您主要用显卡玩游戏,那么GRD是较好的选择。
-
Studio Driver (SD):这种驱动程序是为创意专业人士设计的,例如那些从事视频编辑、3D渲染、图形设计和其他形式的创作内容的人。Studio Driver为这些应用程序提供了更稳定和优化的支持。
由于我们用于AI训练,Studio Driver (SD) 更适合我们的需求。它为专业软件和工作负载提供了优化和稳定性,特别是在处理图形和计算密集型任务时,这对AI训练是非常重要的。
驱动下载网址:Download The Official NVIDIA Drivers | NVIDIA 中文链接:下载 NVIDIA 官方驱动 | NVIDIA
根据自身电脑配置,选择对应的驱动
下载完成后安装即可
2.6.2、不同模型GPU占比情况
显卡显存:
不同大小模型所使用GPU占比
2.6.3、长时间不使用会退出模型
如果在这个时间内不使用,则模型会自动退出,如果在退出后再次问答,第一次回答会比较慢。
绿色部分是首次选用模型时提问,迅速回答,红色部分是页面挂起很久之后的问答,回答会有延迟,用于加载模型。
如果想增加模型的激活时间,请设置环境变量OLLAMA_KEEP_ALIVE
以下截图分别为默认、600、-1
2.6.4、模型加载后Size变大
-
模型加载后的内存占用:当模型被加载到内存中时,除了模型本身的参数,还可能包括一些额外的数据结构和缓存,这些都会占用额外的内存。因此,显示的内存占用可能会比模型文件的原始大小要大。
-
内存对齐和数据结构开销:在内存中,数据通常需要对齐到特定的边界,这可能会导致一些未使用的空间被预留出来。此外,模型在内存中可能使用了一些数据结构来优化访问速度,这些结构也会占用额外的空间。
-
模型优化和压缩:有些模型在存储时会进行压缩,以减少文件大小。当这些模型被加载时,它们会被解压缩到内存中,这可能会导致内存占用增加。
-
额外的计算资源:模型在运行时可能需要额外的计算资源,比如用于存储中间结果的缓存,这些资源也会占用内存。
-
模型版本和配置:不同的模型版本和配置可能会有不同的内存占用情况。例如,一些模型可能包含更多的特性或者优化,这可能会导致内存占用增加。