zoukankan      html  css  js  c++  java
  • utuntu16.04安装tensorflow1.4-gpu

    • 之前一直在windows下使用tensorflow,对cpu和gpu的安装都是比较顺利,都是使用anaconda环境下,创建虚拟conda环境,这样方便不同python版本的管理。
    • 一直也想尝试使用utuntu安装,从头是开学习一遍,昨天刚装了双系统,尝试先安装tensorflow,然后进行caffe安装。
    • Utuntu16.04+CUDA8.0+cuDNN(5.1-->6.0,tf1.2+ TiTan XP版本以上支持cuDNN6.0)+tensorflow1.4-gpu(自动安装最新版本)

    1.检测驱动

    nvidia驱动安装是一个比较头疼的事情,网上较多的教程通过下载.run文件,采用终端命令,禁用自带的 nouveau nvidia驱动来安装。但是我直接采用系统设置更新的:

    步骤:

    a) 进入系统设置--软件更新(software&updates)--额外驱动(additional Drivers),选择第一个选项(using nvidia binary driver --version .....),其他不变,点击Apply changes,。

    b) 重启系统。

    c) 终端输入nvidia-smi 进行验证,安装成功. 

    可能采用其他的禁止显卡,安装驱动,可能还会与遇见很多坑,我更新的版本:nvidia-384

    2.CUDA安装

    首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:

    a) 官网下载cuda_8.0.44_linux.run文件

    b) chmod +x  /*.run 更改权限 :root应该可以直接执行

    c) cd到文件目录,  ./cuda_8.0.44_linux.run 进行安装   (因为之前已经安装过驱动,开始安装时,第一个选项,是否安装驱动,选n 不安装(很重要),其它选y,路径默认即可)

    可能出现的错误:
    当出现“unsupport complier”错误时,说明gcc版本太高,需要降低gcc版本。解决办法如下: 安装gcc4.9与g++4.9 ;我先以前安装了g++4.9,但是显示gcc任然是5.4的,参考别人的:

    为什么需要先安装编译器GCC和G++,而不是先安装显卡驱动和cuda等等呢?
    首先,先安装显卡驱动,后安装GCC并降级的安装顺序过程中,遇到了很多问题。比如,在安装CUDA SAMPLES的过程中,遇到了问题/usr/bin/ld: cannot find –lGL,后面通过网上教程,重新连接该库文件,仍然不能通过OpenCV的编译。但是,先安装GCC,再安装显卡驱动,就不会遇到这个问题了。
    • 安装完成log:
    Driver:   Not Selected
    Toolkit:  Installed in /usr/local/cuda-8.0
    Samples:  Installed in /home/dsp, but missing recommended libraries
    
    Please make sure that
     -   PATH includes /usr/local/cuda-8.0/bin
     -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
    
    To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
    
    Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
    
    ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
    To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
        sudo <CudaInstaller>.run -silent -driver
    
    Logfile is /tmp/cuda_install_3147.log

    环境变量:首先下载Cuda8.0,然后进入下载目录,执行下列命令,即可安装Cuda; 安装完成后,配置环境变量,在home下的.bashrc中加入

    打开~/.bashrc文件:
    
    sudo vim ~/.bashrc
    
    将以下内容写入到~/.bashrc尾部:
    
    export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

    3.cuDNN安装

    cuDNN是GPU加速计算深层神经网络的库。 首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,可能需要注册一个账号才能下载.

    下载cuDNN5.1之后进行解压,cd进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
    
    sudo cp cudnn.h /usr/local/cuda/include/    #复制头文件
    
    再将cd进入lib64目录下的动态文件进行复制和链接:
    
    sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
    cd /usr/local/cuda/lib64/
    sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
    sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5  #生成软衔接(注意这里要和自己下载的cudnn版本对应,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)
    sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

    安装问题

    tensorflow安装所遇问题:libcudnn.so.6:cannot open sharedobject file: No such file or directory

     【报错】ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

    • 由于自己先安装cuDNN5.1;后面安装tensorflow是自动安装最新版本的tf1.4,但在tf1.3已经支持cuDNN6.0了。
    • 看了更新日志发现,1.3版本需要cuDNN v6.0做支持了,之前是5.1,于是去Nvidia官网下载cuDNN v6.0对应的系统版本安装就好了: 我使用cuDNN6.0
    • 或者降低版本
    问题解决:
    
    pip uninstall tensorflow-gpu
    pip install tensorflow-gpu==1.2

    4. Anaconda安装

    官网下载地址:https://www.continuum.io/downloads/

    在安装的过程中,会询问安装路径,按回车即可。之后会询问是否将Anaconda安装路径加入到环境变量(.bashrc)中,输入yes,这样以后在终端中输入python即可直接进入Anaconda的Python版本(如果你的系统中之前安装过Python,自行选择yes or no)。安装成功后,会有当前用户根目录下生成一个anaconda2的文件夹,里面就是安装好的内容

    下载完毕后,在terminal中到达文件所在位置
    
    bash Ana.......(快捷键Tab) .sh
    
    一路按回车键,中间记得输入一个yes就可以顺利完成安装。
    
    安装完后,配置环境路径:安装过程自动选择添加,就不需要手动添加
    
    # 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
    echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
    # 更新bashrc以立即生效
    source ~/.bashrc
    • 安装log:
    • 需要激活anconda环境才能使用,不然是默认的python2.7
    dsp@dsp:~/下载/cuda/lib64$ python
    Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    dsp@dsp:~/下载/cuda/lib64$ source /home/dsp/.bashrc
    dsp@dsp:~/下载/cuda/lib64$ python
    Python 2.7.14 |Anaconda, Inc.| (default, Oct 16 2017, 17:29:19) 
    [GCC 7.2.0] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    • Conda的环境管理功能允许我们同时安装若干不同版本的Python,并能自由切换。对于上述安装过程,假设我们采用的是Python 2.7对应的安装包,那么Python 2.7就是默认的环境(默认名字是root,注意这个root不是超级管理员的意思)。
    # 创建一个名为tenseorflow的环境,指定Python版本是3.5
    conda create --name tensorflow python=3.5
    
    # 安装好后,使用activate激活某个环境
    activate tensorflow  # for Windows
    source activate tensorflow # for Linux & Mac
    # 激活后,会发现terminal输入的地方多了tensorflow 的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.5对应的命令加入PATH
    
    # 此时,再次输入
    python --version
    # 可以得到`Python 3.5.3 :: Continuum Analytics, Inc.`
    
    # 如果想返回默认的python 2.7环境,运行
    deactivate tensorflow # for Windows
    source deactivate tensorflow# for Linux & Mac
    #可以得到`Python 2.7.13 :: Anaconda 4.3.1 (64-bit)`
    
    # 删除一个已有的环境
    conda remove --name tensorflow --all

    用户安装的不同python环境都会被放在目录~/anaconda/envs下,可以在命令中运行conda info -e查看已安装的环境,当前被激活的环境会显示有一个括号。

    (tensorflow_py3.5) dsp@dsp:/usr/local/cuda/lib64$ python
    Python 3.5.4 |Anaconda, Inc.| (default, Nov  3 2017, 20:01:27) 
    [GCC 7.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tensorflow as tf
    >>> 

    5.tensorflow-gpu安装

    • 安装只需要在对应的激活conda环境下:
    • pip install tensorflow
    • pip install tensorflow-gpu

    6.测试

    2017-11-05 12:32:46.636654: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
    2017-11-05 12:32:46.839884: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
    2017-11-05 12:32:46.840212: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: 
    name: TITAN Xp major: 6 minor: 1 memoryClockRate(GHz): 1.582
    pciBusID: 0000:01:00.0
    totalMemory: 11.90GiB freeMemory: 11.53GiB
    2017-11-05 12:32:46.840225: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: TITAN Xp, pci bus id: 0000:01:00.0, compute capability: 6.1)
    step 0, training accuracy 0.14
    step 100, training accuracy 0.88
    step 200, training accuracy 0.92
    step 300, training accuracy 0.92
    step 400, training accuracy 0.98
    step 500, training accuracy 0.96
    • 终端中输入$spyder,打开的始终是默认的python2.7;还不知道原因;
    • 在激活环境中打开spyder
    • dsp@dsp:~$ source activate tensorflow_py3.5
      (tensorflow_py3.5) dsp@dsp:~$ spyder
    • 但是在终端输入:anaconda-navigator ,然后launch spyder可以打开python3.5虚拟环境的spyder;或者使用pychram设置虚拟解释器
    • 下午在进行spyder配置和caffe的配置
    • 可能有些坑,还没有发现后续更新

    Reference:

  • 相关阅读:
    nacos安装配置和部署教程
    springcloudstream整合rabbitmq
    Springboot整合swagger2
    git命令详解
    Mybatis 注解开发传入List 两种方式接收方式 在IN场景中
    java 根据时间段查询数据库
    stream分页
    201521123068《Java程序设计》第1周学习总结
    201521123027 《JAVA程序设计》第二周学习总结
    201521123027 《JAVA程序设计》第一周学习总结
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/7787003.html
Copyright © 2011-2022 走看看