溫馨提醒:安裝過(guò)程請(qǐng)善待你的電腦,請(qǐng)勿亂砸鼠標(biāo)鍵盤(pán)
機(jī)器配置
- CPU:I7 4790K
- GPU:Nvidia GTX1080
- 內(nèi)存:DDR3 32G
- 主板:ASUS Z97
- 系統(tǒng):Ubuntu 14.04.5
一巷嚣、GTX1080驅(qū)動(dòng)安裝
1.1準(zhǔn)備工作
先進(jìn)主板BIOS把顯卡選項(xiàng)切換到集成顯卡(如果在安裝操作系統(tǒng)的時(shí)候找不到U盤(pán)之類(lèi)的考慮關(guān)閉安全啟動(dòng))
先用集成顯卡來(lái)顯示伟墙,桌上桌下來(lái)回竄,還好我不算太胖手素。
1.2驅(qū)動(dòng)版本選擇
如果你下了個(gè)最新版(我當(dāng)時(shí)下的是375.20)鸳址,恭喜,你掉坑里了泉懦。經(jīng)過(guò)嘗試發(fā)現(xiàn)367.44和367.27是在14.04里是比較好用的,CUDA(8.0.44)和CuDNN(v5.1)下最新版稿黍,性能好。
1.3安裝驅(qū)動(dòng)
1.3.1禁用ubuntu自帶的驅(qū)動(dòng)
開(kāi)源的并不是都好崩哩,有的也是渣巡球,nouveau就是其中之一言沐,搞掉它
新建文件
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
輸入內(nèi)容
blacklist nouveau
重啟
1.3.2用run文件安裝驅(qū)動(dòng)
按ctrl+alt+F1進(jìn)入命令行模式
sudo service lightdm stop
sudo ./NVIDIA-Linux-x86_64-367.44.run
安裝完成用通過(guò)nvidia -smi
測(cè)試是否安裝成功,然后重啟
1.3.3切換顯示
進(jìn)BIOS把顯示切回到PCIE顯示酣栈,把顯示器連到GTX1080上
補(bǔ)充:使用集顯顯示獨(dú)顯運(yùn)算的配置方法
為了支持最新的1080险胰,下最新版的驅(qū)動(dòng)和CUDA,這次安裝時(shí)用的是驅(qū)動(dòng)是378.13矿筝,CUDA是8.0.61起便,同以上禁用nouvea,關(guān)閉圖形界面窖维,安裝驅(qū)動(dòng)和CUDA榆综,注意一定不要安裝opengl庫(kù),也不要讓安裝程序配置圖形界面铸史。
sudo ./NVIDIA-Linux-x86_64-378.13.run --no-opengl-files
sudo ./cuda_8.0.61_375.26_linux.run --no-opengl-libs
二奖年、CUDA8.0+CuDNN安裝
2.1打開(kāi)Terminal運(yùn)行CUDA安裝腳本
sudo sh cuda_8.0.44_linux.run
ctrl+c跳過(guò)說(shuō)明,選擇Accept同協(xié)議
然后高能預(yù)警:一定不要裝這里面自帶的驅(qū)動(dòng)沛贪,如下
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(y)es/(n)o/(q)uit: n //是否覆蓋驅(qū)動(dòng)陋守?這是關(guān)鍵,要填n
接下來(lái)用默認(rèn)選項(xiàng)安裝就好利赋。
安裝完成后會(huì)提醒有些庫(kù)缺少水评,不用管,反正是做加速的不繪圖媚送。
2.2添加路徑
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
2.3測(cè)試CUDA是否安裝成功
通過(guò)nvcc -V測(cè)試cuda是否安裝成功中燥。
當(dāng)然也可以進(jìn)入HOME中把Nvidia提供的例子編譯一下
make all -j8
然后在bin里面好多層里找到.deviceQuery,如果能正常讀出GPU型號(hào)就ok塘偎。
Caffe推薦使用7+以上的CUDA版本疗涉,不再兼容6以下的版本。
TensorFLow如果使用已經(jīng)編譯好的包吟秩,與CUDA和CuDNN的與官方的說(shuō)明對(duì)應(yīng)咱扣。
2.4安裝CuDNN
tar xvzf cudnn-8.0-linux-x64-v5.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
三、Caffe安裝
caffe的安裝主要是按[官網(wǎng)](http://caffe.berkeleyvision.org )的步驟做的
網(wǎng)上有很多把G++版本搞到4.9或者5.0以上來(lái)編譯涵防,感覺(jué)還是比較麻煩的闹伪,直接用這個(gè)版本默認(rèn)的G++ 4.8.4編譯了,就不切G++的版本了
3.1依賴(lài)庫(kù)安裝
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install python-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
3.2安裝Anaconda2
Anaconda2集成了科學(xué)計(jì)算等常用的包壮池,用起來(lái)很方便偏瓤,而且用Anaconda2安裝Theano和TensorFlow都很方便,所以就使用Anacoda2作caffe的python支持了椰憋,如果不需要用caffe的python接口厅克,pycaffe可以不編譯。習(xí)慣了python 2.7橙依,所以使用python 2.7 version的64位Linux安裝包证舟,下載好以后安裝
bash Anaconda2-4.2.0-Linux-x86_64.sh
安裝過(guò)程中會(huì)問(wèn)要不要把 Anaconda2添加到.bashrc中硕旗,果斷選擇添加,就算以后不需要了注釋掉就好了褪储,總比自己寫(xiě)要方便卵渴。
3.3編譯caffe
3.3.1下載caffe
cd ~
git clone https://github.com/BVLC/caffe.git
3.3.2修改編譯設(shè)置
cd ~/caffe
cp Makefile.config.example Makefile.config
然后修改Makefile.config
使用CuDNN慧域,取消注釋
USE_CUDNN := 1
python接口的配置鲤竹,改成用Anaconda的
# We need to be able to find Python.h and numpy/arrayobject.h.
# PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
ANACONDA_HOME := $(HOME)/anaconda2 #改成自己安裝Anaconda的地址
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
python依賴(lài)庫(kù)
# We need to be able to find libpythonX.X.so or .dylib.
# PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib
python層
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1
3.3.3make caffe
保存后make一下,然后測(cè)試
make all -j8
make test -j8
make runtest -j8
有時(shí)會(huì)報(bào)錯(cuò)昔榴,好像是用得線(xiàn)程太多有搞不清楚的錯(cuò)誤辛藻,可以適當(dāng)減少線(xiàn)程數(shù)
沒(méi)有問(wèn)題看到passed
3.3.4測(cè)試Caffe
用mnist數(shù)據(jù)集測(cè)試一下,caffe給了mnist的demo
cd ~/caffe
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
10s多一點(diǎn)就完成了10000次迭代互订,精度達(dá)到了99.17%
可見(jiàn)老黃家的CUDA和CuDNN優(yōu)化得確實(shí)是越來(lái)越強(qiáng)了吱肌,感覺(jué)比之前用的快了不少
3.3.5編譯pycaffe
最后make一下caffe在python中的模塊
make pycaffe -j8
在環(huán)境變量中添加自己的路徑
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
然后試一下
python
import caffe
能正常導(dǎo)入就沒(méi)有問(wèn)題了。
四仰禽、Theano安裝
安裝了anaconda2后安裝theano非常方便氮墨,安裝完以后再配置一下就可以用了
4.1安裝Theano
conda install theano
4.2配置Theano
建立Theano配置文件
cd ~
vim ./bashrc
內(nèi)容如下
[global]
floatX=float32
device=gpu
optimizer_including=cudnn
[cuda]
root=/usr/lib/nvidia-cuda-toolkit
[nvcc]
flags=-D_FORCE_INLINES
3.3Theano GPU測(cè)試
測(cè)試代碼:
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 range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (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')
有提醒CuDNN的版本太新,Theano版本沒(méi)有跟上吐葵,不過(guò)好像也沒(méi)有什么問(wèn)題,強(qiáng)癥受不了就換成CuDNN v5
更多說(shuō)明參見(jiàn)here
Theano+Keras不同配置對(duì)比
有人對(duì)三種配置的Theano做了對(duì)比
- Theano+CPU
- Theano+GPU
- Theano+GPU+CuDNN
配置文件按自己的需要可以修改规揪,這個(gè)很方便,Theano用起來(lái)確實(shí)很靈活
有空的時(shí)候看看使用Theano做后端的Keras
TensorFlow安裝
待更新
Keras
待看
Trouble shooting
安裝過(guò)程中遇到的坑温峭,慢慢填猛铅,記住的是找了一下才能搞定的坑,安裝過(guò)程中還會(huì)遇到大大小小各種各樣的坑凤藏,配環(huán)境就是一步步走過(guò)月球表面奸忽,隨手能改好的就沒(méi)記了
坑1
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory # include <pyconfig.h>
查看Makefile.config文件,發(fā)現(xiàn)是有兩行代碼沒(méi)有取消注釋
#Anaconda Python distribution is quite popular. Include path:
#erify anaconda location, sometimes it's in root.
ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
坑2
.build_release/tools/caffe: error while loading shared libraries: libhdf5_hl.so.10: cannot open shared object file: No such file or directory
anaconda2里面是有l(wèi)ibhdf5_hl.so.10的揖庄,看了一下是庫(kù)的路徑?jīng)]有設(shè)置好栗菜,
在.bashrc中設(shè)置路徑
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/anaconda2/lib"
坑3
編譯完pycaffe后import失敗
>>> import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named caffe
>>> exit()
這是沒(méi)有添加pycaffe所在的路徑,增加路徑如3.3.5所述
坑4
import theano時(shí)提示沒(méi)有protobuf
ImportError: No module named google.protobuf.internal
安裝protobuf
conda install -c https://conda.anaconda.org/anaconda protobuf
參考博文和Nivida蹄梢、Caffe官方網(wǎng)站
[1]http://blog.csdn.net/i_better/article/details/52812825
[2]http://blog.csdn.net/hjimce/article/details/51999566
[3]http://blog.csdn.net/tangwenbo124/article/details/52298194
[4]http://www.cnblogs.com/zklidd/p/5020915.html