最近A股动荡难料,笔者在最近的两周里证券账户里的资金缩水了10%,成功地完成了一个合格中国韭菜的本分工作——我买就跌停,我卖就疯涨。三个月的炒股经历成功交了一大笔学费,昨天周五对股市彻底丧失信心,灰溜溜地清了波仓,准备潜心研究一手股票数据再重振旗鼓卷土归来。
恰逢文本挖掘的小崔老师向我们推荐了python功能包Tensorflow,这个模块似乎在做自然语言处理方面有很大的优势。其实前几个月还在暑假的时候,准备入门深度学习开始学一手pyTorch,看教程看到pyTorch竟然可以用GPU加速,心想自己一个游戏本960M的显卡又不玩游戏,不用来深度学习简直太浪费了。于是开始着手安装CUDA跟CUDNN,然后始终安装不上。百度了一下据说是NVIDIA独立显卡驱动残留,要清干净NVIDIA的所有产品再重装CUDA。哼哧哼哧地清空了所有NVIDIA的产品发现还是装不上CUDA(也许是笔者没清干净或者其他原因),转念一想算了,咸鱼一条就别想着用GPU加速了。准备把NVIDIA独立显卡驱动重新安装回来,然后发现独显驱动也安装失败了。再百度了一下说要卸掉Intel核心显卡驱动才能装独显驱动。屁颠屁颠地了卸载了核显驱动然后就呵呵了——一个显卡驱动都装不回来了,显示器靠着Microsoft最基础的显卡驱动支撑着,就跟安全模式下的使用情况一样。各种驱动精灵,驱动人生都能检测到显卡却安装不了显卡驱动。笔者觉得那是我人生最艰难地一段时间之一了,我几乎用尽了我所有的“聪明才智”,甚至想到回到计算机的初始备份中把两张显卡的驱动备份一份到非系统盘,再回到当前状态恢复初始备份中的显卡驱动备份,然而一一都失败了。笔者又是一个极度强迫症的人,不舍得重装系统破坏我精心整理的C盘结构,然后过了两天WIN10发布了更新(运气真的好,这次更新刚好更新了驱动),然后更新完一切显卡驱动都正常了。真是无心插柳柳成荫。
花这么长篇幅讲了这个郁闷的经历主要是想提醒各位朋友一定要常做备份,做任何事情之前先备份一下C盘,否则到时候真是搞得人欲哭无泪。这次安装Tensorflow-GPU也是一个超级恶心的流程,因为各位朋友的计算机各项配置与笔者可能有很大不同,我的教程未必能够适用与你们的计算机,因此安装之前务必对C盘先做备份(也可以考虑把python根目录做一次备份以防万一)。
其实大家查找就会发现很多Tensorflow的教程都是用conda安装的,笔者的python3.6也用了一段时间,装了许多非科学计算的包,所以不想卸载了python重装anaconda,因此该教程是基于非conda的python3.6环境对Tensorflow进行的安装。
python 3.6
Visual Studio 2010(网上很多人说Tensorflow较高的版本需要用VS2015以上支持,笔者的VS2010仍然可以成功安装,当然更高版本的VS应该同样可以支持)
NVIDIA独立显卡驱动(其他种类的独立显卡我不是很清楚,大家可以另寻教程。注意需要不同独立显卡所能支持的CUDA是不同的,但一般来说这点不是很大的问题,现在计算机的配置毕竟还是越来越高了,笔者960M的显卡可以支持到1.9.0版本的Tensorflow以及CUDA10.0,大家实在不放心可以看一下https://developer.nvidia.com/cuda-gpus链接中的对应信息,仅作参考)
由于笔者已经在今早两点成功安装好了所有的配件,所以无法一一截图为大家展示安装过程,所以我尽可能的详细地提及所有我遇到的坑,以及解决的办法。
截至笔者发布这篇博客,CUDA已经更新到10.0版本,Tensorflow-GPU版本已经更新到1.11.0,在这我强烈建议不要安装最新版,目前还不能找到最新版的Tensorflow-GPU究竟需要什么样的CUDA与CUDNN来支持,笔者第一次安装就是安装CUDA10.0与Tensorflow-GPU V1.11.0,然后就成功出现了“ImportError: DLL无法load”的问题(对于这个问题百度上也是众说纷纭,又说CUDA环境变量没有配置好的,有说VS版本不够的,还有说把哪里的DLL复制一份到BIN里的。说实话我觉得要是朋友你装最新版本出这个问题,赶紧卸了CUDA和Tensorflow重装低一点的版本了)。
以下对应关系摘自的https://blog.csdn.net/lifuxian1994/article/details/81103530博客,方便大家看我就直接复制过来了(侵删)↓
tensorflow-gpu v1.9.0 | cuda9.0 | cuDNN7.1.4可行 | 备注:7.0.4/ 7.0.5/ 7.1.2不明确
tensorflow-gpu v1.8.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.7.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.6.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.5.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.4.0 | cuda8.0 | cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知
tensorflow-gpu v1.3.0 | cuda8.0 | cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知
tensorflow-gpu v1.2.0 | cuda8.0 | cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知
tensorflow-gpu v1.1.0 | cuda8.0 | cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知
我建议大家先安装CUDA9.0,Tensorflow放到最后再安装(因为CUDA占用到C盘,只要你的python根目录不在C盘Tensorflow是不会占用到C盘的,这样方便备份与重新安装)。
我在安装CUDA上占了点小便宜,由于我那段郁闷的经历我在安装CUDA前我的系统中是没有独立显卡驱动的,因此我可以先安装NVIDIA独显驱动(我没有勾选3D Vision与physx因为我觉得我不玩游戏应该用不到),然后立刻安装CUDA成功率就非常高。CUDA安装URL传送门https://developer.nvidia.com/cuda-downloads,这里面是最新版本的CUDA(10.0),大家可以点击右边Legacy Releases 选项去选择全部发行版本,可以看到有CUDA 9.0版本的可供下载。
一般来说依次选择Windows==>x86_64==>10==>exe(local)再把下面显示出来的Base Installer(1.4G)下载即可(其他几个不用下载)
下载好后点击安装,这个安装跟NVIDIA独显驱动安装界面很像,进入到选项时一般选择自定义安装(不要选那个精简),然后自定义安装只要安装第一项CUDA即可,下面三个分别是独显驱动,3D Vision,Physx,所以我觉得可能就算没有独立显卡驱动也可能可以直接安装CUDA。
我记得安装过程中还可以修改CUDA Development、Sample、Documentory的安装路径,如果你觉得自己的C盘没问题那就默认它的路径,否则你可以考虑把他们全部装到同一个目录下(我是全部安装在E:\NVIDIA GPU Computing Toolkit\CUDA\v9.0目录下,Sample你可以单独放一个地方,它貌似不是很重要,其他两个的内容可以并在一起放)。
下图中安装好后把Samples单独放在Samples文件夹下,其他两个的内容在当前文件夹中,并且去把C:\Program File\NVIDIA GPU Computing Toolkit\CUDA\v9.0文件夹下的所有东西也搬过来的结果(那个zip是CUDNN,之后会下。如果感觉麻烦就直接用默认路径,这样可以省事也可以少设置一点环境变量)。
然后去环境变量里先把所有以CUDA开头的系统变量删了(因为笔者上面修改了CUDA的文件位置),换成如下的系统变量:
再到系统变量的Path变量中添加下面两条路径:
然后就把CUDNN的ZIP下载到https://developer.nvidia.com/cudnn,我在暑假里下在CUDNN的时候还可以直接下,现在比较NVIDIA学坏了,要注册账号才能下载(免费)。这个比较简单,大家去下载上面提到的V7.1.4版本即可,下好是一个ZIP,解压后里面有三个文件夹,每个文件夹下都是只有一个名为CUDNN.*的文件,大家只需要把这三个文件夹复制,然后复制到E:\NVIDIA GPU Computing Toolkit\CUDA\v9.0即可(因为是同名文件夹会自动合并,不放心可以分别把三个CUDNN.*剪切复制到该目录下对应文件夹里即可)。
然后检验一下CUDA及CUDNN是否安装好:打开CMD,输入nvcc -V回车不报错即可↓↓↓
一般教程说只要pip install tensorflow-gpu即可,这里面大致有如下几个坑点:
1、pip版本需要升级到较高的版本,低版本pip是无法安装tensorflow的,因此可以考虑先升级pip
python -m pip install --upgrade pip
2、直接pip install tensorflow-gpu安装最新版本,当然你可以尝试写成pip install tensorflow-gpu==1.9.0自定义需要下载的版本但还是很容易因为网络连接出现READ TIME OUT的错误。这是因为tensorflow需要很多支持它的包(如numpy,scipy,tensorboard,protobuf等),安装过程中还会安装很多其他包,只要一个TIME OUT就安装中止了,所以可以考虑先把其他包安装好(注意版本,tensorboard必须对应的是1.9.0,protobuf最好装3.6.0版本,目前最新的是3.6.1版本,我没太注意我到底是装的哪个了,但是我记得我看到过protobuf版本也可能使得最后import tensorflow出现莫名其妙的错误,当然这个算细节问题,也比较容易修正)。
3、最重要的就是选择哪个tensorflow镜像了,笔者先后采用pip install它默认的镜像(即直接安装),清华tuna的镜像http://www.lfd.uci.edu/~gohlke/pythonlibs/,以及github上的源码处提供的.whl文件,统统安装好import tensorflow报错,最后终于在Google提供的镜像成功完成了Tensorflow-GPU的安装。这里是传送门:https://tensorflow.google.cn/install/pip
进入该URL后拉到最下面可以看到支持python3.6的Tensorflow-GPU版本,复制后面这一长坨的链接,然后去pip install+<一长坨链接>即可,笔者使用了这个.whl文件安装后的结果是可以运行的Tensorflow的。
最后附一张成功的图片↓↓↓
最后希望各位朋友早日安装好Tensorflow-GPU并且能够使用起来!
分享学习,共同进步!