深度学习环境搭建------by邵碧尧

转自:碧尧博客地址

深度学习环境搭建

开始接触深度学习一年多时间了,总是有种技术发展飞快,没等你掌握现有技术更牛X的技术又出来了。身处AI浪潮中,到现在越发有种感觉:深度学习可能很多问题都能解决,但我们自己并没有那么多精力去研究那么多方面,自然语言处理,自动驾驶,人脸识别等等,选定一个方向深入研究才是正解。至少目前是这么理解的,不对希望朋友指正!

如今深度学习的框架很多,Caffe,TensorFlow,Torch等都各有各的优势,开始深度学习不可避免要配置深度学习的工作环境,如果不知道方法也许在开头就会花费很多时间,写这篇博客的目的就是帮助大家更快上手。下面介绍Caffe在Ubuntu 16.04上的搭建过程(Ubuntu 14.04同样可以)

Caffe

Caffe的环境搭建在几个框架中是最麻烦的,因为Caffe用到的依赖库很多,如果配置GPU版有时候显卡驱动和CUDA也能把你折腾好久。CPU版和GPU版主要差别就是在NVIDIA显卡驱动和CUDA的安装上,其他框架要用到NVIDIA显卡其实差别也就是这样,因此这也算服务器基础。两个版本有区别的地方会注明。

Nvidia driver

1
2
3
4
5
6
7
8
9
lspci | grep -i nvidia

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update

sudo apt-get install nvidia-352 % 版本自己查询

sudo shutdown -r now

重启后用下面命令查看驱动版本

1
cat /proc/driver/nvidia/version

CUDA

CUDA官网下载CUDA安装文件,选择对应版本

这里有下载deb [local]文件,后面会说runfile [local]的用法,先卖个关子。
下载好后cd到存放安装的文件夹,使用一下命令,文件名千万别手输,善用tab键

1
2
3
4
5
sudo dpkg -i cuda-repo-ubuntu1604*amd64.deb

sudo apt-get update

sudo apt-get install cuda

安装结束,添加环境变量(如果安装服务器,环境变量在每个用户下都需要添加一次,应该是有更聪明的方法,目前还没有找到)

1
2
3
4
5
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc

echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

source ~/.bashrc

查看安装CUDA版本

1
nvcc -V

显示下图信息说明安装好了

再重启下电脑

1
sudo shutdown -r now

cuDNN

这是深度学习训练过程中的加速算法包,到cuDNN 下载对应的安装包,cd到安装包所在文件夹

1
2
3
4
5
6
7
8
9
tar xvf cudnn*.tgz

cd cuda

sudo cp */*.h /usr/local/cuda/include/

sudo cp */libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

上面说runfile (local)卖了个关子,可以显卡驱动和CUDA一起安装,属于比较方便的方法,和之前的方法有什么差别目前还不知道

1
sudo sh cuda_8.0.61_375.26_linux.run

运行这句命令,接下来根据提示操作就好了
结束后按照上面的方法添加环境变量

依赖库安装(CPU版从这里开始)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo apt-get update

sudo apt-get upgrade

sudo apt-get install build-essential cmake g++ gfortran git pkg-config python-dev software-properties-common wget

sudo apt-get autoremove

sudo rm -rf /var/lib/apt/lists/*

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install -y libatlas-base-dev

sudo apt-get install -y python-pip

下载Caffe

1
2
3
4
5
6
7
8
9
cd ~

mkdir git //在home下新建一个git文件夹,用来存放那些从github上git下来的文件

git clone https://github.com/BVLC/caffe.git //从github上git caffe

cd caffe

cp Makefile.config.example Makefile.config

修改Makefile.config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//如果你不使用GPU的话,就将

# CPU_ONLY := 1

修改成:

CPU_ONLY := 1

//若使用cudnn,则将

# USE_CUDNN := 1

修改成:

USE_CUDNN := 1

//若使用的opencv版本是3的,则将

# OPENCV_VERSION := 3

修改为:

OPENCV_VERSION := 3

//若要使用python来编写layer,则需要将

# WITH_PYTHON_LAYER := 1

修改为

WITH_PYTHON_LAYER := 1

//重要的一项

将# 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

//这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径

创建Hdf5文件链接

1
2
3
4
5
6
7
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

执行caffe下python文件夹下的指令

1
2
3
4
5
6
7
cd python

for req in $(cat requirements.txt); do pip install $req; done

\\目的是检查caffe所需要的python的库的版本,如果出现红字错误说明版本不满足要求,执行下面语句

for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done

编辑/usr/local/cuda/include/host_config.h,将其中的第115行

1
2
3
#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
% 改为
//#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

make 各种文件(cd到Caffe文件夹)

1
2
3
4
5
6
7
8
9
make all -j8 //j8代表计算机cpu有8个核,因此可以多线程一起make,这样make的速度会快很多。一般常用的还有j4

make test -j8

make runtest -j8

make pycaffe //编译python接口

make distribute

到这里搭建完毕