本文参考如下:
caffe 安装所需的所有资源可在百度网盘下载
链接: http://pan.baidu.com/s/1jIRJ6mU
提取密码:xehi
在服务器上为每个子用户拷贝caffe 使用
Linux探索之旅 | 第一部分第四课:磁盘分区+完成Ubuntu安装
第一部分 Linux安装
Linux的安装,先制作安装U盘或者光盘,可参考
制作安装U盘
Win7 安装Ubuntu双系统
Rufus制作U盘启动安装
Ubuntu 16.04 U盘安装图文教程
Universal USB Installer制作U盘启动安装,软碟通UltraISO v9.5.3.2901 简体中文完美注册版制作 光盘启动安装
Universal USB Installer
官网 —-如何制作光盘U盘安装盘的教程中文
如何在Windows系统上制作一个USB安装盘:中文,英文。
总共用分出的500G的空间来安装Ubuntu 15.04,这个版本是最新的版本,有个好处是,可以直接访问Windows8.1的NTFS分区,建议安装英文版本,中文版本在文本命令模式下有时会出现乱码。
Linux的文件系统
ext2:这个文件系统在Linux下使用了很久。ext是英语Extended的前三个字母,是“扩展的”的意思。由法国程序员Remy Card设计,他也是ext(第一代扩展文件系统)的设计者。ext文件系统的一大优势是几乎不怎么产生磁盘碎片,所以在Linux系统下一般不需要进行磁盘碎片整理。
ext3:ext3和ext2很接近,不过ext3是日志型文件系统,所以比之ext2(不是日志型),ext3在故障时可以恢复数据。ext3和ext2高度兼容。
ext4:ext3的演进,扩大了磁盘分区的大小,进一步减少了磁盘碎片的产生机率
所以ext2,ext3和ext4分别是Second Extended Filesystem(第二代扩展文件系统),Third Extended Filesystem(第三代扩展文件系统)和Fourth Extended Filesystem(第四代扩展文件系统)的缩写。
Linux下磁盘分区的名称
dev是英语device的头三个字母,表示"设备"文件。
第一个字母:h或s。h表示IDE接口的硬盘。s表示SATA或SCSI接口的硬盘。
第二个字母:总是d。英语drive的首字母,表示"磁盘驱动器"。
第三个字母:a,b,c,d,等等。表示顺序。
hda一般是指IDE接口的硬盘,hda一般指第一块硬盘(磁盘),类似的有hdb,hdc等。
sda一般是指SATA或SCSI接口的硬盘,sda一般指第一块硬盘(磁盘),类似的有sdb,sdc等。
主分区和逻辑分区
主分区:英语是Primary Partition。也称为主磁盘分区,和扩展分区、逻辑分区一样,是一种分区类型。主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的,逻辑分区则必须建立于扩展分区中)。早期MBR模式分区只能划分四个分区,现在的GPT分区至少可以划分128个主分区,未来很有可能将不存在扩展分区和逻辑分区的概念。一个硬盘的主分区包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则硬盘必须有一个主分区
逻辑分区:英语是Logical Partition。是硬盘上一块连续的区域,不同之处在于,每个主分区只能分成一个驱动器,每个主分区都有各自独立的引导块,可以用fdisk设定为启动区。一个硬盘上最多可以有4个主分区,而扩展分区上可以划分出多个逻辑驱动器。这些逻辑驱动器没有独立的引导块,不能用fdisk设定为启动区。
分区设置参考
分区设置如下:
第一次分区—根分区:
根分区也就是 / 分区,相当于Windows系统的C盘。在Linux系统里,/是最上层目录,其实就是一个根目录。
挂载点:“/”
大小:100G
新分区的类型:主分区
新分区的位置:空间起始位置
用于:EXT4日志文件系统
第一次分区完毕
第二次分区:
“空闲”处,继续点“+”,如下设置,
挂载点:(不设置)
Swap交换分区:128G,这里设置为何内存一样,据说小于16G的内存,就设置成内存的1.5-2倍。
新分区的类型:逻辑分区
新分区的位置:空间起始位置
用于:交换空间
第二次分区完毕。
SWAP分区也叫交换分区,就是LINUX下的虚拟内存分区。
它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用。
第三次分区引导分区:
引导分区,也就是引导操作系统启动的程序所在的分区。/boot分区是系统启动所需要的文件。
“空闲”处,继续点“+”,如下设置,
挂载点:/boot 设置Ubuntu启动引导区。
大小:200MB(笔者暂时设置为200MB)
新分区的类型:逻辑分区
新分区的位置:空间起始位置
用于:EXT4日志文件系统
第三次分区完毕
第四次分区:
“空闲”处,继续点“+”,如下设置,
挂载点:/home ,用于存放我们用户的文件。
大小:(剩余全部空间,剩下显示多少,就多少)。
鉴于Imagenet,PASCAL VOC之类的大客户,建议500G,至少300G以上。
新分区的类型:逻辑分区
新分区的位置:空间起始位置
用于:EXT4日志文件系统
第四次分区完毕
分区设置完毕后,下方还有一项“安装启动引导器的设备”,重要的一点:记得将“安装启动引导器的设备”选择称为之前分配/boot的那个分区名。
UEFI 引导启动需要设置 ESP(EFI系统分区),切记!!!
UEFI的两种启动模式
☆☆☆☆☆☆☆☆☆☆安装前需要注意的问题:☆☆☆☆☆☆☆☆☆☆☆☆☆☆
a. 检查自己的GPU是否支持CUDA,linux可用以下命令来查看GPU型号:
lspci | grep –i nvidia
只要GPU型号可以在https://developer.nvidia.com/cuda-gpus找到,就是支持CUDA的
b. 检查自己的操作系统是不是CUDA支持的,可以输入以下命令:
uname -m && cat /etc/*release
CUDA支持的操作系统在以下网址可以找到http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/#overview
c. 检查操作系统是否安装了gcc,可用以下命令
gcc --version
很多操作系统都预装有gcc,如果你的没有就先安装一下。有时gcc已经预装,但是gcc –version执行后没有显示信息,可以执行下面命令来查询系统的gcc信息。
cat /proc/version
d. 去https://developer.nvidia.com/cuda-downloads下载最新版的CUDA,目前是7.5的。这里注意选择与自己机器和操作系统相匹配的(比如我的是64位的Ubuntu15.04)。友情提醒:文件有点大,大概1G,网速不好的同学请耐心等待。
e. 验证下载的CUDA是否有效:
md5sum 安装包名字
例如:
md5sum cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb
执行完上述命令后会出现一串md5值,例如我的是: 0a02f6efe0ba2b8dea3e7654ee0951d7,看看https://developer.nvidia.com/cuda-downloads/checksums列表中是否能找到你的md5值,如果不能找到,那就说明之前下的安装包有问题,要重新下载。
第二部分:NVidia CUDA Toolkit的安装(*.deb方法)
特别备注:Cuda7.5包含CUDA所需的所有驱动,不存在兼容的问题,所以没有必要去专门安装Nvidia的驱动。
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.deb
sudo apt-get update
二、CUDA Toolkit
sudo apt-get install -y cuda
第三部分 Matlab安装和调试(以Matlab 2014a为例)
1.下载
由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载24小时删除……
2. 预准备
选择Mathworks.Matlab.R2014a.Unix.iso -右键 - 使用磁盘映像挂载器打开”,进入装载的虚拟光盘,拷贝全部文件至home/Matlab文件夹,复制Crack/install.jar至 home/Matlab/java/jar/并覆盖源文件
sudo cp install.jar /home/Matlab/java/jar/
3. 授权安装文件夹
chmod a+x Matlab -R
4. 进入/home/Matlab 安装
sudo ./install
选项:不使用Internet安装
序列号: 12345-67890-12345-67890
默认路径:/usr/local/MATLAB/R2014a
勾选从默认启动路径创建符号链接(实现在任意位置运行matlab启动程序)
激活文件:license_405329_R2014a.lic
拷贝 /Crack/Linux 下的libmwservices.so至 /usr/local/MATLAB/R2014a/bin/glnxa64
sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/
百度云盘的 matlab2015b安装情况类似
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>OpenBLAS>ATLAS,推荐采用MKL。我这里使用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
cd parallel_studio_xe_2016 -R
sudo sh install_GUI.sh
PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。
若出现有32位的库没有找到的问题,32-bit libraries not found
sudo apt-get install g++-multilib
二、MKL与CUDA的环境设置
1. 新建intel_mkl.conf,并编辑之:
sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
添加下列code
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
2. 新建cuda.conf,并编辑之:
sudo gedit /etc/ld.so.conf.d/cuda.conf
添加下列code
/usr/local/cuda/lib64
/lib
3. 完成lib文件的链接操作,执行:
sudo ldconfig -v
采用OpenBLAS,OpenBLAS是高性能多核BLAS库,其官网:http://www.openblas.net/
$ sudo apt-get install -y gfortran %需安装gfortran来编译
安装步骤
cd OpenBLAS
make
sudo make install
make -j 40 -f Makefile.install install
make[1]: Entering directory '/home/bids/softwares/OpenBLAS'
Generating openblas_config.h in /opt/OpenBLAS/include
Generating f77blas.h in /opt/OpenBLAS/include
Generating cblas.h in /opt/OpenBLAS/include
Copying LAPACKE header files to /opt/OpenBLAS/include
Copying the static library to /opt/OpenBLAS/lib
Copying the shared library to /opt/OpenBLAS/lib
Generating OpenBLASConfig.cmake in /opt/OpenBLAS/lib/cmake/openblas
Install OK!
make[1]: Leaving directory '/home/bids/softwares/OpenBLAS'
修改Caffe的Makefile.config
BLAS := open
BLAS_INCLUDE := /opt/OpenBLAS/include
BLAS_LIB := /opt/OpenBLAS/lib
export环境变量
export OPENBLAS_NUM_THREADS=4
export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/:$LD_LIBRARY_PATH
接下来就可以使用caffe的多cpu进行计算了
三、安装OpenCV 3.0.0
1. 下载并编译OpenCV
(官网原版OpenCV:http://opencv.org/),或者使用我提供的修改版的安装包 Install-OpenCV-master https://github.com/jayrambhia/Install-OpenCV(下面的安装方式使用该包完成,安装包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安装文件)
2. 切换到文件保存的文件夹,然后安装依赖项:
cd Install-OpenCV-master
sudo sh Ubuntu/dependencies.sh
3. 切换目录Ubuntu/3.0:
cd Ubuntu/3.0
sudo sh opencv3_0_0.sh
保证网络畅通,因为软件需要联网这里时间较长,请耐心等待。
四、安装其他依赖项
1. Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./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并测试
1. 安装pycaffe必须的一些依赖项:
sudo apt-get install -y python-yaml 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 ipython-notebook python-imdbpy python-pip liblmdb-dev
sudo pip install lmdb
备注:关于python模块的特别说明
具体详情大家可以去下面链接去查阅
easy caffe 配置
python最蛋疼的一是缩进,二是包管理。
不同的包管理工具安装的包之间可能是不兼容的,出现互相依赖的时候,就特别麻烦了,而且卸载还是不干净的。
使用pip这个包管理工具安装pithon模块。你只要熟悉几个简单的命令:
pip search <package name> #搜索某包
pip list #列出已安装的包
pip install <some package> #安装一个包
pip uninstall <installed package> #卸载
有个比较好用的命令:pip install -r requirements.txt,在requirements.txt填上所有要安装的模块名,pip会install one by one。
编辑 requirements.txt,添加所需的模块
Cython>=0.19.2
numpy>=1.10.2
scipy>=0.13.3
scikit-image>=0.11.3
scikit-learn>=0.17
matplotlib>=1.5.0
pyopencv
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
lmdb
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
pyzmq
singledispatch
backports_abc
certifi
jsonschema
jupyter
qtawesome
pydot
notebook
sklearn
skimage
imdbpy
liblmdv-dev
一定要验证python 安装包依赖库
cd caffe-master/python
for req in $(cat requirements.txt); do pip install $req; done
终端可能会有很多红字,那么在运行下一句
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done
2. 安装配置nVidia cuDNN加速Caffe模型运算
a. 安装前请去先官网https://developer.nvidia.com/cudnn下载最新的cuDNN (cudnn-7.0-linux-x64-v4),建议安装v4。
tar zxvf cudnn-7.0-linux-x64-v4.0-rc.tgz
cd cuda
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.4 /usr/local/lib/libcudnn.so.4
$ sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v
特别备注:a. 安装前请去先官网下载最新的cuDNN (cudnn-7.0-linux-x64-v4),建议安装v4,v4是运行caffe是没有问题的,但是若此后还需要安装 Theano,V4就不行了,在测试Theano会出现下列问题。详情见
Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN Version is too old. Update to v5, was 4004.)
所以最后的建议还是安装V5
a. 安装前请去先官网https://developer.nvidia.com/cudnn下载最新的cuDNN (cudnn-7.5-linux-x64-v5.0),建议安装v5。
tar zxvf cudnn-7.5-linux-x64-v5.0-ga.tgz
cd cuda
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.5.0.5 /usr/local/lib/libcudnn.so.5
$ sudo ln -sf /usr/local/lib/libcudnn.so.5 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v
3.切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:
cd caffe-master
cp Makefile.config.example Makefile.config
4. 配置Makefile.config文件(仅列出修改部分)
sudo gedit Makefile.config
用来修改配置Makefile.config
a. 启用CUDNN,去掉”#”
USE_CUDNN := 1
b. 配置一些引用文件(增加部分主要是解决新版本下,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
5. 编译caffe-master!!!”-j8”是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。
特别备注:最好在编译caffe-master之前进行重启电脑,因为显卡驱动装完需要重启才能生效,否则有时会出现编译错误.
cd caffe-master
make all -j16
make test -j16
make runtest -j16
6.编译Python和Matlab用到的caffe文件
make pycaffe -j16
make matcaffe -j16
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
备注:安装BLAS,可以选择ATLAS
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 libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
如果不用 MKL的话,把上面4条命令跑一遍,然后装好CUDA,之后执行
mkdir build
cd build
cmake ..
make all
make test
make runtest
这样配置比MKL更加便捷。
安装和配置cuDNN
把cudnn解压之后,把对应的文件拷贝到 cuda 的对应的 include 和 lib64目录下,然后进入到build目录,在该目录下
cmake ..
make -j8
make runtest -j8
注意:-j8 是指使用几个线程来同时编译, 可以加快速度, j后面的数字可以根据CPU core的个数来决定, 我的CPU使8核, 所以-j8.
这样直接进入测试阶段即可。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
caffe在服务器上的copy使用
caffe的安装比较复杂,因此如果服务器上有其他用户装好配置好了caffe,我们可以拷贝过来使用,方法如下:
1. 新建自己的用户
sudo adduser newaccount
2. 将别的用户的caffe根目录的包拷到自己的用户
cp -r ./caffe-master /home/newaccount
3 . 重新编译
make clean
make all -j16
make test -j16
make runtest -j16
六、使用MNIST数据集进行测试
Caffe默认情况会安装在 CAFFEROOT,就是解压到那个目录,例如: home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
mnist数据训练样本为60000张,测试样本为10000张,每个样本为28*28大小的黑白图片,手写数字为0-9,因此分为10类。
1. 数据预处理
sh data/mnist/get_mnist.sh
运行成功后,在 data/mnist/目录下有四个文件:
train-images-idx3-ubyte: 训练集样本 (9912422 bytes)
train-labels-idx1-ubyte: 训练集对应标注 (28881 bytes)
t10k-images-idx3-ubyte: 测试集图片 (1648877 bytes)
t10k-labels-idx1-ubyte: 测试集对应标注 (4542 bytes)
**2. 重建lmdb文件。**Caffe支持多种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根据自己需要选择不同输入吧。
sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集,存放的data.mdb和lock.mdb
3. 训练mnist
sh examples/mnist/train_lenet.sh
至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。
第五部分增加新层(以Fast RCNN提出的 ROIPooling layer为例)
已配置和需要修改的文件,参见百度云盘:百度云盘链接: http://pan.baidu.com/s/1hqCWTF2密码: 8qw8
该教程仅为添加方案,切勿直接覆盖原来的文件,将云盘中下载的文件响应的内容覆盖到合适的位置即可。
1. 添加层引用:
编辑文件:$ include/vision_layers.hpp,将class ROIPoolingLayer添加到合适的位置(参考其他层)
2. 创建层文件
创建roi_pooling_layer.cpp和 roi_pooling_layer.cu文件到目录 src/layer创建testroipoolinglayer.cpp到目录 src/test
3. 注册新创建的层
编辑文件:$ src/proto/caffe.proto
a. 在message LayerParamete中注册 ROIPoolingParameter层
b. 在最后,添加ROI层的参数:ROIPoolingParameter
测试二 cifar10实例
根据下载的caffe-master中的examples做一些测试,以cifar10为例。
cifar10数据训练样本50000张,测试样本10000张,每张为32*32的彩色三通道图片,共分为10类。
examples下cifar10里,有readme.md。注意这里的$CAFFE_ROOT就是caffe-master解压后路径。以下均是在该目录下操作:
sh ./data/cifar10/get_cifar10.sh #(下载数据集)
运行成功后,会在 data/cifar10/文件夹下生成一堆bin文件。
sh ./examples/cifar10/create_cifar10.sh #转换数据格式为lmdb
转换成功后,会在 examples/cifar10/文件夹下生成两个文件夹,cifar10_train_lmdb和cifar10_test_lmdb
为了节省时间,我们进行快速训练(train_quick),训练分为两个阶段,第一个阶段(迭代4000次)调用配置文件cifar10_quick_solver.prototxt, 学习率(base_lr)为0.001
第二阶段(迭代1000次)调用配置文件cifar10_quick_solver_lr1.prototxt, 学习率(base_lr)为0.0001
前后两个配置文件就是学习率(base_lr)和最大迭代次数(max_iter)不一样,其它都是一样。如果你对配置文件比较熟悉以后,实际上是可以将两个配置文件合二为一的,设置lr_policy为multistep就可以了。
base_lr: 0.001
momentum: 0.9
weight_decay: 0.004
lr_policy: "multistep"
gamma: 0.1
stepvalue: 4000
stepvalue: 5000
运行例子
sh ./examples/cifar10/train_quick.sh #(测试用例)
测试结果如下:
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
因版本问题,需要卸载CUDA7.0,安装CUDA6.5
一,卸载CUDA 7.0
在目录:
/usr/local/cuda-7.0/bin
有CUDA自带的卸载工具uninstall_cuda_toolkit_7.0.pl,使用命令:
sudo ./uninstall_cuda_toolkit_7.0.pl
以上卸载命令是针对于.run方式安装CUDA的
若是其他的安装方式,比如.deb 可执行以下命令来卸载
sudo apt-get --purge remove nvidia*
这样就会删除已经配置好的驱动和CUDA。
二,安装NVIDIA驱动
我本机上的NVIDIA驱动是安装CUDA 7.0的时候安装包自带的,版本是346,CUDA 6.5.14目前最高仅支持340版驱动, 343, 346版驱动暂不支持,所以在安装CUDA之前需要先把原来的驱动卸载。
1,卸载原来的NVIDIA驱动
在安装新的NVIDIA驱动之前,必须首先把原来的驱动卸载干净,否则在运行samples下的deviceQuery程序的时候会报如下错误:
cudaGetDeviceCount returned 38 -> no CUDA-capable device is detected
这个错误说明系统中有多个显卡驱动,CUDA程序不知道如何选择——当然也有可能是你的电脑上没有NVIDIA显卡。
这里多说一句:上述命令如果返回的错误代码是30,说明你权限不够,试试加上sudo吧。
2.安装前需要注意的问题:
a. 检查自己的GPU是否支持CUDA,linux可用以下命令来查看GPU型号:
lspci | grep –i nvidia
只要GPU型号可以在https://developer.nvidia.com/cuda-gpus找到,就是支持CUDA的
b. 检查自己的操作系统是不是CUDA支持的,可以输入以下命令:
uname -m && cat /etc/*release
CUDA支持的操作系统在以下网址可以找到http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/#overview
c. 检查操作系统是否安装了gcc,可用以下命令
gcc --version
很多操作系统都预装有gcc,如果你的没有就先安装一下。
或者可以执行下面命令来查询系统的信息。
cat /proc/version
d. 去https://developer.nvidia.com/cuda-downloads下载最新版的CUDA,目前是7.5的。这里注意选择与自己机器和操作系统相匹配的(比如我的是64位的Ubuntu15.04)。友情提醒:文件有点大,大概1G,网速不好的同学请耐心等待。
e. 验证下载的CUDA是否有效:
md5sum 安装包名字
例如:
md5sum cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb
执行完上述命令后会出现一串md5值,例如我的是: 0a02f6efe0ba2b8dea3e7654ee0951d7,看看https://developer.nvidia.com/cuda-downloads/checksums列表中是否能找到你的md5值,如果不能找到,那就说明之前下的安装包有问题,要重新下载。
f. 处理版本冲突问题,第一次安装可以跳过这点。如果之前有装过NVIDIA驱动和CUDA的话,要卸载干净,具体卸载方法参见
sudo apt-get --purge remove nvidia*
关闭图形环境
卸载NVIDIA驱动的步骤如下按 ctrl+alt+F1 进入tty, 登录tty后输入如下命令:
sudo service lightdm stop
该命令会关闭lightdm。如果你使用 gdm或者其他的desktop manager, 请在安装NVIDIA驱动前关闭他。
sudo /etc/init.d/kdm stop #适用于Kubuntu
sudo /etc/init.d/gdm stop #适用于Ubuntu
使用如下命令卸载NVIDIA驱动:
sudo apt-get remove nvidia*
这条命令会卸载与NVIDIA相关的一切,注意如果此时重新启动电脑可能会导致无法进入系统。
也有另一种卸载方式:
sudo apt-get --purge remove nvidia-*
sudo apt-get install ubuntu-desktop
sudo rm /etc/X11/xorg.conf
echo 'nouveau' | sudo tee -a /etc/modules
效果差不多。卸载完后可以安装新的驱动
3,安装新的NVIDIA驱动(仅仅供参考,不需要执行本部分)
单独安装NVIDIA驱动的方式是十分愚蠢的,因为CUDA安装包会自带NVIDIA驱动,而且不会产生版本不兼容的问题——这是肯定的。所以这一步可以跳过直接去安装CUDA程序就行了。这里还是写下安装方法以备参考。(以下步骤都是在tty界面下进行的)
安装build-essentials
安装开发所需要的一些基本包
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安装NVIDIA驱动 (3.4.0)
输入下列命令添加驱动源(不要问我这是什么意思,我也不清楚)
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
安装340版驱动 (CUDA 6.5.14目前最高仅支持340版驱动, 343, 346版驱动暂不支持)
sudo apt-get install nvidia-340
根据网速的不同,时间可能需要很久(真的很久,有可能会从晚上下载到天亮,所以说这种方法太蠢,当然网速快例外)
安装完NVIDIA驱动后, 继续安装下列包 (否则在运行sample时会报错)
sudo apt-get install nvidia-340-uvm
这个也可能需要很久很久·····
接下来把NVIDIA模块加到Linux内核里面
sudo modprobe nvidia-uvm
启动图形环境
sudo /etc/init.d/kdm restart #适用于Kubuntu
sudo /etc/init.d/gdm restart #适用于Ubuntu
sudo start lightdm #适用于Ubuntu
安装完成后 reboot.
禁用nouveau驱动
按Ctrl+Alt+F1进入命令提示符,新建一个黑名单文件
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
输入
blacklist nouveau options nouveau modset=0
执行
sudo update-initramfs -u
执行 lspci | grep nouveau查看是否有内容
lspci | grep nouveau
如果没有内容 ,说明禁用成功,如果有内容,就重启一下再查看。
禁用nouveau驱动作用就是禁止使用ubuntu自带的显卡驱动,而改用nivida驱动,即安装gpu驱动。在安装cuda的过程中,会自动安装nvidia显卡驱动。终端执行了sudo service lightdm stop后就弹出一个黑屏,这是正常现象,因为停止了lightdm。
三. 安装CUDA 6.5
1,首先,安装CUDA
下载CUDA 6.5. 地址:https://developer.nvidia.com/cuda-toolkit-65
注意选择对应的操作系统,然后安装包有DEB/RUN两种格式的,本文采用的安装方法使用RUN格式,单击既可以直接下载;我使用的的是Ubuntu14.04版本、格式是RUN
下载后,先提高权限到可执行(方便后面的安装):
sudo chmod +x cuda_6.5.14_linux_64.run
接下来可以直接使用下面的命令直接安装:
sudo ./cuda_6.5.14_linux_64.run
会将NVIDIA驱动、CUDA 6.5软件、CUDA samples全部安装,安装过程中提示安装路径什么的直接默认就好(默认路径才是王道啊)
加环境变量
安装完成后需要在/etc/profile中添加环境变量, 在文件最后添加:
PATH=/usr/local/cuda-6.5/bin:$PATH
export PATH
保存后, 执行下列命令, 使环境变量立即生效
source /etc/profile
添加lib库路径
在 /etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下
/usr/local/cuda-6.5/lib64
执行下列命令使之立刻生效
sudo ldconfig
编辑文件 /etc/profile,添加下面这行:
export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
下面验证安装结果
a. 验证驱动的版本,和上述gcc类似,就是验证驱动和有没有问题
cat /proc/driver/nvidia/version
b. 编译例子
先看一下编译器版本,执行
nvcc –V
不出意外,这里会提示nvcc没有安装,其实就是之前装的NVIDIA-CUDA-Toolkit的编译器没有安装完整,根据提示安装就好:
sudo apt-get install nvidia-cuda-toolkit
这个安装也需要很长时间,请耐心等待。安装完后就可以编译例子了,例子默认安装在/home/username/NVIDIA_CUDA-6.5_Samples,进入这个目录,执行
make
该过程也比较漫长,请耐心等待。
c. Running the binaries.
全部编译玩后,进入/home/username/NVIDIA_CUDA-6.5_Samples/bin/x86_64/linux/release,执行
sudo ./deviceQuery
好了,至此就完成了CUDA 7.0的卸载与CUDA 6.0的安装
参考文献
caffe + Ubuntu15.04 + CUDA7.5
第一次安装可直接参考如下网页
http://ouxinyu.github.io/Blogs/20151108001.html
caffe + Ubuntu15.04 + CUDA7.0
http://blog.csdn.net/helei001/article/details/46950853
http://ouxinyu.github.io/Blogs/20140723001.html
值得仔细阅读的安装流程(可参考)
http://blog.csdn.net/u012208159/article/details/47018095
Caffe & Theano安装教程——ubuntu16.04系统
caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN
Caffe安装手记【Ubuntu15.04、CUDA7、OpenBlas、OpenCV、cuDNN】
caffe 上OpenBLAS的安装使用
卸载旧版本安装新版本可参考如下网页
http://blog.csdn.net/FIELDOFFIER/article/details/50354607
http://wiki.ubuntu.org.cn/NVIDIA
Ubuntu 14.04 CUDA6.5
http://www.datakit.cn/blog/2015/01/05/Ubuntu14.04_cuda6.5_caffe.html
http://www.th7.cn/system/lin/201601/149175.shtml
http://blog.sciencenet.cn/blog-1583812-841855.html
http://www.cnblogs.com/shouhuxianjian/articles/4565503.html
http://blog.cvmarcher.com/posts/2015/05/14/ubuntu-14-04-problem/
http://blog.sina.com.cn/s/blog_9db078090102vdvx.html
http://blog.csdn.net/wangchuansnnu/article/details/44180979
http://www.jianshu.com/p/b88bbfa0f435