Windows 环境 Tensorflow2.3.0 入坑指南(关于配置CUDA和CUDNN)

Windows 环境 Tensorflow2.3.0 入坑指南(关于配置CUDA和CUDNN)

  我是使用的Pycharm进行Tensorflow学习的,特别在此记录一下环境配置的过程。(最开始我只在Pycharm上安装了Tensorflow 2.3.0的包,就开始跑程序了)结果报了一堆很神奇的东西,但是还是出现了最后正确的结果:

本章样本

  首先这是我跑的代码(非常简单,入门过程而已):

# Author:JinyuZ1996
# Creation date:2020/8/15 11:39

import tensorflow as tf

a = tf.constant([1.0, 2.0], name='a')   #构建一个二维数组常量
b = tf.constant([2.0, 3.0], name='b')

print(a)

问题重现

  Runtime console当中打印出了如下的东西(很多红色的进度信息,这是Tensorflow的日志模式):

  他其中有一类日志是 W 开头的,比如 W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cublas64_10.dll';........

  这是在提示我们目前没能找到足够的dll运行库来进行训练,其实就是还没有去配置CUDA导致的。(日志的中部会有如下提示):

  W tensorflow/core/common_runtime/gpu/gpu_device.cc:1753] 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...(跳过了使用GPU)

  然后我就看到它跳过了使用GPU,而转用CPU来进行训练。这可不大行……虽然照样能得到结果,因为现在比较简单嘛,可是未来我们要训练比较复杂的模型的时候,CPU比GPU的效率可就差远了,所以有必要花时间探索一下如何安装和使用CUDA来启动我们的GPU用于训练。

  而使用CUDA就需要我们去针对自己的显卡来进行一番探索了,接下来开始以步骤进行讲解:

第一步:去查看自己的NVIDIA控制面板

  打开自己的NVIDIA控制面板,去查看一下系统信息,目的是找到我们目前安装的驱动程序的CUDA版本:

  然后在系统信息中查看一下,自己的CUDA版本(如图):

  我的显卡是GTX 1050Ti,截至我写这篇文章的时候我的显卡驱动程序版本是451.82,从这里看到他自带的CUDA对应版本是V11.0,那么好的我们就去下载一个完整版的CUDA v11.0来配置我们的GPU训练。

第二步:下载对应CUDA版本

  百度搜索CUDA 11.0,通常第一个搜索结果就是的,或者直接https://developer.nvidia.com/cuda-downloads下载也可以,这个地方我要给大家补充一下,CUDA包含两种版本,一种是network版大概五六十M(其实就是个下载器,还需要在下载3个G左右的资源才能开始安装),另外一种是Local版本也就是离线安装版(接近3个G,下载下来就能全面安装,我是用的这个版本)下载页面如下图:

  这里补充一点,有的时候这个下载页面会打不开,我也不知道是什么原因,可能是我的win10版本问题或者是我的移动宽带的问题,登陆很访问英伟达的网站时总会很卡。我去找了一种相对可靠的解决方案来:

  你可以这样做(按照我的步骤来):首先,右键开始菜单搜索cmd,用管理员权限打开cmd,输入下面的代码:

netsh winsock reset

  然后你会看到如下界面:(它提示我们再重启一下就可以了)

  然后,我个人经过上面的操作后就可以流畅访问了,下载速度也能达到满资源的状态(我下的是local版2.88G,大概29M/s的下载速度吧)总之就可以了,下载下来之后就可以开始安装了。当然为了防止部分同学就是登不上,我在这里贴上network版CUDA v11.0的下载链接(免费资源就是给大家跑个腿):https://download.csdn.net/download/qq_39381654/12720656

  至于CUDA的安装过程,大家可以参考这位博主的文章https://blog.csdn.net/a583621671/article/details/87272803,讲的也比较详细(其实是主要我在安装过程中忘记了截图,这里不好再补充所以偷懒让大家看看这位博主安装9.0版本的过程来参考吧)即便我们安装的是v11.0,也尽量不要勾选安装Visio Studio Integration 11.0,太慢!而且可能会因为网络问题而导致整个安装过程失败。

  不过呢,大家可以发现,我这篇文章指导大家安装的v11.0不需要安装升级包,它只有一个Base Installer。所以不用像,刚才那篇博主一样安装很多补丁包还是很走运的。

验证安装

  安装完毕之后,安装程序会主动的给分配两个环境变量,大家应该可以通过cmd来验证安装的成功与否,比如我们在命令行里输入代码:nvcc -V 能够看到安装的CUDA v11.0就说明安装好了:。

