开启正文之前,先说一下这篇文章怎么来的。
其实TensorFlow有一个别人提供的服务器在用着,不过最近访问不了了,估计给收回去了吧。另外自己的MacBook Pro也其实有TensorFlow,但是这个MacBook Pro是二手的,3000块钱收的,而这个本子在前任主人那里也得呆了2年左右了,虽然不长但也有点小卡,尤其是硬盘容量实在是……随便放点东西就基本满了,像我除了写代码还有一些多媒体制作的小事会有,这玩意一两个就占硬盘好几个G……于是,综上原因,因为要学习深度学习,对硬件有一定的要求,因此就萌生了配一台PC主机的想法了。
而正巧现在内存暴跌、固态降价、板U价格达到冰点,加上矿难导致的矿主狂出挖矿显卡回本,正好是配置主机的大好光景。于是,正好有配机需求的我整了台机子。
这是最后的机子配置。板U套装是天猫购买,顺便有个天猫给的-100的优惠券用了,因此1779。内存正巧京东299搞促销,直接搞了两条。SSD选择了金士顿,同样有优惠不贵。电源机箱套装340元拿下,因为还有一张-50的优惠券hhh。其他的配件都有了因此没算成本。总共花了3334,比我五年前家里配的那台AMD平台的电脑稍贵三四百——因为多了张显卡——但这可是Wintel平台电脑啊!所以可见现在配的电脑多便宜了。
特别说明下TensorFlow学习需要的硬件,也是本次装机重头戏——显卡。说出来可能没人信:我这是人生之中第一次买显卡(手动斜眼)。由于我没有游戏需求,而且买个显卡不打游戏实在是有点费钱,正巧N卡在之前挖矿火热的时候出了一个P106系列矿卡,对标的是GTX 1060,唯一一个不一样的地方是没有显示输出接口。由于这样的配置,因此这个系列显卡在现在矿难时期卖的特别便宜,从年初的400-500软妹币到现在350-380软妹币就可以拿下了——当然降价最主要原因是因为黄药师要出新毒药了,旧毒药怎么能卖出钱嘛——这卡对于深度学习需求来说十分可以了,深度学习只需要算力,不需要输出呀~输出交给核显就好啦~因此就在咸鱼找了个矿主收了个P106-100——对标的是GTX 1060 6G版。
买这卡有个好处,就是坏掉也不太心疼。要是现在想收个1080ti真的提心吊胆怕遇上矿卡或者水货。这玩意本身虽然是矿卡,但是卖三四百的东西坏掉,比收个几千块钱的东西坏掉要好很多啊,要是有能力或者项目能用得上,多买几个P106插在板子上做多算力机器成本也比单个千元二手货要便宜许多。
好了说了这么多,还是体现了自己没钱的现状……要是有钱早就买RTX 2080ti了……
进入正题。
注意:本文首次撰写于2019-04-27,最近修改时间为2019-04-27,请注意相关程序的可用性与安全性。
需要的安装包及管网下载地址如下:
pip
命令安装。注意:安装CUDA Toolkit v10.0之前,请务必安装好VS 2017,否则会出现TensorFlow使用时报缺少DLL的错误。 当然,有些教程提出只需要装Microsoft Visual C++ 2015/2017/2019 Redistributable Runtime Environment,不需要安装VS系列,但是本人在Windows下测试的情况并不能解决问题。因此还是按照如上软件说明进行了操作。
其实上一节的软件说明的软件版本是踩过坑的。曾经我用的版本CUDA是10.1,cuDNN是v7.5.1。但是经过各种Google以及Stack Overflow的浏览,截止到2019-04-27 22:35:14,这些个版本的软件无法搭建起可以让TensorFlow运行起来的环境,一直提示缺少DLL。同时我也发现了一个大佬也跟我一样的问题( 传送门:https://blog.csdn.net/w1573007/article/details/88214099 ),我在其博客也留了个言说明了这个问题。他的博客也分析了可能出现的问题是Anaconda3的包没有进行更新,所以,如果单纯直接从官方下载Python安装相应的包,再打基础扩展包可能不会出现问题,也可能是CUDA10.1所需的依赖并没有更新导致的。
为了供后来人参考,也为了自己记录以防未来重复踩坑,这里小记一下。
注意:以下软件尽可能放在原始路径下,以便调用。同时一定要记得安装路径不要出现中文。
安装完成后,去PowerShell或者命令提示符执行命令nvcc -V
验证是否完成安装。
cudnn-10.0-windows10-x64-v7.5.0.56.zip
,cuda
文件夹下文件如图所示,然后拖放到安装好的CUDA Toolkit v10.0文件夹下,例如我CUDA Toolkit v10.0的安装路径为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
,就把这文件统统拖进去就好了(如下图)。
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0
或者自选路径下应该会有示例程序的。如图。
选择Samples_vs2017.sln
工程文件,并用VS 2017打开。载入后进行编译,选择Release x64,在右侧解决方案资源管理器中右键1_Utilities,点击“生成”。
若此步骤执行时出现出现MSB8020,MSB8036等SDK版本选择的错误,请在菜单栏中打开项目,在点击重新解决方案目标,然后会弹出SDK选择版本,选择对应的SDK版本,点击确定即可。如下图:
稍后生成完成后,去PowerShell或者命令提示符进入C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64\Release
目录,执行deviceQuery
、bandwidthTest
两个可执行文件,出现如下图信息,并且两个信息末尾都有PASS
字样便说明CUDA安装成功。
python
执行下述代码尝试TensorFlow是否可以正常工作,若正常工作则显示如图:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
在执行时可以启动nvidia-smi
来查看TensorFlow是否在GPU中操作:
Path
变量的值情况:
其中第二个圈加入后,nvidia-smi
可以以命令在全局的PowerShell或者命令提示符执行了。
conda
命令安装的原因是之前了解到conda这个东西的资源库有点问题,因此没有选择他安装,直接pip
安装了。
当然用它安装也是没问题的,不过我最近碰到的坑是conda会时不时抽风走HTTPS协议失败,最后查明需要安装OpenSSL并配置环境变量。安装地址:https://slproweb.com/products/Win32OpenSSL.html ,选择Win64 OpenSSL的Light版即可。
另外可以切换下conda的国内镜像地址,以便加速访问:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/noarch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/noarch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/noarch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/noarch
conda config --set show_channel_urls yes
注意,修改后若conda
命令下载安装工作异常,则需要去用户目录下有个.condarc
,用编辑器打开后显示示例如下:
channels:
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- defaults
ssl_verify: true
show_channel_urls: true
将- defaults
删掉保存即可。