Tensorflow安装
下面讲述如何在Ubuntu14.04上安装Tensorflow,需求如下:
软件&系统 | 版本 |
---------------- | ------------------|
Ubuntu(64位) | 14.04.5 |
内核 | 4.4.0 |
GTX1080 | 驱动384.98 |
Java | 8 |
Bazel | 0.7.0以上 |
Cuda | 8.0.61_375.26 |
GCC | 4.9 |
Tensorflow | master(/92233820e) |
选用的笔记本位MSI GT73EVR 7RF,1TB,16GB RAM,GTX1080。
在安装Tensorflow遇到坑还是比较少的,主要在Tensorflow上删了又装很多次,其他就是无限循环登录问题、系统分辨率太小、网卡驱动不对、触摸板无响应等。下面会讲述遇到这些问题解决方法:
由于是新笔记本,下面讲述安装步骤:
* 安装Ubuntu 14.04.5镜像,给MSI安装双系统,保留原windows。会遇到系统分辨率问题
* 安装GTX1080驱动,会遇到无限循环登录问题
* 安装cuda 8.0
* 安装cudnn 7
* 安装无线网卡驱动
* 安装java 8
* 安装bazel,Tensorflow依赖
* 安装Tensorflow
* 配置完成,测试
安装Ubuntu双系统
制成启动U盘
首先使用Windows系统,上官网找到Ubuntu 14.04.5系统镜像,下载
ubuntu-14.04.5-desktop-amd64.iso
下载完成后,使用Ultraiso安装镜像到U盘,制成启动U盘。教程不再讲述。
可以参考百度经验
安装双系统
讲启动U盘插入MSI电脑,开机,在出现MSI标志后,按下“Delete”进入BISO“,切换到BOOT,将U盘选项置顶,随后进入安全控制,
将安全控制选为”disable“,安全控制将影响GTX1080驱动,GTX1080驱动涉及到内核操作,如果开启安全控制将会导致Ubuntu登录界面无限循环问题。
保存退出后,在开机界面按下”F11“,选择U盘进行安装Ubuntu。
最好是有网线连接下进行安装,会避免一些驱动问题。
安装完成后,进入Ubuntu系统分辨率非常低,这是由于GTX1080显卡驱动问题,安装完显卡驱动,分辨率就正常了
安装GTX1080驱动
进入英伟达官网,下载GTX1080驱动,开始搜索,然后下载所需版本即可。我下载的是最新的384.98。
也可以在这里下载。
下载完成后,保存,作为备用用于刷新新驱动。
添加NVIDIA源
sudo add-apt-repository ppa:graphics-drivers/ppa
出现信息不用考虑,直接按回车即可。
sudo apt-get update
sudo apt-get install nvidia-384
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
禁用nouveau
按Ctrl+Alt+F1进入命令提示符,新建一个黑名单文件:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
输入
blacklist nouveau
options nouveau modset=0
保存,退出
然后,执行
sudo update-initramfs -u
检查
lspci | grep nouveau
如果没有输出,就代表正常。
安装显卡驱动
注意:在接下来安装Cuda8的过程中,也会安装显卡驱动,询问时输入“N”,选择不安装。
关闭桌面程序,如果不关闭,将无法完成安装:
sudo service lightdm stop
切换到上面下载好的目录下:
sudo chmod 755 NVIDIA-Linux-x86_64-384.98.run //获取权限
sudo ./NVIDIA-Linux-x86_64-384.98.run //安装驱动
如果没有报错(warn不算)就代表安装完成。这里安装的时候没有截屏,就不在讲述步骤。
在安装过程中,会提到是否关闭BISO中的安全控制,因为在之前就关闭了,所以不用管。如果不关闭将会进入无限登录。
然后重启即可。
输入
nvidia-smi
验证是否安装成功。
安装cuda 8.0
安装Cuda问题不大,进入下载列表,选择CUDA Toolkit 8.0 GA2,下载即可。大小未1.4G
cd ~/Download/
sudo chmod +x cuda_8.0.61_375.26_linux.run
sudo sh cuda_8.0.61_375.26_linux.run
全部都选择默认,一路回车即可。
安装完成后,添加路径:
vi ~/.bashrc
在最后输入
export PATH=/usr/local/cuda:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
保存退出。
安装cudnn 7
进入cudnn下载,首先需要注册一下,然后
下载完成后,解压,会得到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 /usr/local/cuda/lib64/libcudnn*
完成cudnn安装。
安装无线网卡驱动
直接运行以下命令即可,网卡型号为QCA6174。原有不可用,需要重新安装。
sudo mkdir -p /lib/firmware/ath10k/QCA6174/hw3.0/
sudo rm /lib/firmware/ath10k/QCA6174/hw3.0/* 2> /dev/null
sudo wget -O /lib/firmware/ath10k/QCA6174/hw3.0/board.bin https://github.com/FireWalkerX/ath10k-firmware/blob/7e56cbb94182a2fdab110cf5bfeded8fd1d44d30/QCA6174/hw3.0/board-2.bin?raw=true
sudo wget -O /lib/firmware/ath10k/QCA6174/hw3.0/firmware-4.bin https://github.com/FireWalkerX/ath10k-firmware/blob/7e56cbb94182a2fdab110cf5bfeded8fd1d44d30/QCA6174/hw3.0/firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1?raw=true
sudo chmod +x /lib/firmware/ath10k/QCA6174/hw3.0/*
重启即可
安装java 8
java8不作为重点,直接使用源安装
添加ppa
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
随后运行以下命令检查
java -version
安装bazel
bazel安装直接用源安装
添加bazel源
$ echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
安装
sudo apt-get update && sudo apt-get install bazel
安装Tensorflow
其他版本都试过,现在选择源码编译;
git clone https://github.com/tensorflow/tensoflow
git checkout master
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
sh tensorflow/tools/ci_build/install/install_bazel.sh
sudo sh tensorflow/tools/ci_build/install/install_bazel.sh
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu
mkdir _python_build
cd _python_build
ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/* .
ln -s ../tensorflow/tools/pip_package/* .
sudo python setup.py develop
vi test.py #添加测试文件
在新打开的文件中输入:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
运行:
python test.py
如果一切正常,将会有如下输出:
2017-12-17 15:27:18.614891: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:895] 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-12-17 15:27:18.615173: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.771
pciBusID: 0000:01:00.0
totalMemory: 7.92GiB freeMemory: 7.47GiB
2017-12-17 15:27:18.615188: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1195] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0, compute capability: 6.1)
Hello, TensorFlow!
至此,安装完成
编译Tensorflow时的版本:https://github.com/tensorflow/tensorflow/commit/92233820e6256ffb428650e67dc8c6dc4bbc7074