Azure Ubuntu Server 上编译安装 TensorFlow GPU 版本全过程

By | March 16, 2018

虚机类型选择

Azure 上的虚拟机有很多种配置,为了安装 GPU 版本的 TensorFlow, 我们必须选用有 GPU 支持的虚拟机类型。这种机器比较贵,所以如果预算不是很足,建议使用完毕及时关闭,因为 Azure 上虚拟机的收费是按照开机时间算的,而不是我之前感觉的"应该按照 CPU/GPU 计算时间算"。

我这边选了最便宜的一种,也就是 1X K80。

安装 CUDA / CUDNN

CUDA

CUDA® is a parallel computing platform and programming model invented by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU).

CUDA was developed with several design goals in mind:

  • Provide a small set of extensions to standard programming languages, like C, that enable a straightforward implementation of parallel algorithms. With CUDA C/C++, programmers can focus on the task of parallelization of the algorithms rather than spending time on their implementation.
  • Support heterogeneous computation where applications use both the CPU and GPU. Serial portions of applications are run on the CPU, and parallel portions are offloaded to the GPU. As such, CUDA can be incrementally applied to existing applications. The CPU and GPU are treated as separate devices that have their own memory spaces. This configuration also allows simultaneous computation on the CPU and GPU without contention for memory resources.Read more at: http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ixzz59v1SbmzM

    Follow us: @GPUComputing on Twitter | NVIDIA on Facebook

让我诧异的是既然 Azure 把 GPU 机器作为虚拟机模板提供给用户选择了,不应该开机之后就应该已经安装过CUDA/CUDNN 了吗?实践证明,答案是"没有"。(运行 nvidia-smi, 命令不存在)

CUDA 的安装,还是按照官方文档 docs.nvidia.com/cuda/cuda-installation-guide-linux 来操作,(之所以这里不赘述是为了防止以后的文档版本更新了,所列的步骤就落时了)。这里粗略描述一下要注意的事情:

  • 文档中有描述”安装前检查”,通过 lspci, uname 等命令查看 GPU/Linux 发行版 是否支持 CUDA,建议完整按照步骤走一遍。
  • CUDA 驱动要求当前系统所使用的 Linux 内核对应的源文件必须安装在本机器上。(不要问问什么,这都是工程问题,除非你特别感兴趣,要弄明白。)
  • 所选系统是 Ubuntu 的话,Deb 包算是最简单的安装方式了,进入文档中 NVIDIA CUDA Toolkit 的链接 http://developer.nvidia.com/cuda-downloads, 依次选择:Linux > x86_64 > Ubuntu > 16.04 > deb(network)

如果选择网络 deb 包安装,会显示图中的安装说明,选择下面两种方式中任意一种下载 deb 包

  • 点击”Download” 下载 deb 包到本地机器,用 ftp 软件将 deb 上传到虚拟机上;
  • 拷贝 Download 链接,在 Azure 虚拟机命令行中 用 wget <url> 下载到当前工作目录。

下载完毕后,逐条执行图中的四条命令。注意:按照这种引导,安装的都是最新版的 CUDA,如果需要指定版本,可以考虑 下载 deb 包时改下下载链接下载相应版本的 deb 包。

最后,在虚拟机上 /home/user/.bashrc 中加入环境变量定义 LD_LIBRARY_PATH, 值为 /usr/local/cuda-9.1。

CUDNN

CUDNN 安装过程请主要参考 https://developer.nvidia.com/cudnn,这里有个不太好的体验,NVIDIA 要求下载 CUDNN 的用户必须用账户登录 (一般人不会有这个账号的,所以需要用邮箱注册下),然后才能看到下载链接:

选择 CUDNN 版本时,请考虑前一步安装的 CUDA 版本,务必保持一致。选定版本后,需要下载 CUDNN 运行时库 以及 CUDNN 开发者库,建议下载 Ubuntu deb 包,然后用 ftp 上传到 虚拟机上。

如果不安装开发者库,后续安装 TensorFlow 时会报错,说找不到 cudnn.h。

Deb 包的安装,使用 "sudo dpkg -i <name>.deb "

TensorFlow GPU 版本的安装

主要步骤请参考 https://www.tensorflow.org/install/install_sources

要注意的一些事情:

  • Bazel 是 Linux 上编译 TensorFlow 的工具,所以务必先安装好。
  • 我们可以选择编译出来的 TensorfLow 用哪个版本的 Python 使用。(官方提供的最新 whl 一般都是基于 Python3.5的。)
  • “./configure” 的时候
    • 请选择开启 GPU,
    • CUDA 的版本请核实正确,CUDA 路径一般是在 /usr/local/cuda-9.1下面
    • CUDNN 的版本也请核实正确,路径填写 /usr/lib/x86_64-linux-gnu/
  • 当安装完 whl 包之后,请务必不要在执行 configure 以及 build 的目录下面测试 import tensorflow,退到任何其他目录下。

Leave a Reply

Your email address will not be published. Required fields are marked *