Caffe + Ubuntu 15.04/16.04 + CUDA 7.5/8.0 在服务器上安装配置及卸载重新安装(已测试可执行)
本文作为参考
位于服务器上的每个子用户都进行了caffe使用的复制。
Linux学习之旅 | 初级阶段第四讲:硬盘分区管理+安装并配置Ubuntu系统
Ubuntu 16.04与1080 Ti显卡的深度学习环境配置指南
第一部分 Linux安装
Linux的安装过程较为复杂,通常需要首先准备一个已经安装好的U盘或光盘.具体步骤可参考以下两个资源:制作安装U盘 和 Win7 安装Ubuntu双系统.
通过Universal USB Installer工具实现U盘启动安装过程;采用软碟通 UltraISO v9.5.3.2901 简体中文完美注册版进行软件制作;完成光驱启动安装功能
官方网站 ----详细的指导说明:如何制作光盘U盘安装盘的中文版本的教程
学习在Windows系统上生成一个USB安装盘的方法:
访问官方文档获取详细指导:
中文,英文
将500G的空间划分为一个Ubuntu 15.04环境,并说明该版本为最新版本;指出其优势是可以直接访问其Windows 8.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 Generation Extended Filesystem(第二代生成扩展文件系统)、Third Generation Extended Filesystem(第三代生成扩展文件系统)和Fourth Generation Extended Filesystem(第四代生成扩展文件系统)的缩写。
Linux下磁盘分区的名称
dev是英语device的头三个字母,表示"设备"文件。
第一个字母:h或s。h表示IDE接口的硬盘。s表示SATA或SCSI接口的硬盘。
第二个字母:总是d。英语drive的首字母,表示"磁盘驱动器"。
第三个字母:a,b,c,d,等等。表示顺序。
通常表示通过IDE接口连接的硬盘设备。它通常指的是位于首位的第一块磁盘驱动器。类似的标准还有如HDB和HDC等
sda通常是指SATA接口或其他类型的SCSI接口连接的硬盘设备。例如,在计算机中常见地使用SATA或SCSI等外部存储接口来连接外部存储设备。其中一种常见的配置是将sda作为第一块磁盘(硬盘),类似的还有其他类型的硬盘接口。
主分区和逻辑分区
主分区:英语是Primary Partition。也被称为为主磁盘分区,并与扩展 partitions 和逻辑 partitions 类似。因此每个主 partition 实质上相当于一个 logical disk(就这一点而言它与 logical partition 相似但primary partition 是直接划分为硬盘的一部分而 logical partition 必须建立在 extended partitions 之上)。早期采用 MBR 模式的 partition 只能分割出四个 partition 而 GPT partition 至少能够分割出 128 个 primary partitions 未来很有可能将不再存在 extended partitions 和 logical partitions 的概念)。一个硬盘的 primary partition 包含操作系统启动所需的文件和数据并负责将操作系统加载到硬盘上为此必须有一个 primary partition 存在于硬盘上才能安装操作系统
以下是对原文的改写
分区设置如下 :
第一次分区—根分区:
根分区也被认为是 / 分区,在Linux系统中,默认的最顶层目录就是 / 。实际上就是一个 root 目录。
挂载点为:“/** ”
容量设置为100G
新分区的类型为主分区
位于空间起始位置
用于EXT4日志文件系统
完成首次分区分配
第二次分区:
在空闲处(即未挂载的状态),依次点击“+”按钮进行进一步配置操作。
挂载点:保持为空状态。
Swap交换分区:分配128GB存储空间。根据经验,在16GB以下内存的情况下,建议将Swap分区大小设为内存大小的1.5至2倍以确保良好的运行性能。
新分区的类型:选择逻辑分区类型。
新分区的位置:配置好空间起始位置参数(即启动参数)。
用途:该配置主要用于创建交换区域以支持操作系统启动过程。
完成第二次分区创建操作后系统会自动切换至该区域进行初始化工作
SWAP分区也被称为交换分区,在Linux系统中被定义为一种虚拟内存分区。
它在当物理内存用满时的作用是将磁盘空间(即所谓的SWAP分区)当作临时内存进行使用。
第三次分区引导分区:
引导分区即为引导操作系统的启动所需程序所在的分区。在Linux系统中通常会将这些软件安装在"/boot"分区内,并在那里存储着启动操作系统的必要文件。
在待操作的地方点击新增。
- 设置挂载点为 /boot 以启动 Ubuntu 启动引导区。
- 大小设为 200 MB(笔者暂定)。
- 新分区类型设为逻辑分区。
- 新分区位于空间起始位置。
- 完成第三个分区
第四次分区:
在未被占用的地方(空闲处),单击并继续设置。挂载点设置为 /home ,该处用于存储我们的文件。关于分区大小,请注意以下几点:建议至少分配500GB存储空间以满足需求。新增的分区类型是逻辑分区。该区域能够在系统中找到的位置是空间起始位置。该区域将用于创建一个基于EXT4的日志文件系统。第四次分区配置已完成
分区设置完成之后,在下方还有一个选项需要进行设置:**"安装启动引导器的设备"**这一项需要注意的地方是:请确保将"安装启动引导器设备"选择为之前分配给-boot的那个分区名。
UEFI 引导启动需要设置 ESP(EFI系统分区),切记!!!
☆☆☆☆☆☆☆☆☆☆安装前需要注意的问题:☆☆☆☆☆☆☆☆☆☆☆☆☆☆
a. 检查自己的GPU是否支持CUDA,linux可用以下命令来查看GPU型号:
lspci |grep –i nvidia
只要GPU型号位于https://developer.nvidia.com/cuda-gpus这一页面上就能使用
b. 检查自己的操作系统是不是CUDA支持的,可以输入以下命令:
uname -m && cat /etc/*release
x86_64 platform
Distribution ID established as Ubuntu
Release version 16.04
Codename designated as xenial
Full description: "Ubuntu 16.04.2 LTS"
Software name: Ubuntu
Software version: "16.04.2 LTS (Xenial Xerus)"
Canonical name: ubuntu
Canonical ID matches debian
Pretty name: "Ubuntu 16.04.2 LTS"
Software version ID: 16.04
Access URL: http://www.ubuntu.com/
Support contact URL: http://help.ubuntu.com/
Bug reporting URL: http://bugs.launchpad.net/ubuntu/
Software version codename: xenial
Canonical codename assigned to xenial for Ubuntu
uname -r
4.8.0-52-generic
03:00.0 3D controller: NVIDIA Corporation GK110BGL [Tesla K40c] (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation GK110GL [Quadro K5200] (rev a1)
04:00.1 Audio device: NVIDIA Corporation GK110 HDMI Audio (rev a1)
被支持的系统家族可以在指定网站获取其详细信息,请访问以下链接地址:http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/#overview

c. 检查操作系统是否安装了gcc,可用以下命令
gcc --version
大多数操作系统的默认配置均包含GCC编译器。如果您发现您的系统未预先安装GCC,请建议进行如下安装步骤以完成配置。此外,在某些情况下GCC可能已经内置于系统中,请尝试运行gcc --version命令时可能会看不到版本信息。
cat /proc/version
d. 可从https://developer.nvidia.com/cuda-downloads获取最新版CUDA软件包(目前发布版本为7.5)。建议根据您的计算机型号及操作系统(例如64位Ubuntu 15.04)来选择合适的版本进行安装。(注:该软件包较大,预计约1GB,请网络速度较慢的同学耐心等待安装过程。)
e. 验证下载的CUDA是否有效:
md5sum 安装包名字
例如:
md5sum cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb
执行上述命令后会生成一组独特的哈希值,请问该链接是否包含与您使用的安装包相同的MD5值?如果在该链接中无法找到与您的安装包匹配的MD5值,则可能需要重新下载。
第二部分:NVidia CUDA Toolkit的安装(*.deb方法)
特别备注:该版本包含了运行CUDA所需的全部驱动程序,并未出现兼容性问题因此无需额外安装NVIDIA的显卡驱动程序。
PS:强烈推荐使用*.deb格式的方法。现已推出离线版本的.deb文件,并且该方法相对简单无需切换至tty界面的操作即可完成安装过程。因此不再支持之前使用的*.run安装方式。例如基于CUDA 7.5的环境进行介绍。
对于出现循环登录界面的问题,所以需要禁用 nouveau驱动
具体说明 ubuntu 16.04系统中NVIDIA GTX 965M显卡驱动PPA安装指南
#禁用nouveau驱动
在Ubuntu系统中集成的显卡驱动程序为nouveau,在安装NVIDIA官方驱动之前必须先将该程序从Linux内核中移除以避免冲突。为了实现这一目标,请将nouveau添加至黑名单blacklist.conf文件中(有关blacklist配置详情,请参考《禁用Linux内核驱动》一文)。在启动过程中,就不会再加载该显卡驱动程序。由于安装了nouveau而导致的问题,在Ubuntu系统启动桌面界面后需要切换至命令模式(通过按Ctrl+Alt+F1进入tTY文本界面)进行进一步操作以解决前述问题。
由于blacklist.conf文件的属性受限制。因此必须先调整文件属性以避免后续问题。请检查设置以确认所有选项是否已正确配置。
ll /etc/modprobe.d/blacklist.conf
修改属性
sudo chmod 666 /etc/modprobe.d/blacklist.conf
用vi编辑器打开
sudo vi /etc/modprobe.d/blacklist.conf
在文件末尾添加如下几行:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
修改并保存文件后,记得把文件属性复原:
sudo chmod 644 /etc/modprobe.d/blacklist.conf
再更新一下内核
sudo update-initramfs -u
关于 update-initramfs 命令的作用及其实现步骤,请参阅《initramfs 简介, 一个新的 initial RAM disks 模型》一文
lsmod | grep nouveau
lsmod命令被用来显示内核中已加载的模块的状态信息,并参考《lsmod命令》了解更多细节。
一、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
#检查CUDA安装 重新启动系统以使NVIDIA GPU加载最新的驱动程序,并在成功完成后执行相应的操作。
cat /proc/driver/nvidia/version
如果有如下显示,说明GPU驱动加载成功
NVRM release: NVIDIA UNIX x86_64 Kernel Module edition number 375.39 released on Tuesday, January 31, 2017 at 8:47 PM PST.
GCC variant: gcc software version number 5.4.1 (based on Ubuntu release codename 'Xenial Xerus') built for Ubuntu release codename 'Xenial Xerus' on Tuesday, January 31, 2017.
Information about the cuda compiler driver
nvcc -V
nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61
查看NVIDIA驱动版本
sudo dpkg --list | grep nvidia-*
nvidia-smi #查看GPU使用情况
nvidia-settings #设置GPU参数,比如风扇运转速度
sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID
sudo lsof -n -w /dev/nvidia* #查找占用GPU资源的PID
sudo kill -9 ***(PID) # 解除显存占用
#验证cuda
cd /usr/local/cuda/samples
sudo make ‐j8
cd bin/x86_64/linux/release/
sudo ./deviceQuery
sudo ./bandwidthTest
#最后一行 result=pass表示通过~
cat /usr/local/cuda/version.txt
# 检测cuda的版本
第三部分 Matlab安装和调试(以Matlab 2014a为例)
1.下载
鉴于该软件具有商业性质,请指导用户自行获取,并要求安装后进行学习,并明确禁止将其用于商业用途。同时规定下载后需在24小时内删除以避免潜在的版权问题。
2. 预准备
安装Mathworks.Matlab.R2014a.Unix程序 - 右键点击 - 通过磁盘映像工具打开了;随后进入虚拟光盘目录;复制所有文件到指定Matlab工具箱目录;最后将Crack安装包复制到Matlab的工作Java目录,并覆盖现有来源
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
将软件库文件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调用mex文件时通常会引发错误信息。基于此问题提示,请按照以下两步方案进行处理:A步骤:降级安装 gcc/g++ 至所需版本(建议选择与Matlab兼容的较低版本)。(a)步骤:下载并安装 gcc/g++ 软件包至所需版本。
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
以下是改写后的文本
这是安装步骤:先进行认证授权(例如,在没有其他配置的情况下),然后运行以下命令进行安装:
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: 在安装时建议最好使用管理员权限进行安装,在操作过程中您需要输入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技术的实现使得我们能够高效地进行矩阵运算。其官网: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
2. 切换到文件保存的文件夹,然后安装依赖项:
cd Install-OpenCV-master
sudo sh Ubuntu/dependencies.sh
3. 切换目录Ubuntu/3.0:
cd Ubuntu/3.0
sudo sh opencv3_0_0.sh
保证网络畅通,因为软件需要联网这里时间较长,请耐心等待。
#终端安装
sudo apt-get install libopencv-dev python-opencv
源码编译安装
sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
#clone压缩包的文件夹,把源码拿下来
git clone opencv/opencv
然后进入OpenCV文件夹:
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
准备完毕,直接make并安装:
make
sudo make install
四、安装其他依赖项
**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命令赋予其附加权限。另一种方法是直接将所有文件夹设置为可执行状态。安装完成后该文件夹即可被删除。
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 命令安装 ... 格式的文件依赖项文件。
使用 pip 命令时,请确保将文件路径正确指定。
在 ... 文件中填写所有需要安装的模块名称。
完成后即可通过运行 pip 命令完成依赖项安装。
编辑 ... 文件并添加所需的模块。
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模型运算
在安装前,请访问官方网址https://developer.nvidia.com/cudnn并下载最新版本的cuDNN(编号为cudnn-7.0-linux-x64-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版本进行安装。需要注意的是,在之后需要安装Theano时,请确保已安装的是v4版本;否则可能会遇到如下问题。详细说明请参见...
Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN Version is too old. Update to v5, was 4004.)
最终决定采用V5版本。
最终决定采用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
#验证cudnn
cat /usr/local /include/cudnn.h | grep CUDNN_MAJOR -A 2
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会被安装在$CAFFE_ROOT目录中,默认情况下会被解包到该位置;因此,在下面的工作中,默认已经切换到了该工作目录。因此,在下面的工作中,主要是涉及用于测试Caffe是否能够正常运行的过程;不做深入的评估分析。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html>
MNIST 数据集包含 6 万张训练样本与 1 万张测试样本。每个样本均为大小为 28×28 的黑白图像,并涵盖从'零'到'九'的手写字体识别问题。因此分为十类不同的数字类别。
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能够接受多种数据格式作为输入。这些格式包括图像文件(如.jpg、.png等), leveldb、lmdb以及HDF5等多种数据格式。
sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb和mnist-test-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,请将类名ROIPoolingLayer放置于适当位置,并参照现有层进行配置
2. 创建层文件
分别创建roi_pooling_layer.cpp和roi_pooling_layer.cu文件,并将其放置在$ src/layer目录下;同时创建test_roi_pooling_layer.cpp并将其放置在$ src/test目录下
3. 注册新创建的层
编辑如下所示:
编辑文件:$ src/proto/caffe.proto
a. 配置用于 RoI Pooling 的消息级参数设置
b. 最后一步骤中,请新增 ROI 层的参数设置为 ROIPoolingParameter
测试二 cifar10实例
根据下载的caffe-master中的examples做一些测试,以cifar10为例。
cifar10数据训练样本50000张,测试样本10000张,每张为32*32的彩色三通道图片,共分为10类。
在cifar10目录下的examples文件夹中包含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 该方法将整个训练过程分为两个实施阶段 第一阶段将运行至迭代4, 以完成配置文件 cifar10_quick_solver prototxt 的调用 并设置学习率为 small numerical value base_lr 即使学习率设置为小数值 并在此基础上进行优化
在第二个训练阶段(经过1,000次迭代)调用配置文件cifar10_quick_solver_lr1.prototxt,并设置base_lr的学习速率为5\times 1e^{-4}
前后两个配置文件分别涉及学习率(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架构之前,请务必先卸载当前本机上运行的原生NVIDIA驱动程序。
1,卸载原来的NVIDIA驱动
在安装新的NVIDIA驱动之前,请确保先卸载原有的驱动程序以避免运行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型号位于该网站上提供的列表中就能具备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. 访问NVIDIA开发者官网https://developer.nvidia.com/cuda-downloads获取最新版本CUDA软件(当前版本为7.5)。特别提醒您根据设备类型及系统要求进行设备兼容性测试(例如我的设备支持64位Ubuntu 15.04系统)。温馨提示:由于文件较大(约1GB),建议速度较慢的同学稍后尝试连接网络再进行下载。
e. 验证下载的CUDA是否有效:
md5sum 安装包名字
例如:
md5sum cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb
完成上述操作后会生成一组md5值作为示例,请参考我的计算结果:0a02f6efe0ba2b8dea3e7654ee0951d7。接下来,请访问NVIDIA开发者文档中的checksum列表(链接)来确定是否存在与您计算出的md5值匹配的结果。如果该md5值在该列表中不存在,则表明您之前下载的安装包可能存在错误,请重新下载正确的版本
f. 解决版本冲突问题,在初次安装时可跳过此步骤。如果之前安装了NVIDIA驱动程序和CUDA库,则需彻底清除它们,请参考官方文档中的卸载指南以获取详细方法。
sudo apt-get --purge remove nvidia*
请按照以下步骤关闭图形环境并卸载NVIDIA驱动程序:首先,请通过按下键盘组合键Ctrl+Alt+F1进入tyty窗口;随后,在tyty窗口中登录系统;最后,请依次执行以下操作:卸载相应版本的NVIDIA显卡驱动程序并重启计算机以完成操作。
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软件包本身就包含了相应的显卡驱动程序,并且能够避免版本冲突问题这一点毋庸置疑。因此无需费时费力地单独升级显卡驱动器就可以轻松完成任务。最后还是记下完整的操作步骤以防遗忘(以下具体的操作步骤均在终端界面进行)。
安装build-essentials
安装开发所需要的一些基本包
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
#寻找合适的驱动版本
ubuntu-drivers devices
安装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驱动
由于系统中除了NVIDIA显卡外还有一块集成显卡能够正常驱动,在禁用了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
如果没有内容 ,说明禁用成功,如果有内容,就重启一下再查看。
禁止使用Ubuntu自带的显卡驱动是一种方法(即一种避免依赖NVIDIA独立显卡驱动的做法),即改用NVIDIA(即nivida)驱动(即进行GPU(图形处理器)驱动的安装过程)。当进行CUDA工具包的安装时(包括必要的GPU加速库),会自动完成NVIDIA显卡驱动的安装步骤(包括检查可用版本并下载相应软件包)。在终端中执行sudo service lightdm stop命令后会出现一个黑屏现象(这是由于终止lightdm服务导致的应用启动界面异常显示为空的现象),这属于正常操作流程的一部分(因为停止了lightdm)。
三. 安装CUDA 6.5
1,首先,安装CUDA
获取CUDA 6.5版本,请访问链接:https://developer.nvidia.com/cuda-toolkit-65
请确保选择与安装包兼容的操作系统。本文采用的是RUN格式的安装包,请单击即可开始下载过程;我的测试环境是基于Ubuntu 14.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
这个安装也需要耗时较长,请稍等片刻。完成安装后即可编译示例代码,在该目录下运行相应的程序。
make
该过程也比较漫长,请耐心等待。
c. Running the binaries.
完成编译后打开该目录并运行其内容
sudo ./deviceQuery
好了,至此就完成了CUDA 7.0的卸载与CUDA 6.0的安装
#参考文献
基于Ubuntu 16.04与NVIDIA 1080 Ti的深度学习环境搭建指南
caffe与Ubuntu15.04及CUDA7.5环境下的初次安装指南参考
Caffeine 与 Ubuntu 15.04 结合使用时...
值得仔细阅读的安装流程(可参考)
<>
Caffe & Theano安装教程——ubuntu16.04系统
具体步骤如下
首先
其次
最后
caffe在Ubuntu系统上进行安装配置需求满足的情况下,请访问地址为:caffe安装完成后需要满足以下软件包版本要求:包括NVIDIA显卡驱动程序安装完成后需安装caffe开发环境的依赖软件包列表包括:Ubuntu系统版本号为15.04;NVIDIA CUDA toolkit版本号为7.5;同时需要安装Intel MKL库;OpenCV库版本号为3.0;以及深度神经网络框架库CUDNN。
Ubuntu15.04、CUDA7、OpenBlas、OpenCV、cuDNN
Ubuntu 15.04系统、CUDA 7框架支持、基于 OpenBLAS 库的支持与优化、集成 OpenCV 库实现图像处理功能以及深度神经网络加速库的配置与调优
在caffe平台中对OpenBLAS进行配置与操作
删除旧版本并更新至新版本可通过以下途径查阅详细步骤
<>
http://wiki.ubuntu.org.cn/NVIDIA
Ubuntu 14.04/CUDA 6.5官方文档及资源汇总
