Ubuntu18.04安装Tensorflow-gpu如此多坑,这篇文章将拯救你于水火之中

摘要

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

  • 安装Nvidia驱动时提示显卡被占用?
  • 安装Nvidia驱动时提示gcc版本太高?
  • 安装Nvidia驱动的正确姿势?
  • 驱动装炸了,卸载Nvidia驱动的正确姿势?
  • CUDA安装与配置的正确姿势?
  • cnDNN安装与配置的正确姿势?

前排提醒!!!

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