Caffe installation on ubuntu16.04 sever

来源:互联网 发布:iphonex专用软件 编辑:程序博客网 时间:2024/05/01 20:33

Caffe installation on ubuntu16.04 sever

  • Caffe installation on ubuntu1604 sever
    • 一ubuntu1604 的安装及分区
      • 如何进入boot启动区
      • 如何分区
      • 安装过程中的注意事项
    • 二caffe 安装详解
      • 安装一些开发所需的依赖包官方wiki
      • 安装CUDA80cuDNNv51
      • 安装OpenCV 2413
      • 安装openblas
      • 安装matlab2016b官方正版系统
    • 三caffe编译与测试
      • Makefileconfig的修改
      • caffe的编译及测试
      • pycaffe的编译
      • matcaffe的编译
      • mnist 使用测试
    • 四编译过程中遇到的问题


# 系统配置OS:ubuntu16.04 server版                         # 22/89/90GPUTesla K80                                   # 4/2/4CPUIntel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz   # 32/16/32  cat /proc/cpuinfo 查看线程数MEM125G/31G/125G                               # free -h 查看CUDA8.0+cudnnv5.1+opencv2.4.13+openblas+matlab2016b(没有整合到caffe中)# 22/90分区情况swap:128G/:100G/share:732G/home:960G# 更改软件镜像源编辑源文件:sudo vim /etc/apt/sources.list;在镜像地址中包含国家代码:%s/hk/cn# 更新源和更新已安装的包sudo apt-get update sudo apt-get upgrade 

一、ubuntu16.04 的安装及分区

1. 如何进入boot启动区

  • 重启电脑,按F11进入boot ,选择从USB启动进入系统,one-shot 那一项里选择。

2. 如何分区

  • ubuntu server 系统分区参考
  • ubuntu server 安装详解

3. 安装过程中的注意事项

  • 选择手动设置网卡的IP地址,其中域名(Domain name)已被注销,安装过程中直接下一步就可以了。
  • 分区时选择手动分区(Manual),一般分为swap, /, /share, /home四个分区。内存小于16G时,swap 一般为内存的1.5-2倍,而我们的内存为128G,直接设置成内存大小就可以了;根目录分100G够用了;/share用于存放数据,根据需求分配;剩下的全部分给/home,越多越好。
  • 选择不自动更新系统
  • 最后选择安装软件OpenSSH server,便于我们远程登陆。

二、caffe 安装详解

1.安装一些开发所需的依赖包(官方wiki)

sudo apt-get install git build-essential cmake pkg-configsudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libopenblas-base# Python generalsudo apt-get install -y python-pip# Python 2.7 development filessudo apt-get install -y python-devsudo apt-get install -y python-numpy python-scipy python-opencvsudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
  • 部分依赖包解析
    • Boost:被称为”C++准标准库”,在caffe中主要使用了Boost中的智能指针,其自带引用计数功能,可避免共享指针时造成内存泄漏或多次释放。-
    • BLAS(Basic Linear Algebra Subprograms):主要用于矩阵、向量计算,常用OpenBlas or MKL。
    • OpenCV:著名的计算机视觉库,caffe 使用OpenCV 完成一些图像存取和预处理功能。
    • 谷歌开源的一套东西
      • ProtoBuffer:谷歌开发的一种实现内存与非易失存储介质(如,硬盘文件)交换的协议接口。caffe 源码中大量使用ProtoBuffer作为权值和模型参数的载体。
      • gflags:在caffe 中主要起到命令行参数解析的作用,这与ProtoBuffer 功能类似,只是参数输入源不同。
      • glog:谷歌开发的用于记录程序日志的实用库,便于查看caffe训练过程中产生的中间输出。
    • IO 相关的库
      • LMDB 和 LEVELDB:LMDB(Lightning Memory-Mapped Database Manager)——闪电般的内存映射型数据库管理器。
      • HDF5**(Hierarchical Data File):一种能高效存储和分发科学数据的新型数据格式。caffe的训练模型**可以选择保存为HDF5格式或者ProtoBuffer(default) 格式。
      • Snappy:用来压缩和解压缩的C++库。

