0.声明
使用深度学习工具时个人推荐使用linux平台(Ubuntu/CentOs),并不是因为排斥windows,而是为了“躲坑”,再者近几年Mac OSX中使用的是AMD系列显卡,不支持cuda加速,只能使用cpu版本的深度学习工具,故也不特别推荐。
安装过程折腾了好久,前后重装了大概3 4次,走了不少弯路。写下本文档希望对大家有所帮助。
[环境]
台式机:Lenovo-H5060
显卡: 核显:忘了。。
独显:GeForce GT 720
系统环境:Ubuntu14.04 64位系统 (强烈建议使用64位)
——————————————————————————————————
1.安装ubuntu14.04
该步骤较简单,无脑百度/Google即可。
2.安装CUDA相关
(1)验证机器是否有nvidia显卡:
打开终端,并输入:
$ lspci | grep –i nvidia
显示结果如图所示:
(2)检查gcc版本和 g++版本
打开终端,并输入:
$ gcc –version
$ g++ –version
如果不显示版本号,请安装:
安装命令为:
$ sudo apt-get install gcc g++
(3)下载CUDA
到官网下载对应系统的CUDA安装包。
强烈建议选择run格式的安装文件,即 cuda_8.0.61_375.26_linux.run
(4)禁用自带的显卡nouveau驱动
a. 查看电脑中是否有已经启动的nouveau驱动
打开终端,并输入:
$ lsmod | grep nouveau
如果有输出,则表示有正在运行的nouveau(红色高亮)
如果没有输出,请跳至(5)步骤
b. 使用vim禁用nouveau [vim是ubuntu下常用编辑器]
打开终端,并输入:
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf
按i进入编辑模式,并输入:
blacklist nouveau
options nouveau modeset=0
按esc退出编辑模式,并输入:
:wq
如图所示:
重启电脑,再次进行a步骤,发现输出为空,进行下一步~
(5)重新生成kernel initramfs和安装kernel header
打开终端,并输入:
$ sudo update-initramfs –u
$ sudo apt-get install linux-headers-$(uname -r)
(6)安装cuda安装过程中所需的依赖包
打开终端,并输入:
$ sudo apt-get install freeglut3-dev
$ sudo apt-get install build-essential
$ sudo apt-get install libx11-dev
$ sudo apt-get install libxmu-dev
$ sudo apt-get install libxi-dev
$ sudo apt-get install libgl1-mesa-glx
$ sudo apt-get install libglu1-mesa
$ sudo apt-get install libglu1-mesa-dev
如果安装过程中出现“有未满足的依赖关系”的错误,请使用aptitude命令重新进行安装,其命令格式为:
$ sudo aptitude install ****** (******为包名)
(6.5)独立安装显卡驱动(说明:如果选择单独安装之前下载的nvidia专用驱动,则进行此步骤,否则,就直接进行步骤(7),因为在安装cuda的过程中有选择“是否安装使用nvidia加速驱动”这一项。)
步骤为:
ctrl+alt+f1进入命令行模式,并输入 用户名 和密码 进行登录
$sudo service lightdm stop %关闭图形界面
cd到驱动run安装文件所在的目录,并赋予安装包权限,再进行安装,其命令为:
$ chmod +x NVIDIA-Linux-x86_64-375.39.run
$ sudo sh NVIDIA-Linux-x86_64-375.39.run
装好驱动之后,重新启动图形界面
$ sudo service lightdm start
注意:安装完驱动之后,在进行cuda配置的时候选择不安装驱动。
(7)安装cuda
a. 关闭gui界面,进入命令行界面:
打开终端,并输入:
ctrl+alt+f1 %进入命令行之后需要输入 用户名 和 密码 进行登录
$ sudo service lightdm stop %关闭图形界面
b. cd到run安装文件所在的目录,并赋予安装包权限,其命令为:
$ chmod +x cuda_8.0.61_375.26_linux.run
c. 运行run安装文件
$ sudo sh cuda_8.0.61_375.26_linux.run
会进入如下界面:
一直按enter键,直到100%,会出现如下配置界面:
如果安装成功会显示如下提示:
=============
===Summary===
=============
Driver:Installed
Toolkit:Installed in /usr/local/cuda-8.0
Samples:Installed in /home/faceless
重新启动图形界面:
$ sudo service lightdm start
(8)配置环境变量
打开终端,并输入:
$ sudo vim /etc/profile
按i进入编辑模式,并在文件最后一行输入:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
按esc退出编辑模式,并输入:
:wq
使新配置的环境变量生效
$ source /etc/profile
(9)测试cuda中的samples,确认是否安装成功
a.打开终端,并输入:
$ nvidia-smi
会有如下结果显示:
b.打开终端,并输入:
$ nvcc –version
会有如下结果显示:
c.测试samples,打开终端,并输入:
cd到NVIDIA_CUDA-8.0_Samples目录,在该目录下进行编译:
$ make
编译完成后,cd到bin/x86_64/linux/release目录,并运行脚本
$ sudo ./deviceQuery
查看输出结果,如图所示。
$ sudo ./bandwidthTest
查看输出结果,如图所示。
至此,CUDA部分安装完毕。
3.安装cuDNN相关
说明:cuDNN全称CUDA Deep Neural Network library,是nvidia专门针对深度神经网络设计的一套GPU计算加速库,被广泛用于各种深度学习框架
下载cuDNN,需要访问nvidia对应官网NVIDIA cuDNN,进行注册并填写相应的调查问卷,并选择对应CUDA版本的cuDNN安装版本,如图所示:
为了方便大家,在此我直接提供对应CUDA8.0版本的CUDNN6.0.20版本。下载链接:
链接: https://pan.baidu.com/s/1jHTPnj4 密码: ngdf
安装cuDNN
a.下载并解压
我下载的安装文件是:cudnn-8.0-linux-x64-v6.0.tgz
解压安装包至home路径下,解压后会在当前路径下出现名为cuda的文件夹
其命令为:
$ tar xvzf cudnn-8.0-linux-x64-v6.0.tgz
b.复制相应文件到对应文件夹
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
c.修改文件权限,并创建新的软链接
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
$ cd /usr/local/cuda/lib64
$ sudo rm –rf libcudnn.so libcudnn.so.6
$ sudo ln –s libcudnn.so.6.0.20 libcudnn.so.6
$ sudo ln –s libcudnn.so.6 libcudnn.so
至此,cuDNN部分安装完毕
4.安装tensorflow(tf)相关
(1)tf依赖包
Tensorflow有两个主要依赖的工具包,分别为Protocol Buffer和Bazel。前者是处理结构化数据的工具,tf中的数据基本都是通过Protocol Buffer来组织;而后者是一种编译工具。
(2)安装方式:
a.使用Docker安装(傻瓜式的虚拟化镜像安装,多用于windows平台,我不太推荐。。。)
b.使用pip安装
pip是管理python软件包的工具常用工具之一。通过pip可以安装已经打包好的Tensorflow(.whl文件)以及Tensorflow所需要的依赖包。目前只有在已安装了CUDA toolkit和cuDNN的64位ubuntu系统下可以通过pip安装支持gpu版本的tensorflow。
目前Tensorflow只提供了部分操作系统下的已打包好的安装文件,详见:tensorflow 1.1.0rc1,各位各取所需~
第一步:安装pip
打开终端,并输入:
$ sudo aptitude install python-pip
$ sudo aptitude install python-dev
第二步:通过pip安装tf
由于ubuntu系统自带python2.7版本,故在终端下输入如下命令:
$ sudo pip install tensorflow- …… x86_64.whl
若安装了python 3.x版本
则使用命令:
$ sudo pip3 install tensorflow- …… x86_64.whl
注意:如果在安装过程中出现形如“tensorflow- …… x86_64.whl is not a supported wheel on this platform”的错误提示,请先进行pip的版本升级再重新尝试安装。升级命令为:
$ pip install –upgrade pip
c.从源代码编译安装(笔者选择的方式)
从源代码安装tensorflow的过程主要是将tensorflow源代码编译成pip所使用的wheel文件之后,通过上面提供pip安装方法就可以完成安装。
第一步:安装编译工具Bazel
首先要安装jdk8。打开终端,并输入:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
然后安装Bazel的其它依赖包:
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
再在Bazel的githu上选择相应的安装包并下载,其地址为:
我使用的安装包为:bazel-0.4.5-jdk7-installer-linux-x86_64.sh
打开终端,并输入:
$ chmod +x bazel-0.4.5-jdk7-installer-linux-x86_64.sh
$ ./bazel-0.3.1-jdk7-installer-linux-x86_64.sh –user (该步骤会在主目录下生成bin文件夹)
$ export PATH=”$PATH:$HOME/bin”
并将环境变量添加至 /etc/profile 文件中。
$ sudo vim /etc/profile
更新系统变量
$ source /etc/profile
如果bazel安装成功,在终端下输入
$ bazel
会出现对应的提示信息~
Bazel安装完成后还需要安装Tensorflow依赖的其它工具包,其命令为:
$ sudo apt-get install python-numpy swig python-wheel
由于我在安装python-wheel时提示找不到安装,迫于无奈选择本地安装方式,给出python-wheel的百度网盘地址:
链接: https://pan.baidu.com/s/1o8Au3B8 密码: jgaj
第二步:安装Protocol Buffer
为了方便,先给出安装包网盘地址:
链接: https://pan.baidu.com/s/1gfLycr5 密码: 4tq9
打开终端,并输入:
$ tar zxvf protobuf-2.6.1.tar.gz
$ cd protobuf-2.6.1
$ ./configure
$ make
$ make check
$ sudo make install
之后需要配置环境变量,打开终端,并输入:
$ sudo vim ~/.profile
在配置文件末尾添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
保存并退出后,并使之生效,其命令为:
$ source ~/.profile
$ sudo ldconfig
测试是否安装成功,打开终端,并输入:
$ protoc –version
看是否输出对应版本
第三步:测试以上步骤是否安装成功:
可以用bazel对tensorflow中自带的教程事例(tutorials_example)进行编译,打开终端,并输入:
$ cd tensorflow/
$ bazel build -c opt -config=cuda //tensorflow/cc:tutorials_example_tr
ainer (说明:该编译步骤可能会比较耗时,笔者用了n小时。。)
$ bazel-bin/tensorflow/cc/tutorials_example_trainer –use_gpu
结果输出为2维矩阵计算,如图所示:
(此部分忘截图了..直接拿现成的图..)
第四步:配置Tensorflow的编译环境
在所有依赖的工具包都安装完成之后就可以开始从源码来安装tensorflow了。首先需要在github上下载源码,打开终端,并输入:
$ git clone tensorflow/tensorflow
源码下载完成后,需要运行configure脚本来配置环境信息,打开终端并输入:
$ cd tensorflow
$ ./configure
……
……
……
……
(配置过程因机器配置而已,故省略,请各位见谅)
当环境配置完成之后,通过Bazel来编译生成wheel包:
$ cd tensorflow
$ bazel build -c opt -config=cuda //tensorflow/tools/pip_package:bui
ld_pip_package (-config=cuda 是表示使用cuda gpu加速)
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tenso
rflow_pkg
说明:编译过程持续了4个小时左右。。。
生成wheel包后,使用pip进行安装:
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.1.0rc0-cp27-cp27mu-linux_x86_64.whl
说明:wheel安装包的名字与系统环境有关,使用pip安装前可以到对应目录下通过ls命令确认安装包名字。
注意:如果在安装过程中出现形如“tensorflow- …… x86_64.whl is not a supported wheel on this platform”的错误提示,请先进行pip的版本升级再重新尝试安装。升级命令为:
$ pip install –upgrade pip
至此,tf部分安装完毕
5.tf测试样例
通过简单的测试样例来检验tf是否被正确安装:
直接上图:
总结:
(1)
3种不同的安装方式,比较了一下优缺点:
Docker方式目前对gpu支持有限且对本地开发环境不够友好;
pip方式比较适合在本地开发tf的应用程序,缺点是无法修改tf本身;
源码安装方式比较灵活,但可以明显感觉到过程繁琐。一般需要修改tf本身或者需要支持比较特殊的gpu时会使用到。
(2)
整个安装过程较磨人。。。前前后后历时好几天,今天终于部署成功。
文档本身写的较匆促,希望这篇文档能帮助大家少走弯路。
在后续的学习和使用过程中互相帮助,毕竟配置环境只是第一步。。。