原文連接 http://www.cnblogs.com/kunyuanjushi/p/5947066.html
自己安裝Caffe的過程中,參考了很多資料,但由於版本或者其他原因,安裝過程中總是遇到這樣或者那樣的問題,因此留做記錄,方便之後查看,也希望對遇到相似麻煩的朋友們提供幫助。
下面我們開始安裝吧:
硬件自然不用說了,一個好的顯卡(Nvida TiTan 系列),i7的處理器,8G以上的RAM。
1. 安裝部分支持庫
sudo apt-get install build-essential
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2. 下載NVIDIA顯卡驅動 和 CUDA
a. 顯卡驅動下載
http://www.nvidia.cn/Download/index.aspx?lang=cn 選擇對應型號和系統下載(CUDA向下兼容,可以下載最新的driver)
Linux下run文件點下載鍵直接打開網頁,可點擊右鍵另存爲即可。
b. CUDA下載
https://developer.nvidia.com/cuda-downloads 選擇對應系統下載
可以下載CUDA 7.0或者 7.5
3. 安裝NVIDIA顯卡驅動和CUDA
首先進入tty,輸入用戶名和密碼。
關閉圖形界面:
sudo stop lightdm
安裝驅動:(更改驅動名稱)
sudo chmod -R 777 NVIDIA-Linux-x86_64-352.21.run
sudo sh NVIDIA-Linux-x86_64-352.21.run
安裝CUDA:
sudo chmod -R 777 cuda_7.0.28_linux.run
sudo ./cuda_7.0.28_linux.run
安裝過程都默認路徑就好。CUDA7會提示安裝完了Driver、Toolkit和Samples。
備註1:如果之前你單獨安裝了驅動,安裝CUDA時,驅動安裝部分可以跳過。
備註2:安裝Samples可能會提示 缺少一些庫,simple 也可之後編譯測試。
打開圖形界面
sudo start lightdm
4. 如果安裝驅動不成功,很可能會進入黑屏模式,不要着急重裝系統,進入tty重新裝一遍驅動即可。(驅動安裝成功,本步可略過)
如果進入不了tty (ctrl+Alt+F1~F6),只是黑屏,則:
sudo sed -i -e 's/#GRUB_TERMINAL/GRUB_TERMINAL/g' /etc/default/grub
sudo update-grub<br>sudo reboot
如果重啓機子之後就進入不了桌面,在登陸界面循環,但是可以進入tty,一般是內核引導或者驅動安裝的問題。則進入tty
lsmod | grep nouveau
創建文件,不會用vi的可以用gedit
sudo gedit /etc/modprobe.d/nvidia-graphics-drivers.conf
寫入 blacklist nouveau, 退出保存(wq)
修改grub:
sudo gedit /etc/default/grub
末尾寫入
rdblacklist=nouveau nouveau.modeset=0
5. 安裝配置Nvidia cuDNN-v4 (也可下載v5版本,鏈接庫文件時注意改名)
a. 去官網下載最新的cuDNN (cudnn-70-linux-x64-v4)。
https://developer.nvidia.com/cudnn 下載,需要先註冊爲developer,審覈通過就可以下載,大概審個兩天就可以。這個主要是針對Deep Learning框架設計的NVIDIA CUDA的GPU計算加速方案。不安裝這個也可以跑caffe。
b. 添加頭文件和庫文件
sudo cp include/cudnn.h /usr/local/include
sudo cp lib64/libcudnn.* /usr/local/lib
c. 鏈接cuDNN的庫文件
sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4
sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so
sudo ldconfig -v
6. 設置CUDA的環境變量
安裝完成後需要在/etc/profile中添加環境變量
sudo gedit /etc/profile
在文件最後添加:
PATH=/usr/local/cuda/bin:$PATH
export PATH
保存後, 執行下列命令, 使環境變量立即生效
source /etc/profile
同時需要添加lib庫路徑: 在 /etc/ld.so.conf.d/加入文件cuda.conf,
sudo gedit /etc/ld.so.conf.d/cuda.conf
添加內容:
/usr/local/cuda/lib64
保存後,執行下列命令使之立刻生效:
sudo ldconfig
7. 安裝測試CUDA simples
cd /usr/local/cuda/samples
sudo make all -j8
其中-jx中x的數字代表幾個線程同時編譯,可以加快速度,x可以根據CPU核的個數決定。
可能遇到的問題:/usr/bin/ld: cannot find -lGL
原因:1. 缺少libGL庫文件;2. link的問題。
方案:
1, 如果是缺少libGL庫文件,可以先搜尋庫文件安裝包
apt-cache search libGL-dev<br>sudo apt-get install libGL-dev
2, 先尋找link文件(.so),再根據尋找結果定位
locate libGL.so
顯示結果如下:
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so.346.46
/usr/lib/x86_64-linux-gnu/mesa/libGL.so
鏈接文件:
sudo rm /usr/lib/x86_64-linux-gnu/libGL.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.46 /usr/lib/x86_64-linux-gnu/libGL.so
其他問題解決方案類似。
編譯完成後進入samples/bin/x86_64/linux/release, 運行deviceQuery
cd ./bin/x86_64/linux/release
./deviceQuery
如果出現顯卡信息, 則驅動及顯卡安裝成功。
8. 安裝Intel MKL或Atlas
如果沒有Intel MKL, 可以用下列命令安裝免費的atlas(我在安裝過程中,使用MKL時,與caffe不兼容,於是直接使用了atlas!!!!)
sudo apt-get install libatlas-base-dev
當然使用Intel MKL會快一些,我在caffe社區也反映了兼容問題,現在已經解決。安裝Intel MKL過程如下:
a. 下載Intel MKL
Intel MKL可以申請學生賬號下載免費intelMKL
b. 解壓安裝包,下面有一個install_GUI.sh文件, 執行該文件sudo run intall_GUI.sh, 會出現圖形安裝界面,按說明安裝即可。
c. 安裝完成後需要添加library路徑, 創建/etc/ld.so.conf.d/intel_mkl.conf文件
sudo vi /etc/ld.so.conf.d/intel_mkl.conf
在文件中添加內容:
/opt/intel/lib
/opt/intel/mkl/lib/intel64
注意把路徑替換成自己的安裝路徑
sudo ldconfig
9. OpenCV的下載安裝
a. 下載OpenCV(建議2.4 系列,3系列差別比較大)
在https://github.com/bearpaw/Install-OpenCV 下載到本地。opencv版本2.4.10.
b. 安裝OpenCV
sudo sh ./opencv_2_4_10.sh
腳本會自動安裝依賴項,下載安裝包,編譯並安裝OpenCV。
10. 安裝Caffe所需要的Python環境
a. 直接用系統自帶的python就行了,可以通過以下命令查看python版本
python --version
確定使用的是anaconda提供的python環境,安裝
which python
which pip
apt-get install python-pip
在用戶自己的`~/.bashrc` 中添加library path
LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
11. 安裝matlab
下載matlab後,安裝過程按照安裝包裏的要求做就可以了。(R2014a)
sudo ./install
備註1:安裝完之後需要添加桌面圖標,不然每次都需要到/usr/local/MATLAB/R2014a/bin中去 sudo ./matlab 。
備註2:不要直接去軟件中心下載matlab-support,嘗試過,一直在installing,沒有成功。
備註3:MATLAB R2013a安裝包,遇到過一堆亂七八糟其他問題,比如撞到83%說某個庫不是exe什麼的,最後換了個安裝包和版本,一切順利。
備註4: ubuntu和mac下,對matlab進行激活時,輸入用戶名和密碼,總是顯示連接不到服務器,我們需要將防火牆(farewall)關掉。輸入“sudo ufw disable”,然後進行激活,激活完成,"sudo ufw enable" 重啓防火牆即可!
12. 其他依賴項安裝
a. 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
b. 其他依賴項,確保都成功
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 protobuf-compiler
13. 編譯Caffe(終於到了激動人心的一刻)
進入caffe根目錄, 首先複製一份`Makefile.config`, 然後修改裏面的內容,主要需要修改的參數包括
CPU_ONLY 是否只使用CPU模式,沒有GPU沒安裝CUDA的同學可以打開這個選項
BLAS (使用intel mkl還是atlas),建議使用atlas,方便又快捷
MATLAB_DIR 如果需要使用MATLAB wrapper的同學需要指定matlab的安裝路徑, 如我的路徑爲/usr/local/MATLAB/R2014a (注意該目錄下需要包含bin文件夾,bin文件夾裏應該包含mex二進制程序)
DEBUG 是否使用debug模式,打開此選項則可以在eclipse或者NSight中debug程序
完成設置後, 開始編譯
make all -j8
make test
make runtest
如果需要matlab wrapper
make matcaffe
如果需要python wrapper
make pycaffe
備註:如果有多個caffe包,一定要輸出每一個的python路徑。例如有caffe1和caffe2:
export PYTHONPATH=your_caffe_path/caffe1/python:$PYTHONPATH
export PYTHONPATH=your_caffe_path/caffe2/python:$PYTHONPATH
14. 使用MNIST數據集進行測試
Caffe默認情況會安裝在$CAFFE_ROOT,就是解壓到那個目錄,例如:$ home/username/caffe-master,所以下面的工作,默認已經切換到了該工作目錄。
下面的工作主要是,用於測試Caffe是否工作正常,不做詳細評估。具體設置請參考官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
a. 數據預處理
sh data/mnist/get_mnist.sh
b. 重建lmdb文件。Caffe支持多種數據格式輸入網絡,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根據自己需要選擇不同輸入吧。
sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb 和 mnist-train-lmdb文件夾,這裏包含了lmdb格式的數據集
c. 訓練mnist
sh examples/mnist/train_lenet.sh
至此,Caffe安裝的所有步驟完結,下面是一組簡單的數據對比,實驗來源於MNIST數據集,主要是考察一下不同系統下CPU和GPU的性能。可以看到明顯的差別了,雖然MNIST數據集很簡單,相信複雜得數據集,差別會更大,Ubuntu+GPU是唯一的選擇了。