写在前面
为了参加一个人工智能的比赛,我决定从零开始搭建一个能用GPU训练的人工智能环境,之前也搭建过,但是时间长了很多细节都忘了,也不好用了,所以决定重新来一个。
操作系统是Win11,显卡是3080,我记得显卡驱动、CUDA版本、CUDNN版本、Tensoflow版本都要对应,麻烦的一批。
先来一句FUCK YOU NVIDIA!
预期安装的各个工具版本:
tensorflow==2.10
CUDA==11.2
cuDNN==8.1
第一步 建立一个python环境
听说tensorflow 2.12版本往后在windows上不再支持GPU加速了,即便装上GPU也不好使,那还是安装老版本吧,安装一个2.10版本的tensorflow,在python3.8版本
先进conda,创建一个环境conda create --name tf2.10_env python=3.8
使用环境conda activate tf2.10_env
,然后安装tensorflow2.10:pip install tensorflow==2.10
conda之前配置过清华还是阿里的镜像,但是家里网络有点抽风下载的很慢,出去遛完娃回家以后装好的。
第二步 检查显卡驱动
首先我的显卡是GeForce RTX 3080,计算能力86,这个可以从英伟达开发者网站上看到
然后看一下自己显卡当前的驱动版本,右键桌面空白处打开NIVDIA控制面板,在帮助->系统信息里可以看到如下信息:
那就是说,我的驱动程序版本是545.84,然后干什么呢,看看这个驱动程序跟CUDA、cuDNN的版本是不是兼容,从NVIDIA官网上可以看到一个对应关系表,往下拉看Table 2:
所以说,我的驱动版本是足够的,装CUDA 11.2.X应该没有问题,那就装CUDA。
第三步 安装CUDA
首先可以看看自己能装的最高版本的CUDA是多少,cmd命令行窗口执行nvidia-smi
,会出现下面的信息表,这里的CUDA Version:12.3就表示能安装的最高版本CUDA是12.3,这个是向下兼容的,所以我装11.2应当没问题
直接在NVIDIA开发者网站找到下载,通过修改URL中的版本号就可以找到对应的CUDA Toolkit下载页面
但是!这个地方就可能出现了问题,我是Win 11的操作系统,但是没有Win 11的对应下载,只对应到Win 10,所以我就下Win 10,如果后面除了问题,很有可能就是这里的坑。你问我为什么不下载高版本的CUDA,因为文章里说tensorflow2.10往后的版本装在windows上也检测不到gpu,所以参照tensorflow与CUDA对应表看一眼,tensorflow 2.10对应CUDA就是11.2,所以先怂一波
选离线下载,2.9G,迅雷启动!
下载完了以后,参考前人经验来一波安装
第一个路径用默认的可以,这是一个临时的解压路径,解压完了就会删掉,如果这个地方选择了自己心仪的目录,它也会给删掉,我们在后面设置安装路径就好了
然后点OK,就出问题了
那应该是我之前的CUDA没删干净,打开控制面板,继续卸载,我之前只把带着11.6(我之前的版本)的东西删掉了,看样子没有阉干净,拖出去再阉!
又删掉了这几个
然后就可以了
程序员必须自定义
大佬笔记里说如果是第N次安装,只装CUDA就好,不然会出错,显然我是这种情形,那就只装CUDA
然后这里要设置三个安装位置,我在我的电脑建了三个文件夹,分别安装三个组件,但是大佬笔记里说不建议修改这里的路径,说后期开发报错很多来源于路径问题,我不信邪,硬改
行,你让我装我就装咯
好了,这就装完了,然后配置环境变量,这四个环境变量是自动生成的,那就不需要管了
cmd执行nvcc -V
,显示信息就是安装成功
第四步 cuDNN下载
参照最开始的表格,从这个网站里找到对应版本的cuDNN版本,下个新一点的吧
展开选择Windows版本
然后这个东西需要由NVIDIA的账号才能下载,如果没有就注册一个,有就直接登录,我因为太久不登录了,会往邮箱里发验证邮件,登录完了以后接受协议
如果页面跳转失败,回到一开始的页面再次找到cuDNN下载就行了,迅雷再次启动!
cuDNN下载完以后是一个压缩包,先解压缩
解压完了以后会得到三个文件夹
把这3个文件夹直接复制到CUDA的Development目录(这个目录是我自己定义的,所以不带有版本号)下即可
然后把bin, include, lib, libnvvp四个文件夹添加到Path环境变量中
然后就可以验证cuDNN是不是装好了,方法是进入到CUDA安装目录的\extras\demo_suite
目录(我的路径是F:\Softwares\CUDA\Development\extras\demo_suite
),打开cmd,然后分别执行bandwidthTest.exe
和deviceQuery.exe
显示两个PASS就没问题了
第五步 看看tensorflow
回到conda界面,输入python
进入python交互窗口,输入下面的代码:
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config