在Ubuntu14.04 安装Caffe

来源:互联网 发布:剑三淘宝 编辑:程序博客网 时间:2024/05/16 08:58

这篇博客主要讲述了Ubuntu下Caffe的安装

安装显卡驱动

建议首先安装显卡驱动,避免使用CUDA的时候出现一些奇怪的问题。

首先检查你的显卡是否支持CUDA
http://www.geforce.cn/search/search-results?search=
如本机的Geforce GTX980 Ti

这里写图片描述

如果支持,则下载显卡驱动
如果不支持CUDA,就使用CPU版的Caffe,跳过此步骤

如果需要安装显卡驱动,首先需要卸载已安装的驱动
不论是CentOS还是Ubuntu都预装了开源的nouveau显卡驱动(SUSE没有这种问题),如果不禁用,则CUDA驱动不能正确安装。以Ubuntu为例,介绍一下这里的处理方法,当然也有其他处理方法。
sudo vi/etc/modprobe.d/blacklist.conf

增加一行 :blacklist nouveau
sudoapt-get –purge remove xserver-xorg-video-nouveau #把驱动彻底卸载:
sudoapt-get –purge remove nvidia-* #清除之前安装的任何NVIDIA驱动
下面就可以安装显卡驱动了。

首先需要添加执行权限
chmod +x NVIDIA-Linux-x86_64-352.63.run

按 ctrl+alt+F1 进入tty1模式, 登录tty1后输入如下命令
sudo stop lightdm
sudo init 3
./NVIDIA-Linux-x86_64-352.63.run


安装依赖项

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 build-essential

安装ATLAS for Ubuntu:(这里ATLAS,MKL或者OpenBLAS三者选一个安装)
# sudo apt-get install libatlas-base-dev
# sudo apt-get install libprotobuf-dev
# sudo apt-get install libleveldb-dev
# sudo apt-get install libsnappy-dev
# sudo apt-get install libopencv-dev
# sudo apt-get install libboost-all-dev
# sudo apt-get install libhdf5-serial-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


安装OpenCV

先在官网上下载opencv-2.4.11.zip

unzip opencv-2.4.9.zip
cd opencv-2.4.9
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/OpenCV_2.4.11 ..
make
make install


安装CUDA(*.deb方法)

