ubuntu16.04下的tensorflow源码安装,踩坑&填坑记录[ubuntu16.04+GTX960+CUDA8.0+cuDNN5.1.5]

来源:互联网 发布:怎么改淘宝卖家名字 编辑:程序博客网 时间:2024/04/30 17:24

2017.2.26添加: tensorflow1.0已出, ubuntu16.04 + CUDA8.0 + GTX960 + tensorflow1.0直接装好CUDA以及cudnn,pip install即可。


写在前面:

本文作者水平有限,难免有诸多错误,还请各位大神不吝赐教。
下面是几个主要参考的网站:
tensorflow官网
tensorflow的GITHUB网址
我爱自然语言处理
ubuntu论坛
谷歌搜索引擎

系统环境

ubuntu16.04.1+GTX960+CUDA8.0+cuDNN5.1.5+tensorflow-master

目标&方法简介

  1. 目标:安装tensorflow
  2. 方法:
    2.1. 安装驱动
    2.2. 安装CUDA
    2.3. 安装cuDNN
    2.4. 安装bazel
    2.5. 安装tensorflow

详细步骤

1. 安装驱动

打开设置–>软件和更新–>附加驱动,选取合适的nvidia的专有驱动。作者选用的是nvidia-367.53。

1. 建议选用361及以后版本(因为CUDA8.0的默认驱动为361)
2. 想要获得更多的驱动版本选择,可以加入nvidia的ppa
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

3. 加入ppa之后可以直接安装驱动
sudo apt-get install nvidia-367
4. 终端安装驱动可能会出现需要同意协议等界面,使用Tab,Shift,Enter按钮操作,此方法对于所有终端安装软件情况适用。
5. 建议加入ppa之后到附加驱动中安装驱动,因为如果安装版本不对,可能造成不可预料的后果,详见踩坑&填坑实录1

2. 安装CUDA

这个部分参照的是深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0。
在驱动安装的部分,上文要求安装几个软件,作者并不知道有什么用,但仍然安装了。
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev

其他可以参照上文安装,这里仅注明几个心得:
1. deb确实问题多多,亲测
2. 在询问是否安装驱动那里要选n。如果选择了y,正常情况在终端里是运行失败的,但如果运行成功,请参照踩坑&填坑实录1
3. -tmpdir=/opt/temp/的部分我没有加,也没有问题,个人觉得可能和电脑配置有关。
4. 加入PATH以及LD_LIBRARY_PATH的部分,上文给出的/usr/local/cuda-8.0的路径,但是官网以及其他博客都是使用/usr/local/cuda路径,不知道会有什么影响,作者采用了后者。
5. 测试的时候,有些测试需要sudo的权限,才可以正常测试。
6. 有时候ubuntu重启的时候nvidia的驱动会挂掉,可以采取重启或者重装的方法。作者采用了附加驱动的安装方法之后就没有遇到过这个问题。

3. 安装cuDNN

请严格按照tensorflow官网的要求安装,
tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


1. 下载Linux的tgz版本,不要下载deb或者run版本。
2. 复制的路径是cuda安装的路径,应该和你的PATH中CUDA指向路径一致。

4. 安装bazel

请按照bazel官网安装

1. bazel官网的ubuntu安装法安装的是0.4.0版本,此版本无法编译tensorflow0.11。如需编译tensorflow0.11,请按照installer安装法安装0.3.2版本。
2. 请严格按照bazel中的要求安装jdk,详见踩坑&填坑实录2
3. bazel的installer安装方法中的–user不可省略,且安装之后需要修改.bashrc文件使得bazel安装成功。

5. 安装tensorflow

请严格按照官网安装。
下面记录一些心得:
1. ./configure过程中遇到com.google….错误:bazel安装失败,详见踩坑&填坑实录2.
2. ./configure的时候还遇到一个有关test的错误(具体未记录,已遗忘):bazel版本错误,详见github的issue板块。
3. bazel build失败,可能是驱动挂了,请自行检查,重复上述步骤。
4. pip install的whl名称会根据平台变化,请到/tmp/tensorflow_pkg/目录下自行查看。
5. 请完整完成官网的全部过程,包括Setting up TensorFlow for Development,才可以在交互式环境使用。
6. 如果安装的是tensorflow0.11版本,那么tutorial里mnist的fully_connected.py是有错误的,这是因为版本之间对于函数的定义不同导致。

踩坑&填坑实录

1. 驱动安装错误导致的循环登录

循环登录的情况很多,下面仅针对因为驱动错误导致的循环登录。

  1. 进入tty界面:ctrl+alt+F1-F6皆可
    1.1. 退出使用ctrl+alt+F7
    1.2. 重启使用sudo reboot
    1.3. 中文乱码的解决:fbterm
    sudo apt-get install fbterm
    sudo fbterm

    具体详见在linux安装搜狗输入法和fbterm解决ubuntu 14.04 tty终端中文显示和输入
  2. 卸载原有驱动
    sudo apt-get purge nvidia-*
  3. 安装驱动
    按照上文安装驱动的方法,如果和作者环境相同,那nvidia-367应该没问题
  4. 启动lightdm(如果为了安装驱动,曾经关闭过得话)
    4.1. lightdm是用来管理登录系统的,会调用X.org,在安装CUDA时安装驱动,就会要求进入tty界面,然后关闭X.org程序。
    4.2. lightdm的关闭与开启
    sudo lightdm start || sudo service lightdm start
    sudo lightdm stop || sudo service lightdm stop

2. bazel安装失败

  1. bazel的卸载
    sudo find / -name "*bazel*"
    删除所有找到的文件皆可
  2. bazel clean失败
    bazel的缓存位于~/.cache/bazel
  3. apt-get install default-jdk 会导致bazel安装失败,应安装规定版本

后记

博客写作时间:2016-11-26.
当前ubuntu16.04以及CUDA8.0都还未成熟,所以安装过程遇到很多坑。本文是踩坑&填坑实录,只针对于使用ubuntu16.04并使用GTX960及以上显卡的情况。对于使用ubuntu14.04或者可以使用CUDA7.5的情况,有更方便的方法,具体请参照tensorflow的官网。

  1. 为什么使用ubuntu16.04:
    因为同时存在UEFI模式的win10系统,且想保留secure boot(后来装驱动还是关掉了,但保留了fast boot)。
  2. 为什么使用CUDA8.0:
    因为GTX960只支持CUDA8.0及以上,而且CUDA8.0比7.5速度快很多。
  3. 为什么源码安装:
    因为官网当前的whl不支持ubuntu16.04+CUDA8.0+cuDNN5.1.5,需要自己编译。
  4. 为什么使用tensorflow-master:
    因为作者小白,想要从tutorial开始学习,而tutorial中的某些代码不被tensorflow0.11支持;且编译tensorflow0.11需要bazel0.3.2版本,而作者当时已经安装好了0.4版本。

心得

  1. 这次安装过程中从网上各位大神的博客里收益良多,也感慨中文资源的匮乏。以后应该会培养写博客的习惯,但是这个CSDN的编辑器感觉并不是很舒适,不知道能不能坚持下来。
  2. 虽然文章都是我自己写的,但是很多知识都是从网上学的,这次没有引用,感觉不安;如有侵权,烦请通知,自会注明或者删除。
  3. 心得部分很多都是我自己对事情的理解,作者对ubuntu和tensorflow都不甚了解,还望不吝赐教,相互交流,共同学习。
0 0
原创粉丝点击