美文网首页我爱编程
利用pyenv和Anaconda安装TensorFlow-gpu

利用pyenv和Anaconda安装TensorFlow-gpu

作者: halolong | 来源:发表于2018-04-24 23:17 被阅读437次

    前言

    以下采用的版本设置均可以参考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都进行一次。
    

    最后

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

    相关文章

      网友评论

        本文标题:利用pyenv和Anaconda安装TensorFlow-gpu

        本文链接:https://www.haomeiwen.com/subject/ccwslftx.html