注:无GPU安装可以直接跳过这一步,所以这里直接跳过。要说明的是cuda 32位尚未找到合适的安装包,所以这里的linux要64位的,也就是安装CUDA,需要64位的Linux
一、CUDA Repository
获取CUDA安装包,去NVidia官网下载。(https://developer.nvidia.com/cuda-downloads)
sudodpkgicudarepoubuntu150475local7.518amd64.deb sudo apt-get update

二、CUDA Toolkit
$ sudo apt-get install -y cuda

注:Network Install和Local Install的区别:一个是文件小,在线更新;一个是文件大,可以离线安装。


安装CUDNN

安装前请去先官网下载最新的CUDNN (cudnn-7.0-linux-x64-v4.0-prod)。
tarxvfcudnn7.0linuxx64v3.0prod.tgz sudo cp include/cudnn.h /usr/local/include
$ sudo cp lib64/libcudnn.* /usr/local/lib

链接cuDNN的库文件(要注意版本号不要写错)
sudolns/usr/local/lib/libcudnn.so.7.0.64/usr/local/lib/libcudnn.so.7.0 ln -s /usr/local/lib/libcudnn.so /usr/local/lib/libcudnn.so.7.0
$ sudo ldconfig

编译Caffe

下载caffe安装包,下载地址:https://github.com/BVLC/caffe
解压该压缩包,解压缩命令:
unzip caffe-master.zip
注:如果解压位置出错了,可以使用以下命令删除该目录及所有的子目录:
sudorm -rfcaffe-master

进入caffe根目录,首先复制一份Makefile.config:
cp Makefile.config.example Makefile.config

然后修改里面的内容,主要需要修改的参数包括:
Vim Makefile.config

根据实际情况修改参数:
CPU_ONLY :=1 是否只使用CPU模式。
USE_CUDNN := 1 是否使用CUDNN
BLAS:=atlas(mkl or open)

MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径

完成上述设置后,开始编译:
make all -j4
make test
make runtest

注意:-j4 是指使用几个线程来同时编译,可以加快速度,j后面的数字可以根据CPU core的个数来决定,如果CPU是4核的,则参数为-j4,也可以不添加这个参数,直接使用“make all”,这样速度可能会慢一点儿。

可能遇到的问题

问题1:找不到libcudnn.so库
解决方案:
rm -rf /usr/local/lib/libcudnn.so
ln -s libcudnn.so libcudnn.so.7.0

再次make all 的时候需要make clean

问题2
In file included from src/caffe/util/signal_handler.cpp:7:0:
./include/caffe/util/signal_handler.h:4:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录
#include “caffe/proto/caffe.pb.h”
解决方案:
sudo apt-get install –no-install-recommends libboost-all-dev
(这个命令在安装依赖库的时候,不能漏了)

问题3:libcudart.so.7.5: cannot open shared object file:
解决方法:
32-bit: sudo ldconfig /usr/local/cuda/lib
64-bit: sudo ldconfig /usr/local/cuda/lib64


利用mnist数据集进行测试

具体设置请参考官网:
http://caffe.berkeleyvision.org/gathered/examples/mnist.html

(1)获取mnist数据在Caffe安装目录之下,首先获得MNIST数据集,可以用下载好的数据集,也可以重新下载,直接下载的具体操作如下:$ sudo sh data/mnist/get_mnist.sh  (2)将二进制数据集转化为Caffe识别的格式lmdb(默认),以后所有的数据,包括jpe文件都要处理成这个格式(caffe支持的格式有:lmdb, leveldb, etc.),执行命令如下:$ sudo sh ./examples/mnist/create_mnist.sh  

生成mnist-train-leveldb/ 和mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集,

注:新版caffe都需要从根目录上执行,如果使用下列命令执行:
# cd examples/mnist
# sudosh ./create_mnist.sh
可能会遇到这个错误:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found
(3)训练mnist
如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU改为solver_mode:CPU,修改后结果如下所示:
# solver mode: CPU or GPU
solver_mode: CPU
修改完成后,再执行下面的命令进行训练:
$ sudosh ./examples/mnist/train_lenet.sh
注意:这些都需要从根目录上执行

最终训练完的模型存储为一个二进制的protobuf文件,CPU模式下训练这样的数据集大概需要20分钟,比较慢,GPU模式下要快很多,约2分钟。至此,Caffe安装的所有步骤完结。

可能遇到的问题

问题1
Check failed: error == cudaSuccess (2 vs. 0) out of memory
* Check failure stack trace: *
@ 0x7febb8ac6daa (unknown)
@ 0x7febb8ac6ce4 (unknown)
@ 0x7febb8ac66e6 (unknown)
@ 0x7febb8ac9687 (unknown)
@ 0x7febb91d3841 caffe::SyncedMemory::to_gpu()
@ 0x7febb91d2ba9 caffe::SyncedMemory::mutable_gpu_data()
@ 0x7febb91e8922 caffe::Blob<>::mutable_gpu_data()
@ 0x7febb9236470 caffe::ConvolutionLayer<>::Forward_gpu()
@ 0x7febb92034b5 caffe::Net<>::ForwardFromTo()
@ 0x7febb9203827 caffe::Net<>::Forward()
@ 0x7febb91ce9e7 caffe::Solver<>::Step()
@ 0x7febb91cf2a9 caffe::Solver<>::Solve()
@ 0x4080de train()
@ 0x4059bc main
@ 0x7febb7dd4ec5 (unknown)
@ 0x4060f1 (unknown)
@ (nil) (unknown)
Aborted (core dumped)
解决办法:减小batch_size

问题2
Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime version
* Check failure stack trace: *
@ 0x7f1de8033daa (unknown)
@ 0x7f1de8033ce4 (unknown)
@ 0x7f1de80336e6 (unknown)
@ 0x7f1de8036687 (unknown)
@ 0x7f1de861def3 caffe::Caffe::SetDevice()
@ 0x407eed train()
@ 0x4059bc main
@ 0x7f1de7341ec5 (unknown)
@ 0x4060f1 (unknown)
@ (nil) (unknown)
Aborted (core dumped)
说明CUDA版本不支持显卡
解决方案: 1. 安装显卡驱动 2.安装低版本的CUDA


安装过程可能出现的其他问题

Unsupported gpu architecture ‘compute_11’解决方法:
解决方案:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..

error while loading shared libraries: libcudart.so.3:
解决方案:export LD_LIBRARY_PATH=/usr/local/cuda/lib64

上面就是安装Caffe的工作总结了,有什么疑问,欢迎大家留言讨论。

2016-4-15 20:22:44

0 0
原创粉丝点击