Caffe 安装 Ubuntu14.04+CUDA7.0/7.5(亲测有效)
自己安装Caffe的过程中,参考了很多资料,但由于版本或者其他原因,安装过程中总是遇到这样或者那样的问题,因此留做记录,方便之后查看,也希望对遇到相似麻烦的朋友们提供帮助。
下面我们开始安装吧:
硬件自然不用说了,一个好的显卡(Nvida TiTan 系列),i7的处理器,8G以上的RAM。
1. 安装部分支持库
sudo apt-get install build-essential sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2. 下载NVIDIA显卡驱动 和 CUDA
a. 显卡驱动下载
http://www.nvidia.cn/Download/index.aspx?lang=cn 选择对应型号和系统下载(CUDA向下兼容,可以下载最新的driver)
Linux下run文件点下载键直接打开网页,可点击右键另存为即可。
b. CUDA下载
https://developer.nvidia.com/cuda-downloads 选择对应系统下载
可以下载CUDA 7.0或者 7.5
3. 安装NVIDIA显卡驱动和CUDA
首先进入tty,输入用户名和密码。
关闭图形界面:
sudo stop lightdm
安装驱动:(更改驱动名称)
sudo chmod -R 777 NVIDIA-Linux-x86_64-352.21.run sudo sh NVIDIA-Linux-x86_64-352.21.run
安装CUDA:
sudo chmod -R 777 cuda_7.0.28_linux.run sudo ./cuda_7.0.28_linux.run
安装过程都默认路径就好。CUDA7会提示安装完了Driver、Toolkit和Samples。
备注1:如果之前你单独安装了驱动,安装CUDA时,驱动安装部分可以跳过。
备注2:安装Samples可能会提示 缺少一些库,simple 也可之后编译测试。
打开图形界面
sudo start lightdm
4. 如果安装驱动不成功,很可能会进入黑屏模式,不要着急重装系统,进入tty重新装一遍驱动即可。(驱动安装成功,本步可略过)
如果进入不了tty (ctrl+Alt+F1~F6),只是黑屏,则:
sudo sed -i -e 's/#GRUB_TERMINAL/GRUB_TERMINAL/g' /etc/default/grub sudo update-grub
sudo reboot
如果重启机子之后就进入不了桌面,在登陆界面循环,但是可以进入tty,一般是内核引导或者驱动安装的问题。则进入tty
lsmod | grep nouveau
创建文件,不会用vi的可以用gedit
sudo gedit /etc/modprobe.d/nvidia-graphics-drivers.conf
写入 blacklist nouveau, 退出保存(wq)
修改grub:
sudo gedit /etc/default/grub
末尾写入
rdblacklist=nouveau nouveau.modeset=0
5. 安装配置Nvidia cuDNN-v4 (也可下载v5版本,链接库文件时注意改名)
a. 去官网下载最新的cuDNN (cudnn-70-linux-x64-v4)。
https://developer.nvidia.com/cudnn 下载,需要先注册为developer,审核通过就可以下载,大概审个两天就可以。这个主要是针对Deep Learning框架设计的NVIDIA CUDA的GPU计算加速方案。不安装这个也可以跑caffe。
b. 添加头文件和库文件
sudo cp include/cudnn.h /usr/local/include sudo cp lib64/libcudnn.* /usr/local/lib
c. 链接cuDNN的库文件
sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4 sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so sudo ldconfig -v
6. 设置CUDA的环境变量
安装完成后需要在/etc/profile中添加环境变量
sudo gedit /etc/profile
在文件最后添加:
PATH=/usr/local/cuda/bin:$PATH export PATH
保存后, 执行下列命令, 使环境变量立即生效
source /etc/profile
同时需要添加lib库路径: 在 /etc/ld.so.conf.d/加入文件cuda.conf,
sudo gedit /etc/ld.so.conf.d/cuda.conf
添加内容:
/usr/local/cuda/lib64
保存后,执行下列命令使之立刻生效:
sudo ldconfig
7. 安装测试CUDA simples
cd /usr/local/cuda/samples sudo make all -j8
其中-jx中x的数字代表几个线程同时编译,可以加快速度,x可以根据CPU核的个数决定。
可能遇到的问题:/usr/bin/ld: cannot find -lGL
原因:1. 缺少libGL库文件;2. link的问题。
方案:
1, 如果是缺少libGL库文件,可以先搜寻库文件安装包
apt-cache search libGL-dev
sudo apt-get install libGL-dev
2, 先寻找link文件(.so),再根据寻找结果定位
locate libGL.so
显示结果如下:
/usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so.346.46 /usr/lib/x86_64-linux-gnu/mesa/libGL.so
链接文件:
sudo rm /usr/lib/x86_64-linux-gnu/libGL.so sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.46 /usr/lib/x86_64-linux-gnu/libGL.so
其他问题解决方案类似。
编译完成后进入samples/bin/x86_64/linux/release, 运行deviceQuery
cd ./bin/x86_64/linux/release ./deviceQuery
如果出现显卡信息, 则驱动及显卡安装成功。
8. 安装Intel MKL或Atlas
如果没有Intel MKL, 可以用下列命令安装免费的atlas(我在安装过程中,使用MKL时,与caffe不兼容,于是直接使用了atlas!!!!)
sudo apt-get install libatlas-base-dev
当然使用Intel MKL会快一些,我在caffe社区也反映了兼容问题,现在已经解决。安装Intel MKL过程如下:
a. 下载Intel MKL
Intel MKL可以申请学生账号下载免费intelMKL
b. 解压安装包,下面有一个install_GUI.sh文件, 执行该文件sudo run intall_GUI.sh, 会出现图形安装界面,按说明安装即可。
c. 安装完成后需要添加library路径, 创建/etc/ld.so.conf.d/intel_mkl.conf文件
sudo vi /etc/ld.so.conf.d/intel_mkl.conf
在文件中添加内容:
/opt/intel/lib /opt/intel/mkl/lib/intel64
注意把路径替换成自己的安装路径
sudo ldconfig
9. OpenCV的下载安装
a. 下载OpenCV(建议2.4 系列,3系列差别比较大)
在https://github.com/bearpaw/Install-OpenCV 下载到本地。opencv版本2.4.10.
b. 安装OpenCV
sudo sh ./opencv_2_4_10.sh
脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。
10. 安装Caffe所需要的Python环境
a. 直接用系统自带的python就行了,可以通过以下命令查看python版本
python --version
确定使用的是anaconda提供的python环境,安装
which python which pip apt-get install python-pip
在用户自己的`~/.bashrc` 中添加library path
LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH
11. 安装matlab
下载matlab后,安装过程按照安装包里的要求做就可以了。(R2014a)
sudo ./install
备注1:安装完之后需要添加桌面图标,不然每次都需要到/usr/local/MATLAB/R2014a/bin中去 sudo ./matlab 。
备注2:不要直接去软件中心下载matlab-support,尝试过,一直在installing,没有成功。
备注3:MATLAB R2013a安装包,遇到过一堆乱七八糟其他问题,比如撞到83%说某个库不是exe什么的,最后换了个安装包和版本,一切顺利。
备注4: ubuntu和mac下,对matlab进行激活时,输入用户名和密码,总是显示连接不到服务器,我们需要将防火墙(farewall)关掉。输入“sudo ufw disable”,然后进行激活,激活完成,"sudo ufw enable" 重启防火墙即可!
12. 其他依赖项安装
a. Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:
tar zxvf glog-0.3.3.tar.gz ./configure make sudo make install
如果没有权限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R
b. 其他依赖项,确保都成功
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler protobuf-compiler
13. 编译Caffe(终于到了激动人心的一刻)
进入caffe根目录, 首先复制一份`Makefile.config`, 然后修改里面的内容,主要需要修改的参数包括
- CPU_ONLY 是否只使用CPU模式,没有GPU没安装CUDA的同学可以打开这个选项
- BLAS (使用intel mkl还是atlas),建议使用atlas,方便又快捷
- MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如我的路径为/usr/local/MATLAB/R2014a (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)
- DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序
完成设置后, 开始编译
make all -j8 make test make runtest
如果需要matlab wrapper
make matcaffe
如果需要python wrapper
make pycaffe
备注:如果有多个caffe包,一定要输出每一个的python路径。例如有caffe1和caffe2:
export PYTHONPATH=your_caffe_path/caffe1/python:$PYTHONPATH export PYTHONPATH=your_caffe_path/caffe2/python:$PYTHONPATH
14. 使用MNIST数据集进行测试
Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$ home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。
下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
a. 数据预处理
sh data/mnist/get_mnist.sh
b. 重建lmdb文件。Caffe支持多种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根据自己需要选择不同输入吧。
sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集
c. 训练mnist
sh examples/mnist/train_lenet.sh
至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。