麻了,在发布这篇文章之后,我的这篇文章下面推荐了一位博主发布的十分详细的,跟我的电脑配置CUDA11.2.1,cudnn8.2.1,TensorFlow2.5.0完全一样的一篇有关TensorFlowGPU版的安装文章。除了显卡他是30系列显卡,我是MX350,显卡性能天差地别之外其他都一样的,我要是早点看到就不会有这么多事儿和这篇文章了。发在最前面给大家避避雷,要是有已经遇到某些问题的朋友可以继续看。我是真的麻了,全麻的那种,明明那个对应版本表上面写了支持TensorFlow2.6的,但是就是不行,那位博主也说看表只支持2.5和2.4,我看确实是支持2.6啊啊啊啊,如果早知道是只支持2.5及以下也可以少浪费很多很多时间。
【踩坑教程】win10环境下RTX3050Ti安装Tensorflow-gpu2.5+CUDA11.2.1+cudnn8.1.0 一、前言 最近在完成机器学习作业时想要尝试一下使用GPU环境来跑一下神经网络的代码,忙活了一天一个晚上,终于成功。 现在记录一下过程中遇到的问题与相对应的操作,不会具体说某个操作,只会说遇到的问题与解决方案,其中遇到的部分比较好搜索到的问题,比如库冲突等等根据报错信息一一解决即可。首先说一下使用电脑环境与背景,本人电脑是联想小新15,显卡是MX350,i7-10代,系统是win10家庭版,IDE是PyCharm2020.3.5专业版,使用的python环境是anaconda 2021.5,python版本是anaconda安装时勾选的默认版本3.8.8。因为本人的anaconda安装包是一直装在U盘里随时随地可以拿来用,所以有关anaconda的下载安装介绍与python解释器的配置不在这过多介绍,可以看以下链接自行安装配置。https://zhuanlan.zhihu.com/p/75717350 其中个人认为在安装时勾选或不勾选添加anaconda进入环境变量与否均可,不影响后序操作,但如果不勾选(系统默认不勾选),一定要记得手动去配置环境变量,如果是勾选了在后序出现问题的话可以重装一遍anaconda选择手动添加环境变量,如果配置环境没有配置好的话在cmd运行conda info python 命令等出现conda failed to create process信息,是因为环境变量没有配置好的问题。 参考安装的全程都是这两位博主的文章,写的非常得好。 https://blog.csdn.net/MISS_XDY/article/details/119256684 https://blog.csdn.net/tangtangllll/article/details/78978513 跟着第二位tangtangllll博主操作安装TensorFlow时谨慎替换pip安装源,本人在替换时没有使用管理员权限运行Anaconda Prompt导致pip函数被删除,出现报错信息Script file ‘D:\anaconda3\Scripts\pip-script.py’ is not present.,搜索后网友都说可以用easy_install重新安装pip解决,但是网上的各种方法都对我没有效果,最后本人在anaconda Prompt中随便试了一下使用conda instal pip命令,没有想到居然成功了,如果要替换pip下载源的话建议右键使用管理员模式运行,如果不慎发生替换失败导致pip函数被删除的话可以使用easy install pip或conda install pip解决。 1、查看电脑是否支持CUDA与cudnn与安装 楼下这位作者对于如何查看电脑是否支持CUDA与cudnn与安装过程相对详细得多,本人参考的是这位博主的文章,个人认为写的十分详细,我就不再献丑了。https://blog.csdn.net/Mind_programmonkey/article/details/99688839 2.安装TensorFlowGPU版 首先得确定自己的TensorFlow、CUDA和cudnn的对应版本,以下是2021最新的对应版本https://blog.csdn.net/K1052176873/article/details/114526086 本人在安装时选择的是新创建一个虚拟环境然后根据TensorFlow与CUDA和cudnn对应版本选择安装TensorFlowGPU2.6.0版,其中遇到了Cannot register 2 metrics with the same name: /tensorflow/api/keras/optimizers错误,在全网都没搜到对应的解决方案,一个人摸索了很久才发现是因为版本问题,在看到开头的那位博主的文章我才知道CUDA11.2.1和cudnn8.2.1只支持TensorFlow2.4.0和2.5.0。最开始我是在普通的Python环境中安装的GPU版,其中已经安装了普通的TensorFlowCPU版。当遇到这个问题的时候,我以为是因为我之前没有把CPU版本的卸载再安装新的GPU版本所以出现了这个问题,我就把所有有关TensorFlow相关的文件都删除了再重装还是没能解决问题,我以为是没有卸载干净的问题,全部文件都删除了还是没能解决,我就把anaconda卸载了重装,还是一样,反复尝试了许多次之后,我意识到不是卸载的问题。 然后我百度与谷歌搜索了很久都没有搜索出来成功的解决方案,最后只能死马当活马医,试了一下把TensorFlow版本再降,降低至2.5.0,这时报错信息变成了File “h5py\h5.pyx”, line 41, in init h5py.h5 AttributeError: type object 'h5,我喜出望外,报错信息变成某个库文件出错的话也就是说这个时候不是GPU出问题了。 又搜索相应报错信息,搜索了许多方法都没有解决,在看了一个方法说更新h5py至最新版本可以解决问题,但是h5py3.6.0(最新版本)与TensorFlow2.5.0是冲突的,原有的h5py3.1.0是刚好的被需要的库版本,所以不能升级,我又想到了是不是因为keras版本的原因?我打算把keras重装至2.5.0,发现没有2.5.0,只有2.5.0rc0,再往下就需要安装TensorFlow2.4.0版本了,不能往下,只能往上,于是重新安装了keras2.6.0。 此时上面的报错信息解决,已经在使用GPU环境执行代码了,但是又有了新的报错信息。 调用GPU来执行代码需要在开头添加以下代码,直接复制即可
import tensorflow as tf
gpus = tf.config.list_physical_devices("GPU")
if gpus:
tf.config.experimental.set_memory_growth(gpus[0], True)
tf.config.set_visible_devices([gpus[0]], "GPU")
再次执行代码,又出现问题AttributeError: module ‘tensorflow.compat.v2.internal’ has no attribute ‘register_clear_session_function’,发现是Import出了问题。在使用GPU环境运行这段代码之前都可以正常运行,那么就是TensorFlow2.5.0版本的引用方式不同,需要更改。 原代码: 此时就需要寻找新的引用方法,通过不停地ctrl+左键单击 各个import的模块与ctrl+f搜索文件,终于找到了可用的引用方式。比如dense函数就需要from tensorflow.keras import layers ,再使用layers.dense,Sequential函数也是一样,需要from tensorflow.keras import Sequential。 大概总结一下就是如果是使用GPU版本的TensorFlow运行代码的话需要从TensorFlow中引用keras中的某个模块,再引用某个函数。 此时问题解决,可以正常使用GPU运行神经网络模型。 以下是没使用GPU环境训练神经网络模型时的速度: 使用后: 其中有很多错误本人都没有列举出来,因为是在解决了问题之后才开始记录,只记录了印象比较深刻的问题,在安装时请以列出的各个博主的文章为准,本人只是分享一次记录,而不是分享经验,可以在评论区交流,共同解决过程中遇到的错误。 GPU运行速度基本没有提升,就是每次迭代还是2-3ms,我为啥要搞这么久呢,拿着部破电脑的mx350非要搞GPU环境,跟自己的CPU差不多速度哈哈哈。
|