Windows下配置TensorFlow-GPU开发环境经验总结

2019/4/27 20:28 下午 posted in  技术 随记 comments

先废话一波

开启正文之前,先说一下这篇文章怎么来的。

其实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,请注意相关程序的可用性与安全性。

环境准备

配置说明

  1. 硬件:见上节图。
  2. 系统:Windows 10 1903 版本 18362.53

软件说明

需要的安装包及管网下载地址如下:

  1. Visual Studio 2017。官方地址:点击访问
  2. CUDA Toolkit v10.0。官方地址:点击访问
  3. cuDNN v7.5.0 (需注册开发者账户)。官方地址:点击访问
  4. Python 3.7.3。官方地址:点击访问
  5. Anaconda3 2019.03 (Python 3.7版本)。官方地址:点击访问
  6. JetBrains PyCharm 2019.1(专业版收费,社区版免费)(选装)。官方地址:点击访问
  7. 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所需的依赖并没有更新导致的。

为了供后来人参考,也为了自己记录以防未来重复踩坑,这里小记一下。

可用配置

注意:以下软件尽可能放在原始路径下,以便调用。同时一定要记得安装路径不要出现中文。

  1. 安装Visual Studio 2017

    现在的VS都开整在线安装了啊……反正我也懒得搜别的离线安装包了,毕竟200+100M双线,网速快不怕在线安装吼吼吼。

    安装倒是没有什么注意的,就是记得选择装的组件时选择“通用Windows平台开发”、“.NET桌面开发”、“Python开发”三个选项吧。其中Python开发中Anaconda3可以勾掉不选,自己安装最新版也好。我反正是自己安装的。

  2. 安装CUDA Toolkit v10.0

    这个也没需要特别注意的,就是安装组件的时候可以将GeForce Experience那个组件勾掉不安装。据网上资料反馈这个是用于游戏体验优化的,由于目前用TensorFlow做深度学习不涉及游戏领域,因此可以不用安装。当然这个因人而异,如果你需要这个组件也可以安装,但是网上反映这个组件其实很鸡肋,游戏体验并没有什么提升……

    安装完成后,界面如图所示(网上用图,我的没截图,正常安装的时候提示的是VS 2017):

    安装完成后,去PowerShell或者命令提示符执行命令nvcc -V验证是否完成安装。

    批注 2019-04-27 225318

  3. 安装cuDNN v7.5.0

    这玩意与其说是安装,不如说是解压到相应目录……

    将下载好的压缩包打开,例如我的是cudnn-10.0-windows10-x64-v7.5.0.56.zipcuda文件夹下文件如图所示,然后拖放到安装好的CUDA Toolkit v10.0文件夹下,例如我CUDA Toolkit v10.0的安装路径为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0,就把这文件统统拖进去就好了(如下图)。

    批注 2019-04-27 230304

  4. 安装Python 3.7.3、Anaconda3 2019.03 (Python 3.7版本)和JetBrains PyCharm 2019.1

    这个没什么可以说的,这仨软件应该是安装里面最简单的东西了吧。Python 3自动会加入系统变量,因此也不用关心什么。PyCharm算是用的比较舒服的Python IDE了,用过IDEA和PHPStorm的都应该能懂。

  5. 安装后系统设置与程序测试

    1. 检验CUDA与显卡GPU适配工作状况

      这一部操作需要VS 2017来配合,来编译CUDA带的示例应用来检测显卡GPU是否适配。

      如果CUDA安装没有出错,在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0或者自选路径下应该会有示例程序的。如图。

      批注 2019-04-27 231756

      选择Samples_vs2017.sln工程文件,并用VS 2017打开。载入后进行编译,选择Release x64,在右侧解决方案资源管理器中右键1_Utilities,点击“生成”。

      若此步骤执行时出现出现MSB8020,MSB8036等SDK版本选择的错误,请在菜单栏中打开项目,在点击重新解决方案目标,然后会弹出SDK选择版本,选择对应的SDK版本,点击确定即可。如下图:

      20171216120744431

      批注 2019-04-27 232344

      稍后生成完成后,去PowerShell或者命令提示符进入C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64\Release目录,执行deviceQuerybandwidthTest两个可执行文件,出现如下图信息,并且两个信息末尾都有PASS字样便说明CUDA安装成功。

      批注 2019-04-25 212439

    2. 系统变量配置

      上一步若没问题,可直接配置系统变量即可:

      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
  6. 安装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))

    批注 2019-04-27 235205

    在执行时可以启动nvidia-smi来查看TensorFlow是否在GPU中操作:

注意事项

  1. 如果上述内容有些无法正常执行,请按照图中情况检查环境变量中Path变量的值情况:

    批注 2019-04-27 234627

    其中第二个圈加入后,nvidia-smi可以以命令在全局的PowerShell或者命令提示符执行了。

  2. 上面最后一步安装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删掉保存即可。

参考文献

  1. cuda10.1.+cudnn7.5+tensorflow1.13.1+anaconda3-2018-12版本(python 3.7)安装
  2. Win10 安装Tensorflow-GPU版教程
  3. Visual Studio 2017出现MSB8020,MSB8036等SDK版本选择的错误
  4. CondaHTTPError: Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available)
  5. CondaHTTPError: HTTP 000 Connection Failed during conda install with new 2018.12 Anaconda3 Windows install