这篇博客主要讲述了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-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
注:无GPU安装可以直接跳过这一步,所以这里直接跳过。要说明的是cuda 32位尚未找到合适的安装包,所以这里的linux要64位的,也就是安装CUDA,需要64位的Linux
一、CUDA Repository
获取CUDA安装包,去NVidia官网下载。(https://developer.nvidia.com/cuda-downloads)
sudodpkg−icuda−repo−ubuntu1504−7−5−local7.5−18amd64.deb sudo apt-get update
二、CUDA Toolkit
$ sudo apt-get install -y cuda
注:Network Install和Local Install的区别:一个是文件小,在线更新;一个是文件大,可以离线安装。
安装前请去先官网下载最新的CUDNN (cudnn-7.0-linux-x64-v4.0-prod)。
tar−xvfcudnn−7.0−linux−x64−v3.0−prod.tgz sudo cp include/cudnn.h /usr/local/include
$ sudo cp lib64/libcudnn.* /usr/local/lib
链接cuDNN的库文件(要注意版本号不要写错)
sudoln−s/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安装包,下载地址: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
具体设置请参考官网:
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