前言
由于兼容性问题,使得我们若想用较新版本的 PyTorch,通过 GPU 方式训练模型,也得更换较新版本得 CUDA 工具包。然而 CUDA 的版本又与电脑显卡的驱动程序版本关联,如果是低版本的显卡驱动程序安装 CUDA11 及以上肯定会失败。
比如 GTX750Ti 或 GTX1050Ti,出厂的驱动程序版本在 450 以下,也就只能装 CUDA9 和 CUDA10 之类的版本。那么有什么方法用前面这两种显卡安装 CUDA11 以上的版本呢?下面就通过更新显卡驱动程序来完成这一任务,其中包括查看版本,各种版本的关联,如何下载安装等白话文方式演示。
查看显卡驱动版本
这里 强调一下,要安装 CUDA 的条件是电脑有独立显卡,并且显卡是英伟达也就是 N 卡。保证这一点我们可以通过桌面右键进入 “NVIDIA 控制面板” 和 "nvidia-smi.exe" 命令的两种方式查看显卡的驱动程序版本号。
NVIDIA 控制面板
点击 “系统信息”,其中 “显示” 下的 “项目” 就是显卡型号,“细节” 里主要查看 “驱动程序版本” 和 “驱动器类型”,后面要根据显卡型号和驱动器类型下载新版本的驱动程序。也可以在 “组件” 的 “3D 设置” 下查看 “NVCUDA64.DLL”,这就是当前驱动支持的 CUDA 最大版本。
NVIDIA-SMI
这个英伟达显卡在 Windows 下的一个监控工具,通过 cmd 可以不仅可以查看当前显卡的基本信息,也能查看 GPU 实时的运行情况。通过 cmd 输入 “nvidia-smi” 查看最新信息, "nvidia-smi -l 2" 查看实时信息 (2 就是 2 秒刷新一次),工具的参数上面图片有简单标注。
如果 cmd 输入后找不到该命令,需要把 “C:\Program Files\NVIDIA Corporation\NVSMI” (监控工具默认位置) 添加到 "path" 的环境变量中。
显卡驱动下载
可以进入英伟达网站 www.nvidia.com/Download/Find.aspx?lang=en-us,选择显卡型号,特别注意 "Windows Driver Type",这个就是上面查看的 “驱动器类型”。一般以前出厂 windows10 电脑都是 Standard,切记一定要根据驱动器类型下载,不然后面安装显卡驱动会报以下错误。
This DCH driver package is not compatible with the currently installed version of Windows.
This system is configured to require a Standard driver package. The correct driver
can be downloaded from by selecting the "Standard" option under the "Windows Driver Type" menu.
从上面 GTX 750 Ti 的标准类型搜索结果看,最新的版本是 472.12,而 DCH 有 500 以上的更新的版本。如果一定要用相当新的版本,官网也提供了将标准驱动类型修改为 DCH 的,但 win 系统版本有一个限制,具体可以在网上查找这里看以后再更新说明。不过呢 472 的驱动程序版本其实完全够用,可以搭配最大支持 CUDA11.0 到 CUDA12.0 之间的版本,也就意味着我们可以用 1.10 上下的 pytorch 的 cu 版本,现在最新也才 2 点几,像之前火热的 AI 绘画 "stable diffusion" 和 AI 音色克隆 “so-vits-svc” 就可以搭起来跑了。
CUDA 下载
已经更新完显卡驱动程序后,再重复前面查看版本号方式。看到驱动程序版本号和最大支持 CUDA 版本,记录下来。然后进入官网的 CUDA Release Notes,也可以查看到驱动程序版本与各种 CUDA 版本的对应关系。
上面的 “CUDA Toolkit” 下 CUDA 11.4 有五个版本,其中带 Update 的是正式版发布后的迭代版本,依次是 11.4.1 一直到 11.4.4,最右边就是 WIN 的最低驱动程序版本。根据我们查询的 472.12,当然 Updae4 也可以,最好按他们要求选 11.4.2 或以下。然后进入英伟达开发者网 developer.nvidia.com/cuda-toolkit-archive,选择后下载,以及 CUDNN 也要下载再依次安装。(这个在前面文章有介绍此处就略过了)
PyTorch 版本下载
前面把 CUDA 和 CUDNN 安装配置好之后,环境变量会自动添加,然后通过 cmd 输入 “nvcc -V” 查看 到 CUDA 的版本表示安装无误,接着就是去 download.pytorch.org/whl/torch_stable.html 查看 CUDA 与 pytorch 对应版本了,也可以直接下载 whl。cu 表 CUDA 版本,cpu 表 CPU 版本,由于没有 11.4 的我们可以选择 cu113 的搜索,然后挑选系统版本,Python 版本。
后面如果需要 torchaudio、torchtext 等库,也一定要找相对应版本的,不然不是无法用 gpu 运行就是版本不兼容,pip 自动把 torch 调高或调低,甚至直接改成 cpu 版,而有时候就只是一个小版本都不支持,这一点很恼火。
GPU 运行
驱动、工具包、依赖库等一切准备好后,在项目运行前,可以通过以下代码检测一下 gpu 是否可用。其实这里想说一下,我感觉是在小模型训练时,GPU 加速并没有比 CPU 快多少,但是有一个好处。如果是用 CPU 做训练,跑起来后配置一般的电脑可能就动不了。而如果丢给 GPU,负载就给到他了,我可以再继续调其他代码或放放音乐啥,只要不玩游戏或做什么 3D 预览渲染啥的。
import torchprint(torch.cuda.is_available())
print(torch.__version__)
exit()