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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章