项目场景:
现在需要在
NVIDIA RTX3090
显卡上运行一个tensorflow 1.x的程序,具体配置如下:
版本选择越新越好,因此选择安装
tensorflow-gpu 1.12.0。在安装的过程中,陆续会碰到三个问题,我将在下面依次列出并给予解答。
问题描述1
CUDA版本不匹配,需要重新安装
在安装tensorflow-gpu 1.12.0之前,需要查看该版本的tensorflow所需搭配的CUDA 和cuDNN版本如下:
使用nvidia-smi命令查看当前CUDA版本为11.2:
因此需要在非root条件下,为当前用户额外安装CUDA 9.0和对应的cuDNN 7.1,否则tensorflow 1.12.0根本无法使用。例如,在python交互式命令行中引入tensorflow如下:
import tensorflow
会得到以下报错信息:
这就提示我们需要在CUDA 9.0的环境下才能正常使用tensorflow-gpu 1.12.0。
解决方案1:
额外安装其他版本的CUDA,并实现版本自由切换。
强烈推荐这篇博客:
非root用户在linux下安装多个版本的CUDA和cuDNN(cuda 8、cuda 10.1 等)_随性拂尘倾心的博客-CSDN博客按照他的步骤去做就能很顺利地在多个CUDA版本间自由切换了。
问题描述2:
按照上述博客安装其他版本的CUDA和cuDNN时,在最后的文件配置阶段会遇到两个问题:
1. cuDNN包解压后的cudnn.h文件无法复制到目标文件夹中
在执行第一句话时,系统会提示权限不够(Permission Denied)。
2. 如何查看是否会到最初版本的CUDA
正如作者所述,想要在多个版本的CUDA之间自由切换,只需每次修改bashrc文件并重新读取配置文件即可,再用nvcc -V指令就能看到CUDA版本在不断变化。但是,这种方式只能看到CUDA版本在额外安装的CUDA之间来回变化,当我们将先前添加的所有export语句都注释并使用source .bashrc重新读取配置文件以后,再使用nvcc -V查看,会发现此时显示的CUDA版本仍然是最后一次选择的CUDA版本,并非原始的CUDA 11.2。
解决方案2:
1. cudnn.h无法复制
在目标文件夹下同样可以找到一个cudnn.h文件, 该文件是只读文件,因此无法复制替换。此时先将该文件手动删除,再将源文件夹下的cudnn.h文件复制过来即可。
2. 回到最初版本的CUDA
此时需要将当前窗口关闭后重新打开,再使用nvcc -V命令会得到以下信息:
这个时候反而证明CUDA版本回到11.2了。我们还可以进一步做如下尝试进行验证:
在python交互式界面中输入以下语句:
import tensorflow
会得到报错信息:
提示我们需要在CUDA 9.0环境下使用tensorflow,恰好证明我们现在回到了最初的CUDA 11.2 。当然,这种验证方法需要在安装tensorflow之后才能使用。
问题描述3:
tensorflow-gpu 1.12.0安装不断出现意外
我们尝试使用pip命令自动安装
tensorflow-gpu 1.12.0。我们使用如下命令进行安装:
python -m pip --default-timeout=6000 install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.12.0 --no-cache-dir
但是仍然不能避免出现版本问题,如:
[ERROR] THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE
并且,清华镜像源下载速度十分慢;中科大镜像源虽然速度很快,但在安装好tensorflow,并在接下来安装其他附加组件时,会出现找不到匹配包的问题;其他镜像源(如阿里、豆瓣、中科院)更是直接找不到tensorflow-gpu 1.12.0版本的安装包。
解决方案3:
直接在本地下载tensorflow-gpu 1.12.0的安装包,上传到服务器后使用pip进行安装。
1. 方式一(更推荐方式二,下载速度翻倍)
安装包可以在pypi的官网上进行下载:tensorflow-gpu · PyPI
首先选择目标版本:
选择下载文件:
选择对应python3.6版本的安装包:
2. 方式二
安装包可以在阿里云镜像源中进行下载:Links for tensorflow-gpu。在Pypi中下载速度以KB/s为单位,而在镜像源中下载以MB/s为单位。
选择目标安装包下载:
下载到本地后,上传到服务器中:
再使用pip命令进行安装:
pip install tensorflow_gpu-1.12.0-cp36-cp36m-manylinux1_x86_64.whl
最终测试
- 将CUDA版本切换成CUDA 9.0。
- 在python交互界面中输入:
import tensorflow as tf
sess = tf.Session()
a = tf.constant(1)
b = tf.constant(1)
print(sess.run(a+b))
参考:测试TensorFlow 是否安装成功_zqx951102的博客-CSDN博客_测试tensorflow是否安装成功
得到输出结果为:
即表明安装成功 。
版权归原作者 一个低调的帅哥 所有, 如有侵权,请联系我们删除。