Ubuntu18.04安装Tensorflow-gpu如此多坑,

2018-12-11  本文已影响0人  尼诺阳

摘要

Ubuntu18.04安装Tensorflow-gpu,坑成马。
不想踩坑?有缘千里来相会,这篇文章将梳理出作者遇到的所有天坑。
对于下列问题,你可以在本文中找到答案

前排提醒!!!

如果Ubuntu提示系统升级,千万不要点!千万不要点!千万不要点!一键爆炸了解一下。

正文

组件版本:

Operating System : Unbuntu 18.04 LTS
Nvidia Graphic Card : Nvidia 940MX
Nvidia Driver: NVIDIA-Linux-x86_64-410.78
CUDA :  CUDA 9.0
cuDNN : cuDNN 7.1.4
Tensorflow : 1.5.0 GPU Version

请保证你的系统是纯净的,安装过后没有进行过任何多余操作

  1. 禁用预安装的nouveau驱动

    用下面的指令创建新文件blacklist-nouveau.conf*

     sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
    

    并添加如下内容

     blacklist nouveau
     options nouveau modeset=0
    

    Okay. 关闭文件,执行下列命令,重启。

     sudo update-initramfs -u
     sudo reboot
    

    重启完成后,用下面这个命令,检验nouveau是否已经被禁用了。

     lspci | grep nouveau
    

    如果被禁用了,那么terminal里不会输出任何东西。

  1. 安装 gcc 6

    从CUDA 4.1版本开始,现在支持gcc 4.5。gcc 4.6和4.7不受支持
    从CUDA 5.0版本开始,现在支持gcc 4.6。gcc 4.7不受支持
    从CUDA 6.0版本开始,现在支持gcc 4.7
    从CUDA 7.0版本开始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上支持4.9
    从CUDA 7.5版开始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上支持4.9
    从CUDA 8版本开始,Ubuntu 16.06和Fedora 23完全支持gcc 5.3
    从CUDA 9版本开始,Ubuntu 16.04,Ubuntu 17.04和Fedora 25完全支持gcc 6
    CUDA 9在CUDA中不支持gcc 7

    作者执笔写这篇文章时,Ubuntu18.04 LTS自带的gcc版本是7.3.0。CUDA9.0是不支持gcc 7的。因此你需要安装一个低版本的gcc。在这里我选用gcc 6,下列命令可用于安装gcc 6。

     sudo apt-get install gcc-6
     sudo apt-get install g++-6
    

    建立 soft link :

     sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
     sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
    

    此时你应该已经可以在terminal里调用gcc了,用下面的命令进行测试。

      gcc --version
    
  1. 安装Nvidia驱动

    根据你显卡的型号,去Nvidia官网下载对应驱动安装程序的runfile版本。

    Ctrl + Alt + F3,进入文本命令行。登录,使用下面的两行指令终止GUI操作。对于Ubuntu18.04来说,第二行应该管用。

     sudo service lightdm stop
     sudo service gdm3 stop
    

    用如下指令运行.run文件

     sudo $DRIVER_DIR/NVIDIA-Linux-x86_64-410.78.run
    

    如果你发现不能运行,在运行之前,尝试用先用下面的指令

     chmod u+x $DRIVER_DIR/NVIDIA-Linux-x86_64-410.78.run
    

    你可能会发现安装程序会提示你缺少很多依赖,例如make。按照安装程序的指示,用apt把该装的都装了。等所有依赖都安装完毕,你应该就可以顺利安装驱动了。期间你可能会遇到各种各样的提示框,说的还很吓人。在下也不懂。选YES就是了,反正是纯净系统,大不了重头再来。

    安装完成后,用下面的指令测试是否安装成功。

     nvidia-smi
    
  1. 安装 CUDA 9.0

    根据你所要使用的Tensorflow版本选择对应的CUDA的runfile安装程序下载。

    tensorflow-gpu v1.9.0 | cuda9.0 | cuDNN7.1.4可行 | 备注:7.0.4/ 7.0.5/ 7.1.2不明确
    tensorflow-gpu v1.8.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
    tensorflow-gpu v1.7.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
    tensorflow-gpu v1.6.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
    tensorflow-gpu v1.5.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
    tensorflow-gpu v1.4.0 | cuda8.0 | cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知
    tensorflow-gpu v1.3.0 | cuda8.0 | cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知
    tensorflow-gpu v1.2.0 | cuda8.0 | cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知
    tensorflow-gpu v1.1.0 | cuda8.0 | cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知

    Ref: https://blog.csdn.net/lifuxian1994/article/details/81103530

    运行

         sudo $CUDA_DIR/cuda_9.0.176_384.81_linux.run
    

    开头的协议太长,按空格加速跳过。之后你将进行一系列的选择,除了问你 “是否要安装CUDA自带的Nvidia驱动程序” 选NO之外, 其余全选YES。我们刚刚自己安装了驱动,不用它的。

    顺利安装完成后,用下列指令将CUDA路径加入系统变量

     export PATH=$PATH:/usr/local/cuda-9.0/bin
     export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    

    上面的指令只能在当前terminal有用。如果想永久设置,打开下面的文件,并把上面两行放到文件的最后。

     ~/.bashrc
    

    用下面的指令测试CUDA是否安装成功

     nvcc --version
    

    你应该可以得到nvcc编译器对应的版本信息

  1. 安装Tensorflow-gpu

    我们使用pip安装Tensorflow-gpu。pip 应该没有随系统安装,没有pip的先用下面的指令安装pip。

     sudo apt install python-pip
    

    然后执行下面的指令安装tensorflow-gpu 1.5.0

     pip install tensorflow-gpu==1.5.0
    

    如果你不加 '==1.5.0',将默认安装最新版本(本人执笔时是1.12.0)
    安装完成后,用下列指令测试tensorflow是否安装成功。

    pip list
    

    你应当可以看到tensorflow-gpu 1.5.0在列表之中。但现在距离安装完成还差一步之遥。

  2. 安装 cuDNN

    下载cuDNN的Ubuntu版本的Runtime安装程序(.deb格式文件)。下载完成后,双击即可安装。

    现在,万事俱备,你可以用下面的python程序测试Tensorflow-gpu版本是否被成功安装。

    import tensorflow as tf 
    sess = tf.Session() 
    a = tf.constant(1) 
    b = tf.constant(2) 
    print(sess.run(a+b)) 
    

    Expected output

     3
    

    If 3 is printed on your screen, congratulations! You are ready to go.

Follw My Wechat Official Account
上一篇下一篇

猜你喜欢

热点阅读