轉自
http://ouxinyu.github.io/Blogs/20151108001.html
Caffe + Ubuntu 15.04 + CUDA 7.5 新手安裝配置指南
特別說明:
0. Caffe 官網地址:http://caffe.berkeleyvision.org/
1. 本文為作者親自實驗完成,但僅限用於學術交流使用,使用本指南造成的任何不良后果由使用者自行承擔,與本文作者無關,謝謝!為保證及時更新,轉載請標明出處,謝謝!
2. 本文旨在為新手提供一個參考,請高手勿要吐槽,有暴力傾向者,請繞道,謝謝!
3. 本文使用2015年11月8日下載的caffe-master版本,運行平台為:Ubuntu 15.04,CUDA7.5,cuDNN v4,Intel Parallel Studio XE Cluster 2016,OpenCV 3.0.0 (本來准備換Ubuntu 15.10但是一直報錯,就沒有仔細折騰了,有興趣的可以試試。)
4. 安裝過程,因為平台不同、設備不同、操作者不同,會遇到各種奇怪的問題和報錯信息,請善用Caffe官網的Issues和caffe-user論壇,以及Google和Baidu。參考本指南,請下載最新版caffe-master,新版本很多文件已經變更。
5. 最后更新時間:2016年3月13日。本次更新以最簡化方式呈現如何安裝部署最新版Caffe-Master,如需看舊版本,請點擊鏈接。Caffe + Ubuntu 15.04 + CUDA 7.0 新手安裝配置指南
PS:為了方便大家使用,我提供一個百度雲盤,用於分享部分安裝過程中需要用到的軟件包和鏈接地址(所有軟件包僅供學術交流使用,請大家盡量去官網下載。)。百度雲盤鏈接: http://pan.baidu.com/s/1qX1uFHa 密碼:wysa
這篇安裝指南,適合零基礎,新手操作,請高手勿要吐槽!
簡單介紹一下:Caffe,一種Convolutional Neural Network的工具包,和Alex的cuda-convnet功能類似,但各有特點。都是使用C++ CUDA進行底層編輯,Python進行實現,原作主要部署於Ubuntu,也有大神發布了Windows版,但其他相關資料較少,不適合新手使用,所以還是Ubuntu的比較適合新手。(相對而言)
本文主要包含5個部分,包括:
- 第一部分 Linux安裝
- 第二部分 nVidia CUDA Toolkit的安裝(*.deb方法)
- 第三部分 Matlab安裝和調試
- 第四部分 Caffe-Master的安裝和測試
- 第五部分 增加新層(以Fast RCNN提出的 ROIPooling layer 為例)
第一部分 Linux安裝
Linux的安裝,如果不是Linux粉,只是必須,被迫要用它來作作科研什么的,建議安裝成雙系統,網上方法很多,這里我就不詳細寫了,安裝還算是傻瓜式的,和windows的過程類似,至於語言,如果覺得難度還不夠大的話,完全可以裝E文版的,甚至日文,德文~~~,我是裝的簡體中文版,我總共用分出的500G的空間來安裝Ubuntu 14.04,這個版本是最新的版本,有個好處是,可以直接訪問Windows8.1的NTFS分區,不用做額外的操作,而且支持中文,例如:$ cd /media/yourname/分區名字/文件夾名,當然GUI就更方便了.
我的分區設置如下:
根分區: \ 100G,
Swap交換分區:128G ,這里設置為何內存一樣,據說小於16G的內存,就設置成內存的1.5-2倍
boot分區:200M
Home分區:剩余的空間,鑒於Imagenet,PASCAL VOC之類的大客戶,建議500G,至少300G以上。
PS:解決啟動分區錯誤
基本上,重裝起來,都會破壞原來的啟動分區表,還原Windows分區的一個簡單辦法:
設置:GRUB_DEFAULT = 2
該方法適用於安裝雙系統后,"看得到Linux,看不到Windows”的情況,反過來的話,請大家自己百度吧。
PS:關於我的筆記本的特例,僅供類似設備的參考
筆記本配置:技嘉P35X v3,i7-4720HQ@2.6G/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。
第二部分:nVidia CUDA Toolkit的安裝(*.deb方法)
PS:特別推薦*.deb的方法,目前已提供離線版的deb文件,該方法比較簡單,不需要切換到tty模式,因此不再提供原來的*.run安裝方法,這里以CUDA 7.5為例。
一、CUDA Repository
獲取CUDA安裝包,安裝包請自行去NVidia官網下載。(https://developer.nvidia.com/cuda-downloads)
二、CUDA Toolkit
第三部分 Matlab安裝和調試(以Matlab 2014a為例)
1.下載
由於該軟件為商業軟件,請大家自行尋找,安裝學習,並確保不使用做商業目的,下載24小時刪除......
2. 預准備
選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁盤映像掛載器打開”,進入裝載的虛擬光盤,拷貝全部文件至home/Matlab 文件夾(PS:我的原則是能GUI就GUI,喜歡CMD的可以參照執行)
復制Crack/install.jar至 home/Matlab/java/jar/ 並覆蓋源文件
3. 授權安裝文件夾
4. 安裝
選項:不使用Internet安裝
序列號: 12345-67890-12345-67890
默認路徑:/usr/local/MATLAB/R2014a
勾選從默認啟動路徑創建符號鏈接(實現在任意位置運行matlab啟動程序)
激活文件:license_405329_R2014a.lic
拷貝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64
5.解決編譯器gcc/g++版本問題。
因為Ubuntu 15.04的gcc/g++版本是4.9.2,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla調用mex文件的時候,基本上都會報錯,根據報錯信息,考慮如下兩步解決方案。
A. 降級安裝gcc/g++版本為4.7.x
(a). 下載gcc/g++ 4.7.x
(b). 鏈接gcc/g++實現降級
B. 暴力引用新版本GLIBCXX_3.4.20
通過命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已經成功包含了GLIBCXX_3.4.21,如果已經存在,基本上就成功了。
6.編譯Matlab用到的caffe文件(見第五部分)
第五部分 Caffe-Master的安裝和測試
對於Caffe的安裝嚴格遵照官網的要求來:http://caffe.berkeleyvision.org/installation.html
一、安裝BLAS
這里可以選擇(ATLAS,MKL或者OpenBLAS),我這里使用MKL,首先下載並安裝英特爾® 數學內核庫 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下載鏈接是:https://software.intel.com/en-us/intel-education-offerings, 使用學生身份(郵件 + 學校)下載Student版,填好各種信息,可以直接下載,同時會給你一個郵件告知序列號。下載完之后,要把文件解壓到home文件夾(或直接把tar.gz文件拷貝到home文件夾,為了節省空間,安裝完記得把壓縮文件給刪除喔~),或者其他的ext4的文件系統中。
很多人說,下載不了,本人於2105年11月8日使用該地址下載最新的2016版本,仍然沒有問題,請大家細心操作^_^。
接下來是安裝過程,先授權,然后安裝:
PS: 安裝的時候,建議使用root權限安裝,過程中會要求輸入Linux的root口令。(設置方法:命令行:$ sudo passwd)
二、MKL與CUDA的環境設置
1. 新建intel_mkl.conf, 並編輯之:
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
2. 新建cuda.conf,並編輯之:
/usr/local/cuda/lib64
/lib
3. 完成lib文件的鏈接操作,執行:
三、安裝OpenCV 3.0.0
1. 下載並編譯OpenCV(官網原版OpenCV:http://opencv.org/), 或者使用我提供的修改版的安裝包(前面的百度雲下載)(下面的安裝方式使用該包完成,安裝包修改了dependencies.sh文件並增加了OpenCV 3.0.0的安裝文件)
2. 切換到文件保存的文件夾,然后安裝依賴項:
3. 切換目錄Ubuntu\3.0\安裝OpenCV 3.0.0:
保證網絡暢通,因為軟件需要聯網這里時間較長,請耐心等待。。。,
四、安裝其他依賴項
1. Google Logging Library(glog),下載地址:https://code.google.com/p/google-glog/,然后解壓安裝:
如果沒有權限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 裝完之后,這個文件夾就可以kill了。
2. 其他依賴項,確保都成功
五、安裝Caffe並測試
1. 安裝pycaffe必須的一些依賴項:
2. 安裝配置nVidia cuDNN 加速Caffe模型運算
a. 安裝前請去先官網下載最新的cuDNN (cudnn-7.0-linux-x64-v4.0-prod)。 這一步應該是copy到/usr/local/cuda-8.0對應的include和lib64文件夾下面,然后再做軟鏈接
b. 鏈接cuDNN的庫文件
3. 切換到Caffe-master的文件夾,生成Makefile.config配置文件,執行:
4. 配置Makefile.config文件(僅列出修改部分)
a. 啟用CUDNN,去掉"#"
USE_CUDNN := 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
c. 啟用Intel Parallel Studio XE 2016
BLAS := mkl
d. 配置路徑,實現caffe對Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014a
c. 啟用OpenCV 3.0, 去掉"#"
OPENCV_VERSION =3
6. 編譯caffe-master!!!"-j16"是使用CPU的多核進行編譯,可以極大地加速編譯的速度,建議使用。
編譯Python和Matlab用到的caffe文件
六、使用MNIST數據集進行測試
Caffe默認情況會安裝在$CAFFE_ROOT,就是解壓到那個目錄,例如:$ home/username/caffe-master,所以下面的工作,默認已經切換到了該工作目錄。下面的工作主要是,用於測試Caffe是否工作正常,不做詳細評估。具體設置請參考官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
1. 數據預處理
2. 重建lmdb文件。Caffe支持多種數據格式輸入網絡,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根據自己需要選擇不同輸入吧。
生成mnist-train-lmdb 和 mnist-train-lmdb文件夾,這里包含了lmdb格式的數據集
3. 訓練mnist
至此,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,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 (真是逆天啊!)
對比測試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 提供的測試環境和測試數據。)