1.Ubuntu16.04配置Caffe全过程

写在前面

最近拿到了一台新机器,安装了Ubuntu16.04。原来在笔记本的Ubuntu16.04下配置成功过caffe(cpu only)机器matlab与python接口。
特将在新机器上配置caffe完整过程记录如下。

0.机器配置

  • 处理器:Intel® Xeon(R) CPU E3-1231 v3 @ 3.40GHz × 8
  • 内存:Kingston 32G
  • 显卡:NVIDIA GeForce GTX 1070
    显卡型号可以用这个命令查询:
    lspci |grep VGA
    机器配置查询参考
  • 操作系统:Ubuntu17.04

1.Caffe下载

  • 根据Caffe官网上给出的链接,在Github上下载Caffe的Zip压缩包
    1.Ubuntu16.04配置Caffe全过程_第1张图片
  • 提取到Home目录下,文件夹名为caffe-master

2.编译前的准备

本部分根据Caffe官网Ubuntu下安装教程以及部分网络教程进行

2.1 General dependencies

执行此部分前最好先升级apt-get:
sudo apt-get update
然后分别执行下面两句:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
(可能执行完这句后会再次提醒需要升级apt-get,再运行一遍升级命令就好了)
sudo apt-get install --no-install-recommends libboost-all-dev

此部分安装完成

2.2 安装NVIDIA显卡驱动

这部分耗费了一个下午的时间总算安装好了。

安装这部分的时候,先参考了《Ubuntu-安装-cuda7.0-单显卡-超详细教程》这篇文章(注意,不使用该文章中的方法安装Cuda,否则报错),按照二进制安装包安装的方式安装显卡驱动,一直报错,说kernel modules配置错误,错误报告很长,最后的部分如下:

错误报告:
scripts/Makefile.build:294: recipe for target '/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel/nvidia-drm/nvidia-drm-fence.o' failed
make[2]: *** [/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel/nvidia-drm/nvidia-drm-fence.o] Error 1
make[2]: Target '__build' not remade because of errors.
Makefile:1524: recipe for target '_module_/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel' failed
make[1]: *** [_module_/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel] Error 2
make[1]: Target 'modules' not remade because of errors.
make[1]: Leaving directory '/usr/src/linux-headers-4.10.0-19-generic'
Makefile:81: recipe for target 'modules' failed
make: *** [modules] Error 2
ERROR: The nvidia kernel module was not created.
ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

后来根据这篇文章,采用apt-get方式安装,成功,但步骤有所不同。

我的具体安装步骤如下:
2.2.1 禁用旧的显卡驱动
Ubuntu中自带了适用于NVIDIA显卡的nouveau驱动,但是与NVIDIA官方驱动相比还是有很大差距的,而且没有官方驱动的话,也不能使用Cuda和cudnn。nouveau驱动与官方驱动冲突,因此,需要在安装官方驱动之前禁用nouveau驱动。

之前尝试过网上建议较多的添加blacklist的方法,发现都不能完全将nouveau驱动禁用。查看nouveau驱动是否完全被禁用命令如下:
lsmod | grep nouveau

于是采用另外一种方法,成功去除nouveau驱动。

执行 lsmod | grep nouveau 命令的结果

2.2.2 apt-get方式安装驱动

  • 在命令行输入:
    ubuntu-drivers devices

    1.Ubuntu16.04配置Caffe全过程_第2张图片
    查看建议的驱动版本

    采用有“recommended”那一行的驱动版本。

  • 按“Ctrl+Alt+F1”,切换到tty1。注意,这里输入密码时不能用小键盘,用键盘上方的横排数字输入密码(密码中有数字的情况下)。

  • 输入命令“sudo su”,切换到root模式

  • 关闭显示器管理器,命令:service lightdm stop

  • 安装显卡驱动,命令:apt-get install nvidia-375

  • 安装完成,打开显示器管理器,命令:service lightdm start

  • 登录图形化界面,打开Terminal,输入cat /proc/driver/nvidia/version,查看显卡信息,如安装成功,如下所示:

  • NVIDIA显卡驱动安装完毕

2.3 安装Cuda

安装Cuda时可以退出tyy1了,回到图形界面。安装过程中曾经尝试用run方法,但是不知什么原因一直失败。因此直接采用deb方式安装Cuda。步骤如下:

  • 安装依赖库
    apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libgl1-mesa-dev libglu1-mesa libglu1-mesa-dev libxi-dev
  • 选择配置,直接从网站中下载deb文件


    1.Ubuntu16.04配置Caffe全过程_第3张图片
  • 根据官网提示的命令运行:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

可以在/usr/local/中找到安装好的文件夹:


1.Ubuntu16.04配置Caffe全过程_第4张图片
  • 配置环境变量
    命令:sudo gedit /etc/profile
    在文件最后加上
PATH=/usr/local/cuda/bin:$PATH 
export PATH 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LD_LIBRARY_PATH 

命令:source /etc/profile
最好能够退出(Logout)当前账户再登录,以确保环境配置成功

  • 检验
    命令:nvcc --version,出现下图结果:
  • 安装cuda samples
    直接参考这篇博客Cuda Samples安装部分。
    注意,采用deb方式安装的Cuda,Sample文件夹不在home下,而直接保存在cuda目录中。
    1.Ubuntu16.04配置Caffe全过程_第5张图片
  • ./deviceQuery执行结果


    1.Ubuntu16.04配置Caffe全过程_第6张图片
  • Cuda安装测试完毕