2. 安装CUDA8.0+cuDNNv5.1

  • CUDA(Compute Unified Device Architecture):是由NVIDIA在2006年推出的一套针对异构计算资源(说白了就是intel CPU + 自家GPU)下的大规模并行计算的架构,包括编译器(nvcc)、开发工具、运行时库和驱动等模块,是当今最流行的GPU编程环境。
  • cuDNN:NVIDIA从2014年开始推出的面向深度学习的专用加速库,支持常见的深度学习计算类型(卷积、下采样、非线性、Softmax等)。

  • 老版本cuda的卸载(备用)这里写图片描述

  • CUDA8.0的安装参见官方文档CUDA_Quick_Start_Guide中有关Debian Installer的步骤即可

    • verify the system:主要是下面两项

      gcc -v       # 检查有没有安装sudo apt-get install linux-headers-$(uname -r) # install the kenerl headers and development packages
    • 详细安装步骤可参考官方文档NVIDIA CUDA Installation Guide for Linux

    • CUDA8.0 中自带驱动,所以不用先装驱动了。
    • 添加环境变量到/etc/profile中使其永久生效,并设置动态链接库

      export PATH=/usr/local/cuda/bin:$PATH   # cuda path sudo vim /etc/ld.so.conf.d/cuda.conf    # 设置动态链接库/usr/local/cuda/lib64                   # 按下键盘i进行编辑,输入链接库位置sudo ldconfig
    • 安装CUDA SAMPLES 进行测试CDUA是否真的安装成功

      • 检查驱动及CUDA版本

        cat /proc/driver/nvidia/version      nvidia-sminvcc -V  
      • 参考上面的官方文档+测试CUDA blog

  • cuDNNv5.1的安装参见欧老师的blog

tar zxvf cudnn-8.0-linux-x64-v5.1.tgzcd cudasudo cp include/cudnn.h /usr/local/include                                     # 复制头文件sudo cp lib64/libcudnn.* /usr/local/lib                                        # 复制动态链接库sudo ln -sf /usr/local/lib/libcudnn.so.5.1.5 /usr/local/lib/libcudnn.so.5      # 生成软连接sudo ln -sf /usr/local/lib/libcudnn.so.5 /usr/local/lib/libcudnn.so            # 生成软连接sudo ldconfig                                                                  # 使配置立即生效

3. 安装OpenCV 2.4.13

  • OpenCV 2.4.13.1 documentation—–Installstion in Linux
  • 查看opencv 的版本:pkg-config --modversion opencv
  • 使用shell脚本自动安装Install-opencv-2.4.13-in-ubuntu16.04.sh,最后使用python import cv2测试。
# install dependenciessudo apt-get updatesudo apt-get install -y build-essentialsudo apt-get install -y cmakesudo apt-get install -y libgtk2.0-devsudo apt-get install -y pkg-configsudo apt-get install -y python-numpy python-devsudo apt-get install -y libavcodec-dev libavformat-dev libswscale-devsudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devsudo apt-get install -y unzipsudo apt-get -qq install libopencv-dev build-essential cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils# download opencv-2.4.13wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.13/opencv-2.4.13.zipunzip opencv-2.4.13.zipcd opencv-2.4.13mkdir releasecd release# compile and installcmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_FAT_JAVA_LIB=ON -D INSTALL_TO_MANGLED_PATHS=ON -D INSTALL_CREATE_DISTRIB=ON -D INSTALL_TESTS=ON -D ENABLE_FAST_MATH=ON -D WITH_IMAGEIO=ON -D BUILD_SHARED_LIBS=OFF -D WITH_GSTREAMER=ON -D BUILD_TIFF=ON ..make all -j $(($(nproc) + 1))  # use all threadssudo make install# 配置动态链接库sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'sudo ldconfig# ignore libdc1394 error http://stackoverflow.com/questions/12689304/ctypes-error-libdc1394-error-failed-to-initialize-libdc1394# python test # python #>import cv2#>
  • cd release, sudo apt-get install checkinstall, sudo checkinstall # This will create the OpenCV package that has a modern install/uninstall option.
  • 卸载opencv dpkg -r release

