频道栏目
首页 > 资讯 > 云计算 > 正文

ubuntu15.04搭建caffe深度学习环境流程及遇到的问题

16-08-01        来源:[db:作者]  
收藏   我要投稿

ubuntu 15.04 搭建caffe深度学习环境流程及遇到的问题

 

做深度学习避免不了要装caffe的环境,之前很不容易装好了一次,然后更新了个nvidia驱动后,又坏了。然后找了很多解决方法,均不能使得caffe再次运行。只能重新安装一次。并把遇到的各种问题记录下,方便以后重装。

安装完成后请不要更新Nvidia驱动

第一步:ubuntu安装

下载ubuntu 15.04的安装包 然后刻录到U盘里,设置U盘启动然后安装ubuntu。
遇到的问题如下:
1、由于一些新的显卡 ubuntu15.04内置驱动不能支持,会报cpu死锁的错误。
解决方法:进入ubuntu界面的时候 按F6在更多选项里选择 Nomodeset就可以了。
2、initramfs unable to find a medium
解决方法:和USB3.0接口有问题 需要将USB3.0硬件插入USB3.0接口
同时和U盘刻录可能也有关系,换一个硬盘刻录软件就可以了。
3、软件下载速度慢的问题
建议多试试几个软件源,在软件中心里能够更改。由于我们是教育网,使用科大的源,下载速度很快。
第二部分:nVidia CUDA Toolkit的安装(*.deb方法)
PS:特别推荐.deb的方法,目前已提供离线版的deb文件,该方法比较简单,不需要切换到tty模式,因此不再提供原来的.run安装方法,这里以CUDA 7.5为例。
一、CUDA Repository
获取CUDA安装包,安装包请自行去NVidia官网下载。(https://developer.nvidia.com/cuda-downloads

$ sudo dpkg -i cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64
$ sudo apt-get update
$ sudo apt-get install -y cuda

验证安装成功的标志:/usr/local/cuda-7.5/samples/bin/x86_64/linux/release
首先make下samples 然后 ./devicequery

第二部分 Matlab安装和调试(以Matlab 2014a为例)

1.下载
由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载24小时删除……
2. 预准备
选择Mathworks.Matlab.R2014a.Unix.iso – 右键 – 使用磁盘映像挂载器打开”,进入装载的虚拟光盘,拷贝全部文件至home/Matlab 文件夹(PS:我的原则是能GUI就GUI,喜欢CMD的可以参照执行)
复制Crack/install.jar至 home/Matlab/java/jar/ 并覆盖源文件

$ sudo cp install.jar /home/Matlab/java/jar/
授权安装文件夹
$ chmod a+x Matlab -R
安装
$ sudo ./install

选项:不使用Internet安装
序列号: 12345-67890-12345-67890
默认路径:/usr/local/MATLAB/R2014a
勾选从默认启动路径创建符号链接(实现在任意位置运行matlab启动程序)
激活文件:license_405329_R2014a.lic
拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64

$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/

5.解决编译器gcc/g++版本问题。
因为Ubuntu 15.04的gcc/g++版本是4.9.2,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla调用mex文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。
A. 降级安装gcc/g++版本为4.7.x
(a). 下载gcc/g++ 4.7.x

$ sudo apt-get install -y gcc-4.7
$ sudo apt-get install -y g++-4.7

(b). 链接gcc/g++实现降级

$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-4.7 gcc
$ sudo rm g++
$ sudo ln -s g++-4.7 g++

B
. 暴力引用新版本GLIBCXX_3.4.20

$ sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20 

(libstdc++.so.6.0.20的版本,可能因为系统不同而不同,使用最新的就可以了。)
目录切换到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/ ,非常重要!

$ sudo mv libstdc++.so.6 libstdc++.so.6.backup (仅仅是备份,可以不备份,直接删除)。
$ sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6
$ sudo ldconfig -v

通过命令

strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_

可以看一下,是否已经成功包含了GLIBCXX_3.4.20,如果已经存在,基本上就成功了。
6.编译Matlab用到的caffe文件(见第五部分)
遇到的问题如下:
安装即将结束的时候提示输入安装密钥位置时要选择文件 不能立即关闭软件。否则会提示权限不够。
第五部分 Caffe-Master的安装和测试
对于Caffe的安装严格遵照官网的要求来:http://caffe.berkeleyvision.org/installation.html
一、安装BLAS
这里可以选择(ATLAS,MKL或者OpenBLAS),我这里使用MKL,首先下载并安装英特尔? 数学内核库 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/intel-education-offerings, 使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(或直接把tar.gz文件拷贝到home文件夹,为了节省空间,安装完记得把压缩文件给删除喔~),或者其他的ext4的文件系统中。

接下来是安装过程,先授权,然后安装:

$ tar zxvf parallel_studio_xe_2016.tar.gz
$ chmod a+x parallel_studio_xe_2016 -R
$ sh install_GUI.sh

PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。

sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
新建cuda.conf,并编辑之:
$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
完成lib文件的链接操作,执行:
$ sudo ldconfig -v

三、安装OpenCV 3.0.0

下载并编译OpenCV(官网原版OpenCV:http://opencv.org/), 或者使用我提供的修改版的安装包(前面的百度云下载)(下面的安装方式使用该包完成,安装包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安装文件)切换到文件保存的文件夹,然后安装依赖项:
$ sudo sh Ubuntu/dependencies.sh
切换目录Ubuntu\3.0\安装OpenCV 3.0.0:
$ sudo sh opencv3_0_0.sh

保证网络畅通,因为软件需要联网这里时间较长,请耐心等待。。。,
遇到的问题:
opencv 3.0可以通过离线安装方法,在我的安装包里,先安装一个CMAKE 然后cmake cmakelist。
由于网速的问题,可能下载某个安装包比较慢,幸运的是csdn里有这个下载包。下载后放到指定的文件夹就可以了。

四、安装其他依赖项

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 , 装完之后,这个文件夹就可以kill了。
2. 其他依赖项,确保都成功

$ 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

五、安装Caffe并测试

安装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
安装配置nVidia cuDNN 加速Caffe模型运算
a. 安装前请去先官网下载最新的cuDNN (cudnn-7.0-linux-x64-v4.0-prod)。
$ sudo cp include/cudnn.h /usr/local/include
$ sudo cp lib64/libcudnn.* /usr/local/lib

b. 链接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
切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:
$ cp Makefile.config.example Makefile.config
配置Makefile.config文件(仅列出修改部分)
a. 启用CUDNN,去掉USE_CUDNN := 1配置一些引用文件(增加部分主要是解决新版本下,HDF5的路径问题)
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

c. 启用Intel Parallel Studio XE 2016

BLAS := mkl

d. 配置路径,实现caffe对Python和Matlab接口的支持

PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014a

c. 启用OpenCV 3.0, 去掉”#”

OPENCV_VERSION =3

这部分如果没有就算了,不用额外添加

编译caffe-master!!!”-j16″是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。
$ make all -j16
$ make test -j16
$ make runtest -j16

编译Python和Matlab用到的caffe文件

$ make pycaffe -j16
$ make matcaffe -j16

**遇到的问题:
一、我用的这个版本的caffe只支持3.0版本的cudnn,因此需要下载对应的版本。
二、./include/caffe/util/cudnn.hpp:8:34: 致命错误: caffe/proto/caffe.pb.h:没有那个文件或目录
**
解决方法如下:

pip install protobuf –upgrade -i http://pypi.douban.com/simple
pip install pillow –upgrade -i http://pypi.douban.com/simple

六、使用MNIST数据集进行测试
Caffe默认情况会安装在CAFFEROOT,就是解压到那个目录,例如: home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
1. 数据预处理

$ sh data/mnist/get_mnist.sh
重建lmdb文件。Caffe支持多种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根据自己需要选择不同输入吧。
$ sh examples/mnist/create_mnist.sh

生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集
3. 训练mnist

$ sh examples/mnist/train_lenet.sh

至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。

测试平台1:i7-4770K/16G/GTX 770/CUDA 6.5
MNIST Windows8.1 on CPU:620s
MNIST Windows8.1 on GPU:190s
MNIST Ubuntu 14.04 on CPU:270s
MNIST Ubuntu 14.04 on GPU:160s
MNIST Ubuntu 14.04 on GPU with cuDNN:30s
Cifar10_full on GPU wihtout cuDNN:73m45s = 4428s (Iteration 70000)
Cifar10_full on GPU with cuDNN:20m7s = 1207s (Iteration 70000)

测试平台2:技嘉P35X v3,i7-4720HQ@2.6G/16G/NVidia GTX 980 8G
MNIST Ubuntu 15.04 on GPU with cuDNN:33s

测试平台3:Dell 7910,E5 2623v3 3.0G *2 /128G/ NVidia Titan X 12G
MNIST Ubuntu 15.04 on GPU with cuDNN:23s (真是逆天啊!)

对比测试1:2*E5-2620(12CPUs)/128G/Tesla K20M/CUDA5.5/CuDNN:30s
对比测试3:GTX 660/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:49s
entOS 6.4
MNIST CentOS 6.4 on GPU:294s
对比测试2:Tesla K40M/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:30s
对比测试3:GTX 660/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:49s

其实,使用cudnn能提高几倍的计算性能,给出性能标准可以方便大家测试自己是否安装完整。

 
 
相关TAG标签
上一篇:【精】TCP/IP协议简介(四) 之 传输层UDP&TCP
下一篇:整理:状态机的两种写法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站