吐槽
RTX3060出来已经有一段时间了,但是tensorflow配置教程来说相对较少,之前笔者直接使用conda命令安装了tensorflow2.1.0版本,测试gpu是否可用时,显示的是可用,且代码也可以运行,不会报错(jupyter上运行的,pycharm上没有试过)。但训练模型时,val_loss一直都很大,不是几位数,是十多二十位数的损失,且训练出来的模型一直是一条没有变化的直线。起初一直认为是模型的原因,后来发现同样的环境(tensorflow、python等等版本都相同),在其它电脑上完美运行,控制变量法就是显卡的锅。
1.版本关系
直接说版本关系吧!
tensorflow2.4.1 + cuda11.1 + cudnn8.0.5
和同学交流一下,RTX3090同样适合该版本。
2.cuda下载、安装
RTX3060需要cuda11.1进行驱动,但是使用conda install tensorflow-gpu时,不会安装cuda11.1(pip听说也不行,但是我没试过),所以cuda11.1需要在官网上手动下载,然后手动进行安装。cuda下载:https://developer.nvidia.com/cuda-toolkit-archive,在里面选择cuda11.1
根据自己电脑配置选,然后点下载。
下载完成后推荐安装就可以了,安装位置默认。
3.Cudnn下载、安装
还是直接官网下载就可以了,不过需要注册个账号,用qq邮箱注册就可以了,要是登录不进去换个号试试,还是不行就在网上找找有没有cudnn8.0.5的包可以直接下载。cudnn下载网址:https://developer.nvidia.com/cudnn,下载解压完成后,就是三个文件夹+一个txt
将cudnn里面的三个文件夹复制到cuda安装目录,然后全部替换掉。cuda默认安装话,安装目录如下图:
4.环境变量配置
下面是环境变量配置,在系统中添加以下 5个 环境变量:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1 (cuda默认安装的话就是这个路径)
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
在环境变量Path中添加:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\common\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\bin\win64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin
5.tensorflow安装
首先安装anaconda,安装教程网上很多,此处不再赘述。
点击开始按钮,在开始中找到anaconda,选中anaconda Prompt(anaconda3)
在prompt中输入命令,新建一个名为tf的虚拟环境,(tf为虚拟环境名称,可以随便改)
conda create -n tf python==3.7.9
虚拟环境建立完成后,在命令框中输入activate tf,就切换到了tf环境下
此时输入命令pip install tensorflow-gpu==2.4.1
接下来就是漫长的安装等待,(要是你有科学上网工具可能快一点,但是有可能需要先将pip降低版本,之前我pip版本是20.1.0,我使用命令python -m pip install pip==20.0.1 降低了pip版本),安装完成后,关闭。
6.测试
笔者是在pycharm上运行的,(记得将pycharm下工程的解释器选择到tf环境下,pycharm使用就不讲了),测试程序为:
import tensorflowas tf
tf.config.list_physical_devices('GPU')
若输出为下面:
有个警告Could not load dynamic library 'cusolver64_10.dll'; dlerror: cusolver64_10.dll not found,直接进入到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin找到cusolver64_11.dll,将其重命名为cusolver64_11.dll就可以了。(如果没有cusolver64_11.dll,同理,找到前缀相同的,把后面替换为10),完成后再运行测试程序:
至此,安装完成!!!