前言
以下采用的版本设置均可以参考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 Linux
即cudnn-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.5
是python 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都进行一次。
最后
有问题可以留言 & 欢迎交流。