Linux 16.04+Caffe+TensorFlow+CUDA9

转载自:http://blog.csdn.net/shiorioxy/article/details/78850199
原作者:宇宙骑士欧老师(http://blog.csdn.net/shiorioxy

特别说明:
0. Caffe 官网地址:http://caffe.berkeleyvision.org/
TensorFlow官网地址:http://tensorflow.google.cn
1. 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文作者无关,谢谢!为保证及时更新,转载请标明出处,谢谢!
2. 本文使用2017年12月20日下载的caffe-master版本。
3. 因TensorFlow最简安装对平台运行环境要求较高(稍有不匹配就容易报错,除非自行编译,但坑也不少),因此特指明我的运行环境。运行平台为:Intel i7, nVidia GTX 1080 Ti, Ubuntu 16.04,CUDA9.0,cuDNN v7 for CUDA9,Intel Parallel Studio XE Cluster 2018,OpenCV 3.3.1, Matlab 2017a
3. 为了方便大家使用,我提供一个百度云盘,用于分享部分安装过程中需要用到的软件包和链接地址(所有软件包仅供学术交流使用,请大家尽量去官网下载, Matlab 百度云禁止分享,抱歉欠奉。)。百度云盘链接:
4. 最后更新时间:2017年12月20日。

本文主要包含5个部分,包括:
- 第一部分 Linux安装
- 第二部分 nVidia CUDA Toolkit的安装(*.deb方法)
- 第三部分 TensorFlow 的安装
- 第四部分 Caffe-Master的安装和测试

第一部分 Linux安装

我的分区设置如下:
\ 根分区: 100G,
Swap交换分区:128G(等于内存大小) ,小于16G的内存,就设置成内存的1.5-2倍
boot分区:200M
Home分区:剩余的空间,多多益善

Linux安装后,启动系统出现黑画面(紫色)
1.开机,进入grub画面。选择第一项”ubuntu”,按”e”,进入编辑模式。将”quite splash”, 修改为”quite splash nomodeset”。
2.按 ”F10”启动系统。
3.进入系统后编辑 “/etc/default/grub”

    sudo gedit /etc/default/grub
找到这一行: 
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 
修改为: 
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset”
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

4.存档
5.更新GRUB:

    sudo update-grub
   
   
  • 1

6.重新开机。

第二部分:nVidia CUDA Toolkit的安装(*.deb方法)

1. 安装 CUDA Toolkit
官方下载地址:https://developer.nvidia.com/cuda-toolkit
调节nomodeset之后,驱动程序丢失会导致Linux卡顿,这时安装好CUDA就可以解决所有问题。
(CUDA默认包含显卡驱动,所以不需要额外安装显卡驱动)

    sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
    sudo apt-get update
    sudo apt-get install -y cuda
   
   
  • 1
  • 2
  • 3

2. 安装 nVidia cuDNN library (cudnn-9.0-linux-x64-v7)
官方下载地址:https://developer.nvidia.com/cudnn

    tar -xzvf cudnn-9.0-linux-x64-v7.tgz
    sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
   
   
  • 1
  • 2
  • 3
  • 4

第三部分 TensorFlow的安装和测试

一. 安装Anaconda for Python 3.6
Anaconda官网:https://www.anaconda.com/download/

    bash ~/Downloads/Anaconda3-5.0.1-Linux-x86_64.sh 
    export  PATH=/home/shiorioxy/anaconda3/bin:$PATH
   
   
  • 1
  • 2

二. 安装TensorFlow
TensorFlow的安装方法很多,比较麻烦的是源码编译,需要安装合适版本的GCC和Bazel最简单的安装方法:Nightly pip packages。(重点要注意whl文件的python版本需要和系统的python版本一致。)

    pip install tf-nightly-gpu
   
   
  • 1

测试一下,是否安装正常:

    import tensorflow as tf
    hello = tf.constant("Hello, TensorFlow!")
    sess = tf.Seesion()
    print(sess.run(hello))
   
   
  • 1
  • 2
  • 3
  • 4

第四部分 Caffe-Master的安装和测试

一. Matlab安装
安装较简单,这里不再复述。
Matlab安装后,无法通过运行matlab命令启动:

    export PATH=$PATH:/usr/local/MATLAB/R2017a/bin/
   
   
  • 1

二. 安装BLAS
这里可以选择(ATLAS,MKL或者OpenBLAS),我这里使用MKL,因为它最快。首先下载并安装英特尔® 数学内核库 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2018),下载链接是:https://software.intel.com/en-us/qualify-for-free-software/student, 使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(注意任何一级文件夹不能包含空格,否则安装会失败)

