Slip the surly bonds of earth, to touch the face of God

Ubuntu16.04上安装gpu版caffe精准教程

原文链接:https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide

《Ubuntu16.04上安装gpu版caffe精准教程》

> 没装过caffe的人,都不会用Ubuntu

好吧,扯远了。虽然是一句玩笑话,但也道出了caffe安装过程的复杂(实际上这句话是我说的?)。相比于同是机器学习开源框架的tensorflow,caffe在不同版本系统、不同硬件配置下的机器中配置步骤差异让人挠头,更不用说在windows上装了,能配置成功简直跟中彩票一样?

吐槽完毕,开始正文。网上各种版本的安装教程,一定要看对版本配置,还要有一定的理解变通能力,才能抓住要点。本文借鉴github上半官方的安装教程进行配置,在Ubuntu16.04 with CUDA8.0 + cuDNN5.1上安装成功。另外,题目之所以叫精准教程,就是因为不同环境的安装细节可能有很大不同。

安装依赖

运行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 之前好多次不成功都是版本问题,这里不只要update,还要upgrade
sudo apt-get update
sudo apt-get upgrade
# 一些依赖库,跟官网上的教程有点区别
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
# (Python general)
sudo apt-get install -y python-pip
# (Python 2.7 development files)
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
# (or, Python 3.5 development files)
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-numpy python3-scipy
# 官网上写着opencv是可选项,但是你要是不装就等着一堆bug出现吧(OpenCV 2.4)
sudo apt-get install -y libopencv-dev
# OpenCV 3 可以看原文链接

安装NVIDIA驱动、CUDA、cuDNN

又是一个大坑,无数次栽倒在各种版本的ubuntu安装驱动上。最终发现了一个捷径,原来Ubuntu设置里面有第三方驱动的安装啊,哈哈哈?

默认显示的可选驱动版本比较老了,可以运行如下命令,重启设置,就可以找到最新版本的NVIDIA驱动。

1
2
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

当然,能否成功装上驱动仍然是一个玄学问题,我经过几次重装系统后终于成功完成安装。
装完驱动,CUDA和cuDNN就比较简单了,从官网上下载就好了。另外,CUDA千万不要凭感觉装,或者随便看看网上教程,一定要看官方安装说明,我是使用离线deb装的,如果用runfile记得不要选择再装驱动了(其实我runfile没成功换成了deb)。

cuDNN下载要注册,没什么难的。说是没什么难的,实际上还是大坑无数,记得把下载下来的库拷贝到系统路径下,还要修改文件权限,不然程序读不了这个库,那不跟没装一样?。可以参考官方安装说明或者网上的教程。

编译

好,假设你已经轻松完成驱动及相关依赖安装了,那么工作就进行了1/4了?。

什么?你已经装了一天了?哦,没事,正常,我们把重心放在编译源码上。接下来到caffe的github主页上把源码下载下来,解压。

生成编译配置文件(复制一份样例)

cp Makefile.config.example Makefile.config

然后修改,好吧,官方安装说明可没有告诉你怎么改。?不,告诉了,然而没卵用,按他说的改会编译出错。

1
2
3
4
5
6
7
8
9
# 找到配置文件的这些项并修改成这样。当然你可以参考自己的系统环境自行调整。不过我觉得你完全不想自己调整
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
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
# 这句感觉多余,因为CUDA目录就是CUDA-8目录的链接,不过考虑到之后可能在这里改东西,还是加上吧
CUDA_DIR := /usr/local/cuda-8.0
# 默认配置在Ubuntu16.04上会出错,还要改这项
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

我要用python来配代码,所以装一些依赖的python包

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

作者说,“以防可能的一些错误,可以这样做“:

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

默认python版本是2.7,当然你可以自行修改配置文件,使其使用python3。但是对于caffe,我想最糟糕的做法就是搞一个跟默认教程不一样的配置。

然后就是编译了。

1
2
3
4
5
6
7
# 回到caffe项目主目录
cd ..
make all
make test
make runtest
make pycaffe
make distribute

编译过程时间不短,我的GTX970m要十几分钟。另外,出现error非常正常,这时就需要强大的google和stack overflow能力了。配置caffe,对你的系统、语言、环境等多方面能力的提高有显著提升?。

为了使python能够找到caffe,还要修改~/.bashrc文件,末尾加上这句

export PYTHONPATH=/path/to/caffe-master/python:$PYTHONPATH

为了使用caffe的binaries、libraries、include files,还要把对应的文件复制到系统路径下,比如/usr/bin,/usr/lib,/usr/include。好吧,自行理解吧,反正为了装caffe,需要自行感受的还有很多。

再次吐槽

看起来没有几步(其实比别的开源软件复杂多了),但是没有中彩票的运气重装个十几遍的情况也是非常可能的。尤其我这种没用过ubuntu,从研究装装系统起步配置整个环境的人,完成整个过程堪比攀登珠穆朗玛峰⛰️。

因此,强烈安利一波tensorflow,安装简单易上手,多系统版本安装游刃有余,甚至windows安装简便犹如装qq。好吧,不打广告了,祝你安装顺利

点赞

发表评论

电子邮件地址不会被公开。