LINUX系统下caffe开发环境和python接口的配置(利用GPU和CUDNN加速)

本人研究生的方向是计算机视觉和机器学习,因最近需要学习深度学习,并在caffe平台上训练模型,自己捣鼓了一段时间,总算在windows10和ubun16.04上把caffe配置好了。因在ubuntu上配置比windows10上麻烦一点,这里只给出了在ubuntu上的配置过程。

ps:该过程笔者在两台电脑上均配置成功,这里以在台式电脑上配置为例(其实过程都一样,就是感觉用笔记本跑caffe有点吃不消)

1. 配置环境

  • linux(ubuntu 16.04)
  • caffe-master
  • opencv-2.4.13
  • NVIDIA GTX 1050TI
  • Cuda-8.0
  • cuDNN-5.1

    配置内容包括caffe主模块(即:caffe相关依赖库的安装和caffe-master的编译)和加速模块(即:CUDA和cuDNN加速模块的配置)。

本人在配置过程中主要参考了以下两篇教程:
http://www.linuxdiyf.com/linux/21717.html
http://www.linuxdiyf.com/linux/24659.html

这里强烈建议两点
- 先配置主模块,等编译成功后再配置加速模块,要不然到最后遇到各种乱七八糟的错误都不知道是哪里出了问题。
- 有条件用GPU跑的就不要用CPU,因为速度真的不是一个级别的。

话不多说,下面进入配置过程。

2. 配置过程

Part 1. caffe主模块配置

1. 安装相关依赖库

# update
sudo apt upgrade
sudo apt update

# essential packages
sudo apt-get install build-essential
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev   
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install python-dev
sudo apt-get install python-numpy
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler libhdf5-serial-dev

2. 安装opencv

下载地址:http://opencv.org/downloads.html,下载界面如下,根据自己的情况选择下载。


opencv_download

经测验,opencv-2.4.13和opencv-3.1.0都能够兼容caffe,不过看到网上有人说3.0版本不支持,这里我也没试过,有兴趣的可以自己尝试一下。这里我以open-2.4.13为例。

1). 官网下载linux下的opencv-2.4.13包

假设这里我已经解压到:home/Software/opencv-2.4.13

2). 编译opencv-2.4.13

这步需要保持联网,因为需要下载一些依赖库。

# compile opencv
cd home/Software/opencv-2.4.13
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8

如果在执行cmake那一行系统提示没有cmake工具时,执行如下代码安装cmake工具再重新执行该步骤即可。

sudo apt install cmake 

最后一步中的-j8表示我的电脑是8核的,如果电脑配置不高可以直接输入“make”就行,就是速度会慢一点,耐心等待到100%就好。

3). 安装opencv-2.4.13
sudo make install

以上几步配置成功后就可以先开始caffe(无GPU情况)的编译了。

3. 编译caffe(无GPU)

1). 下载好caffe-maste压缩包

这里假设我已经将文件解压到:home/Software/caffe-master

2). 修改配置文件

找到caffe-master目录下的Makefile.config.example文件,复制一份到当前路径并命名为Makefile.config(不要直接改源文件,因为你以后如何需要更改配置可以重新复制一份)找到并修改如下代码:

# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1
3). 编译caffe

在caffe-master根路径下打开terminal,输入如下代码:

mkdir build
cd build
cmake ..
make all -j8 

同样,耐心等待到编译到100%,如果没有错误就OK 了,如果你电脑没有GPU那可以直接跑一下caffe自带的例子了(提示一下,速度有点慢,但你开心就好。)

Part 2. caffe加速模块的配置

对于那些追求速度的同志们来说,你们的路才走到一半,下面的配置才是最重要的也是最容易出现各种各样错误的,请提前做好心理准备。。。

1. 安装NVIDIA驱动

这里有两种方法,第一种简答,但不一定适用于所有的电脑,可以先试试:

方法一:
进入ubuntu系统的software & updates ,然后点击addtional drivers那一栏,如果系统能检测到相关的NVIDIA驱动,直接点击安装即可。

方法二:

1). 下载显卡驱动

从NVIDIA官网(http://www.nvidia.cn/)查询适合你系统的显卡驱动下载下来,如下图。假设这里已经保存到home/Downloads/NVIDIA-Linux-x86_64-xxx.xx.run(xxx.xx为驱动的版本,由自己的电脑决定)


nvidia_drive_version

2). 安装显卡驱动

在home/Downloads/下打开terminal,依次输入以下代码:

sudo init 3
chmod +x NVIDIA-Linux-x86_64-xxx.xx.run
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run
sudo init 5

第一行和最后一行是切换ubuntu系统的工作模式,执行完第一行后,通过ctrl+alt+f1键进入命令行模式,然后再输入剩下的代码;
第二行是给.run文件权限,第三行是执行安装代码,按照提示输入命令就好;
安装成功后,通过第四行代码切换回图形界面(可以发现分辨率发生了变化),因为显卡驱动已经安装成功了,这是可以通过如下命令查看显卡版本信息:

sudo nvcc -V

2. 安装cuda

