Caffe+Ubuntu 15.04+CUDA 7.0新手安裝配置指南

原文連接:http://www.linuxdiyf.com/linux/12708.html

以下爲原文:


特別感謝在學習和使用Caffe和CNN的過程中,超級大神Yanqing Jia, Eric Tzeng, Evan Shelhamer, Ross Girshick, Sergey Karayev, Sergio Gadarrama給予的幫助。


特別說明:

0. Caffe 官網地址:http://caffe.berkeleyvision.org/

1. 本文爲作者親自實驗完成,但僅限用於學術交流使用,使用本指南造成的任何不良後果由使用者自行承擔,與本文作者無關,謝謝!爲保證及時更新,轉載請標明出處,謝謝!

2. 本文旨在爲新手提供一個參考,請高手勿要吐槽,有暴力傾向者,請繞道,謝謝!

3. 本文使用2015年5月5日下載的caffe-master版本,運行平臺爲:Ubuntu 15.04,CUDA7.0,cuDNN v2(以前一直是cuDNN R1),OpenCV 3.0.0rc1。

4. 安裝過程,因爲平臺不同、設備不同、操作者不同,會遇到各種奇怪的問題和報錯信息,請善用Caffe官網的Issues和caffe-user論壇,以及Google和Baidu。參考本指南,請下載最新版caffe-master,新版本很多文件已經變更。

5. 最後更新時間:2015年5月6日。本次更新主要是在新版本的軟件進行部署,並修正了過去的一些bug,保留了原來14.04下安裝的部分步驟。

洋洋灑灑一大篇,就沒截圖了,經過幾個月的使用,使用Caffe還是建議在Ubuntu系統下完成,因爲不需要太多的編程,Windows版需要一定的編程基礎,且因爲沒有官方Release版,所以更新和FixBug都麻煩一些.這裏有個建議是,如果將來要做大數據集,最好事先給Linux留多點空間,比如Imagenet,估計500G都不爲過。不過也可以全部使用軟鏈接鏈接到Windows的NTFS磁盤,我後期實驗都是使用這個方法。另外,請閱讀完,至少一個部分再進行動手操作,避免多餘的工作,寫作能力有限,盡請見諒。

新版的各種軟件,安裝起來還是有一定的困難的,所以請大家使用的時候要有耐心。不過Ubuntu15.04相對於14.04有兩個進步,一是窗口不會在無聊的閃爍了(也可能是驅動問題);二是訪問網頁時,不會再半天都無法響應。


這篇安裝指南,適合零基礎,新手操作,請高手勿要吐槽!

簡單介紹一下:Caffe,一種Convolutional Neural Network的工具包,和Alex的cuda-convnet功能類似,但各有特點。都是使用C++ CUDA進行底層編輯,Python進行實現,原作主要部署於Ubuntu,也有大神發佈了Windows版,但其他相關資料較少,不適合新手使用,所以還是Ubuntu的比較適合新手。(相對而言)

本文主要包含5個部分,包括:

第一部分 Linux安裝
第二部分 nVidia驅動和CUDA Toolkit的安裝和調試(*.deb方法,特別推薦)
第二部分 nVidia驅動和CUDA Toolkit的安裝和調試(*.run方法)
第三部分 Python安裝和調試
第四部分 Matlab安裝和調試
第五部分 Caffe的安裝和測試


第一部分 Linux安裝

        Linux的安裝,如果不是Linux粉,只是必須,被迫要用它來作作科研什麼的,建議安裝成雙系統,網上方法很多,這裏我就不詳細寫了,安裝還算是傻瓜式的,和windows的過程類似,至於語言,如果覺得難度還不夠大的話,完全可以裝E文版的,甚至日文,德文~~~,我是裝的簡體中文版,我總共用分出的500G的空間來安裝Ubuntu 14.04,這個版本是最新的版本,有個好處是,可以直接訪問Windows8.1的NTFS分區,不用做額外的操作,而且支持中文,例如:$ cd /media/yourname/分區名字/文件夾名,當然GUI就更方便了.

我的分區設置如下:

根分區: \ 100G,

Swap交換分區:16G ,這裏,我設置和我的內存一樣,據說小於16G的內存,就設置成內存的1.5-2倍

boot分區:200M

