Win10 VS2017+cuda10.0+python3.6. Tensorflow源码安装

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Rexran/article/details/83825623

Win10+VS2017+cuda10.0+python3.6.6 tensorflow源码安装

实验室的新项目需要用tensorflow,因此尝试了一下用源码编译最适合自己环境的库,断断续续历时4天,期间遇到众多大坑,好在github上大部分都能搜到解决方案。这里把自己遇到的问题集中总结一下。

Visual Studio 2017和Python

  1. 首先是编译器,VS2017,默认安装位置,由于安装VS的时候可以选择Python环境,所以同时在VS2017上安装了Python 3.6.6。这里需要注意在Visual Studio Installer 的单个组件中勾选 用于桌面 C++ [x86 和 x64]的 Windows 10 SDK (10.0.15063.0)(后面安装的CUDA10.0的例子需要该版本的SDK来编译)。

  2. 安装完成后,将Python.exe的路径添加到系统环境变量,如D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64;同时将Scripts的路径也添加,如D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts。

  3. 打开cmd(我的cmd都是管理员模式),输入python检查是否安装成功。成功后可输入*exit()*退出python,然后使用以下命令安装相关phython 环境:

    pip3 install six numpy wheel
    pip3 install keras_applications1.0.5 --no-deps
    pip3 install keras_preprocessing
    1.0.3 --no-deps

安装MSYS2

  1. https://www.msys2.org/ 网站下载最新版msys2安装包,在整个安装过程中,MSYS2主要用于一些包的管理,如patch, unzip等。
  2. 安装完成后运行msys2.exe,更新内核和包:pacman -Syu
  3. 更新完成后,关闭msys2.exe,将usr\bin加入到系统环境变量,如D:\Program Files\msys64\usr\bin。
  4. 在cmd中执行 pacman -S git patch unzip 安装相关依赖包。

注意:若pacman下载慢,可尝试在/etc/pacman.d/目录下mirrolist.mingw32、mirrolit.mingw64、mirrolist.msys文件的开头分别添加镜像:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

安装Bazel

Bazel是Google开发的软件构建工具。新版本的tensorflow已经不再使用cmake编译,改用Bazel。

  1. 在Github下载Bazel 0.15.0,最新版已经出到了0.19.0,但是我在新版本使用过程中遇到了一些Bug(输出信息乱码,rc文件需要手动添加,编译出错等)。
  2. 将下载的exe文件名称改为bazel.exe,然后添加存放该exe文件的目录到系统环境变量。
  3. 新建环境变量BAZEL_SH,值为MSYS2 bash的路径,如D:\Program Files\msys64\usr\bin\bash.exe;
  4. 新建环境变量BAZEL_VS,值为VS2017的路径,如C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional;
  5. 新建环境变量BAZEL_VC,值为VC编译工具的路径,如C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC

安装CUDA

  1. NVIDIA官网下载CUDA10.0和cuDNN7.3.1
  2. CUDA安装过程比较简单,一般不会出错。注意安装完后需要把v10.0\extras\CUPTI\libx64这个目录也添加到系统环境变量。
  3. cuDNN直接解压后拷贝到合适的目录,同时将bin文件夹的目录加入到系统环境变量。
  4. 用VS2017打开CUDA Examples,编译deviceQuery和bandwidthTest,分别用cmd运行编译结果,测试CUDA安装有没有成功。

编译Tensorflow

以上步骤完成后,就可以编译Tensorflow了。

  1. 使用cmd,在合适的目录下输入

    git clone https://github.com/tensorflow/tensorflow.git
    这里我克隆的版本是1.12.0。

  2. 如果使用GPU安装且GPU计算能力大于等于5.3,由于Eigen的bug,需要添加eigen_half.patch到/third_party。然后在/tensorflow目录下的workspace.bzl里的eigen_archive中添加patch_file = clean_dep("//third_party:eigen_half.patch")

  3. 在编译过程中可能出现error2678,将/tensorflow/core/framework/op_kernel.h中reference operator*() { return (*list_)[i_]; }修改为reference operator*() const { return (*list_)[i_]; } 可解决这个问题。

  4. 修改完源文件后,cmd中cd 到tensorflow的目录下,执行python ./configure.py 配置自己需要的选项之后,按照Tensorflow官网执行bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package 可能会出现simple_console_for_windows.zip大小为0B的情况,改为 bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package后就可以得到正常的压缩包了。

  5. 生成的过程比较长,完成后再执行bazel-bin\tensorflow\tools\pip_package\build_pip_package D:/tensorflow_pkg得到.whl文件。最后执行pip3 install D:/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

到此,就成功安装了Tensorflow。

展开阅读全文

没有更多推荐了,返回首页