AnimeGanv2于centos下配置conda虚拟环境并使用rtx3090进行训练时可能出现的一些问题

  作为一名新晋且无师门的炼丹师,想利用服务器强大的rtx3090训练AnimeGanv2获得自己想要的模型,但可惜途中遇到了许多问题,导致一直跑不了rtx3090只能苦苦的利用cpu进行训练,但是奈何训练进度太慢了,估计要跑10天以上才能跑完,如果用rtx3090估计半天就可以了,显然效率差太多了。所以,在查阅了许多文章后终于将rtx3090跑起来了。
  现将问题总结如下:
①RTX30系显卡首先对于cuda版本是有要求的,cuda若是低于11.0则无法调用RTX30系的显卡,所以要想办法装cuda11以上的版本。
②由于AnimeGanv2是在tensorflow1.x的版本下进行开发的,然而现在1.x最新的1.15版本,官网只支持到cuda10.x版本,而作者TachibanaYoshino没有做tensorflow2.x的版本迁移,搜了下github,虽然有人做了版本迁移,但是test出来的效果跟鬼图一样,应该是还没迁移完毕。作为一名小白我也不知道如何着手一些被弃用函数的迁移,所以只能硬着头皮去想办法在tensorflow1.x版本下运行cuda11.x。幸好,nvidia考虑到了这个问题于是维护了一个nvidia-tensorflow来使tensorflow1.15能够使用RTX30系显卡
  因此解决方式如下:
  根据AnimeGanv2的需求,用conda创建python3.6版本。

conda create -n 虚拟环境名 python=3.6

  创建完毕后,根据这篇博文RTX3090+python3.6+tensorflow1.15虚拟环境配置 的方法进行安装nvidia-tensorflow

pip install nvidia-pyindex
pip install nvidia-tensorflow

  安装完毕后,用pip list查看环境列表,一般会缺以下包,防止幺蛾子的产生,还是pip install一下,或者谁可以尝试一下不装有没有什么问题。

nvidia-cuda-nvrtc
nvidia-tensorboard
nvidia-tensorrt

  然后此时可以在python终端试试能不能用tensorflow调用gpu了。

import tensorflow as tf
tf.test.is_gpu_available()

  如果显示true的话,说明能正常调用,但如果是false的话,且有类似如下信息的话

W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcublas.so.11'; dlerror: (...省略无关内容)
W tensorflow/core/common_runtime/gpu/gpu_device.cc:1692] Cannot dlopen some GPU libraries. 
Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. 
Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
0

那么根据第一条信息可以知道,是动态连接错误,大概率是系统动态链接路径LD_LIBRARY_PATH并未指向虚拟环境安装的libcublas.so.11。因此根据上面的博文可以用export导入环境变量,让其指向已安装好的libcublas.so.11。
在这里插入图片描述
根据错误信息给出的第一个文件地址,可以推出export的地址为:

export LD_LIBRARY_PATH=/root/.local/lib/python3.6/site-packages/nvidia/cublas/lib:$LD_LIBRARY_PATH

至此再重新测试能否调用gpu,应该会变成true了。
不过在训练的时候,Reading checkpoints…下,可能会报如下错误。

E tensorflow/stream_executor/cuda/cuda_dnn.cc:367] Loaded runtime CuDNN library: 8.0.5 but source was compiled with: 8.6.0.  
CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. 
If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.

  出现这个问题说明CuDNN版本太老了,根据提示信息安装高于其要求的版本即可。最新版cuda+cudnn配置保姆级教程 根据该文章中安装版本合适的cuDnn,在nvidia官网上下载下来并解压copy到当前cuDnn寻找的目录里即可。

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

复制到相应目录后用下面的命令,查看安装好的cuDnn版本:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

此时再train一般就能够成功调用RTX30系显卡了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值