1.Ubuntu16.04配置Caffe全过程

作者: Meng_Blog | 来源:发表于2017-05-08 14:23 被阅读777次

    写在前面

    最近拿到了一台新机器,安装了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下载

    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

      查看建议的驱动版本
      采用有“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文件


    • 根据官网提示的命令运行:
    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/中找到安装好的文件夹:


    • 配置环境变量
      命令: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目录中。
    • ./deviceQuery执行结果


    • Cuda安装测试完毕

    2.4 安装Cudnn6

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

    • 官方网站注册账号之后即可下载。
    • 采用下面的命令:
    #解压文件
    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结尾的邮箱申请。
    • 很快邮箱中会收到一封包含下载链接和序列号的邮件,直接点击链接进入下载页面即可下载。如下图:


    • 下载完成后,使用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了


    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测试的例子网上有很多,例如这篇,可参考此步骤。
    • 测试结果:


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

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

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

    相关文章

      网友评论

        本文标题:1.Ubuntu16.04配置Caffe全过程

        本文链接:https://www.haomeiwen.com/subject/jazmzttx.html