由于最近Deep Learning十分热门, 装一下TensorFlow学习一下. 本文主要介绍安装流程, 将本身遇到的问题说明出来, 并记录本身如何处理, 原理方面并无能力解释. 因为本人以前历来没有用过Linux, 本文章恐有初级错误, 望见谅, 谢谢. (本文写于2017年3月17日)html
为了可以利用GPU(NVIDIA GTX1080)运行TensorFlow, 根据调查须要按顺序安装如下内容:python
Ubuntu, NVIDIA驱动, CUDA, cudnn, TensorFlowlinux
Ubuntu16.04 能够经过官网下载, 并制做成U盘安装. 为了更方便的驱动显卡,直接安装Linux, 并不安装双系统或虚拟机. 安装完毕后, 因为Ubuntu源在国外, 为了更效率得更新, 采用中科大的镜像源. 具体操做为按Ctrl+Alt+T打开命令行, 而后输入:ubuntu
sudo gedit /etc/apt/sources.list
第一次以管理员运行, 须要输入管理员密码. 而后将内容替换为:api
# 默认注释了源码镜像以提升 apt update 速度,若有须要可自行取消注释 deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
而后更新源和安装包:bash
sudo apt-get update sudo apt-get upgrade
*安装界面选择取消选择从网络下载. 即使如此, 在以后的Retriving File中, 也有可能遇到进度条卡死的状况(我是校园网, 须要网络登陆), 处理方法是拔掉网线, 待安装完毕后再将网线插回. 网络
安装NVIDIA最新显卡驱动, 从官网输入本身的显卡型号, 点击search, 提示下载显卡驱动为375.39(Release 2017.2.14), 然而在输入本身显卡型号的页面, 选择下方的"Beta and Older Drivers"的链接, 能够选择到378.13. 因为我在用375.39的时候, 以后经过Source方式安装TensorFlow中遇到问题(这里能够先不用管), 搜索获得推荐使用378的型号, 改用378.13的驱动. 将该文件移动到Home目录中, 更名为"NVIDIA.run"ide
具体安装方法为: Ctrl+Alt+F1, 进入命令行页面, 输入用户名和密码登陆, 首先关闭X Server(我理解是图形界面):学习
sudo /etc/init.d/lightdm stop
而后运行NVIDIA.run, 进行安装:ui
sudo sh NVIDIA.run # 注意此时文件已在Home目录下
安装中, 会遇到"The distribution-provided pre-instrall script failed", 能够无视, 继续安装. 但会出现关于Neuveau的问题, 好在NVIDIA会帮你把Neuveau给加到blacklist中, 只须要赞成这么作就好, 但这次安装会失败, 退出, 这时须要输入:
sudo update-initramfs -u
而后键入reboot, 重启计算机. 此时的桌面分辨率会下降, 按Ctrl+Alt+F1进入命令行, 管理员登入, 关闭X Server, 而后安装NVIDIA驱动, 过程当中会说NVIDIA会把其余X Server给遮蔽掉(大概这么个意思?), 赞成便可, 而后便顺利安装. 以后reboot重启便可.
* 若是安装完毕后, 在登陆界面循环登陆, 即输入密码, 又退回的话, 关闭掉主板的Secret Boot便可.
官网选择Linux-x86_64-Ubuntu-16.04-Runfile(local), 而后将文件重命名CUDA.run并移动到Home根目录中, 按Ctrl+Alt+T打开命令行, 运行:
sudo sh CUDA.run
一路空格搞到底部, 键入accept赞成安装, 之中有些地方须要选择, 除了在询问是否安装:NVIDIA驱动375.xx选否(已经安装了378.13), 其余的都赞成并使用默认路径, 便可以完成安装. 最后加入环境变量:
export PATH="$PATH:/usr/local/cuda-8.0/bin" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64"
再经过如下命令让环境变量生效:
source ~/.bashrc
* 若是在安装CUDA时遇到空间不足的问题, 能够在运行CUDA.run时加入:
sudo sh CUDA.run --tmpdir=/opt/temp/
我我的没有遇到这个问题, 同时若是加入后面的代码, 反而会没法运行.
下载好的压缩包重命名为cudnn.tgz并移动到Home根目录中, 而后运行命令解压:
tar -zxvf cudnn.tgz
会获得五个文件, 将文件拷贝到对应的CUDA目录下便可:
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 sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
根据官网, Ubuntu上能够有5种方式, 分别是利用: Virtualenv, "native" pip, Docker, Anaconda, 以及从Source安装. 因为我在经过Source和Virtualenv中最后一步都遇到问题, 使用Anaconda成功安装.
1. 安装Anaconda, 具体可参见Anaconda官网
2. 建立conda环境, 用命令:
conda create -n tensorflow # 若没有conda命令, 则须要export PATH="$PATH:~/anaconda2/bin"加入新的PATH
激活conda环境, 此时您的命令行前多了(tensorflow):
这里是你关于您计算机的名字 $ source activate tensorflow
(tensorflow) 一些关于您计算机的名字 $
安装TensorFlow在conda环境中, 最后的链接是TensorFlow Python Package, 根据须要来选择, 因为我使用GPU, Linux系统, Python2.7, 使用以下命令
(tensorflow)一些关于您计算机的名字$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl
安装完毕后, 尝试运行
(tensorflow)一些关于您计算机的名字$ python >>> import tensorflow as tf
若是能够运行, 恭喜安装成功. 以后能够经过以下命令来退出conda环境
(tensorflow)一些关于您计算机的名字$ source deactivate tensorflow
* 如遇到问题相似 ImportError: libcudart.so.Version: cannot open shared object file, 能够经过下面命令查看一下本身的环境变量, PATH和LD_LIBRARY_PATH是否都包含全了
export
我最终的PATH包含以下路径:
declare -x PATH="/home/你的用户名/anaconda2/envs/tensorflow/bin:/home/你的用户名/anaconda2/bin:/usr/local/cuda-8.0/bin:usr/local/cuda/bin:(一些其余的路径)"
若是有缺乏的能够尝试使用export PATH="$PATH:缺乏的路径"补充, 记得最后source ~/.bashrc
(事实上我在用Source和Virtualenv遇到就是这个问题, 惋惜当时并不知道怎么解决)
Ref:
https://www.tensorflow.org/install/ (TensorFlow官方教程, 很是详细有用)
http://blog.csdn.net/silangquan/article/details/9473613 (关于X Server的)
http://askubuntu.com/questions/112302/how-do-i-disable-the-nouveau-kernel-driver?answertab=oldest#tab-top (关于 Neuveau的)
http://www.nvidia.com/download/driverResults.aspx/114708/en-us (关于安装NVIDA驱动时出现Blinding kernel module的)
http://www.rodsbooks.com/efi-bootloaders/secureboot.html#disable (关于登陆界面循环卡死的)
http://stackoverflow.com/questions/42013316/after-building-tensorflow-from-source-seeing-libcudart-so-and-libcudnn-errors (关于ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory)
http://stackoverflow.com/questions/36159194/tensorflow-libcudart-so-7-5-cannot-open-shared-object-file-no-such-file-or-di (关于ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory)
最后, 特别感谢52nlp, 其中两篇文章介绍从Ubuntu安装到最后运行TensorFlow, 对个人帮助很大, 个人安装方式也是基于这两篇文章, 谢谢.