cuda是NVIDIA显卡的加速工具,有了它,我们跑caffe的速度可以翻几十倍(当然这取决于你的GPU有多给力)。

1). 下载cuda

进入 https://developer.nvidia.com/cuda-downloads,这里需要先注册一个账号,然后填一下问卷,一步步来就好,之后就可以选择cuda的版本,根据自己的系统来就好,如下图所示。


这里写图片描述

假设这里我已经下载并解压到home/Downloads/cuda_8.0.44_linux.run

2). 安装cuda

进入文件路径,执行如下代码:

chmod +x cuda_8.0.44_linux.run 
sudo ./cuda_8.0.44_linux.run       

这里会让你输入一些命令,先accept,之后让你选择是否安装图形显卡驱动时选no,因为之前已经安装过了,后面就是yes和默认就好。

3). 配置环境变量

打开.bashrc文件

# open the ".bashrc"
sudo vim ~/.bashrc

输入‘i’进入INSERT模式,然后在文件最后加入以下代码(注意等号前后不要有空格):

# add the following codes in the end of the file     
export PATH=/usr/local/cuda-8.0/bin/${PATH:+:/${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/${LD_LIBRARY_PATH:+:/${LD_LIBRARY_PATH}} 

按‘esc’键推出INSERT模式,之后按:wq保存推出。
如果打开文件失败,是因为没有安装vim,通过如下代码安装即可:

# install "vim"
sudo apt install vim
4). 检测cuda是否安装成功
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

如果看到cuda信息,说明安装成功,重启一下电脑。

3. 配置cuDNN

1). 下载cuDNN-5.1

假设这里已经下载并解压到:home/Software/cuda。(cuDNN压缩包解压后是一个cuda文件夹)

2). 拷贝头文件和库文件

进入解压后的路径:home/Software,打开终端,执行如下代码:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
3). 生成软连接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5    
sudo ln -s libcudnn.so.5 libcudnn.so 

在网上看到很多教程到这里就结束了,但其实cuDNN还没有配置成功,这一点体现在对caffe进行编译时,会出现cuDnn : NOT FOUND的配置信息(如下图),当然,整个过程中并不会报错,只是你不能享受到cuDnn带来的加速了。


cuDnn not found

在执行了下面的步骤后,可以成功解决此问题

4). 设置环境变量和动态链接库

打开/etc/profile文件

sudo gedit /etc/profile

在文件最后加入如下代码并保存退出:

export PATH=/usr/local/cuda/bin:$PATH

打开文件/etc/ld.so.conf.d/cuda.conf

sudo vim /etc/ld.so.conf.d/cuda.conf

在文件中输入如下代码,并保存退出:

/usr/local/cuda/lib64

在终端输入以下代码,让链接文件生效:

sudo ldconfig

在编译过程的时候发现系统能够检测到cuDNN了,如下图:


cuDnn_yes

这里由于我是在两台不同的电脑上截的图,所以前后GPU arch(s)的信息会不一样,后来我测试了一下速度,用cuDnn加速cuda8.0在mnist数据集上的速度大约是只用cuda的4倍(当然,不同电脑有所差异)

4. 编译caffe(GPU+cuda+cuDNN)

(如需要配置python接口,请直接跳到第5步)

1). 修改Makefile.config配置文件
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
2). 清除旧的编译文件

在caffe-master下打卡终端,输入如下代码:

make clean
3). 重新编译caffe
mkdir build
cd build
cmake ..
make all -j8 

耐心等待吧,你的caffe即将配置完成!

5. 为caffe配置python接口(可选)

1). caffe的python环境配置

安装python的一些依赖包。进入caffe-master/python,在该路径下打开terminal,输入以下代码:

pip install -r requirements.txt

依赖包安装完成后,在命令行中输入如下代码:

sudo gedit /etc/profile

在文件最后添加一行代码(caffe/python的路径)

# vicky是我的电脑用户名
export PYTHONPATH=/home/vicky/Software/caffe-master/python:$PYTHONPATH

保存退出后,执行如下代码使刚刚的配置生效:

source /etc/profile
2). 修改Makefile.configure文件

要修改的代码如下:

# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

## 如果要用python,需要继续修改下面的代码
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

# NOTE: this is required only if you will compile the python interface.
# 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

# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib

# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1

# Whatever else you find you need goes here.
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/hdf5/serial/
3). 编译caffe

进入caffe-master根目录下,首先清除旧的编译文件:

make clean

编译全部文件:

make all -j8

编译pycaffe:

make pycaffe

编译无报错后即全部编译完成,可以在python环境下导入caffe模块,如下图:
import caffe

3. 总结

回想本人在配置caffe过程中前前后后重新装了好几次ubuntu系统,总之遇到各种坑,遇到问题就去百度,一步步排除问题。
以上教程是本人亲自实践有效的,如果有感觉不合理的地方,欢迎指出。本人感激不尽!也希望能和同行的各位朋友相互交流,共同学习。

配置好之后,可以先学习一下caffe自带的例子,这一块网上教程很多,这里就不多废话了。有时间在下一篇博客中记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值