Home分區:剩餘的空間,鑑於Imagenet,PASCAL VOC之類的大客戶,建議500G,至少300G以上。

PS:解決啓動分區錯誤

基本上,重裝起來,都會破壞原來的啓動分區表,還原Windows分區的一個簡單辦法:

$ sudo gedit etc/default/grub

設置:GRUB_DEFAULT = 2

$ sudo update-grub

該方法適用於安裝雙系統後,"看得到Linux,看不到Windows”的情況,反過來的話,請大家自己百度吧。

PS:關於我的筆記本的特例,僅供類似設備的參考

筆記本配置:技嘉P35X v3,[email protected]/16G/NVidia GTX 980 4G/Intel HD 4600/128G SSD*2 + 2T SATA *2

我的兩組硬盤SSD和SATA分別做Raid 0,目的是合併邏輯分區,沒有考慮冗餘備份問題,最後的狀態是2個邏輯硬盤塊256G SSD + 4T SATA,用的GPA分區,最後導致利用Ubuntu的GRUB啓動界面找不到Windows分區。所以上面的方法失效。不過,可以通過筆記本的F12和Bios設置來實現啓動分區的選擇,並且我用Linux的機會很少,所以也就如此處理了,Linux高手可以自己折騰一下Grub啓動。Ubuntu 15.04安裝在SATA邏輯分區,SSD分區安裝Windows8.1。


         第二部分兩種安裝方法,任選其一即可,推薦第二種方法(*.deb方法)。
第二部分:nVidia驅動和CUDA Toolkit的安裝和調試(*.deb方法)

         PS:特別推薦*.deb的方法,目前已提供離線版的deb文件,該方法比較簡單,不需要切換到tty模式。這裏以CUDA 7.0爲例。

      一、CUDA Repository

獲取CUDA安裝包,安裝包請自行去NVidia官網下載。

$ sudo dpkg -i cuda-repo-ubuntu1410-7-0-local_7.0-28_amd64.deb

$ sudo apt-get update

      二、CUDA Toolkit

$ sudo apt-get install -y cuda

     三、Environment Variables

$ export CUDA_HOME=/usr/local/cuda-7.0

$ export LD_LIBRARY_PATH=${CUDA_HOME}/lib64

$ PATH=${CUDA_HOME}/bin:${PATH}

$ export PATH

     第二部分:nVidia驅動和CUDA Toolkit的安裝和調試(*.run方法)

       PS:這裏其實可以參考nVidia 官方提供的CUDA安裝手冊,非常相近,32頁的,不過是全英文的,我就是參考這個文檔完成後面的配置和驗證工作。https://developer.nvidia.com/rdp/cuda-65-rc-toolkit-download#linux。一般要輸入你的用戶名和密碼,就是下載6.5的那個賬號。

      一、Verify You Have a CUDA-Capable GPU

執行下面的操作,然後驗證硬件支持GPU CUDA,只要型號存在於https://developer.nvidia.com/cuda-gpus,就沒問題了

$ lspci | grep -i nvidia

      二、Verify You Have a Supported Version of Linux

