AI 加速器自学组装指南(二)-Tensorflow 软件架设

AI 加速器自学组装指南(二)-Tensorflow 软件架设

在上一篇谈完硬件组装基本架构后,这篇我们要谈的是Tensorflow 软件架设,要安装软件,使用者当然要有 Linux 的安装概念与实作,因为这可是要用到终端机指令才行,而非如 Windows 安装那般一直按鼠标点按即可。

AI– Tensorflow with GPU 安装纪录

OS: Ubuntu 16.04.03 LTS (Server Version)
Python: 3.5.2
Tensorflow: 1.3.0
Graphics Card: Nvidia Tesla P100
Graphics Card Driver: NVIDIA-Linux-x86_64-384.81.run
CUDA Version: cuda_8.0.61_375.26_linux & cuda_8.0.61.2_linux (20171020时测试只能用cuda 8),cuda_9.0.176_384.81_linux (因Tensorflow 1.3不支援cuda 9)
cuDNN Version: cudnn-9.0-linux-x64-v7.tgz
Test Package: libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb

Google 有推出开放原始版的 AI 套件来让一般人使用,本次是记录安装 Tenforflow with GPU 的安装过程,Tensorflow 的安装方式有两大类和 4 种方式,可以根据你的需求再做调整。AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图2张

本次安装是选择 TensorFlow with GPU support + virtualenv,选择用 virtualenv 安装是因为维护方便,以下会分两大部分来介绍,因为文章和图片不少,所以会分成两篇来记录。

第一部分 前置准备( Part 1 Pre-installation)

前置准备的部分包含了,显卡驱动程式的安装和 CUDA、CUDNN 驱动程式的安装,另外铁的教训,不要想偷懒,请爱用 Source Code 安装,用套件管理程式来安装,未来有许多坑等着你自己跳
首先,更新各项套件到最新版本。

apt-get update && apt-get upgrade
apt-get dist-upgrade

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图3张

接着安装开发所需要的工具。

apt-get install openjdk-8-jdk git python-dev python3-dev python-numpy python3-numpy build-esse

swig python-wheel libcurl3-dev

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图4张

要安装显卡驱动程式之前请先关闭 nouveau,因为 Ubuntu 系统整合的显示卡驱动程式是 nouveau,我们需要先将 nouveau 从 linux 核心移除掉才能安装 NVIDIA 官方驱动,方法就是将 nouveau 添加到黑名单 blacklist.conf 中。(P.S. 不管你是 Desktop Version 还是 Server Version 都要做,因为不做的话预设是启动 nouveau,你会发现你安装完显卡驱动程式一重开机之后,之前装好的驱动却没有反应的问题。)

确认一下档案的属性和位置,不同版本的 Linux 位置存放点都不同,这边以 Ubuntu 16.04 版为主。

ll /etc/modprobe.d/blacklist.conf
vim /etc/modprobe.d/blacklist.conf

到这个文件的最底层,加上以下清单。

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图5张

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图6张

增加完毕存档后离开 vim 模式,terminal 模式底下更新核心模组。

update-initramfs -u

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图7张

执行完毕后没有任何问题就重新开机。

reboot

重开机完成之后可以检查看看有没有成功关闭,下面第一张图是还没关闭前,第二张是关闭后。

lsmod | grep nouveau

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图8张
AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图9张

你会发现本来有的模组就没有再被读取到了,接着安装下载好的 Nvidia Driver。

bash NVIDIA-Linux-x86_64-384.81.run

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图10张
AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图11张

基本上都是确定就可以,但最后一个步骤它会问你允不允许 Nvida 自动修改 X Configure 档案,网络上有人建议是选 NO,有人说依照预设既可,也有人说可以,因为不确定到底影响在哪里,所以为了可以顺利安装下去,这边以选择 YES 为主。

安装完毕之后可以执行 Nvidia 提供的工具来看看有无安装成功。

nvidia-smi

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图12张

接着安装下载回来的 CUDA Toolkit 8.0。

sh cuda_8.0.61_375.26_linux.run
sh cuda_8.0.61.2_linux.run

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图13张

安装过程中基本上都是依照预设就可以,但是中间会问你要不要安装它内建的显卡驱动程式,这边一定要选 NO,因为你前面已经装了最新版的显卡驱动了。详情可以参考 NVIDIA 的官方文件。
安装完毕后会出现告警视窗,说你没有安装它的驱动程式,无视它就好,接着要设定相关的环境变数路径,如果不设定的话执行程式会出现找不到 Library 的问题,因为是用 run 来安装,所以安装完毕后 cuda 的路径通常会在 /usr/local/cuda-8.0/bin 底下,记得在要执行程式的使用者帐号底下的 .bashrc 加入以下两行变数(这边以 64bit 为主),详情可以参考 NVIDIA 官方文件的第 6 章(图截的是 9.0 测试的,但是过程是一样的)。

vim ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图14张
AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图15张

安装完毕之后可以测试看看 cuda 有没有安装成功,首先到刚刚安装 cuda 的时候会问你 sample 档案要放在哪里,预设是你下载 cuda 的位置,以本例来说就是到“ /home/mis/NVIDIA_CUDA-8.0_Samples”,Compiler 之后会出现 bin 的目录,到底下去,执行相关的测试程式。