CUDNN部分的配置

  配置完CUDA就该去配置CUDNN了,CUDNN的版本是对应着CUDA来说的,如果你跟笔者一样是按照刚才的过程一路走来的,那么你应该也需要我的这个版本的CUDNN(cudnn-11.0-windows-x64-v8.0.1.13)可以看到我下载的这个v8.0.1.13是对应着CUDA v11.0的。你会发现它下载下来之后是一个lib,其实就是CUDA的补充,大家只需要把下载下来的CUDNN文件夹里的CUDA子文件夹对应的东西复制替换到刚才安装的CUDA文件夹里的相同位置就可以,官网的下载地址为:https://developer.nvidia.com/cudnn 不过呢,这次下载就要求必须登录到NVIDIA账户才能下载了,我是当场注册了一个NVIDIA开发者账户,绑定了我以前的邮箱才让我下一步下载的(他有的时候还会先调查你下载CUDNN是为了干嘛,填写完问卷自动到达下载页面):

  下载下来之后解压应该能看到这样的目录结构:

  下一步就是把,这个目录里所有的成分拷到刚才安装的CUDA子目录下(例如我按默认路径安装的CUDA11,我就应该找到:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0)如下图:

  将刚才所有的子目录都复制过来(应该不会有替换,只是添加到对应子文件夹一些东西),就完成了。  

  当然还是有可能有同学下载不下来,所以我再放一个连接(依然免费提供cudnn-11.0-windows-x64-v8.0.1.13):https://download.csdn.net/download/qq_39381654/12721693

补充配置环境变量步骤

  一般的教程到此结束,但是你会发现Pycharm的报错依然还在,而且还是解决不了几个库缺失的问题,这是因为我们的Pycharm现在还找不到我们的CUDA库lib,需要我们对Pycharm和环境变量都做配置才能解决一部分,如果仍然解决不了还可以手动打上缺失的几个库,我也会分享在这篇文章里面。

  先给出我集合的其他博主提到的环境变量修改方法,首先是当我们安装完CUDA后应该默认给我们配好的两个环境变量:(要是你没有的话请自己加上这两个)

  然后根据我的整理,我们还需要在环境变量Path里把这几个都添加好:

额外情况(如果还是不行*)

  大部分同学走到刚才这一步,再去运行Tensorflow 2.3.0应该就能启动GPU了,但是我再给出更夸张的情况下的解决方案,那就是还是不行的时候的解决方案:多个原因(首先可能是你的Pycharm安装过程中有问题,不自动绑定本机环境,那么这是第一种情况,其次,第二种情况就是真的还缺.dll没打上,我直接给在文末,自己打上就行了)

  再去多配置一步Pycharm IDE的环境变量:LD_LIBARARY_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\lib\x64(把这行代码粘到我如图所示的位置):

  如果IDE是英文版应该File->Setting->搜索 Python Console 在Enviroment框下输入我刚才给你的代码(如果你的CUDA按到了其他位置别生搬硬套,此处应填写你的CUDA目录相应位置)。

  如果是第二种情况,或者说,你按照我刚才这给出的第一种解决方案还是没能解决,那么没关系,我们自己去补上缺失的dll不就行了吗,这时候,大部分的动态链接库CUDA应该都带过来了,你只需要在W 开头的Tensorflow警告里找到could not found 的那些.dll库就可以了。(我在文末会给出通常会缺失的几个库,其实还是希望大家自己找吧,这个应该不难找的)一般会缺失的几个我列在这里:

  你会发现我拿方框圈起来两组,为什么呢,因为这两组缺失的都是64_10,而我所做的就是把64_11复制了一个副本改了个名字,就行了(特别神奇,推测应该是v11.0把需要的东西封装到了64_11而Tensorflow2.3.0不知道,所以找不到,给他改个低版本的名字就行了……)。但如果还有其他的缺失的话,就请自行去网上百度补充吧,通常如果正确安装了CUDA并且环境变量配置无误的话应该只缺寥寥几个。缺的很多的话应该是CUDA没配置好或者环境变量垮了。没关系,我在这里给出几个我当时缺失的动态链接库,大家可以看看能不能满足你的需求:

大家可能用的到的动态链接库包

  https://download.csdn.net/download/qq_39381654/12722120

猜你喜欢

转载自blog.csdn.net/qq_39381654/article/details/108063967
今日推荐