ubuntu16.04+GTX1080ti+Tensorflow 深度学习环境搭建
将一堆硬件搭建好初步的深度学习工作环境,Mark一下主要过程。
0、配置简介
硬件环境配置:
显卡:微型仿英伟达1080ti公版显卡1张:GTX1080ti
主板:华硕PRIME Ax999-A
CPU: intel i7-820x,8核16线程处理器
内存:金士顿16G单条
硬盘:intel 512G固态硬盘
系统配置:win10 + ubuntu16.04
一、安装Anaconda
由于原生python依赖太多,为偷懒,安装Anaconda好了,可以到清华镜像去下载Anaconda3-5.0.0-Linux-x86_64.sh,速度会比较快:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
安装之后,运行python命令,会出现类似如下结果,说明安装通过。
二、安装cuda以及cudnn
注意由于cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb中已经包含了显卡驱动,如果重复安装会导致失败,因此直接安装cuda就好,不要在多此一举安装英伟达官网显卡驱动
1 安装cuda8.0
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb # 自己的.deb包名
sudo apt-get update
sudo apt-get install cuda
(2)编译cuda例子:
cd /usr/local/cuda-8.0/samples
sudo make -j8
(3)测试cuda例子:
cd /usr/local/cuda-8.0/samples/bin/x86_64/linux/release/
./deviceQuery
(4)结果如下:
(5)添加环境变量
vi /etc/profile
在底部插入以下两句
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
执行source使得环境变量设置生效
source /etc/profile
2、安装cudnn:
(1)解压cudnn得到文件夹cuda,下
tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz
(2)拷贝头文件及库到cuda8.0的系统目录
cd cuda
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
三、安装tensorflow和keras
(1)使用tensorflow的gpu版本:tensorflow_gpu-1.3.0rc2-cp36-cp36m-linux_x86_64.whl
安装keras
sudo pip install keras
(2)测试tensorflow和keras,在python命令行中输入:
>>> import tensorflow as tf
>>> import keras as ks
结果如下:
四、安装caffe
1、下载:git clone https://github.com/BVLC/caffe.git
2、首先将Makefile.config.example的内容复制到Makefile.config
cd caffe
sudo cp Makefile.config.example Makefile.config
3、打开并修改配置文件:
sudo gedit Makefile.config #打开Makefile.config文件
1)由于使用了CUDNN,将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
2)由于使用pythonlayer,将# Uncomment to support layers written in Python (will link against Python libs)下面的
#WITH_PYTHON_LAYER := 1
修改成:
WITH_PYTHON_LAYER := 1
3)由于ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
将# Whatever else you find you need goes here.下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
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
4)由于使用Anaconda3.5中的python3.6替代系统自带的python2.7,因此将# We need to be able to find Python.h and numpy/arrayobject.h.下面的
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
修改为:
#PYTHON_INCLUDE := /usr/include/python2.7 \
#/usr/lib/python2.7/dist-packages/numpy/core/include
5)指定Anaconda相关include及lib路径,将# Anaconda Python distribution is quite popular. Include path:下面的
# ANACONDA_HOME := $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
# $(ANACONDA_HOME)/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
修改为:
ANACONDA_HOME := /home/lcd/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.6m \
$(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
6)将# Uncomment to use Python 3 (default is Python 2)下面的
# PYTHON_LIBRARIES := boost_python3 python3.5m
修改为:
PYTHON_LIBRARIES := boost_python3 python3.6m
7)修改makefile文件
打开makefile文件,做如下修改:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
8)关于网上广为流传的修改GCC编译器支持版本的问题,由于最新版本的caffe已经支持到GCC 5了,二本系统是GCC 5.4 因此不用注释掉
/usr/local/cuda/include/host_config.h中的#error-- unsupported GNU version! 这一项
9)安装依赖包
安装以依赖环境,经实测,如果想通过测试代码的话,以下都是必须安装的:
sudo apt-get install -y libhdf5-serial-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libprotobuf-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install -y python-opencv libopencv*
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libboost-system-dev
10)安装caffe:
make all -j8
sudo make pycaffe -j8
sudo make test -j8
sudo make runtest -j8 #这个不通过也没关系
安装结果:
测试结果:
11)测试caffe
MNIST数据集测试
配置caffe完成后,可以利用MNIST数据集对caffe进行测试,过程如下:
a.将终端定位到Caffe根目录
cd ~/caffe
b.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
c.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
c.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图:
网上不少例子只是测试到上述训练集通过就结束了,但是发现python下引用caffe会出现问题,主要可能是pycaffe未安装或者python非原生版本所致,特别需要注意上述caffe上述修改配置文件中的步骤4)、步骤5)、步骤6).经上述过程安装caffe,在python下可以引用:
python引用caffe测试
总结下容易碰到的主要问题:
(1)由于cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb中已经包含了显卡驱动,如果重复安装会导致失败,因此直接安装cuda就好,不要在多此一举安装英伟达官网显卡驱动,若安装了官网驱动,可以采用如下步骤卸载:
1)关闭X,否则会卸载显卡驱动失败,按住ctrl+alt+F1计入tty模式,输入执行如下命令:
init 3
2)然后,执行如下两种方法之一卸载nvidia显卡驱动
sudo apt-get purge nvidia-* #通用做法
sudo sh nvidia.run --uninstall #卸载官网版本
sudo reboot
由于该命令会卸载所有英伟达驱动,所以在下载之后再安装cuda即可
查看显卡驱动信息命令
nvidia-smi
结果如下
以及如下查看驱动版本命令
cat /proc/driver/nvidia/version
结果如下:
(2)安装完ubuntu16.04系统,初次开机黑屏,进入不了登录页面,解决办法:
(a)临时策略:
开机,进入grub画面。选择第一项”ubuntu”,按”e”,进入编辑模式。同样找到”’quite splash”’ 并在后面加上对应的字”nomodeset”。
按 ”F10”启动系统。
(a)永久策略:
进去系统之后编辑”’/etc/default/grub”’ 这个档案(要管理者权限sudo)。
Ubuntu>打开终端机,输入sudo vi /etc/default/grub
找到这一行:
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
修改为:
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset”
存档,更新GRUB:
sudo update-grub
重新开机,即可见到期待的登录页面啦~
感谢各位提供参考资料的帮助
[1]http://blog.csdn.net/xuzhongxiong/article/details/52717285
[2]http://m.blog.csdn.net/tomheaven/article/details/77540128
[3]http://blog.csdn.net/lkj345/article/details/51280369
[4]http://blog.csdn.net/baidu_17806763/article/details/53689816
[5]http://blog.csdn.net/leijiezhang/article/details/53688157