Ubuntu-安裝-theano+caffe-超詳細教程
長期招聘計算機視覺/深度學習等方向的工程師或實習生。感興趣的話,請傳送郵件,可以內推。
一、說明
- 本文是繼《Ubuntu-安裝-cuda7.0-單顯示卡-超詳細教程》 之後的續篇。theano和caffe是深度學習庫,對運算能力需求很大,最好使用cuda進行加速。所以,請先閱讀《Ubuntu-安裝-cuda7.0-單顯示卡-超詳細教程》,成功安裝cuda之後,再來安裝theano和caffe。
二、安裝Theano
1. 安裝各種包
安裝gfortran, numpy, scipy, sklearn, blas, atlas等包
# 安裝gfortran,後面編譯過程中會用到
2. 安裝numpy和scipy
安裝這兩個python庫有點問題,如果使用apt-get安裝,後面的test不能通過。如果使用pip安裝,有得考慮各種依賴關係。
所以,先使用apt-get安裝,然後再解除安裝,最後再使用pip安裝。這樣,既能不考慮依賴關係,又能通過後面的test()測試。
#安裝numpy和scipy sudo apt-get install python-numpy sudo apt-get install python-scipy sudo apt-get install python-sklearn #解除安裝numpy和scipy sudo apt-get remove python-numpy sudo apt-get remove python-scipy # 安裝numpy sudo pip install numpy # 測試numpy # 如果沒有安裝python-nose,測試會出錯! python -c "import numpy;numpy.test()" # 安裝scipy sudo pip install scipy # 測試scipy python -c "import scipy;scipy.test()"
3. 安裝Theano
前面的操作如果沒有出現錯誤,就可以開始安裝Theano了。命令如下所示。
# 安裝Theano sudo pip install Theano # 測試Theano python -c "import theano;theano.test()"
4. 安裝pyCUDA
- 測試Theano時,提示PyCUDA import錯誤,因此需要安裝pyCUDA。而PyCUDA需要以Boost為基礎,所以應該先安裝Boost。
使用pip安裝pyCUDA。
#安裝boost sudo apt-get install libboost-all-dev
-
git clone --recursive http://git.tiker.net/trees/pycuda.git cd pycuda sudo ./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib/x86_64-linux-gnu --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python --boost-thread-libname=boost_thread --no-use-shipped-boost make -j 4 #電腦核數 sudo python setup.py install
5. 解決cuda_ndarray.cu錯誤
如果出現錯誤:ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.6.5 cannot open shared object file: No such file or directory,需要執行以下命令:
sudo ldconfig /usr/local/cuda-7.0/lib64
6. 配置Theano
在主目錄下新建.theanorc檔案
cd ~ vi .theanorc
在.theanorc中輸入下面的內容
[cuda] root=/usr/local/cuda/bin/ [global] floatX = float32 device = gpu0 [nvcc] fastmath = True
7. 測試Theano是否在使用GPU
將下列python程式碼複製到useGPU.py,並執行。
from theano import function, config, shared, sandbox import theano.tensor as T import numpy import time vlen = 10 * 30 * 768 # 10 x #cores x # threads per core iters = 1000 rng = numpy.random.RandomState(22) x = shared(numpy.asarray(rng.rand(vlen), config.floatX)) f = function([], T.exp(x)) print f.maker.fgraph.toposort() t0 = time.time() for i in xrange(iters): r = f() t1 = time.time() print 'Looping %d times took' % iters, t1 - t0, 'seconds' print 'Result is', r if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]): print 'Used the cpu' else: print 'Used the gpu'
假定上面已經設定檔案
.theanorc
,執行命令如下所示:python useGPU.py
如果出現下面的錯誤資訊,請執行命令
sudo ldconfig /usr/local/cuda-7.0/lib64
參考#錯誤資訊 ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.0: cannot open shared object file: No such file or directory
Theano相關資料
- CUDA Toolkit預設安裝在
/usr/local/cuda/
,含有bin, lib, include等子資料夾。/usr/local/cuda/bin/
資料夾稱為cuda root資料夾。 使用Theano時,必須告訴它CUDA root資料夾,有3種方法:
- 定義$CUDA_ROOT環境變數。例如,
CUDA_ROOT=/usr/local/cuda/bin/
- 在THEANO_FLAGS中新增cuda.root標識。例如,
THEANO_FLAGS='cuda.root=/usr/local/cuda/bin/'
在.theanorc資料夾中新增[cuda]
[cuda] root=/usr/local/cuda/bin/
- 定義$CUDA_ROOT環境變數。例如,
還需要更改裝置選項(gpu or gpu0 or gpu1),設定預設的浮點計算型別(float32)
- 方法一:THEANO_FLAGS=’cuda.root=/usr/local/cuda/bin/,device=gpu,floatX=float32’
方法二:設定
.theanorc
檔案的[global]選項:[cuda] root=/usr/local/cuda/bin/ [global] device = gpu floatX = float32
- 注意:
- 如果電腦有多個GPU,而配置是‘device=gpu’,驅動會選擇其中一個使用(一般是
gpu0
)。可以使用 nvida-smi 改變這一規則。 - 可以通過指定 ‘device=gpuX’來選擇一個特定的GPU。
- 預設使用GPU計算。如果GPU有問題,Theano會退回使用CPU。可以通過設定標識‘force_device=True’,當GPU不能使用時,彈出錯誤資訊。
- 如果電腦有多個GPU,而配置是‘device=gpu’,驅動會選擇其中一個使用(一般是
安裝OpenCV
下載OpenCV
#切換路徑
cd ~/Downloads/Install-OpenCV-master/Ubuntu
#安裝OpenCV的依賴項
sudo ./dependencies.sh
- 修改opencv2_4_9.sh
- 如果不新增CUDA_GENERATION,編譯過程會失敗 參考文章
#切換路徑
cd 2.4
#修改opencv2_4_9.sh, 新增CUDA_GENERATION
#根據顯示卡支援Fermi或Kepler做相應的修改。此處以Fermi為例。
sudo gedit opencv2_4_9.sh
將以下內容
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ..
修改為:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_GENERATION=Fermi ..
即在最後的..
前面新增CUDA_GENERATION=Fermi
- 安裝最新版opencv2_4_9
#新增執行許可權
sudo chmod +x opencv2_4_9.sh
#安裝OpenCV
sudo ./opencv2_4_9.sh
等待…..,直到安裝完成。如下圖所示。
安裝其它依賴項
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 protobuf-c-compiler python-pandas
安裝glog
- Google Logging Library(glog),下載地址:https://code.google.com/p/google-glog/,然後解壓安裝:
./ configure
sudo make install
安裝caffe
下載caffe
編輯Makefile.config
unzip caffe-master.zip #本地解壓caffe-master
cd /caffe-master #切換路徑
vi Makefile.config #編輯Makefile.config
- 開始編輯Makefile.config
- 取消第5行的註釋,即將 #USE_CUDNN=1 改為 USE_CUDNN=1
- 將 BLAS=atlas 改為 BLAS=open
執行以下命令,
配置Python相關選項
- 安裝python依賴庫
cd python #切換到./caffe-master/python/路徑下
for req in $(cat requirements.txt); do sudo pip install $req; done
- 設定Python環境變數
sudo vi /etc/profile # 編輯profile檔案
#在最後面新增以下語句,注意將path換成你的系統下的路徑
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
安裝Matlab
選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁碟映像掛載器開啟”
進入裝載的虛擬光碟,拷貝全部檔案至home/Matlab 資料夾
3. 授權安裝資料夾
$ chmod a+x Matlab -R
4. 安裝
$ sudo ./install
拷貝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64
sh /usr/local/MATLAB/R2014a/bin/matlab