近期,我们实验室开了一个新的方向,关于AI,随后,我开始学习tensorflow的一些知识,要使用该软件,首先要正确安装,尤其是用到gpu的时候,需要安装tensorflow的gpu版本,目前最新的版本是tensorflow1.5,cuda的最新版本是9.1,但是目前tensorflow只支持cuda9.0,因此,我们用的是tensorflow1.5-gpu和cuda9.0 。
我们的服务器安装的是ubuntu16.04 server版,个人喜欢ubuntu系统,因此,此后所有的命令行都是基于ubuntu系统写的,如果使用了其他系统,您可根据等价命令来完成操作。
另外,我们的迷你集群共有3台服务器,每台服务器配备有一个NVIDIA Tesla K80 计算卡。目的主要在于测试分布式系统的性能表现。
1、nouveau驱动去除。
首先,ubuntu系统中自带了公版显卡驱动,需要将其禁用,操作是:
(1) 在再modprobe.d文件夹下创建 blacklist-nouveau.conf
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
(2)在创建的文件中写入以下语句:
blacklist nouveau
options nouveau modeset=0
(3)更新一下,使其生效
sudo update-initramfs -u
(4)重启计算机,强制使blacklist生效
sudo reboot
(5)检查是否成功去除nouveau驱动
lsmod | grep nouveau
如图所示,当输入上述命令之后,没有任何显示,证明nouveau驱动已经被去除,可以开始NVIDIA的驱动安装工作。
如果是这样,表示没有去除成功,重复上述步骤。
2、NVIDIA驱动的安装
(1)、查看gpu是否被识别
lspci | grep NV
如果显示如上图所示,证明已经识别成功,有的机器可能会因为pcie的选项设置被禁用,所以,无法识别显卡,如果是那样,可以在bios中将对应项设置为enable即可。
(2)、但此时,显卡的驱动并没有安装,需要我们下载对应的显卡驱动。这里有几种方法,先说一种最为常规的方法,就是在官网上下载安装包,(官方下载:http://www.nvidia.cn/Download/index.aspx?lang=cn),在网页上选择自己服务器对应的系统版本,使用的显卡型号等,下载对应的驱动版本。如下图是我的选择
大家在上图可以看到CUDA Toolkit选项,其实如果你要用到该工具,在安装此工具的时候,就会让用户选择是否安装显卡驱动,这种方法在稍后的介绍中会介绍到,但总体来说,这一步比较简单,而且我采用的是在安装cuda的时候顺便安装了。
显卡安装成功后,输入命令:
watch -n 1 nvidia-smi
显示:
(3)安装cuda
我们选取的版本是cuda-9.0 。之所以使用cuda是因为当我们需要显卡去并行解决一些复杂的运算问题的时候,需要用到,而且安装tensorflow的时候,cuda是必须要的。在官网上下载即可。(https://developer.nvidia.com/cuda-90-download-archive?)
下载文件,可能要一个多G,下载结束后,安装即可:
sudo sh cuda_9.0.176_384.81_linux.run
这一步的意思就是是否安装显卡驱动,如果前面并没有安装,在这里可以选择y
安装成功以后,需要配置环境变量 :
vi ~/.bashrc
在文件中写入:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存后,键入命令:
source ~/.bashrc
至此,环境变量配置完成。
检查cuda是否安装成功。可以将cuda文件夹下的samples复制一份出来。
sudo cp -r /usr/local/cuda/samples /samples
sudo cd samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
若显示如下信息,表示安装正常。
(4)安装cudnn
cudnn是在cuda标准下,对一些常用的神经网络操作进行优化,所以,建议安装一下。
首先,在官方网站上下载对应buda版本的cudnn版本(https://developer.nvidia.com/rdp/cudnn-download)。如图
因为我是适用的cuda9.0,所以,以上红色方框中的两个均可。
先将这四个文件都下载下来,后三个主要用来验证是否安装成功。将下载的第一个文件(压缩包)解压,然后将其中的库文件复制到安装目录下。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
检查安装是否成功:
然后分别运行后三个文件,需要按顺序运行。
sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.5.15-1+cuda9.0_amd64.deb
但是下载后,这三个包名字是不太一样的,所以,有一个简单的方法就是,根据文件大小,先运行大的文件,再运行小的文件。
结束之后我们需要将几个文件复制到/usr/lib目录下,避免接下来的测试报错。
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
本文所有的测试都是将相应的文件复制一份出来进行编译,这次也不例外
sudo cp -r /usr/src/cudnn_samples_v7/ /HOME/cudnn_samples_v7
cd到/HOME/cudnn_samples_v7/mnistCUDNN目录下。
sudo make clean
sudo make
./mnistCUDNN
当结果中出现Test passed!时,表示安装成功。
(5)安装tensorflow。
sudo apt-get install python
sudo apt-get install python-pip python-dev
因为tensorflow基于python编写,所以python那一套东西肯定是需要的,很多linux系统是自带python的,但是,我的这个服务器版本比较干净,所以,需要自己安装,以上是安装语句。
tensorflow的安装比较简洁,相对而言符合google的风格,但是,由于墙的原因,下载速度让人着实不爽。这里可以参考官方手册,一句命令即可搞定。这里推荐使用pip安装
sudo pip install tensorflow-gpu
sudo pip install upgrade
如果上述过程中,出现pip版本过低的情况升级就好,命令是:
python -m pip install --upgrade pip
如果按照上述方法安装tensorflow一定要写sudo,否则就哭吧,当然也可以在国内一些源上下载,例如:(https://pypi.python.org/pypi/tensorflow-gpu)或者(https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow-gpu/)
至此,等安装结束,tensorflow部署完毕。如图所示:
测试安装结果:
表示安装成功。