GTX1070+ubuntu16.04+cuda8.0rc+cudnn-
v5.0+mxnet+tensorflow+caffe
1 系统安装
直接用ultraiso刻录ubuntu16.04.iso到u盘里,不知为什么安装有问题。于是刻录14.04,然
后安装。
sudo apt-get update
sudo update-manager -d
更新软件。然后再次输入
sudo update-manager -d
会提示更新到16.04。接下来就是漫长的等待。。。
再次重启后完成ubuntu16.04的安装
2 安装Cuda8.0
首先说下需要注意的几点:
cuda8.0为RC版,未正式发布,只支持ubuntu14.04和ubuntu16.04,貌似GTX1070/1080也
只支持cuda8.0。
cuda8.0自带驱动nvidia-361,现在最新驱动nvidia-367,所以安装完cuda后必须再安装驱动。安装nvidia-367驱动时使用ubuntu16自带的gcc-5,较低的gcc版本容易失败。
下面开始详细安装
2.1 禁用nouveau(是否必要未验证)
# 系统启动时如果提示nouveau error: unkown chipset
# nouveau无法识别GTX1080 - 禁用nouveau
sudo gedit /etc/modprobe.d/blacklist.conf
# 在最后添加:
blacklist nouveau
# 退出
sudo update-initramfs -u
sudo reboot
2.2 gcc版本
ubuntu16.04 默认安装的gcc版本为gcc-5.4,(可用gcc --version查看)有时可能需要低版本的,所以我们先安装gcc-4.8.5
sudo apt-get install -y gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20
cd /usr/bin
sudo cp gcc gcc_backup
sudo cp g++ g++_backup
sudo rm gcc g++
sudo ln -s gcc-4.8 gcc
sudo ln -s g++-4.8 g++
#这样再用gcc --version查看就是4.8.5了,如果想切换为系统默认的版本:
sudo rm gcc g++
sudo ln -s gcc-5 gcc
sudo ln -s g++-5 g++
2.3 安装cuda
下载网址
https://https://www.doczj.com/doc/d018445734.html,/cuda-release-candidate-download
不知为什么,经常很难下载,可能时网络问题吧,所以备份很重要,在师门网盘里就有,哈哈。文件名为:
cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64.deb
同时还提供了修订包,用以使其支持ubuntu16.04自带的gcc5.4版本,修订包名为:
cuda-misc-headers-8-0_8.0.27.1-1_amd64.deb
直接双击文件可进入软件中心进行安装。当然也可以这样:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64-deb
sudo dpkg -i cuda-misc-headers-8-0_8.0.27.1-1_amd64.deb
然后:
sudo apt-get update
sudo apt-get install cuda
如果安装不成功就吧gcc切换到4.8吧,当时是用4.8装的,但应该没影响吧。
查看cuda支持的gcc最高版本:
cd /usr/local/cuda/include/ #进入到头文件目录
sudo gedit host_config.h #编辑头文件
搜索GNUC,找到一段类似于
“if _GNUC_>5 || (_GNUC_ == 5 &&_GNUC_MINOR_> 3)”,就是最大支持gcc-5.3,可自己取消该限制。建议改为使其支持gcc-5.4。
当然还有一步就是要声明cuda路径:
sudo gedit ~/.bashrc
在最后加入:
export CUDA_HOME=/usr/local/cuda-8.0
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-8.0/bin:$PATH
退出后使其立即生效:
source ~/.bashrc
在这里输入nvcc --version 看有没有信息输出,如果没有就重启终端。这里重启一下电脑得了。
2.4 更新显卡驱动
到上一步后,输入nvidia-smi会输出驱动不匹配或找不到命令等信息。这是因为cuda8.0带的显卡驱动时nvidia-361,现在最新的时nvidia-367。我们需要重新安装367.35版本,下载地址:
https://www.doczj.com/doc/d018445734.html,/drivers
得到驱动文件:
NVIDIA-Linux-x86_64-367.35.run
注意gcc-4.8无法编译nvidia driver,所以在这里一定要切换到gcc-5。
直接安装时可能报错
“You appear to be running an X server….”
ctrl+alt+F1进入命令符界面,登陆。
sudo service lightdm stop #关闭图形界面
sudo init 3 #提供权限
sudo ./NVIDIA-Linux-x86_64-367.35.run #运行驱动安装过程,前提是进入该文件所在目录可能的选项:
是否安装32-bit兼容?否
是否自动更新X**?否
有一些警告,能继续就继续,只要最后看到successful的字眼就OK了。
sudo service lightdm start #重新启用图形界面
这里最好重启一下吧
sudo reboot
2.5 测试cuda
nvidia-smi #查看驱动是否正确安装
输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.35 Driver Version: 367.35 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+=============== =======|
| 0 GeForce GTX 1070 Off | 0000:01:00.0 On | N/A |
| 29% 36C P8 11W / 151W | 196MiB / 8113MiB | 4% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|====================================================================== =======|
| 0 6589 G /usr/lib/xorg/Xorg 186MiB |
| 0 7084 G compiz 7MiB |
+-----------------------------------------------------------------------------+
nvcc --version #查看cuda版本
输出
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Wed_May__4_21:01:56_CDT_2016
Cuda compilation tools, release 8.0, V8.0.26
lspci | grep -i nvidia #查看GPU设备
输出
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1b81 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10f0 (rev a1)
最后进入cuda自带的例子中看cuda是否已正确配置
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
输出:
# modprobe: ERROR: could not insert 'nvidia_361_uvm': Invalid argument
这是因为cuda8.0自带了361版本的nvidia driver
需要将其卸载
sudo apt-get remove nvidia-361
或者
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
输出:
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/nvidia-361/ld.so.conf 8604 auto mode
1 /usr/lib/nvidia-361-prime/ld.so.conf 8603 manual mode
2 /usr/lib/nvidia-361/ld.so.conf 8604 manual mode
* 3 /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf 500 manual mode
输入3按回车,再运行./deviceQuery就成功了。
这种方法有时候会自动跳回2,不知道为什么,重新按该过程配置一下就行了。直接卸载361有没有side effect不能确定。
到这里就配置好cuda8.0了。
2.6 安装cudnn-v5
这个比较简单,在https://https://www.doczj.com/doc/d018445734.html,/cudnn下载cudnn v5.0 for cuda8.0rc:cudnn-8.0-linux-x64-v5.0-ga.tgz
直接解压拷贝就可以了:
tar xvzf cudnn-8.0-linux-x64-v5.0-ga.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/*.* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
3 常用工具安装
sudo apt-get update
sudo apt-get install -y ipython python-numpy git python-sklearn python-scipy python-matplotlib Pycharm安装
下载pycharm-community-2016.1.tar.gz;
解压到softwares文件夹下。进入bin文件夹下,启动终端,输入以下命令完成安装:
./pycharm.sh
4 MNNet安装
sudo apt-get update
sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev
git clone --recursive https://https://www.doczj.com/doc/d018445734.html,/dmlc/mxnet.git
cd mxnet
cp make/config.mk .
gedit config.mk
更改USE_CUDA = 1;USE_CUDA_PATH = /usr/local/cuda-8.0;USE_CUDNN = 1后退出make -j16
cd python
sudo python setup.py install #如果出错,则sudo apt-get install python-setuptools
测试mxnet
python mxnet/example/image-classification/train_mnist.py --gpus 0 #如果下好了mnist数据集,则将路径传递--data-dir MNIST_PATH
5 Tensorflow安装
主要参考https://www.doczj.com/doc/d018445734.html,/dive-into-tensorflow-part-iii-gtx-1080-ubuntu16-04-cuda8-0-cudnn5-0-tensorflow 中的建议
5.1 Install TensorFlow Python Dependency
The Python version is Python2.7:
sudo apt-get install python-pip
sudo apt-get install python-numpy swig python-dev python-wheel
5.2 Install Google Build Tool Bazel
Get the Bazel 0.3.0 install script from Bazel github:
wget https://https://www.doczj.com/doc/d018445734.html,/bazelbuild/bazel/releases/download/0.3.0/bazel-0.3.0-installer-linux-
x86_64.sh
chmod +x bazel-0.3.0-installer-linux-x86_64.sh
sudo ./bazel-0.3.0-installer-linux-x86_64.sh #--user
如果遇到错误:
Java not found, please install the corresponding package
See http://bazel.io/docs/install.html for more information on
安装Java JDK in Ubuntu 16.04 by apt-get:
sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install default-jdk
Then run the following command again:
sudo ./bazel-0.3.0-installer-linux-x86_64.sh #--user
如果看到字眼:Bazel is now installed!说明安装成功
sudo gedit ~/.bashrc
加入:
source /usr/local/lib/bazel/bin/bazel-complete.bash
export PATH=$PATH:/usr/local/lib/bazel/bin
退出后
source ~/.bashrc
5.3 Build and install TensorFlow GPU Version by Source Code
git clone https://https://www.doczj.com/doc/d018445734.html,/tensorflow/tensorflow
cd tensorflow
./configure
(如果说libcurl3-dev版本问题:sudo apt-get install libcurl3 libcurl3-dev)
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
(如果zlib not installed:sudo apt-get install zlib1g-dev)
漫长的等待……
Excute the tensorflow tutorials sample to call the GPU GTX 1080:
bazel-bin/tensorflow/cc/tutorials_example_trainer –use_gpu
如果有很长的输出,则说明可以调用cuda了。下面要与python建立链接。
进入python环境,
import tensorflow as tf #注意此时工作目录不要在tensorflow中
如果报错“ImportError: cannot import name pywrap_tensorflow”,则执行以下操作(需要联网,而且可能报错,多试几次)
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
sudo pip install /tmp/tensorflow_pkg/tensorflow-0.10.0rc0-py2-none-any.whl #具体版本进入对应
目录看一下就好了
5.4 测试
cd tensorflow/models/image/mnist
python convolutional.py #如果已有下好的mnist数据集,在convolutional.py中将路径给WORK_DIRECTORY
6 caffe安装
主要参照https://https://www.doczj.com/doc/d018445734.html,/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide中的流程。
6.1安装基本依赖包
sudo apt-get update
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-pip python-dev python-numpy python-scipy # (Python general)
sudo apt-get install -y libopencv-dev # (OpenCV 2.4)
6.2 编译配置
去https://https://www.doczj.com/doc/d018445734.html,/BVLC/caffe下载.zip安装包,放在某路径Caffe_Path下解压。进入caffe
根目录:
cp Makefile.config.example Makefile.config
gedit Makefile.config
设置以下内容:
USE_CUDNN := 1 #取消该句注释
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
WITH_PYTHON_LAYER := 1 #取消注释
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib \
/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
保存退出。
find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e
's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g''{}' \;
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so #具体版本自行去文件夹下查看
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so #具体版本自行去文件夹下查看
安装其他必备依赖包:
cd python
for req in $(cat requirements.txt); do pip install $req; done
这里需要联网,且下载时间可能稍长。
现在开始编译:
cd ..
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
make pycaffe -j $(($(nproc) + 1))
make distribute -j $(($(nproc) + 1))
6.3 python配置
sudo gedit ~/.bashrc
在最后加入
export PYTHONPATH=/home/xifeng/Softwares/caffe/python:$PYTHONPATH
退出。
source ~/.bashrc
cd distribute
sudo cp bin/* /usr/bin/
sudo cp lib/* /usr/lib/
sudo cp -r include/caffe /usr/include/
6.4 测试
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
7 系统备份与还原
好不容易配好系统了,万一脑残不知动了哪给搞坏了怎么办?先备份个系统吧。
7.1 系统备份
系统设置(system setting)里有Backups,但只能备份还原home文件夹。
首先打开终端进入根目录并获取root权限
cd /
sudo su
tar cvpzf Ubuntu_backup.tgz --exclude=/Ubuntu_backup.tgz --exclude=/mnt --exclude=/home --exclude=/proc --exclude=/sys --exclude=/lost+found /
其中 Ubuntu_backup.tgz为备份系统的名字,exclude参数用于设定忽略的文件夹,最后那个/是指示需要备份的目录。备份完后就可以拷贝到其他盘里保存了。
7.2 系统恢复
在 Ubuntu_backup.tgz 所在文件夹下打开终端获取root权限,将 Ubuntu_backup.tgz拷贝到根目录下
sudo su
cp Ubuntu_backup.tgz /
cd /
tar xvpfz Ubuntu.tgz -C /
新建备份时忽略的文件夹,如
mkdir /proc /lost+found /mnt /sys
10 其他问题
10.1 更新软件提示W: GPG error: https://www.doczj.com/doc/d018445734.html,:10006 xenial InRelease
sudo apt-get update
报错:W: GPG error: https://www.doczj.com/doc/d018445734.html,:10006 xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY
8D5A09DC9B929006
解决办法:
sudo apt-key adv --keyserver https://www.doczj.com/doc/d018445734.html, --recv-keys 8D5A09DC9B929006
参考文献
①搭建一台用于深度学习的工作站
http://wh1te.me/
②building-our-personal-deep-learning-rig-gtx-1080-ubuntu-16-04-cuda-8-0rc-cudnn-7-tensorflowmxnetcaffedarknet
https://www.doczj.com/doc/d018445734.html,/blog/en/my-works/building-our-personal-deep-learning-rig-gtx-1080-ubuntu-16-04-cuda-8-0rc-cudnn-7-tensorflowmxnetcaffedarknet/
③[DL] GTX1080 + Ubuntu16.04 + CUDA 8.0RC + Tensorflow + Theano + keras
https://https://www.doczj.com/doc/d018445734.html,/note/568373446/?type=like
④Dive Into TensorFlow, Part III: GTX1080 + Ubuntu16.04 + CUDA8.0 + cuDNN5.0 + TensorFlow
https://www.doczj.com/doc/d018445734.html,/dive-into-tensorflow-part-iii-gtx-1080-ubuntu16-04-cuda8-0-cudnn5-0-tensorflow
⑤Caffe: Ubuntu 16.04 or 15.10 Installation Guide
https://https://www.doczj.com/doc/d018445734.html,/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide
⑥Ubuntu14.04如何备份和恢复系统
https://www.doczj.com/doc/d018445734.html,/alexanderkun/p/5008514.html