Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)

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

显示结果如图所示:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

(2)检查gcc版本和 g++版本

打开终端,并输入:

$ gcc –version

$ g++ –version

如果不显示版本号,请安装:

安装命令为:

$ sudo apt-get install gcc g++

(3)下载CUDA

到官网下载对应系统的CUDA安装包。

CUDA 8.0 Downloads

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

强烈建议选择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

如图所示:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》 重启电脑,再次进行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

会进入如下界面:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

一直按enter键,直到100%,会出现如下配置界面:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

如果安装成功会显示如下提示:

=============

===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

会有如下结果显示:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

b.打开终端,并输入:

$ nvcc –version

会有如下结果显示:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

c.测试samples,打开终端,并输入:

cd到NVIDIA_CUDA-8.0_Samples目录,在该目录下进行编译:

$ make

编译完成后,cd到bin/x86_64/linux/release目录,并运行脚本

$ sudo ./deviceQuery

查看输出结果,如图所示。

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

$ sudo ./bandwidthTest

查看输出结果,如图所示。

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

至此,CUDA部分安装完毕。

3.安装cuDNN相关

说明:cuDNN全称CUDA Deep Neural Network library,是nvidia专门针对深度神经网络设计的一套GPU计算加速库,被广泛用于各种深度学习框架

下载cuDNN,需要访问nvidia对应官网NVIDIA cuDNN,进行注册并填写相应的调查问卷,并选择对应CUDA版本的cuDNN安装版本,如图所示:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

为了方便大家,在此我直接提供对应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,各位各取所需~

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

第一步:安装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上选择相应的安装包并下载,其地址为:

bazelbuild/bazel

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

我使用的安装包为: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

会出现对应的提示信息~

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

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

看是否输出对应版本

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

第三步:测试以上步骤是否安装成功:

可以用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环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》 (此部分忘截图了..直接拿现成的图..)

第四步:配置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是否被正确安装:

直接上图:

《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》
《Tensorflow环境搭建笔记(ubuntu14.04+cuda8.0+cudnn6.0+tf)》

总结:

(1)

3种不同的安装方式,比较了一下优缺点:

Docker方式目前对gpu支持有限且对本地开发环境不够友好;

pip方式比较适合在本地开发tf的应用程序,缺点是无法修改tf本身;

源码安装方式比较灵活,但可以明显感觉到过程繁琐。一般需要修改tf本身或者需要支持比较特殊的gpu时会使用到。

(2)

整个安装过程较磨人。。。前前后后历时好几天,今天终于部署成功。

文档本身写的较匆促,希望这篇文档能帮助大家少走弯路。

在后续的学习和使用过程中互相帮助,毕竟配置环境只是第一步。。。

    原文作者:泼猴小明
    原文地址: https://zhuanlan.zhihu.com/p/26325864
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