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. Xtreme9.0 - Communities 强连通

    Xtreme9.0 - Communities 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/c ...

  2. spring cloud 学习(9) - turbine stream无法在eureka注册的解决办法

    turbine是啥就不多解释了,初次接触的可以移步spring cloud 学习(4) - hystrix 服务熔断处理 拉到最后看一下,turbine stream默认情况下启动成功后,eureka ...

  3. Linux内存管理学习3 —— head.S中的段页表的建立

    作者 彭东林 pengdonglin137@163.com 平台 TQ2440 Qemu+vexpress-ca9 Linux-4.10.17 正文 继续分析head.S: ldr r13, =__m ...

  4. 利用Ffmpeg获得flv视频缩略图和视频时间的代码

    问题描述:获得flv视频的缩略图和视频时间长度 谷歌了半天发现可以使用Ffmpeg获得视频的一些信息,先介绍一下FFMEPG 这里简单说一下:FFmpeg是用于录制.转换和流化音频和视频的完整解决方案 ...

  5. MORMOT的数据序列

    MORMOT的数据序列 mormot服务器回复客户端通过Ctxt.OutContent属性. 此属性的类型是:SockString.   // property OutContent: SockStr ...

  6. C#编程(五十九)----------集合的性能

    各种集合的性能 许多集合类提供了相同的功能,例如,SortedList类与SortedDictionary类的功能几乎完全相同.但是,其性能常常有很大的区别.SortedList集合使用的内存少,So ...

  7. C#编程(二十二)----------继承的类型

    继承的类型 在面向对象的编程中,有两种截然不同的集成类型:实现继承和接口继承 实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数.在实现继承中,派生类型采用基类型的每个函数的实 ...

  8. 声卡由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备。(代码 19),

    https://zhidao.baidu.com/question/531423560.html 开始 菜单运行  regedit  找到 HKEY_LOCAL_MACHINE\SYSTEM\Curr ...

  9. UITextField的简易封装

    UITextField的简易封装 效果 源码 https://github.com/YouXianMing/UI-Component-Collection 中的 UITextFieldView // ...

  10. 犯罪心理第一季/全集Criminal Minds迅雷下载

    本季Criminal Minds Season1(2005)看点:<犯罪心理>是CBS在2005年9月22日首播的犯罪剧情系列剧,描述了FBI位于维吉尼亚州匡提科总部下属的BAU(行为分析 ...