Tensorflow With Gpu 安装指南(ubuntu16.04)

安装指南

1.前言

由于这是我头一次接触Tensflow和深度学习的东西,所以在安装的时候遇到了不少的问题,非常感谢各种前辈们的博文,在经历了不停的搜索和挣扎后,我终于成功的安装了Tensorflow with GPU support。

好啦,废话不多说,下面就是详细的Tensorflow-Gpu安装详情了。

2.准备工作

在安装Tensorflow前我们首先要确定自己的电脑是否支持Gpu Support,以下是确认清单(如果已经核实完毕,可以跳过本章节)

  • 显卡的品牌必须为NVIDIA
  • 显卡必须要在CUDA支持列表中-Support GPUs
  • 安装 Python2.7 或者 Python3.x (可以同时安装2.7和3.x)
  • 确认你的 pippip3 版本 **>= 8.1 **
  • 安装Python版本对应的 virtualenv

2.1 确认GPU是否支持CUDA

1 访问https://developer.nvidia.com/cuda-gpus

![](http://upload-images.jianshu.io/upload_images/8194080-f6a619ef6286c8b7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2 查找自己GPU的型号在下面的列表中(Compute Capability 体现的是你的运算能力,和其他无关)

![](http://upload-images.jianshu.io/upload_images/8194080-bdd4b90964af3850.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.2 安装python

2.2.1 Pythone 2.7 的安装与验证

# 安装 python2.7 发布版本,dev包必须安装,很多用pip安装包都需要编译
$ sudo apt-get install python2.7 python2.7-dev
# 校验安装的python 版本
$ python --version
输出结果: Python 2.7.12

2.2.2 Pythone 3.x 的安装与验证

# 安装 Python3.x 发布版本,dev包必须安装,很多用pip安装包都需要编译
$ sudo apt-get install python3.6 python3.6-dev
# 校验安装的python3 版本
$ python3 --version
输出结果: Python 3.6.2

Topic : 安装常见错误

  • Question 1 : 无法定位软件包
# 一般是因为无法获取正确的源造成的,请更新Ubuntu的源,并检查输入软件名称是否有误
# 换源指南 http://blog.csdn.net/happywho250/article/details/52506321
$ sudo apt-get update

2.3 安装pip

2.3.1 Python 2.x pip 安装与校验

# 安装 pip
$ sudo apt-get install python-pip
# 校验安装的pip 版本
$ pip --version
输出结果: pip 9.0.1 from /usr/local/lib/python2.7

2.4.2 Pythone 3.x pip3 安装与校验

# 安装 pip3
$ sudo apt-get install python3-pip
# 校验安装的pip3 版本
$ pip3 --version
输出结果: 输出结果: pip 9.0.1 from /usr/local/lib/python3.6

2.4.3 更新Pythone对应版本的pip(version >= 8.1 请跳过该步骤)

# Pythone 2.7 对应 pip 的升级方法
$ sudo pip install --upgrade pip

# Pythone 3.x 对应 pip 的升级方法
$ sudo pip3 install --upgrade pip

2.4 安装 virtualenv

2.4.1 virtualenv 安装与校验

# 安装 virtualenv
$ sudo python-virtualenv
# Pythone 3.x 对应 pip 的升级方法
$ virtualenv --version
输出结果: 15.1.0

3.安装CUDA和cuDNN支持

3.1 安装NVIDIA驱动

# 从软件源更新软件列表
$ sudo apt-get update

系统设置->软件更新->附加驱动->选择nvidia最新驱动(384)->应用更改


3.2 安装 CUDA 和 cuDNN 依赖

# 安装CUDA和cuDNN安装依赖
$ sudo apt-get install libcupti-dev

3.3 下载安装 CUDA8.0 和 cuDNN 6.0

3.3.1 CUDA8.0 安装

Tip : 为什么不下载 CUDA 9.0 和 cuDNN , 因为Tensflow暂时不支持这个版本 , 如果您安装的时间离 2017-09-29 有一段时间的话 , 推荐您先搜索目前Tensflow支持CUDA的版本

1 访问 https://developer.nvidia.com/cuda-toolkit-archive

2 选择对应版本 CUDA ToolKit 8.0 GA2 (Feb 2017)

3 下载对应版本的Deb包

  • Case 1 :Deb-Local版下载(推荐)
# 安装Deb的本地版本
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
$ sudo apt-get update
# 请注意必须要使用cuda-8.0,不然将会现在现在的最新版本
$ sudo apt-get install cuda-8.0
  • Case 2 :Deb-Network版下载(不推荐,仅当Local版本无法使用时作为代替)
# 安装Deb的网络版本
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
$ sudo apt-get update
# 请注意必须要使用cuda-8.0,不然将会现在现在的最新版本
$ sudo apt-get install cuda-8.0

3.3.2 cuDNN 安装

1 访问 https://developer.nvidia.com/cudnn 点击Download后注册登录

2 下载 cuDNN v6.0 Library for Linux

3 查看下载后的文件(如图所示下载的内容应该是一个.tgz文件)


4 在terminal中输入以下命令安装

# 安装指南 (请在安装完CUDA后再安装cuDNN)
$ tar xvzf cudnn-8.0-linux-x64-v6.0.tgz
$ 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 /usr/local/cuda/lib64/libcudnn*

3.3.3 配置 GPU Support 的环境依赖

以下两种方法你可以任选一种配置环境变量

  • case one : 在.bash_profile中配置环境变量
#在terminal中输入以下命令:
$ sudo gedit ~/.bash_profile
在文本中新增环境配置:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
#保存后,在terminal中输入以下命令:
$ source ~/.bash_profile
  • case two : 在.bash_profile中配置环境变量
#在terminal中输入以下命令:
$ sudo gedit ~/.bashrc
在文本中新增环境配置:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"  
export CUDA_HOME=/usr/local/cuda
#保存后,在terminal中输入以下命令:
$ source ~/.bashrc

4.安装Tensorflow

4.1 Pythone 2.7 安装Tensorflow

1 首先找到你打算安装Tensorflow环境的位置(本教程中安装的位置为~目录下)

2 在terminal中输入以下命令:

# Case 1 :安装Tensorflow With GPU
$ virtualenv --system-site-packages tensorflow-gpu //tensorflow-gpu 为文件夹名称
$ source ~/tensorflow-gpu/bin/activate
// 在这之后请注意观察 $ 前面的部分
(tensorflow-gpu) $ pip install --upgrade tensorflow-gpu
//在terminal中输入以下命令退出虚拟环境
(tensorflow-gpu) $ deactivate

# Case 2 :安装Tensorflow CPU-only support
$ virtualenv --system-site-packages tensorflow //tensorflow 为文件夹名称
$ source ~/tensorflow/bin/activate
// 在这之后请注意观察 $ 前面的部分
(tensorflow) $ pip install --upgrade tensorflow
//在terminal中输入以下命令退出虚拟环境
(tensorflow) $ deactivate

4.2 Pythone 3.x 的Tensorflow安装

1 首先找到你打算安装Tensflow环境的位置(教程中安装的位置为~目录下)

2 在terminal中输入以下命令:

# Case 1 :安装Tensorflow With GPU
$ virtualenv --system-site-packages tensorflow-p3-gpu //tensorflow-p3-gpu 为文件夹名称
$ source ~/tensorflow-p3-gpu/bin/activate
// 在这之后请注意观察 $ 前面的部分
(tensorflow-p3-gpu) $ pip3 install tensorflow-gpu
//在terminal中输入以下命令退出虚拟环境
(tensorflow-p3-gpu) $ deactivate

# Case 2 :安装Tensorflow CPU-only support
$ virtualenv --system-site-packages tensorflow-p3 //tensflow-gpu 为文件夹名称
$ source ~/tensorflow-p3/bin/activate
// 在这之后请注意观察 $ 前面的部分
(tensorflow-p3) $ pip3 install tensorflow
//在terminal中输入以下命令退出虚拟环境
(tensorflow-p3) $ deactivate

4.3 测试Tensorflow安装结果

# Case 1 : Python 2.7 Tensorflow 测试
$ source ~/tensorflow-gpu/bin/activate // 请将source后的地址换成您虚拟文件夹所在地址
$ python 
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!

>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42

# Case 2 : Python 3.x Tensorflow 测试
$ source ~/tensorflow-p3-gpu/bin/activate // 请将source后的地址换成您虚拟文件夹所在地址
$ python3
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!

>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
  • Topic 1:如果是GPU支持版本的话,在Terminal中会输出GPU型号和训练时间
  • Topic 2:细心的同学会发现除了成功信息外会有不少警告信息,这说明你的CPU并没有达到最高效率,如果希望提高速度去掉这几个Warning的话,你需要下载Tensorflow源码自己进行打包编译
  • Topic 3:GPU版本如果在导入Tensorflow的时候出现bug,请参考以下方式修改CUDA文件权限
# 在terminal中输入以下命令:
$ cd /usr/local/cuda/lib64/
$ sudo rm -rf libcudnn.so libcudnn.so.6
$ sudo chmod u=rwx,g=rx,o=rx libcudnn.so.6.0.21
$ sudo ln -s libcudnn.so.6.0.21  libcudnn.so.6
$ sudo ln -s libcudnn.so.6 libcudnn.so
  • Topic 4:如果在程序运行的过程始终出现CUDA out of memory,这是因为Tensorflow申请的GPU内存大于GPU能提供的内存
# 在代码session定义前新增配置:
>>> config = tf.ConfigProto(allow_soft_placement=True)
# 最多占gpu资源的70%
>>> gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)
# 开始不会给tensorflow全部gpu资源 而是按需增加
>>> config.gpu_options.allow_growth = True
>>> sess = tf.Session(config=config)

附录

附录1 : Ubuntu常见问题解决方法

  • Question 1: E 无法定位软件包
# 更换Ubuntu的软件源,并检查是否有输错软件名称
$ sudo apt-get update

Ubuntu换源帮助

附录2 : CUDA 和 cuDNN 安装常见问题解决方法

  • Question 1: CUDA文件权限不足,无法被链接
#在terminal中输入以下命令:
$ cd /usr/local/cuda/lib64/
$ sudo rm -rf libcudnn.so libcudnn.so.6
$ sudo chmod u=rwx,g=rx,o=rx libcudnn.so.6.0.21 
$ sudo ln -s libcudnn.so.6.0.21  libcudnn.so.6
$ sudo ln -s libcudnn.so.6 libcudnn.so
  • Question 2: CUDA out of memory
# 在代码session定义前新增配置:
>>> config = tf.ConfigProto(allow_soft_placement=True)
# 最多占gpu资源的70%
>>> gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)
# 开始不会给tensorflow全部gpu资源 而是按需增加
>>> config.gpu_options.allow_growth = True
>>> sess = tf.Session(config=config)

附录3 : 参考文献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容