先废话一波
开启正文之前,先说一下这篇文章怎么来的。
其实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,请注意相关程序的可用性与安全性。
环境准备
配置说明
- 硬件:见上节图。
- 系统:Windows 10 1903 版本 18362.53
软件说明
需要的安装包及管网下载地址如下:
- Visual Studio 2017。官方地址:点击访问
- CUDA Toolkit v10.0。官方地址:点击访问
- cuDNN v7.5.0 (需注册开发者账户)。官方地址:点击访问
- Python 3.7.3。官方地址:点击访问
- Anaconda3 2019.03 (Python 3.7版本)。官方地址:点击访问
- JetBrains PyCharm 2019.1(专业版收费,社区版免费)(选装)。官方地址:点击访问
- TensorFlow。通过
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所需的依赖并没有更新导致的。
为了供后来人参考,也为了自己记录以防未来重复踩坑,这里小记一下。
可用配置
注意:以下软件尽可能放在原始路径下,以便调用。同时一定要记得安装路径不要出现中文。
-
安装Visual Studio 2017
现在的VS都开整在线安装了啊……反正我也懒得搜别的离线安装包了,毕竟200+100M双线,网速快不怕在线安装吼吼吼。
安装倒是没有什么注意的,就是记得选择装的组件时选择“通用Windows平台开发”、“.NET桌面开发”、“Python开发”三个选项吧。其中Python开发中Anaconda3可以勾掉不选,自己安装最新版也好。我反正是自己安装的。
-
安装CUDA Toolkit v10.0
这个也没需要特别注意的,就是安装组件的时候可以将GeForce Experience那个组件勾掉不安装。据网上资料反馈这个是用于游戏体验优化的,由于目前用TensorFlow做深度学习不涉及游戏领域,因此可以不用安装。当然这个因人而异,如果你需要这个组件也可以安装,但是网上反映这个组件其实很鸡肋,游戏体验并没有什么提升……
安装完成后,界面如图所示(网上用图,我的没截图,正常安装的时候提示的是VS 2017):
安装完成后,去PowerShell或者命令提示符执行命令
nvcc -V
验证是否完成安装。 -
安装cuDNN v7.5.0
这玩意与其说是安装,不如说是解压到相应目录……
将下载好的压缩包打开,例如我的是
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
,就把这文件统统拖进去就好了(如下图)。 -
安装Python 3.7.3、Anaconda3 2019.03 (Python 3.7版本)和JetBrains PyCharm 2019.1
这个没什么可以说的,这仨软件应该是安装里面最简单的东西了吧。Python 3自动会加入系统变量,因此也不用关心什么。PyCharm算是用的比较舒服的Python IDE了,用过IDEA和PHPStorm的都应该能懂。
-
安装后系统设置与程序测试
-
检验CUDA与显卡GPU适配工作状况
这一部操作需要VS 2017来配合,来编译CUDA带的示例应用来检测显卡GPU是否适配。
如果CUDA安装没有出错,在
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安装成功。 -
系统变量配置
上一步若没问题,可直接配置系统变量即可:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0 CUDA_LIB_PATH = %CUDA_PATH%\lib\x64 UDA_BIN_PATH = %CUDA_PATH%\bin CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64 CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
-
-
安装TensorFlow-GPU
比较简单,打开Anaconda Powershell Prompt,根据情况先进行环境的建设与部署,例如我的配置是:
# 建设TensorFlow专用环境 conda create -n tensorflow python=3.6 # 切换到TensorFlow专用环境 conda activate tensorflow # 安装tensorflow-gpu稳定版 pip install tensorflow-gpu
安装完成后,进入
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或者命令提示符执行了。 -
上面最后一步安装TensorFlow-GPU的时候没有用
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
删掉保存即可。
参考文献
- cuda10.1.+cudnn7.5+tensorflow1.13.1+anaconda3-2018-12版本(python 3.7)安装
- Win10 安装Tensorflow-GPU版教程
- Visual Studio 2017出现MSB8020,MSB8036等SDK版本选择的错误
- CondaHTTPError: Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available)
- CondaHTTPError: HTTP 000 Connection Failed during conda install with new 2018.12 Anaconda3 Windows install