http://blog.csdn.net/jerr__y/article/details/53695567

前言:本文主要介绍如何在 ubuntu 系统中配置 GPU 版本的 tensorflow 环境。主要包括: 
- cuda 安装 
- cudnn 安装 
- tensorflow 安装 
- keras 安装

其中,cuda 安装这部分是最重要的,cuda 安装好了以后,不管是 tensorflow 还是其他的深度学习框架都可以轻松地进行配置。

我的环境: Ubuntu14.04 + TITAN X (Pascal) + cuda8.0 + cudnn5.0 cudnn5.1+ keras(thenao | tensorflow)

1. cuda8.0 的安装

下载网址:https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu

有了GPU之后,我们还需要想办法把它用到我们的算法运算中来才能提高学习的速度。cuda就是这样的一个运算平台,装上cuda之后,我们才能用GPU来进行复杂的并行计算。

因为看了keras中文文档,里边提到Pascal架构的显卡只能选择CUDA 8.0,所以我就装了8.0,而且用着也的确没有问题。至于安装的话,但我是参考官网的指导手册安装的,没有问题,这里就不再写了。 
其实网上很多的中文安装教程都是按照指导手册上说的,比如:CUDA 入门之 Ubuntu 系统下环境搭建(注意,这个可是cuda7.5).

* 说说安装完后(以下为舍友提供) *

  • 查看安装是否成功 
    a. 打开cuda的安装目录 ,编译samples

    cd /usr/local/cuda-8.0/samples sudo make -j4 # 这里j4的意思是使用CPU四个核心同时编译,如果你的电脑是8核,可以使用j8,编译速度将会变快

    b. 编译成功后打开硬件测试文件

    ./usr/local/cuda-8.0/samples/bin/x86_64/linux/release/deviceQuery 
    会看到返回一大串信息,里面可以看到显卡型号以及显卡计算能力等,说明没问题了。


  • 安装完后添加环境变量: 
    a.在/etc/profile中添加环境变量, 在文件最后添加(文件要用sudo 打开):

    PATH=/usr/local/cuda-8.0/bin:$PATH export PATH 
    添加完后保存退出,执行如下命令使环境变量生效: source /etc/profile

    b.添加lib路径,在 /etc/ld.so.conf.d/ 加入文件 cuda.conf, 内容如下: /usr/local/cuda-8.0/lib64

    执行如下命令立刻生效:

    sudo ldconfig

2. cudnn v5cudnn 5.1 的安装

* 注意:之前安装了vudnn v5,结果使用tensorflow出错。然后替换成了cudnn 5.1。根据错误的提示,如果你的tensorflow是使用二进制文件安装的,直接把cudnn的include 和 lib64 文件夹下的文件相应的替换到 /usr/local/cuda/ 中就行了。但是由于我是直接用pip install tensorflow-gpu 的方式来安装的,替换掉文件后还是出错。解决办法呢就是把tensorflow-gpu卸了重新安装一遍!!*

refer to: Ubuntu 16.04 CUDA 8 cuDNN 5.1安装 
linux替换cudnn版本 
cudnn v5cudnn 5.1 的安装比较简单。下载地址

2.1. 下载

a. 首先需要注册一个账号,填一下问卷。登录之后才让你下载,而且下载之前也是简单填个问卷。 
b.下载 Download cuDNN v5 (May 27, 2016), for CUDA 8.0 ,注意要和自己安装的cuda的版本对应了。

2.2.安装(其实只是解压)

下载下来可能是 .solitairetheme8 文件, 先把后缀改成 .tgz 再进行解压即可:

cp  cudnn-8.0-linux-x64-v5.1.solitairetheme8 cudnn-8.0-linux-x64-v5.1.tgz
tar -xvf cudnn-8.0-linux-x64-v5.1.tgz
  • 1
  • 2

比如我下载的位置为: /home/common/cudnn/cudnn-8.0-linux-x64-v5.0-ga.tgz

a. 进入该目录

cd /home/common/cudnn/
  • 1

b. 解压文件,会生成一个cuda文件夹

tar  -zxvf  cudnn-8.0-linux-x64-v5.0-ga.tgz 
  • 1

c. 把相应的文件拷贝到cuda的对应目录。(注意是cuda, 不是cuda-8.0)

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
  • 1
  • 2

d. 修改软连接,在 /usr/local/cuda/lib64/ 目录下,使用 ll 命令可以查看软俩姐情况。如果里边有旧版本的 libcudnn.so. 开头的文件,全部删了,只需要保留现在最新的 libcudnn.so.5.1.3 文件即可,按下面顺序执行:

