洋洋灑灑一大篇,就沒截圖了,這幾天一直在折騰這個東西,實在沒辦法,不想用Linux可是,爲了Caffe,只能如此了,安裝這些東西,遇到不少問題,每一個問題都要折磨好久,大概第一次就是這樣的。想一想,以後應用,應該還會遇到不少問題吧,不過沒辦法了,騎虎難下!!這裏有個建議是,若是未來要作大數據集,最好事先給Linux留多點空間,好比Imagenet,估計500G都不爲過。另外,請閱讀完,至少一個部分再進行動手操做,避免多餘的工做,寫做能力有限,盡請見諒。
這篇安裝指南,適合零基礎,新手操做,請高手勿要吐槽!
簡單介紹一下:Caffe,一種Convolutional Neural Network的工具包,和Alex的cuda-convnet功能相似,但各有特色。都是使用C++ CUDA進行底層編輯,Python進行實現,原做不屬於Ubuntu 12,也有大神發佈了Windows版,但其餘相關資料較少,不適合新手使用,因此仍是Ubuntu的比較適合新手。(相對而言)
本文主要包含5個部分,包括:
第一部分 Linux安裝
第二部分 nVidia驅動和CUDA Toolkit的安裝和調試
第三部分 Caffe的安裝和測試
第四部分 Python安裝和調試
第五部分 Matlab安裝和調試
html
Linux的安裝,若是不是Linux粉,只是必須,被迫要用它來做做科研什麼的,建議安裝成雙系統,網上方法不少,這裏我就不詳細寫了,安裝還算是傻瓜式的,和windows的過程相似,至於語言,若是以爲難度還不夠大的話,徹底能夠裝E文版的,甚至日文,德文~~~,我是裝的簡體中文版,我總共用分出的100G的空間來安裝Ubuntu 14.04,這個版本是最新的版本,有個好處是,能夠直接訪問Windows8.1的NTFS分區,不用作額外的操做,並且支持中文,例如:$ cd /media/yourname/分區名字/文件夾名,固然GUI就更方便了
個人分區設置以下:
根分區: \ 50G,
Swap交換分區:16G ,這裏,我設置和個人內存同樣,聽說小於16G的內存,就設置成內存的1.5-2倍
Home分區:剩餘的34G
裝好以後,重啓電腦,有的人會直接進Linux,有的會直接Windows,谷歌或者百度解決方法吧,由於我也說不清這個具體怎麼搞定。
個人臺式機,搞定了,但是筆記本,把Windows分區也給破壞了,最後只能重裝Windows 8.1,但由於筆記本沒有nVidia的GPU因此不想再折騰了。
PS: 其實到如今感受空間可能小了, 想一想Imagenet 137G的訓練文件,以爲應該把Home設置成300-500G以上,會更合適吧。下次安裝的時候,再改了,如今暫時不想動了。
PS:今天仍是從新裝了,把home分區擴大到500G。因此建議真的要大數據實驗的小夥伴,也趁早考慮。
PS: Ubuntu下訪問網頁老是很慢,讓我深感它和Windows的差距,但是爲何仍是有那麼多人嚮往它呢?下面的辦法能夠解決部分訪問的問題,特別是國外的網站,可是遇到一些調用了被牆的網站的東西,好比google的字體,仍是沒辦法,仍然會在哪裏轉圈圈。這裏彷佛是操做系統的機制引發,Windows的瀏覽器會忽略那些錯誤,而Ubuntu下的瀏覽器會不停嘗試。廢話少說,部分問題的解決辦法:
$ sudo apt-get install dnsmasq
$ sudo gedit /etc/dnsmasq.conf
找到 # resolv-file=
修改成:resolv-file=/etc/resolv.dnsmasq.conf
$ sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
$ sudo gedit /etc/resolv.conf
刪除全部域名服務器,保留:nameserver 127.0.0.1
- 第二部分:nVidia驅動和CUDA Toolkit的安裝和調試
1、Verify You Have a CUDA-Capable GPU
$ lspci | grep -i nvidia
2、Verify You Have a Supported Version of Linux
$ uname -m && cat /etc/*release
重點是「x86_64」這一項,保證是x86架構,64bit系統
3、Verify the System Has gcc Installed
$ gcc --version
沒有的話就先安裝吧,這個是必須的用來編譯CUDA Toolkit,不過Ubuntu 14.04是默認有的
4、Download the NVIDIA CUDA Toolkit
$ md5sum <filename>
例如:md5sum cuda_6.5.11_rc_linux_64.run ,這個文件的正確 md5 = a47b0be83dea0323fab24ca642346351
這個感受蠻重要,我第一次安裝的時候md5就沒經過,強制安裝,結果就有問題,後面從新下載了再安裝了一次
5、Handle Conflicting Installation Methods
根據官網介紹,以前安裝的版本都會有衝突的嫌疑
因此,以前安裝的Toolkit和Drievers就得卸載,屏蔽,等等
6、Graphical Interface Shutdown
退出GUI,也就是X-Win界面,操做方法是:同時按:CTRL+ALT+F1(F2-F6),切換到TTY1-6命令行模式。
關閉桌面服務:
$ sudo stop lightdm
7、Interaction with Nouveau
Nouveau是一個開源的顯卡驅動,Ubuntu 14.04 默認安裝了,可是它會影響nVidia驅動的安裝,因此只有請他回老家了,sorry!
1. 將nouveau添加到黑名單,防止它啓動java
$ cd /etc/modprobe.d
$ sudo vi nvidia-graphics-drivers.conf
寫入:blacklist nouveau
保存並退出: wq!
檢查:$ cat nvidia-graphics-drivers.conf
2. 對於:/etc/default/grub,添加到末尾。
$ sudo vi /etc/default/grub
末尾寫入:rdblacklist=nouveau nouveau.modeset=0
保存並退出: wq!
檢查:$ cat /etc/default/grub
3. 官網提供的操做:
$ sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
而後從新生成initrd文件
$ sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
$ sudo update-initramfs -u
上面那條是nVidia官方提供的命令,不知道爲何在我這裏會提示dracut是不存在的命令,也許是版本問題,或者少了什麼包,不過無所謂,第二條命令也能夠搞定,應該是同樣的功能。(若是我理解錯誤,歡迎小朋友們指教,我會改正)
PS:其實,這一連串的工做,有點沒搞懂,由於有的命令和文件不存在。原理理解了,可是步驟仍是有點模糊,不過,我是照上面的操做完成了,後面的也沒出問題,應該應付過去了吧。
8、Installation
鑑於安裝過程當中遇到的一些問題和啓示,建議先安裝官方最新版的顯卡驅動,而後再安裝CUDA,這裏多是CUDA內置的驅動不太完整,或者適應性差了一點。GTX顯卡驅動的下載地址以下(Tesla版的驅動,請你們本身去nVidia的官網下載):
下載地址:http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run
切換到cuda_6.5.11_rc_linux_64.run 所在的目錄,而後執行安裝命令:
$ sudo sh cuda_6.5.11_rc_linux_64.run
再次提醒,安裝前必定要執行 md5sum ,我第一次安裝就是執行了,發現不同,而後沒有理它直接安裝,致使安裝的Sumary裏顯示Driver成功,Toolkit和Samples失敗,第二次在裝就行了。python
至於若是發現md5檢測不一致,怎麼辦?別逗了,去nVidia從新下載就好了,地球人都知道,別無限循環就好^_^!linux
這裏會一路問你各類問題,基本上就是Accept-yes-Enter-yes-Enter-yes-Enter, 其實就是讓你接受協議,而後安裝的默認位置確認等等,recruit就別自定義安裝位置了,默認纔是天堂。
安裝完會提示丟失了四個庫:libGLU.so, libx11.so, libxmu.so, libxi.so 這個木有關係,下一步就是解決這個問題的。
9、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界面在操做,要否則那些提示信息,都是亂碼,什麼都看不懂,不過若是你的系統是E文的,這句話忽略。
這裏,保證網絡不要中斷就好了,吐槽一下:該死的銳捷認證,這Ubuntu都出到14.04了,你12版本的客戶端還沒出來,害我以前折騰了1成天網絡,如今被迫淪落到蹭網族,有點想吐的感受!!!!
10、驅動裝完了,能夠回到GUI界面了,也能夠繼續留這裏玩文本。。。
$ sudo start lightdm
11、POST-INSTALLATION ACTIONS
這一步就是驗證一下安裝是否正確,編譯和完成如下CUDA自帶的程序,建議作一下~
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
2. (Optional) Install Writable Samples
$ cuda-install-samples-6.5.sh <dir>
安裝到Home下,搞定了以後能夠在GUI下調整一下,主要是前面的要求,會有一個Sample的文件夾 NVIDIA_CUDA-6.5_Samples在Home的根目錄下就ok了。由於後面編譯測試各方面什麼的方便。其實若是以前安裝CUDA驅動和Toolkit一切正常,這一步基本能夠省略,應該會自動創建,但檢查一下無妨。
3. Verify the Installation
a. 驗證驅動的版本,其實主要是保證驅動程序已經安裝正常了
$ cat /proc/driver/nvidia/version
b. Compiling the Examples
$ nvcc -V
不出意外的話應該會提示,nvcc沒有安裝,其實就是,nvidia-cuda-toolkit的編譯器沒有安裝完整,總之,根據提示繼續就行了
$ sudo apt-get install nvidia-cuda-toolkit
我這裏還差接近400MB的文件要下載,它是全自動的,因此只要保證網絡暢通,一杯咖啡在手,而後就能夠XXX了。可悲的是,我這裏天色已晚,隔壁的Wifi也斷了,筆記本的360隨身Wifi連上一會也斷了,只有收東西回宿舍,明天再繼續了。看看錶,靠,00:03,今天打卡時間又錯過了。
第二天,這裏安裝完,就能夠編譯了,切換目錄到~/NVIDIA_CUDA-6.5_Samples,記性沒問題的話,應該還記得它是安裝在Home文件夾的,穿越過去就行了,而後執行:
$ cd /home/username/NVIDIA_CUDA-6.5_Samples
$ make
c. Running the Binaries
運行編譯好的文件,看看設備的基本信息和帶寬信息:
$ cd /bin/x86_64/linux/release
$ ./deviceQuery
$ ./bandwidthTest
PS:若是測試的時候出現說運行版驅動和實際驅動不符(英文原文不記得了,沒記下來),緣由多是由於後面安裝的nvidia-cuda-toolkit更新了配置文件,因此和原始的Cuda-Samples的配置或者是驅動程序有變化,因此檢測沒法編譯經過。考慮下面的解決方法:
1. 卸載現有驅動
$ sudo nvidia-installer --uninstall
2. 下載合適版本的驅動,並安裝:
下載地址:http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run
3. 重裝CUDA Toolkit
$ sudo sh cuda_6.5.11_rc_linux_64.run
好了,到這裏全部nVidia CUDA的安裝就結束了,下面看看Caffe如何安裝
接下來是安裝過程,先受權,而後安裝:
$ tar zxvf cpp_studio_xe_2013_sp1_update3.tar.gz (若是你是直接拷貝壓縮文件過來的)
$ chmod a+x /home/username/cpp_studio_xe_2013_sp1_update3 -R
$ sudo ./install_GUI.sh
PS: 這裏安裝的時候,我遇到一些插曲,先在這裏特別提醒你們一下,避免在犯錯,這些都是我安裝的時候,遇到的"little bug"。
1. 一個很2的問題,在啓動linux的時候,手賤點了一下系統自動更新,可能正好更新到某個關鍵組件,受權的時候,始終無效,這個大概解決就是記得更新完,重啓,而後關機,我弄的時候,重啓也沒用。
2. 記得把解壓後的studio_xe軟件包丟到home下,或者乾脆直接在home裏解壓,注意這裏它是保存在home/username, 這裏的username是你的用戶名。這一步主要是,讓安裝程序處於linux的文件系統中,爲了修改權限作保證。
3. 使用chmod對文件夾及其子文件進行受權,安裝程序是install_GUI.sh,它調用了install.sh,接下來又調用了一連串的文件,這些文件都必須具備可執行的權限,因此,你懂了~照着上面的步驟就行了
4. 安裝的時候,能夠安裝到root權限下,或者sudo權限,我是裝在root權限下,避免麻煩,這時就必須確保已經爲root設置過密碼了,而後會讓你輸入你申請的時候發給你的序列號。沒設置的話,執行:
5. Everything is OK!
PS2:我不會告訴你,我第一次安裝的時候,不只僅裝了Studio XE,還裝了MKL,也裝了OpenBLAS,爲了裝OpenBLAS還裝來gFortran編譯器,由於一直編譯Caffe不經過,其實這都是白費功夫,都是沒有認真讀官網的說明致使的。至於這集中庫的性能,應該是MKL>OpenBLAS>ATLAS,官網的介紹也提到。在裝完MKL,須要作的一件事是:SET BLAS := open in Makefile.config,這個我在後面安裝Caffe到時候會寫。
2、MKL與CUDA的環境設置
文件夾切換到/etc/ld.so.conf.d,並進行以下操做
1. 新建intel_mkl.conf, 並編輯之:
$ cd /etc/ld.so.conf.d
$ sudo vi intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
2. 新建cuda.conf,並編輯之:
$ sudo vi cuda.conf
/usr/local/cuda/lib64
/lib
3. 完成lib文件的連接操做,執行:
$ sudo ldconfig -v
3、安裝OpenCV
sudo ./dependencies.sh
3. 安裝openCV,由於不知道有什麼區別,因此就安裝最新版opencv2_4_8吧,有偏好能夠根據本身的要求進行設置:
sudo ./opencv2_4_8.sh
保證網絡暢通,由於軟件須要聯網這裏時間較長,請耐心等待。。。,因此就安4、安裝其餘依賴項
$ tar zxvf glog-0.3.3.tar.gz
$ ./ configure
$ make
$ sudo make install
2. 其餘依賴項,確保都成功
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
若是安裝過程當中出現錯誤,E: Sub-process /usr/bin/dpkg returned an error code (1),多是由於sudo apt-get install出現到意外,不用着急,能夠試試這個解決辦法:
$ cd /var/lib/dpkg
$ sudo mv info info.bak
$ sudo mkdir info
$ sudo apt-get --reinstall install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
5、安裝Caffe並測試
1. 切換到Caffe的下載文件夾,而後執行:
$ cp Makefile.config.example Makefile.config
修改新生成的Makefile.config文件,修改「BLAS := mkl」,這個很是重要。
$ make all
$ make test
$ make runtest
錯誤Fixed:
1. 若是提示: make: protoc: 命令未找到,那是由於protoc沒有安裝,安裝一下就行了。
$ sudo apt-get install protobuf-c-compiler protobuf-compiler
2. 提示「src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit ") from a globalfunction("caffe::sgnbit_kernel ") is not allowed」
解決辦法:
修改 ./include/caffe/util/math_functions.hpp 224行
刪除(註釋):using std::signbit;
修改:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i]));
爲:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = std::signbit(x[i]));
這個方法感謝網友:嗆熱DJ$998。
獲得做者,大神Yangqing Jia的回覆,解決方法如上,沒有二致。
6、使用MNIST數據集進行測試
1. 數據預處理
能夠用下載好的數據集,也能夠從新下載,我網速快,這裏就偷懶直接下載了,具體操做以下:
$ cd data/mnist
$ sudo sh ./get_mnist.sh
2. 重建LDB文件,就是處理二進制數據集爲Caffe識別的數據集,之後全部的數據,包括jpe文件都要處理成這個格式
$ cd examples/mnist
$ sudo sh ./create_mnist.sh
生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夾,這裏包含了LDB格式的數據集
3. 訓練mnist
$ cd examples/mnist
$ sudo sh ./train_lenet.sh
至此,Caffe安裝的全部步驟完結,下面是一組簡單的數據對比,實驗來源於MNIST數據集,主要是考察一下不一樣系統下CPU和GPU的性能。能夠看到明顯的差異了,雖然MNIST數據集很簡單,相信複雜得數據集,差異會更大,Ubuntu+GPU是惟一的選擇了。
測試平臺:i7-4770K/16G/GTX 770/CUDA 6.5
Windows8.1 on CPU:620s
Windows8.1 on GPU:190s
Ubuntu 14.04 on CPU:270s
Ubuntu 14.04 on GPU:160s
1. 安裝caffe必須的一些依賴項:
$ sudo apt-get install 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
2. 配置路徑,編輯Makefile.config
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/local/lib
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
3. 這裏很是重要的是,爲了確保支持Caffe Notebook裏的程序,須要使用到IDE環境,而且支持iPython輸出。
1.下載
因爲該軟件爲商業軟件,請你們自行尋找,安裝學習,並確保不使用作商業目的,下載24小時刪除......
選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁盤映像掛載器打開」
進入裝載的虛擬光盤,拷貝所有文件至home/Matlab 文件夾
(PS:個人原則是能GUI就GUI,喜歡CMD的能夠參照執行)
複製Crack/install.jar至 home/Matlab/java/jar/ 並覆蓋源文件
$ 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 MATLAB/R2014a/bin/matlab
5.建立快捷方式
1. 軟件中心搜索matlab
2. 選擇安裝目錄:/usr/local/MATLAB/R2014a
6.配置Caffe
修改文件:Makefile.config
MATLAB_DIR := /usr/local/MATLAB/R2014a
7.編譯Matlab用到的caffe文件
$ make matcaffe