深度学习环境搭建
开始接触深度学习一年多时间了,总是有种技术发展飞快,没等你掌握现有技术更牛X的技术又出来了。身处AI浪潮中,到现在越发有种感觉:深度学习可能很多问题都能解决,但我们自己并没有那么多精力去研究那么多方面,自然语言处理,自动驾驶,人脸识别等等,选定一个方向深入研究才是正解。至少目前是这么理解的,不对希望朋友指正!
如今深度学习的框架很多,Caffe,TensorFlow,Torch等都各有各的优势,开始深度学习不可避免要配置深度学习的工作环境,如果不知道方法也许在开头就会花费很多时间,写这篇博客的目的就是帮助大家更快上手。下面介绍Caffe在Ubuntu 16.04上的搭建过程(Ubuntu 14.04同样可以)
Caffe
Caffe的环境搭建在几个框架中是最麻烦的,因为Caffe用到的依赖库很多,如果配置GPU版有时候显卡驱动和CUDA也能把你折腾好久。CPU版和GPU版主要差别就是在NVIDIA显卡驱动和CUDA的安装上,其他框架要用到NVIDIA显卡其实差别也就是这样,因此这也算服务器基础。两个版本有区别的地方会注明。
Nvidia driver
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
重启后用下面命令查看驱动版本
cat /proc/driver/nvidia/version
CUDA
到CUDA官网下载CUDA安装文件,选择对应版本
这里有下载deb [local]文件,后面会说runfile [local]的用法,先卖个关子。
下载好后cd到存放安装的文件夹,使用一下命令,文件名千万别手输,善用tab键
sudo dpkg -i cuda-repo-ubuntu1604*amd64.deb
sudo apt-get update
sudo apt-get install cuda
安装结束,添加环境变量(如果安装服务器,环境变量在每个用户下都需要添加一次,应该是有更聪明的方法,目前还没有找到)
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版本
nvcc -V
显示下图信息说明安装好了
再重启下电脑
sudo shutdown -r now
cuDNN
这是深度学习训练过程中的加速算法包,到cuDNN 下载对应的安装包,cd到安装包所在文件夹
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一起安装,属于比较方便的方法,和之前的方法有什么差别目前还不知道
sudo sh cuda_8.0.61_375.26_linux.run
运行这句命令,接下来根据提示操作就好了
结束后按照上面的方法添加环境变量
依赖库安装(CPU版从这里开始)
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
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
//如果你不使用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文件链接
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文件夹下的指令
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行
#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文件夹)
make all -j8 //j8代表计算机cpu有8个核,因此可以多线程一起make,这样make的速度会快很多。一般常用的还有j4
make test -j8
make runtest -j8
make pycaffe //编译python接口
make distribute
到这里搭建完毕