4. 安装openblas

  • 参考手动从source安装
    这里写图片描述

  • 安装完成后修改caffe 中的Makefile.config/etc/profile 添加环境变量。

  • 不用设置OpenBLAS所使用的线程数,它应该是自动分配的。

5. 安装matlab2016b(官方正版系统)

  • 查看gcc编译器的版本号:gcc -v
# 建立挂载目录sudo mkdir /media/matlab       sudo mount -o loop /your/path/to/R2016b_glnxa64_dvd1.ios /media/matlab     # 先挂载dvd1,安装完dvd1后会提醒挂载dvd2,重新开个终端,再把dvd2挂载上即可。# 先在自己本地电脑解压dvd1,把其中的installer_input.txt复制一份传到服务器上,然后按照下面进行修改destinationFolder=/usr/local/matlab2016bfileInstallationKey=09806-07443-53955-64350-21751-41297-.....agreeToLicense=yesoutputFile=/tmp/mathworks_username.logmode=silentlicensePath=/your/path/to/license.dat               # Begin: Options for Network License Types# 执行安装sudo /media/matlab/install -inputFile /your/path/to/installer_input.txt   # 配置环境变量,使得直接输入matlab即可启动软件sudo vim /etc/profile# 在文件末尾添加export PATH=/usr/local/matlab2016b/bin:$PATH# 保存并退出后使设置生效source /etc/profile# 在任意位置输入matlab测试,若出现如下界面,而说明安装成功

这里写图片描述

  • Caffe’s MATLAB interface works with versions 2015a, 2014a/b, 2013a/b, and 2012b,可以尝试安装低版本的matlab。
  • 此外ubuntu16.04用的是gcc5.4,matlab2016b最高支持gcc4.9,所以编译matcaffe 会出错,此问题有待解决。
  • matlab

三、caffe编译与测试

1. Makefile.config的修改

  • 在caffe目录下执行cp Makefile.config.example Makefile.config,然后根据Makefile.config中的注释进行修改。
USE_CUDNN := 1USE_OPENCV := 2BLAS := openBLAS_INCLUDE := /usr/local/openblas/includeBLAS_LIB := /usr/local/openblas/libINCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial# MATLAB_DIR := /usr/local/matlab2016b(暂时还不能用)WITH_PYTHON_LAYER := 1
  • NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) # 用此行代码替换Makefile中的相关代码,避免gcc编译出错

2. caffe的编译及测试

  • make all -j8
  • make test -j8
  • make runtest -j8

3. pycaffe的编译

  • cd ~/caffe/python
  • for req in $(cat requirements.txt); do pip install $req; done # 安装依赖项
  • make pycaffe -j8
  • 添加环境变量,vim ~/.bashrc
  • export PYTHONPATH=/home/manzp/caffe/python添加到文件末尾处。
  • source ~/.bashrc,至此,在其他地方打开python,也可以import caffe了。

4. matcaffe的编译

  • make matcaffe -j8
  • make mattest -j8
  • 要在matlab中使用caffe时需要先添加路径,addpath('./matlab')(默认在caffe根目录下,“.”表示当前目录,如果在其他目录中调用matcaffe需要修改该路径),然后进入matlab使用help caffe测试是否可以正常使用。

5. mnist 使用测试

  • cd $CAFFE_ROOT,在caffe的根目录下执行下面的文件。
  • sh data/mnist/get_mnist.sh
  • sh examples/mnist/create_mnist.sh
  • sh examples/mnist/train_lenet.sh

四、编译过程中遇到的问题

  1. 修改Makefile.config文件中的opencv并make all -j16时,只有当设置USE_OPENCV := 2时能编译成功,设置USE_OPENCV := 1 OPENCV_VERSION := 2.4.13或2都不能编译成功,不知道为什么???
  2. make runtest -j16时遇到下图所示问题,export NVIDIA_VISIBLE_DEVICES=0 make runtest后编译成功。
    这里写图片描述
  3. 具体错误
    这里写图片描述
  4. 其中一个caffe开发者的回复如下,it seems to be an issue with the test itself,所以此错误应该可以忽略。
    这里写图片描述

0 0
原创粉丝点击