# libcudnn.so.5.1 -> libcudnn.so.5.1.3*
sudo ln -s libcudnn.so.5.1.3 libcudnn.so.5.1
# libcudnn.so -> libcudnn.so.5.1*
sudo ln -s libcudnn.so.5.1 libcudnn.so
  • 1
  • 2
  • 3
  • 4

如果报错,说某个文件已经存在了(libcudnn.so.5.1 或者 libcudnn.so),那么先删除该文件,再执行上面的两行命令即可。

e. 修改文件的权限

sudo chmod a+r /usr/local/cuda/include/cudnn.h  /usr/local/cuda/lib64/libcudnn*
  • 1

f.更新链接库:

sudo ldconfig
  • 1

3. 安装 tensorflow-gpu

首先安装 anaconda。anaconda 使用 python 进行科学运算,必须得第一步把 anaconda 安装上,安装好以后里边包括了各个库,比如 numpy, pandas, seaborn, matplotlib 等。

安装步骤非常简单,直接下载,执行就可以了,这里不多说。

因为keras 和theano 的安装都比较容易,也没出什么问题,所以就不说了。关于tensorflow,网上好多都说用源码来安装,其实只要版本选择正确的话不用源码安装,还是非常容易的,所以一定要和自己安装的cuda和cudnn的版本对应。 
比如我安装了cuda 8.0 和 cudnn v5 , 则根据tensorflow的官网的说明。

The GPU version works best with Cuda Toolkit 8.0 and cuDNN v5. Other versions are supported (Cuda toolkit >= 7.0 and cuDNN >= v3) only when installing from sources.

就是说如果不是cuda 8.0 和 cudnn v5的话,应该使用源码方式进行安装才行。幸运的是,我安装的正好就是cuda 8.0 和 cudnn v5,所以直接使用pip install 的方式就行了。因为我的是Ubuntu, 所以只需要执行下面一行命令就搞定了。

$ pip install tensorflow-gpu
  • 1

如果一切顺利,那么你的 tensorflow gpu 版本环境安装完毕,下面的内容也不用看了,直接起飞。


这样安装的是最新版本的 tensorflow,如果想安装旧版本的话,可以使用下面的方式进行安装:

(tensorflow)$ pip install --upgrade tfBinaryURL   # Python 2.7
(tensorflow)$ pip3 install --upgrade tfBinaryURL # Python 3.n
  • 1
  • 2

后面的这个 tfBinaryURL 是你所要安装的版本对应的链接,点击这里进行查看: 
比如要安装 python2.7 的 tensorflow1.2.1(其他版本直接改一下版本号就得了), 可以执行下面的命令:

pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp27-none-linux_x86_64.whl
  • 1

其中 –upgrade 表示会覆盖掉你当前已经安装的版本。如果提示你没有sudo权限的话,那么你可以安装到自己的目录下,再把路径添加到自己的环境变量中就可以了,通过 –target 参数来设置,其他所有的 python 库都可以以这样的方式安装。

pip install --target /home/huangyongye/my_python/ tensorflow-gpu
  • 1

安装完后,改一下你自己的环境变量:

vim ~/.bashrc
  • 1

然后在该文件里边添加你的安装路径:

PATH=/home/yongye/my_python:$PATH;
export PATH;
  • 1
  • 2

然后执行下面的命令即可:

source ~/.bashrc
  • 1

4. 配置keras

4.1. 设置后端(backend)

vi ~/.keras/keras.json
  • 1

使用tensorflow为后端的话,在keras.json 中写入:

{
"image_dim_ordering": "tf",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "tensorflow"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用teano为后端的话,在keras.json 中写入:

{
"image_dim_ordering": "th",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "theano"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

i其中,”image_dim_ordering”: “th” 表示使用theano的数据格式。关于’th’ 和 ‘tf’ 可以参考:keras的一些基本概念

4.2 设置gpu按需使用

refer to: Tensorflow设置显存自适应,显存比例 
如果是tensorflow的话,可以在你的代码中进行设置。比如:

# 设置tendorflow对显存使用按需增长。
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config) from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.utils import np_utils
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果是theano的话,用户在自己的home根目录下面建立.theanorc文件,在其中写入:

[global]
openmp=False
device = gpu
optimizer=fast_compile
floatX = float32
allow_input_downcast=True
[lib]
cnmem = 0.3
[blas]
ldflags= -lopenblas
[nvcc]
fastmath = True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中cnmem = 0.3 这一行表示占用GPU所有显存的30%.

5. 速度比较

s按照[译]神经网络的”Hello world” –keras 入门跑了个小例子。结果如下:

  • theano + gpu 
    CPU times: user 7.49 s, sys: 100 ms, total: 7.59 s 
    Wall time: 7.61 s

  • tensorflow + gpu 
    CPU times: user 48 s, sys: 7.06 s, total: 55 s 
    Wall time: 25.9 s

  • theano + cpu 
    CPU times: user 3.77 s, sys: 468 ms, total: 4.24 s 
    Wall time: 26.5

在这个小任务中,速度体现的并不是太好。毕竟CPU也是12核的,还有64G的DDR4内存,所有跑这个小任务还是蛮快的。

好吧,感觉很多东西还不是特别清楚,后期理解了再来更新。

转:ubuntu 下GPU版的 tensorflow / keras的环境搭建的更多相关文章

  1. Ubuntu下的Apache、Mysql、PHP环境搭建

    由于刚学习Linux,选择了界面比较友好的Ubuntu进行研究.命令行+可视化对于初学者来说组合还是比较不错的,图形界面作为命令行的一个过渡能比较直观的看到效果.在应用中学习是一个比较好的办法,我就是 ...

  2. ubuntu下基于Anaconda使用Tensorflow

    为了在ubuntu下利用Anaconda使用tensorflow,但在利用conda安装tensorflow,不能在终端,spyder和notebook中直接使用,需要我们进行一定的配置. 1.安装A ...

  3. (一)windows7下solr7.1.0默认jetty服务器环境搭建

    windows7下solr7.1.0默认jetty服务器环境搭建 1.下载solr solr7官网地址:http://lucene.apache.org/solr/ jdk8官网地址:http://w ...

  4. [AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建

    这篇文章详细介绍在centOS7.5上搭建基于keras/tensorflow的深度学习环境,该环境可用于实际生产.本人现在非常熟练linux(Ubuntu/centOS/openSUSE).wind ...

  5. Ubuntu18.04: GPU Driver 390.116 + CUDA9.0 + cuDNN7 + tensorflow 和pytorch环境搭建

    1.close nouveau 终端输入:sudo gedit /etc/modprobe.d/blacklist.conf 末尾加两行 blacklist nouveau options nouve ...

  6. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 8.仪表盘 Dashboard(horizon)安装配置

    仪表盘Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务.这个部署示例使用的是 Apache Web 服务器. 节点配置信息说明 ...

  7. Ubuntu下安装Anaconda和tensorflow

    官方指南:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/docs_src/install/install_linux. ...

  8. ubuntu下python3.6.5import tensorflow显示非法指令(核心已转储)

    1.版本 ubuntu版本为14.04 python为3.6.5 tensorflow为pip3安装的1.8.0版本 2.解决 删除原先的tensorflow:sudo pip3 uninstall ...

  9. GPU版的tensorflow在windows上的安装时的错误解决方案

    1.用vs编译cuda的sample时会提示找不到"d3dx9.h"."d3dx10.h"."d3dx11.h"头文件的错误,如果没有安装这 ...

随机推荐

  1. R基础学习(一)-- 连接mysql数据库

    测试环境:win10+RStudio (1)在Console加载两个插件 >install.packages('DBI') Installing package into ‘C:/Users/l ...

  2. Codeforces Round #369 (Div. 2) C. Coloring Trees 动态规划

    C. Coloring Trees 题目连接: http://www.codeforces.com/contest/711/problem/C Description ZS the Coder and ...

  3. 利用dynamic简化数据库的访问

    今天写了一个数据库的帮助类,代码如下. public static class DbEx { public static dynamic ReadToObject(this IDataReader r ...

  4. J-Link Version

    "J-Link / Flasher Portable V1 " "J-Link ARM / Flasher ARM V2 " "J-Link ARM ...

  5. STM32 HAL drivers < STM32F7 >

    Overview of HAL drivers The HAL drivers were designed to offer a rich set of APIs and to interact ea ...

  6. 什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

    什么是.NET? 起源:比尔盖茨在2000年的Professional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service ...

  7. C#编程(十七)----------Object类

    Object类 它是.NET Framework 中所有类的最终基类:它是类型层次结构的根.也就是说所有的类都拥有object类的方法,并能重写,调用. object的构造函数:public Obje ...

  8. WordPress主题开发:WP_Query基本用法

    为什么要学WP_Query? wordpress默认会根据网址调用数据,不能满足我们所有建站要求,而WP_Query可以用于查询任何你想要的内容,相当于自定义数据调用. 便于记忆,在讲用法之前我们回顾 ...

  9. Work Management Service application in SharePoint 2016

    最近开始弄SharePoint 2016的Workflow,遇到问题发现没有了Work Management Service application,然后用PowerShell命令创建也不行,bing ...

  10. Material Designer的低版本兼容实现(一)—— 简介 & 目录

    很长一段时间没写东西了,其实是因为最近在研究Material Designer这个东西,熬夜熬的身体也不是很好了.所以就偷懒没写东西,这回开的这个系列文章是讲如何将Material Designer在 ...