2.4 安装Cudnn6

注意:CUDA9.1需要与Cudnn7配合使用

  • 在官方网站注册账号之后即可下载。
    1.Ubuntu16.04配置Caffe全过程_第7张图片
  • 采用下面的命令:
#解压文件
tar -zxvf cudnn-6.5-linux-x64-v2.tgz
#切换路径,复制文件
cd cuda
sudo cp lib/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
#更新软连接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6
sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6
sudo ln -s libcudnn.so.6 libcudnn.so 
  • 在官网上没有找到cudnn Sample,先不测试。
  • cudnn安装完成

2.5 安装MKL

  • 首先在官网申请免费下载。需要用edu结尾的邮箱申请。
  • 很快邮箱中会收到一封包含下载链接和序列号的邮件,直接点击链接进入下载页面即可下载。如下图:


    1.Ubuntu16.04配置Caffe全过程_第8张图片
  • 下载完成后,使用sudo tar -xvf命令解压文件夹,阅读安装指导pdf。
  • 根据安装手册,首先到官网进行序列号注册。
  • 注册完成后,采用GUI方式安装mkl。运行install_GUI.sh文件。这里根据安装指导和需要一步步安装就好了。
  • 安装完成后,使用source命令添加环境变量,命令source /[path to your intel]/intel/mkl/bin/mklvars.sh intel64。为了方便,我直接把该命令添加到~/.bashrc文件中了,每次启动命令行可以添加好环境变量。
  • mkl安装完成

2.6 安装Matlab

(我之前在byr上下载了MatlabR2017A安装包,没想到现在byr不能登录了。。。)
(好像2017版本的matlab不能接入caffe,我在make matcaffe的时候总有问题,所以暂时只是安装好了MATLAB,没有做与caffe的借口)
安装包包括三个文件,分别是R2017a_glnxa64_dvd1.iso,R2017a_glnxa64_dvd2.iso,和Crack文件夹。网络上其他版本基本上也是如此,比较常见的是一个ISO文件和一个Crack文件夹,安装过程类似。

  • 首先要阅读Crack文件夹中的Readme文件,里面有序列号以及安装指导。
  • 安装过程主要参考这篇博客
  • 主要使用以下几个命令:
sudo mkdir /media/matlab       #新建文件夹
sudo mount -o loop [path]/[ISO文件] /media/matlab      #两个ISO的话,先加载dvd1即可,dvd2以后用
sudo /media/matlab/install      #运行安装文件
sudo umount /media/matlab   #安装完成后取消挂载
  • 安装完成后,用命令:sudo chmod -R a+w /××××/×××/matlab 把matlab所在的文件夹改成读写状态,进行破解
  • 将Crack文件夹中的licence文件复制到安装目录下的licence文件夹内

Use license_standalone.lic to activate, or copy license_standalone.lic to %installdir%\licenses\ ,and run matlab without activation

  • 将Crack文件夹中 /R2017a/bin/glnxa64/libmwservices.so 复制到安装目录下的对应文件夹中

after the installation finishes copy the folders to %installdir% to overwriting the originally installed files

  • 到这里就安装+破解完成。在Terminal中执行 ./%installdir%/bin/matlab 就可以运行Matlab了


    1.Ubuntu16.04配置Caffe全过程_第9张图片

2.6 安装Opencv

  • github上已经有人写好了脚本,可以直接根据需求下载安装。
  • 需要说明的是,如果直接安装最新版本,会安装到opencv3,如果想安装opencv2的话,可以进入相应的目录,运行对应的脚本进行安装。可以参考这个博客。
  • 我直接运行的脚本进行的安装,安装完成后用pkg-config --modversion opencv命令查看opencv版本,如下图:
  • opencv安装完成

3.编译caffe

第二部分介绍了caffe编译前的各种准备工作,全部安装完成后,就可以进行caffe的编译了。

  • 首先进入caffe-master文件夹,直接采用caffe官网上提供的cmake方式进行编译。

In lieu of manually editing Makefile.config to configure the build, Caffe offers an unofficial CMake build thanks to @Nerei, @akosiorek, and other members of the community. It requires CMake version >= 2.8.7. The basic steps are as follows:
mkdir build
cd build
cmake .. -DBLAS=MKL 这里由于我用了mkl,所以加上了‘-DBLAS=MKL’这一限制
make all -j '-j'是为了采用多核进行编译,速度较快。还可以在j后面加上数字限制核的数量。如‘-j8’
make install -j
make runtest -j
make pycaffe 配置caffe的python接口

在编译caffe的时候我开始用了make方式,一直报错。采用cmake之后很顺利,没有遇到问题。至此caffe编译完成,可以运行了。

4.mnist例子测试

  • mnist测试的例子网上有很多,例如这篇,可参考此步骤。
  • 测试结果:


    1.Ubuntu16.04配置Caffe全过程_第10张图片
    训练开始

    训练结束
  • caffe运行成功,16秒完成10000次循环,正确率可达99.05%

5.以上就是配置caffe全过程,如有疏漏,以后补充。

注:开始配置的时候是在Ubuntu17.04上,后来更换了16.04的系统。安装步骤一样。只是文中配图还有一些是原来安装的截图,但不影响结果。在16.04系统上完全可用。

你可能感兴趣的:(1.Ubuntu16.04配置Caffe全过程)