cd /home/mis/NVIDIA_CUDA-8.0_Samples
make
cd /home/mis/NVIDIA_CUDA-8.0_Samples/bin
./deviceQuery

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图16张
AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图17张
AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图18张

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图19张

AI 加速器自学组装指南(二)-Tensorflow 软件架设 AI与大数据 图20张

如果有安装成功的话就会显示“Result = PASS”的字样,接着要安装 cuDNN,因为 Tensorflow 目前的版本只支援到 CUDA 8.0,而且后来真的在使用 Tensorflow 的时候发现只装 CUDA 8.0 根本不够用,所以就全装吧。

Download cuDNN v7.0.3 (Sept 28, 2017), for CUDA 9.0
Download cuDNN v7.0.2 (Sept 7, 2017), for CUDA 8.0
Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0

实际跑 Tensorflow 后会发现可能需要用到这 3 样东西,所以就都先下载下来吧,然后再放到 Server 上解压缩,要注意目录名称不要重复,详情可以参考 NVIDIA 官方文件的第 2 章。

tar –zxvf cudnn-9.0-linux-x64-v7.tgz
cp cuda/include/cudnn.h /usr/local/cuda/include
cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
chmod a+r /usr/local/cuda/include/cudnn.h
chmod a+r /usr/local/cuda/lib64/libcudnn*

如果之后执行 tensorflow 的时候有出现“ImportError: libcudart.so.6.0: cannot open shared object file: No such file or directory”,就补安装刚刚下载下来的旧版 Library 就好(例如: cuDNN v6.0)
接着来测试看看 cuDNN 有没有装成功,这边是个满诡异的情况,因为官方文件使用 tar 来安装的话就没有地方可以单独下载测试文件,而测试文件却只有包在 deb 档案里面,变成你还要额外下载 deb 档案下来并且安装才行,但是要注意不要下载到 runtime 的 deb 档案,下载测试用的 sample 就好并且安装。

dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb

安装后会出现 /usr/src/cudnn_samples_v7 的目录,把这个目录 CP 到自己的家目录底下,并且 Compiler 和执行。

cp -r /usr/src/cudnn_samples_v7 ~/
cd ~/cudnn_samples_v7/mnistCUDNN/
make clean && make
./mnistCUDNN

如果都成功的话会显示“Test passed”的字样。

到这边第一部分准备完成,可以进行第二部分 Tensorflow 主程式的安装啰。

第二部分 Tensorflow GPU 版安装(Part 2 Install Tensorflow with GPU)

OS: Ubuntu 16.04.03 LTS (Server Version)
Python: 3.5.2
Tensorflow: 1.3.0
Graphics Card: Nvidia Tesla P100
Graphics Card Driver: NVIDIA-Linux-x86_64-384.81.run
CUDA Version: cuda_8.0.61_375.26_linux & cuda_8.0.61.2_linux (20171020 时测试只能用 cuda 8),cuda_9.0.176_384.81_linux (因 Tensorflow 1.3.0 尚未支援 cuda 9)
cuDNN Version: cudnn-9.0-linux-x64-v7.tgz
Test Package: libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb

首先是安装和更新相关套件的版本。

apt-get install -y python-pip python-dev python-virtualenv # for Python 2.7
apt-get install -y python3-pip python3-dev python-virtualenv # for Python 3.X

再来是利用 python 的虚拟环境来建立 tensorflow 的运作环境。

virtualenv –system-site-packages targetDirectory # for Python 2.7
virtualenv –system-site-packages -p python3 targetDirectory # for Python 3.X

上面红色的安装路径可以由自己来决定,没有强制规定一定要放在哪里,以本例来说是放在 /opt/tensorflow 下,你没特别指定的话,预设是你目前操作的使用者帐号的家目录底下。

安装完毕后就可以启动 tensorflow 的执行环境了。

source /opt/tensorflow/bin/activate

可以看到你的命令提示字元前面多了一个“(tensorflow)”,代表已经启用了。安装完毕后可以先更新套件一下。(注意下面的指令需要在有“(tensorflow)”的时候使用才行)。

(tensorflow)$ pip install –upgrade tensorflow-gpu # for Python 2.7 and GPU
(tensorflow)$ pip3 install –upgrade tensorflow-gpu # for Python 3.n and GPU

可以开始来测试看看有没有正常运作,先输入以下指令。

(tensorflow)$ python

然后依序输入以下指令后你会看到程式回传给你“’Hello, TensorFlow’”的字样代表是有正常在运作的。

import tensorflow as tf
hello = tf.constant(‘Hello, TensorFlow!’)
sess = tf.Session()
print(sess.run(hello))

要离开 tensorflow 的执行环境的话就输入:

(tensorflow)$ deactivate

  • Tensorflow:https://www.tensorflow.org/install/
  • TensorFlow 官方文档中文版
  • 真正从零开始,TensorFlow安装入门教程!
  • 在 Ubuntu 16.04 安装 CUDA 8.0 和 TensorFlow 0.11 并使用内显显示画面

(首图来源:shutterstock)

延伸阅读:

  • AI 加速器自学组装指南(一)──基本架构

   特别声明    本页内容仅供参考,版权终归原著者所有,若有侵权,请联系我们删除。