背景
最近在服务器上跑Deeplabv3进行语义分割时,需要使用GPU版的pytorch。
我在Anaconda下配置了适配服务器CUDA的pytorch,但是报错如下,(下图无限接近于我的错误,但是我忘记截图我的报错了,所以用了下面这张网图)
可以看到每次报错都在 conv.py 这个文件,就是在做 CNN 运算时出的错。
解决方法
引入如下语句
torch.backends.cudnn.enabled = False
这句代码的意思是不用 cudnn 加速了。
GPU,CUDA,cuDNN 的关系是:
CUDA 是 NVIDIA 推出的用于自家 GPU 的并行计算框架,只能在 NVIDIA 的GPU 上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥 CUDA 的作用。
cuDNN 是 NVIDIA 打造的针对深度神经网络的加速库,是一个用于深层神经网络的 GPU 加速库。如果你要用 GPU 训练模型,cuDNN 不是必须的,但是一般会采用这个加速库。
cuDNN 默认会使用,既然目前解决不了匹配问题,就先不用了。这样 GPU照样能工作,但可能没有用上 cuDNN 那么快。
加上了上面的代码,cuDNN的问题解决了!!!
但是来了新的报错:RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-cbsmv48q/aten/src/THC/THCBlas.cu:259
解决办法
1.卸载掉之前装好的torch和torchvision(之前是使用官网的命令:
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=9.0 -c pytorch
安装的torch和torchvision)
现在需要卸载掉,卸载命令如下:
pip uninstall torch
pip uninstall torchvision
2.使用pip安装指定版本的torch和torchvision
安装命令如下:
pip install torch==1.1.0
pip install torchvision==0.3.0
3.再次run,问题就解决了!!!
撒花撒花!!!
附录:
解决问题参考博客如下:
https://zhuanlan.zhihu.com/p/150581355
https://blog.csdn.net/weixin_41781121/article/details/109030372