Windows 环境 Tensorflow2.3.0 入坑指南(关于配置CUDA和CUDNN)
我是使用的Pycharm进行Tensorflow学习的,特别在此记录一下环境配置的过程。(最开始我只在Pycharm上安装了Tensorflow 2.3.0的包,就开始跑程序了)结果报了一堆很神奇的东西,可是仍是出现了最后正确的结果:python
本章样本
首先这是我跑的代码(很是简单,入门过程而已):windows
# 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致使的。(日志的中部会有以下提示):ide
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用于训练。ui
而使用CUDA就须要咱们去针对本身的显卡来进行一番探索了,接下来开始以步骤进行讲解:spa
第一步:去查看本身的NVIDIA控制面板
打开本身的NVIDIA控制面板,去查看一下系统信息,目的是找到咱们目前安装的驱动程序的CUDA版本:.net
而后在系统信息中查看一下,本身的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没配置好或者环境变量垮了。不要紧,我在这里给出几个我当时缺失的动态连接库,你们能够看看能不能知足你的需求: