Ubuntu14.04.5+CUDA8.0+Caffe+Theano+TensorFlow+Keras安裝記錄

溫馨提醒:安裝過(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苛萎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子检号,更是在濱河造成了極大的恐慌腌歉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐苛,死亡現(xiàn)場(chǎng)離奇詭異翘盖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)凹蜂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)馍驯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阁危,“玉大人,你說(shuō)我怎么就攤上這事汰瘫】翊颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵混弥,是天一觀(guān)的道長(zhǎng)趴乡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蝗拿,這世上最難降的妖魔是什么晾捏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮哀托,結(jié)果婚禮上惦辛,老公的妹妹穿的比我還像新娘。我一直安慰自己仓手,他們只是感情好胖齐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嗽冒,像睡著了一般呀伙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辛慰,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天区匠,我揣著相機(jī)與錄音,去河邊找鬼帅腌。 笑死驰弄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的速客。 我是一名探鬼主播戚篙,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼溺职!你這毒婦竟也來(lái)了岔擂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浪耘,失蹤者是張志新(化名)和其女友劉穎乱灵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體七冲,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痛倚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澜躺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝉稳。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抒蚜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耘戚,到底是詐尸還是另有隱情嗡髓,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布收津,位于F島的核電站饿这,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏朋截。R本人自食惡果不足惜蛹稍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一吧黄、第九天 我趴在偏房一處隱蔽的房頂上張望部服。 院中可真熱鬧,春花似錦拗慨、人聲如沸廓八。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剧蹂。三九已至,卻和暖如春烦却,著一層夾襖步出監(jiān)牢的瞬間宠叼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工其爵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冒冬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓摩渺,卻偏偏與公主長(zhǎng)得像简烤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摇幻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容