$ uname -m && cat /etc/*release

重點是“x86_64”這一項,保證是x86架構,64bit系統

     三、Verify the System Has gcc Installed

$ gcc --version

沒有的話就先安裝吧,這個是必須的用來編譯CUDA Toolkit,不過Ubuntu 14.04是默認有的

      四、Download the NVIDIA CUDA Toolkit

下載地址:https://developer.nvidia.com/cuda-toolkit

驗證地址:https://developer.nvidia.com/rdp/cuda-rc-checksums

$ md5sum filename

例如:md5sum cuda_6.5.11_rc_linux_64.run ,這個文件的正確 md5 = a47b0be83dea0323fab24ca642346351

這個感覺蠻重要,我第一次安裝的時候md5就沒通過,強制安裝,結果就有問題,後面重新下載了再安裝了一次

     五、Handle Conflicting Installation Methods

根據官網介紹,之前安裝的版本都會有衝突的嫌疑

所以,之前安裝的Toolkit和Drievers就得卸載,屏蔽,等等

      六、Graphical Interface Shutdown

退出GUI,也就是X-Win界面,操作方法是:同時按:CTRL+ALT+F1(F2-F6),切換到TTY1-6命令行模式。

關閉桌面服務:

$ sudo stop lightdm

      七、Interaction with Nouveau

Nouveau是一個開源的顯卡驅動,Ubuntu 14.04 默認安裝了,但是它會影響nVidia驅動的安裝,所以只有請他回老家了,sorry!

$ sudo vi /etc/modprobe.d/nvidia-graphics-drivers.conf

寫入:blacklist nouveau

保存並退出: wq!

檢查:$ cat nvidia-graphics-drivers.conf

$ sudo vi /etc/default/grub

末尾寫入:rdblacklist=nouveau nouveau.modeset=0

保存並退出: wq!

檢查:$ cat /etc/default/grub

      八、Installation CUDA 6.5

切換到cuda_6.5.11_rc_linux_64.run 所在的目錄,然後執行安裝命令:

$ sudo sh cuda_6.5.11_rc_linux_64.run

再次提醒,安裝前一定要執行 md5sum ,至於如果發現md5檢測不一致,怎麼辦?別逗了,去nVidia重新下載就行了,地球人都知道,別無限循環就好^_^!

這裏會一路問你各種問題,基本上就是Accept-yes-Enter-yes-Enter-yes-Enter, 其實就是讓你接受協議,然後安裝的默認位置確認等等,recruit就別自定義安裝位置了,默認纔是天堂。

       九、Extra Libraries

安裝一些必要的庫文件,譬如:OpenGL (e.g., Mesa), GLU, GLUT, and X11 (including Xi, Xmu, and GLX).

$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

      十、驅動裝完了,可以回到GUI界面了,也可以繼續留這裏玩文本。。。

$ sudo start lightdm

       十一、POST-INSTALLATION ACTIONS

1. Environment Setup

$ export PATH=/usr/local/cuda-6.5/bin:$PATH

$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH

PS:如果出現安裝失敗,重啓系統,重新安裝一遍基本都可以解決,實在不行就卸載原來的驅動再安裝一遍。

a. 卸載現有驅動

$ sudo nvidia-installer --uninstall

b. 重裝CUDA Toolkit

$ sudo sh cuda_6.5.11_rc_linux_64.run

好了,到這裏所有nVidia CUDA的安裝就結束了,下面看看Caffe如何安裝


第三部分 Python安裝和調試

       1. 安裝IDE運行環境

選擇一個適合你的IDE運行環境,我是用的是Spyder,因爲它內置了 iPython 環境,Caffe有不少的程序是基於 iPython 環境完成的。安裝方法很簡單,直接在Ubuntu軟件中心搜索“spyder”即可安裝。

     2. iPython NoteBook 安裝

另外一個比較推薦的方法是使用iPyhthon NoteBook(基於瀏覽器的Python IDE),特別是適合需要用Python做教程的老師們,可以直接導出.py, .ipynb, html格式,安裝步驟如下:

$ sudo apt-get install -y ipython-notebook pandoc

啓動(自動打開瀏覽器):

$ ipython nootbook

一個簡單的使用iPython NoteBook生成的html的例子:examples_notebook.html  example_notebook.ipynb

     3. 配置和編譯pycaffe(見第五部分)


第四部分 Matlab安裝和調試

        1.下載

由於該軟件爲商業軟件,請大家自行尋找,安裝學習,並確保不使用做商業目的,下載24小時刪除......

         2. 預準備

選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁盤映像掛載器打開”

進入裝載的虛擬光盤,拷貝全部文件至home/Matlab 文件夾

(PS:我的原則是能GUI就GUI,喜歡CMD的可以參照執行)

複製Crack/install.jar至 home/Matlab/java/jar/ 並覆蓋源文件

$ sudo cp install.jar /home/Matlab/java/jar/

       3. 授權安裝文件夾

$ chmod a+x Matlab -R

       4. 安裝

$ sudo ./install

選項:不使用Internet安裝

序列號: 12345-67890-12345-67890

默認路徑:/usr/local/MATLAB/R2014a

激活文件:license_405329_R2014a.lic

拷貝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64

$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/

安裝完畢,程序默認啓動路徑:

$ sh /usr/local/MATLAB/R2014a/bin/matlab

     5.解決編譯器gcc/g++版本問題。(這裏因爲折騰了一會,所以只做參考,基本流程就2步,有問題,大家可以自己嘗試。)

因爲Ubuntu 15.04的gcc/g++版本是4.9.2,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla調用mex文件的時候,基本上都會報錯,根據報錯信息,考慮如下兩步解決方案。

       1. 降級安裝gcc/g++版本爲4.7.x

(1). 下載gcc/g++ 4.7.x

$ sudo apt-get install -y gcc-4.7

$ sudo apt-get install -y g++-4.7

(2). 鏈接gcc/g++實現降級

$ cd /usr/bin

$ sudo rm gcc

$ sudo ln -s gcc-4.7 gcc

$ sudo rm g++

$ sudo ln -s g++-4.7 g++

        2. 暴力引用新版本GLIBCXX_3.4.20

$ sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20

$ sudo mv libstdc++.so.6 libstdc++.so.6.backup

$ sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6

$ sudo ldconfig -v

通過命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已經成功包含了GLIBCXX_3.4.20,如果已經存在,基本上就成功了。

      6.編譯Matlab用到的caffe文件(見第五部分)


第五部分 Caffe的安裝和測試

對於Caffe的安裝嚴格遵照官網的要求來:http://caffe.berkeleyvision.org/installation.html

      一、安裝BLAS

這裏可以選擇(ATLAS,MKL或者OpenBLAS),我這裏使用MKL,首先下載並安裝英特爾® 數學內核庫 Linux* 版MKL,下載鏈接是:https://software.intel.com/en-us/intel-education-offerings, 請下載Student版,先申請,然後會立馬收到一個郵件(裏面有安裝序列號),打開照着下載就行了。下載完之後,要把文件解壓到home文件夾(或直接把tar.gz文件拷貝到home文件夾,爲了節省空間,安裝完記得把壓縮文件給刪除喔~),或者其他的ext4的文件系統中。

接下來是安裝過程,先授權,然後安裝:

$ tar zxvf parallel_studio_xe_2015.tar.gz (如果你是直接拷貝壓縮文件過來的)

$ chmod a+x parallel_studio_xe_2015 -R

$ sudo ./install_GUI.sh

         二、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

2. 新建cuda.conf,並編輯之:

$ sudo gedit /etc/ld.so.conf.d/cuda.conf

/usr/local/cuda/lib64

/lib

3. 完成lib文件的鏈接操作,執行:

$ sudo ldconfig -v

          三、安裝OpenCV 3.0.0

1. 下載並編譯OpenCV(官網原版OpenCV:http://opencv.org/), 或者使用本站提供的修改版的安裝包 Install-OpenCV-master(https://github.com/ouxinyu/Install-OpenCV-master) (下面的安裝方式使用該包完成,安裝包修改了dependencies.sh文件並增加了OpenCV 3.0.0的安裝文件,同時保留了原來的2.3x和2.4x版)

2. 切換到文件保存的文件夾,然後安裝依賴項:

$ sudo sh Ubuntu/dependencies.sh

3. 切換目錄Ubuntu\3.0\安裝OpenCV 3.0.0rc1:

$ sudo sh opencv3_0_0-rc1.sh

保證網絡暢通,因爲軟件需要聯網這裏時間較長,請耐心等待。。。,

          四、安裝其他依賴項

1. Google Logging Library(glog),下載地址:https://code.google.com/p/google-glog/,然後解壓安裝:

$ tar zxvf glog-0.3.3.tar.gz

$ ./configure

$ make

$ sudo make install

如果沒有權限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 裝完之後,這個文件夾就可以kill了。

2. 其他依賴項,確保都成功

$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev

$ sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

        五、安裝Caffe並測試

        1. 安裝pycaffe必須的一些依賴項:

$ sudo 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

$ sudo apt-get install -y protobuf-c-compiler protobuf-compiler

        2. 安裝配置nVidia cuDNN 加速Caffe模型運算

a. 安裝cuDNN

該改版本caffe-master默認支持cudnn-6.5-linux-x64-v2,使用cudnn-6.5-linux-R1會報錯,安裝前請去先官網下載最新的cuDNN。

$ sudo cp cudnn.h /usr/local/include

$ sudo cp libcudnn.so /usr/local/lib

$ sudo cp libcudnn.so.6.5 /usr/local/lib

$ sudo cp libcudnn.so.6.5.48 /usr/local/lib

b. 鏈接cuDNN的庫文件

$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5.48 /usr/local/lib/libcudnn.so.6.5

$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5 /usr/local/lib/libcudnn.so

$ sudo ldconfig -v

          3. 切換到Caffe-master的文件夾,生成Makefile.config配置文件,執行:

$ cp Makefile.config.example Makefile.config

        4. 配置Makefile.config文件(僅列出修改部分)

a. 啓用CUDNN,去掉"#"(目前caffe-master仍然只支持R1版本)

USE_CUDNN := 1

b. 啓用GPU,添加註釋"#"

# CPU_ONLY := 1

c. 配置一些引用文件(增加部分主要是解決新版本下,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

d. 啓用Intel Parallel Studio XE 2015 Professional Edition for C++ Linux

BLAS := mkl

e. 配置路徑,實現caffe對Python和Matlab接口的支持

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2014a

          5. 配置Makefile文件(實現對OpenCV 3.x的支持)

查找“Derive include and lib directories”一節,修改“LIBRARIES +=”的最後一行,增加opencv_imgcodecs

opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

          6. 編譯caffe-master!!!"-j8"是使用CPU的多核進行編譯,可以極大地加速編譯的速度,建議使用。

$ make all -j8

$ make test -j8

$ make runtest -j8

編譯Python和Matlab用到的caffe文件

$ make pycaffe -j8

$ make matcaffe -j8

六、使用MNIST數據集進行測試

Caffe默認情況會安裝在$CAFFE_ROOT,就是解壓到那個目錄,例如:$ home/username/caffe-master,所以下面的工作,默認已經切換到了該工作目錄。下面的工作主要是,用於測試Caffe是否工作正常,不做詳細評估。具體設置請參考官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html

      1. 數據預處理

$ sh data/mnist/get_mnist.sh

      2. 重建lmdb文件。Caffe支持三種數據格式輸入網絡,包括Image(.jpg, .png等),leveldb,lmdb,根據自己需要選擇不同輸入吧。

$ sh examples/mnist/create_mnist.sh

生成mnist-train-lmdb 和 mnist-train-lmdb文件夾,這裏包含了lmdb格式的數據集

     3. 訓練mnist

$ sh examples/mnist/train_lenet.sh

至此,Caffe安裝的所有步驟完結,下面是一組簡單的數據對比,實驗來源於MNIST數據集,主要是考察一下不同系統下CPU和GPU的性能。可以看到明顯的差別了,雖然MNIST數據集很簡單,相信複雜得數據集,差別會更大,Ubuntu+GPU是唯一的選擇了。

測試平臺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)

測試平臺2:技嘉P35X v3,[email protected]/16G/NVidia GTX 980 4G

MNIST Ubuntu 15.04 on GPU with cuDNN:33s

對比測試1:2*E5-2620(12CPUs)/128G/Tesla K20M/CUDA5.5/CentOS 6.4

MNIST CentOS 6.4 on GPU:294s

對比測試2:Tesla K40M/CUDA6.5/ubuntu 14.04

MNIST on GPU with cuDNN:30s

對比測試3:GTX 660/CUDA6.5/ubuntu 14.04

MNIST on GPU with cuDNN:49s

對比試驗1是一個不太公平的測試,畢竟性能差很大,很可能不單單是由Tesla K20s 和GTX 770帶來的,也可能是因爲CentOS或者是CUDA5.5(without cuDNN)的影響,但總體上的結論和Caffe官網的 reference performance numbers 一致,對於普通用戶:GTX的性價比高很多。對比試驗2展現了Tesla K40的強大性能,相信對於複雜圖像,它應該有更強勁的表現。(感謝香港城市大學 Ph.D Jingjing、南京理工大學 Ph.D JinLu、華中科技大學 MS LiuMaolin 提供的測試環境和測試數據。)


Caffe+Ubuntu 14.04 64bit+CUDA 6.5配置說明:http://www.linuxdiyf.com/linux/11368.html

Caffe安裝指南:http://www.linuxdiyf.com/linux/12613.html

Linux下CUDA開發環境安裝:http://www.linuxdiyf.com/linux/11272.html

Ubuntu 14.04安裝配置CUDA:http://www.linuxdiyf.com/linux/2699.html

Ubuntu安裝CUDA驅動:http://www.linuxdiyf.com/linux/10093.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章