$ tar zxvf parallel_studio_xe_2018.tar.gz (如果你是直接拷贝压缩文件过来的)
$ chmod a+x parallel_studio_xe_2018 -R
$ sh install_GUI.sh
   
   
  • 1
  • 2
  • 3

PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。(设置方法:命令行:$ sudo passwd)

三. MKL与CUDA的环境设置
1.新建intel_mkl.conf, 并编辑之:

$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
   
   
  • 1
  • 2
  • 3

2.新建cuda.conf,并编辑之:

$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
   
   
  • 1
  • 2
  • 3

3.完成lib文件的链接操作,执行:

$ sudo ldconfig -v
   
   
  • 1

四.安装OpenCV 3.3.1
1.下载并编译OpenCV(修改版的安装包(前面的百度云下载))
2.切换到文件保存的文件夹,然后安装依赖项和OpenCV:

$ sudo sh dependencies.sh
$ sudo sh opencv3_3_1.sh
   
   
  • 1
  • 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 apt-get install -y 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
   
   
  • 1

六、安装Caffe并测试
1.切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:

$ cp Makefile.config.example Makefile.config
   
   
  • 1

4.配置Makefile.config文件(仅列出修改部分)
a. 启用CUDNN,去掉”#”

USE_CUDNN := 1
   
   
  • 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
   
   
  • 1
  • 2

c. 启用Intel Parallel Studio XE 2018

BLAS := mkl
   
   
  • 1

d. 配置路径,实现caffe对Python和Matlab接口的支持

PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2017a
   
   
  • 1
  • 2

c. 启用OpenCV 3.0, 去掉”#”

OPENCV_VERSION =3
   
   
  • 1

6.编译caffe-master!!!”-j16”是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。

$ make all -j8
$ make test -j8
$ make runtest -j8
$ make pycaffe -j8
$ make matcaffe -j8
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

七. 使用MNIST数据集进行测试
Caffe默认情况会安装在 Caffe-master,就是解压到那个目录,例如:$ home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
1.数据预处理

$ sh data/mnist/get_mnist.sh
   
   
  • 1

2.重建lmdb文件。Caffe支持多种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根据自己需要选择不同输入吧。

$ sh examples/mnist/create_mnist.sh
   
   
  • 1

生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集

3.训练mnist

$ sh examples/mnist/train_lenet.sh
   
   
  • 1

至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。

测试平台1:i7-7700K/16G/GTX 1080 Ti/CUDA 9.0
MNIST Ubuntu 16.04 on GPU with cuDNN7: 12s (Caffe)
MNIST Ubuntu 16.04 on GPU with cuDNN7: 27s (TensorFlow)
测试平台2:技嘉P35X v3,i7-4720HQ@2.6G/16G/NVidia GTX 980 8G
MNIST Ubuntu 15.04 on GPU with cuDNN:33s
测试平台3:Dell 7910,E5 2623v3 3.0G *2 /128G/ NVidia Titan X 12G
MNIST Ubuntu 15.04 on GPU with cuDNN:23s 
测试平台42*E5-2620(12CPUs)/128G/Tesla K20M/CUDA5.5/CentOS 6.4
MNIST CentOS 6.4 on GPU:294s
测试平台5:Tesla K40M/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:30s
测试平台6:GTX 660/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:49s
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
测试平台1:i7-4770K/16G/GTX 770/CUDA 6.5
MNIST Windows8.1 on CPU:620s
MNIST Windows8.1 on GPU:190s
MNIST Ubuntu 14.04 on CPU:270s 
MNIST Ubuntu 14.04 on GPU:160s
MNIST Ubuntu 14.04 on GPU with cuDNN:30s
Cifar10_full on GPU wihtout cuDNN:73m45s = 4428s (Iteration 70000)
Cifar10_full on GPU with cuDNN:20m7s = 1207s (Iteration 70000
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

猜你喜欢

转载自blog.csdn.net/smallflyingpig/article/details/78977518