利用pyenv和Anaconda安装TensorFlow-gpu以及Keras

前言

以下采用的版本设置均可以参考tensorflow官网然后选择相应的CUDA以及cuDNN版本。另外说一句发现再这用锚点很难受。想要更好的阅读体验请直接访问我的博客
配置说明

Ubuntu 16.04, NVIDIA GTX 1060

搭建目标

CUDA 8.0, cuDNN 5.1, Tensorflow-gpu(本文目前只是1.2,浏览TensorFlow官网获取其他版本。注意与CUDA和cuDNN对应), Keras

做任何操作之前请看文章大纲

接下来会做什么?

  • pyenv安装以及常见命令
  • 安装Anaconda
  • 安装GPU驱动以及装载CUDA
  • 设置cuDNN
  • 创建环境安装TensorFlow-GPU
  • 安装Keras
  • [Keras demo
  • 常见问题列表

pyenv安装以及常见命令

首先介绍pyenv是什么东西?可以简单理解为一种能够管理多种python环境方便我们不同需求下运行不同的python并且全局设定。具体详情可以参见pyenv-github

1. 安装git

$ sudo apt-get install git #安装git
$ git --version #检查版本以及确认已经成功

2. 开始装pyenv

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv #下载源文件
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc  #定义PYENV_ROOT
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc #定义PYENV_ROOT
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc  #pyenv init

重启终端即可。

3. 查看可安装列表

$ pyenv install --list 

4. 安装Python的依赖包

$ sudo apt-get update
$ sudo apt-get install make build-essential libssl-dev zlib1g-dev
$ sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
$ sudo apt-get install llvm libncurses5-dev libncursesw5-dev

安装Anaconda

Anaconda是专门为了科学计算所封装的常用的python的数据包例如(numpy…) 其主要内容请Anaconda参考官网,考虑到国内网速比较慢甚至可能会导致中途失败,以下均用清华镜像 tuna(以下参考下载Anaconda3-5.1.0-Linux-x86_64.sh 备用)

$ cd  ~/.pyenv #进入.pyenv配置文件中
$ sudo mkdir cache #新建cache文件夹(默认没有)
$ cp Anaconda3-5.1.0-Linux-x86_64.sh ~/.pyenv/cache #通过cp命令 将xxx.sh文件copy到cache下
$ pyenv install anaconda3-5.1.0 #安装 默认会扫描cache目录下面的文件 所以可以快速安装
$ pyenv rehash # 刷新

参考常用命令

$ pyenv versions #查看本地的Python版本
$ pyenv install --list #查看可安装的列表
$ pyenv install xxxx #安装xxx
$ pyenv uninstall xxxx #卸载xxx
$ pyenv global 环境名称 # 设置全局Python环境版本
$ pyenv local 环境名称 # 设置本地shell的Python环境版本
# ps:其他命令请输入pyenv或者查询官方手册查看

安装GPU驱动以及装载CUDA

1. 卸载原有驱动(针对之前有驱动的情况)

$ sudo apt-get remove --purge nvidia*
$ sudo chmod +x *.run #赋给.run运行的权限
$ sudo ./NVIDA-Linux-x86_64-390.48.run --uninstall #具体版本参考自己的GPU型号去官网查询

2. 禁止nouveau驱动

$ sudo gedit /etc/modprobe.d/blacklist.conf
# 将下面的两句话加入这个配置文件中保存
blacklist nouveau
options nouveau modeset=0 

修改后执行sudo update-initramfs -u

重启电脑后,输入lsmod | grep nouveau。如果屏幕没有任何信息输出,说明禁止成功。

3.禁止X-windows服务

$ sudo service lightdm stop #会关闭图形化界面
# 然后Ctrl + Alt + F1 切换到到命令行界面 然后利用账户和密码登录

Tips: sudo service lightdm start 开启 Ctrl + Alt + F7 即可以切换回去。

4. 命令行驱动安装

$ sudo ./NVIDA-Linux-x86_64-390.48.run --no-opengl-files #不需要安装额外的OpenGL库(ubuntu本身已经有了)

一直看着提示安装,如果出现错误(32bit 兼容...)忽略不计,或者多次反复安装即可。

驱动测试
$ nvidia-smi #会显示出本机安装的驱动列表 有提示就行了。
# or
$ nvidia-settings #弹出NVIDIA对话框即可

5. 安装CUDA

首先官网下载好对应的.run文件 详情请看nvida CUDA

$ sudo ./cuda_8.0.61_375.26_linux.run --no-opengl-libs

然后根据提示进行安装 以下是我的选择

$ accept #同意安装
$ n #不安装driver,之前已经装载最新驱动
$ y #安装CUDA toolkit
$ <Enter>
$ <Enter>
$ y #允许创建目录
$ y #允许复制/Sample
测试CUDA Sample

编译以及测试deviceQuery

$ cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery

编译以及测试bandwidthTest

$ cd ../bandwidthTest
$ sudo make
$ ./bandwidthTest

如果两个的结果均为 Result = PASS,说明到现在我们已经完成了CUDA的安装

设置cuDNN

这里的主要工作是关联动态链接。

下载cuDNN 需要先注册账户

首先我们需要下载相应的cuDNN,我这里下载的是cuDNN v5.1 Library Linuxcudnn-8.0-linux-x64-v5.1.tgz,其他请参考官网cuDNN版本库

由于我安装发现在我的``/usr/local/下会出现cuda以及cuda-8.0`,所以我建议下面的操作两个都需要试试(视情况而定)。

解压下载的cudnn得到cuda这个文件夹并且进入进行一下操作

$ sudo cp include/cudnn.h /usr/local/cuda(需要后面都替换为cuda-8.0,后面都需要做两次)/include/ #复制头文件
$ sudo cp lib64/* /usr/local/cuda/lib64/
$ cd /usr/local/cuda/lib64
$ sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5 #这里生成软链接 根据自己下载cudnn版本不同 其数字会有所不同
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig -v #生成链接
$ ls # 查看一下当前目录下是否存在上面的so文件以及是否会有红色(表示链接错误)

创建环境安装TensorFlow-GPU

1. 安装pip

$ sudo apt-get install python-pip

2. 利用anaconda安装TensorFlow-GPU

首先需要根据CUDA和cuDNN选择相应的tensorflow版本 这里选择1.2 因为之前的驱动装的版本比较低,因为比较稳定。据你自己情况而定。

首先去看tensorflow官网不要去国内的网站中文网站,版本太低了。

查看Installing TensorFlow on Ubuntu首先查看CUDA以及cuDNN版本要求。

点击右边目录中的Installing with Anaconda

创建anaconda环境(为TensorFlow做准备)
$ pyenv global anaconda-xxx-xx # 首先切换之前装好的anaconda
$ conda create -n tensorflow(环境名称) #创建tensorflow环境可以理解为容器
开启TensorFlow环境
$ source activate tensorflow #跟前面的创建的名称一致
(tensorflow)$  # 你的shell就会变成这样 
安装TensorFlow-GPU
$ pip install --ignore-installed --upgrade tfURL

这里的tfURL需要根据不同的python版本以及cpu或者GPU选择,查看侧边菜单就能找到

由于我这里anaconda-3.5python 3.6所以就需要选择

GPU version:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp36-cp36m-linux_x86_64.whl

CPU version:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.2.1-cp36-cp36m-linux_x86_64.whl

然后等待安装(速度超级快!)

然后再尝试import tensorflow as tf 到这里会出现一些问题请参考后面的常见问题列表

安装Keras

到了这里应该是最简单的一步了。

$ source activate tensorflow # 首先进入我们之前搭建的环境
$ pip install keras #安装keras
# 等待安装结束

输入python进入环境中

import tensorflow as tf
import keras
# 没有报错就完成了所有的搭建

Keras demo

$ git clone https://github.com/fchollet/keras.git
$ cd keras/examples/
$ python mnist_mlp.py

接下来你就会看见很酷的训练数据以及模型,没有任何错误即可。

常见问题列表

Q1:

ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

解决思路:仔细看提示则就是提示libcudart.so.8.0不能打开共享链接,我们需要用一种方法找到这个东西(修改.bashrc文件)

$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/
# 再次解释,由于我安装cuda之后就会出现这两个文件,防止错误 所以我进行了两次操作

Q2:

ImportError: libcudnn.5: cannot open shared object file: No such file or directory

解决思路:其实这里也应该是文件问题,并且这个文件是在前面生成的软链接,所以现在重新进行生成链接操作即可。

$ cd /usr/local/cuda/lib64或者cuda-8.0
$ ls # 查看这个文件是否存在,我当时是红色就说明有问题,然后删除
$ sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5 #这里生成软链接 根据自己下载cudnn版本不同 其数字会有所不同
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig -v #生成链接
# 注意这里依然在cuda-8.0和cuda都进行一次。

最后

有问题可以留言 & 欢迎交流。

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

推荐阅读更多精彩内容