- 写在前面
- 正文开始
- step1. 卸载`CUDA`
- step2. 安装`CUDA`和`CUDnn`
- step3. Tensorflow-gpu安装
- 安装完成,GPU可以用了,cmd中执行正常,but pycharm:question:
- (1)报错分析
- (2)报错解决
As we all know,配置深度学习环境时,CUDA、CUDnn、tensorflow、pytorch等涉及到版本匹配问题。如果不匹配,就会出现各种报错。
通常在匹配版本时有两种思路:
- 根据本机的CUDA和CUDnn匹配合适版本的TensorFlow、pytorch
- 根据要用到的TensorFlow、pytorch匹配合适版本的CUDA和CUDnn。
-
大多数情况下我们会按照思路1去进行环境配置(毕竟装CUDA和CUDnn不容易啊)。
-
但有的时候,当我们复现代码时,代码是用特定版本的TensorFlow、pytorch写的,如果我们安装的TensorFlow、pytorch版本不对,可能要涉及到大改代码。而由于某些代码API实在差太多,不同版本的TensorFlow没法做“平替”(没法改),那就只能采取思路2去配置环境了。
本文中,笔者就属于思路2。介绍了笔者在跑训练的时候,由于要用tensorflow-gpu==2.6.0,经过查询资料,需要匹配11.2版本的CUDA。所以介绍了CUDA和CUDnn的卸载重装方法。
正文开始
注:
- 查看本机已安装的CUDA版本的命令行指令:nvcc -V
- 查看本机显卡最高支持的CUDA版本的命令行指令:nvidia-smi
也可以直接打开nvidia控制面板→帮助→系统信息→组件,就可以看到了:
可以看到笔者的显卡驱动是最高支持CUDA11.5版本,所以完全可以支持CUDA11.2
BUT❗️ 笔者电脑已经安装了10.2版本的CUDA,因此需要把现有版本的CUDA卸载,然后重新安装CUDA和CUDnn。
step1. 卸载CUDA- 打开控制面板→程序→程序卸载
- 卸载与CUDA10.2版本相关的四个程序:
NVIDIA CUDA Samples 10.2
NVIDIA CUDA Runtime 10.2
NVIDIA CUDA Documentation 10.2
nvidia cuda dEVELOPMENT 10.2
step2. 安装CUDA和CUDnn参考:windows下CUDA的卸载以及安装
注:笔者只参考了本文中的卸载部分。
笔者安装的是CUDA11.2.0版本的CUDA,以及相应版本的CUDnn(官网上Windows系统且CUDA是11.x版本的只对应一个CUDnn,下载它就好啦)
参考:CUDA和CUDNN的安装(带有详细步骤)
注:安装完成后,用nvcc -V测试是否安装好时,一定要重启命令行!一定要重启命令行!一定要重启命令行!
-
不要在“安装之前就已经打开的命令行窗口”中输入命令,否则你会遇到nvcc不是内部操作的迷之错误中而自我怀疑。
-
当你重新打开命令行,再次输入,就会发现,其实已经安装成功啦!
Debug经验+1:重启可以解决很多奇怪的问题。
这个帖子中可以找到对应版本的TensorFlow:2021最新:TensorFlow各个GPU版本CUDA和cuDNN对应版本整理(最简洁)
由于笔者已经确定要用tensorflow-gpu==2.6.0,因此在对应的虚拟环境中安装:
pip install tensorflow-gpu==2.6.0 --default-timeout=100 -i https://pypi.tuna.tsinghua.edu.cn/simple
通过更换清华源,可以更快地下载,避免报错。
安装完成后,检查是否安装成功(即:检查TensorFlow是否可以用gpu了)
python
import tensorflow as tf
tf.config.list_physical_devices('GPU')
Debug经验:不要同时安装tensorflow(CPU版本)和tensorflow-gpu(GPU版本),否则,会出现各种错误。
安装完成,GPU可以用了,cmd中执行正常,but pycharm❓ (1)报错分析pycharm,你怎么回事?
运行代码时,报错Could not load dynamic library ‘...dll‘,一连报一大串,属实难受哇,这个报错让笔者困扰了好久。你如果去搜索,几乎会看到的大部分解决思路无外乎两种:
- 错误思路一:缺啥补啥
绝大部分帖子都在用缺啥补啥的思路告诉你怎么去下载丢失的包。
笔者的解答:
如果你属于:无法使用gpu,即CUDA和CUDnn没有安装成功,那应该参考笔者前面提到的步骤,去好好下载并安装CUDA和CUDnn!(I know the installation process will be difficult!)
注意:在CUDnn的安装步骤中,涉及到替换CUDA的bin目录,而我们需要的各种dll文件就是在这一步被安装的。
但是!如果你的CUDA和CUDnn已经安装好了,也分两种情况:
-
CUDA版本不匹配导致的报错:你安装的是CUDA10.X,而报错缺失的动态包是关于CUDA11.x的,意思是:你安装的是CUDA10.x版本,而该代码要求的环境是CUDA11.X。那么你就应该卸载重装CUDA和CUDnn(可以参考上方写出的step1~3)。
单纯靠缺啥补啥逃避卸载是没用的,伙计!因为笔者是过来人,尝试过这种蠢办法。
-
如果CUDA版本没有问题,是完全不用去补.ddl文件的。
你可以去安装好的CUDA的bin目录,看看是否这些包都已经存在。如果存在,说明你没错。
如果你用cmd在命令行中可以正确使用gpu,那就说明你的操作没问题。这是pycharm自身的锅:它没有能够链接到CUDA的bin路径下
-
错误思路二:掩耳盗铃
一些帖子教你如何通过设置指令,从而忽略警告。
笔者的解答:
笔者看来,这个警告等同于报错,因为它会影响程序能否正常执行)。所以不要尝试去忽略警告,这么做治标不治本,依旧会存在各种错误。
(2)报错解决良好的正确的环境是成功之基!配置环境这部分重视起来了,代码就成功一半了!千万要好好配置!否则,你会遇到特别特别多奇怪的bug。
翻阅大量资料,读到Anaconda虚拟环境下的PyCharm使用Tensorflow调用GPU出现dll文件缺失的问题和解决办法时,笔者看到了希望!这篇文章准确地说 (ma)出了笔者的心声,也为笔者指出了最终解除报错的方法。最终参考的也正是文中作者所参考的帖子:PyCharm DLL load failed的原因和对治方法。
例如:笔者根据自己电脑的情况,打开anaconda prompt→输入start+pycharm.exe所在路径:start C:"Program Files""NVIDIA GPU Computing Toolkit"CUDAv11.2binpycharm64.exe。再次打开就不会出现这个报错了。
晚安~



