Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清,它是目前最流行的深度学习框架之一。对于新手来说,caffe的安装和配置是个难题(像我这样的菜鸟,就配置了5天,重装了6次系统),所以本文主要将自己配置caffe的过程记录下来,一来能与大家交流,二来避免以后配置环境时遗忘。
一、安装Ubuntu 14.04
配置caffe之前,我对linux系统一点也不熟,完全是因为大神们推荐在linux上用caffe更好,就安装了win7+ubuntu 14.04的双系统。具体的安装过程见该博客点击打开链接,步骤基本不用改变。
二、CUDA7的安装与配置
caffe之所以难配置,主要就是因为cuda驱动和Toolkit安装时一些细节注意不到时,会发生各种难以解决的问题,比如安装cuda后进不了Ubuntu桌面(这个问题困扰了我两天的时间)。下面详细介绍一下安装过程,安装完系统后就开始配置CUDA,记着不要去更新系统。
1、首先确定你有一个支持cuda编程的GPU。
执行下面的操作,验证硬件支持GPU CUDA,只要型号存在于https://developer.nvidia.com/cuda-gpus,就没问题了。
$ lspci | grep -i nvidia
2、确认gcc已安装。
$ gcc --version
3、下载cuda7的 .run 安装文件。
下载地址: https://developer.nvidia.com/cuda-downloads 下载RUN文件,1.1GB。
用下面的命令计算MD5,结果应该是 312aede1c3d1d3425c8caa67bbb7a55e,具体见
http://developer.download.nvidia.com/compute/cuda/7_0/Prod/md5sum-7.0.txt
$ md5sum filename(下载的文件名)
4、更新一下源。
$ sudo apt-get update
若出现一些update无法下载,应该是被墙了,可以换一下源,这里我是用的清华大学的源。
5、安装一些必要的库
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
我在安装时有一个库 libgl1-mesa-glx 没安装成功,忽略之,对后面的也没影响。
6、禁用系统自带的nouveau开源驱动。
执行下列命令:
$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf
在文件写入:blacklist nouveau
options nouveau modeset=0
保存并退出:wq!
执行下列命令:
$ sudo update-initramfs -u
重启电脑使禁用生效。
7、安装CUDA
电脑重启后进入tty模式,关闭桌面服务:
$ sudo stop lightdm
切换到cuda_7.0.28_linux.run所在目录,执行如下安装命令:
$ sudo sh cuda_7.0.28_linux.run --no-opengl-libs
这里要注意的是,之前几次安装cuda时,并没有加--no-opengl-libs选项,导致安装完cuda后就进不了桌面了,这个问题当时困扰了我好久。可以读一下nvidia官方的安装教程 CUDA_Getting_Started_Linux.pdf,里面的4.5 Advanced options 有讲到这些和其他的安装选项!!
安装过程中会有一些问题,问yes 或no的直接yes ,其它的按Enter。
安装完后,输入以下命令开启桌面服务:
$ sudo start lightdm
8、配置环境变量
进入桌面后,打开终端,输入以下的命令:
$ export PATH=/usr/local/cuda-7.0/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
9、检验安装是否成功。
执行以下的命令可以查看驱动的版本:
$ cat /proc/driver/nvidia/version
执行以下的命令可以查看CUDA Toolkit的版本:
$ nvcc -V
接下来测试一下samples。一般安装完cuda7后,主文件夹下会有一个NVIDIA_CUDA-7.0_Samples的文件夹(似乎就是这个名字,具体有点记不清啦),cd进入该文件夹下输入make命令,等待一段时间,编译完成后,cd进入NVIDIA_CUDA-7.0_Samples/
bin/x86_64/linux/release(这个路径有点记不太清了,似乎是这个),总之得找到deviceQuery文件,并且运行它,$ sudo ./device
Query,输出应与下图相似:
然后运行bandwidthTest来确认CUDA设备能与系统正确通信。输出结果应和下图相似:
这些测试都通过的话,就能确认CUDA 环境配置成功了。配置caffe最难过的一关已经通过了。
三、Python安装
caffe支持Python和Matlab接口,这里我也配置了Python环境,Matlab环境配置请看这篇博客点击打开链接。
选一个适合你的IDE环境,我装的是Spyder,它内置了iPython环境,caffe中有不少程序是基于iPython环境完成的。安装方法很简单,直接在ubuntu软件中心搜索“Spyder"即可安装。有关配置和编译pycaffe的内容请见下一部分。
四、caffe的安装和测试
caffe的安装可参照官网:http://caffe.berkeleyvision.org/installation.html
1、安装BLAS
这里可以选择ATLAS、MKL或者OpenBLAS,我安装的是ATLAS,输入以下命令安装:
$ sudo apt-get install libatlas-base-dev
2、安装其它依赖库
这些依赖库包括boost、opencv、leveldb、protobuf等,依次运行命令:$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy
-dev libopencv-dev libboost-all-dev libhdf5-serial-dev $ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
3、安装pycaffe的必须的一些依赖项
$ sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
$ sudo apt-get install -y protobuf-c-compiler protobuf-compiler
4、安装配置cuDNN加速
先到官网下载最新的cuDNN。目前是cudnn-6.5-linux-x64-v2.tgz,可解压到主文件夹,然后依次执行以下的命令:
然后链接cuDNN 的库文件
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5.48 /usr/local/lib/libcudnn.so.6.5
5、caffe的配置和编译
从github上下载最新的caffe-master包,网址为https://github.com/BVLC/caffe。可将下载的zip包解压,然后将caffe-master放在主文件夹下,进入caffe-master,生成Makefile.config配置文件,执行:
$ cp Makefile.config.example Makefile.config
接着打开Makefile.config做一些修改:
a、启用cuDNN,去掉注释”#“。
USE_CUDNN := 1
b、启用GPU,加上注释”#“。
# CPU_ONLY := 1
c、配置路径,实现caffe对python接口的支持。
PYTHON_LIB := /usr/local/lib
6、编译caffe-master !! "-j8"是使用CPU的多核进行编译,可以极大地加快编译的速度。
$ make all -j8
若在环境变量或共享库的配置上没做好,在编译runtest的时候会报错,大概是说cudart找不到文件,可以执行命令:
$ sudo ldconfig /usr/local/cuda-7.0/lib64
解决了上面的问题后再次运行 $ make runtest -j8 ,又出现了一个错误,其中错误说明中有这么一句:
Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) CUDNN_STATUS_ARC ,几方查找找到原因:GPU加速性能不够,cuDNN只支持CUDA capability 3.0 以上的GPU加速。而我的 笔记本的显卡为geforce 610m,GPU 的CUDA capability 为2.1,因此不能使用cuDNN加速。 只能在Makefile.config中注释掉USE_CUDNN这行,重新执行以下
$ make clean
最后除了make runtest中2 disabled tests之外,没有其它问题,make runtest中出现几个测试例子不过不影响使用。
接着编译Python用到的caffe文件:
$ make pycaffe -j8
五、使用MNIST数据集进行测试
进入到caffe-master文件夹下,然后进行下面的操作:1、数据预处理
$ sh data/mnist/get_mnist.sh
2、重建lmdb文件
$ sh examples/mnist/create_mnist.sh
3、训练mnist
$ sh examples/mnist/train_lenet.sh
跑了10000回合后就停止了,在我的笔记本上(n卡为Geforce 610m,显存2G,没有使用cuDNN)跑了将近12分钟,准确率好像是99.01%。
至此,caffe的配置算是结束了,由于对linux系统的陌生,前后共花了5天时间,遇到不能解决的问题就重装系统,总共重装了6次。但是最后看到Mnist测试顺利结束时,内心还是很欣慰的。caffe安装配置完了,接下来就该学习如何使用它了。
-----参考
1、http://developer.download.nvidia.com/compute/cuda/7_0/Prod/doc/CUDA_Getting_Started_Linux.pdf
2、http://ouxinyu.github.io/Blogs/20140723001.html
3、http://it.010lm.com/os/LINUX/161106.html
4、http://blog.csdn.net/grief_of_the_nazgul/article/details/46361699