深度学习之caffe1——软件配置与测试
caffe的編譯配置真的是很讓人頭疼啊,不知道試過(guò)多少次了~~~
重裝系統(tǒng)了七八次,搞得Linux的一些常用命令倒是很熟悉了~~~
我有潔癖~~~某一個(gè)點(diǎn)上出了錯(cuò),我一定要把它搞好了,再重新來(lái)一次,我怕會(huì)因?yàn)槟骋稽c(diǎn)的小錯(cuò)誤會(huì)影響到其它重要的地方。。。(有同感的默默在心里舉個(gè)爪~~~^_^~~~)
又折騰了好幾次,參考了很多的博客,總結(jié)出一整套的安裝配置流程!
開始:
?
0、先行設(shè)置系統(tǒng)軟件源更新,以及目錄設(shè)置- 網(wǎng)絡(luò)無(wú)問(wèn)題即可,不用太糾結(jié)
- 需要更換默認(rèn)的驅(qū)動(dòng)和安裝CUDA,但是如果你的cuda的計(jì)算能力達(dá)不到3.0及以上,請(qǐng)?zhí)^(guò)本部分。
驅(qū)動(dòng)安裝過(guò)程中可能會(huì)出現(xiàn)問(wèn)題:the nouveao kernel driver未禁用的錯(cuò)誤。
sudo gedit /etc/modprobe.d/blacklist.conf
在最后加上兩行:
然后執(zhí)行:
sudo update-initramfs -u
reboot重啟即可。重啟后會(huì)發(fā)現(xiàn)字體變大了。
即是初始驅(qū)動(dòng)已經(jīng)禁用了。再次重試安裝即可。
然后再在字符界面下安裝: 進(jìn)入字符界面tty1:關(guān)閉X-Window:sudo service lightdm stop,然后切換到tty1:Ctrl+Alt+F1,在純字符界面下,登陸用戶; 顯卡驅(qū)動(dòng):安裝使用 NVIDIA-Linux-x86_64-367.44.run文件 1 sudo chmod +x NVIDIA-Linux-x86_64-367.44.run2 sudo ./NVIDIA-Linux-x86_64-367.44.run 然后一路確認(rèn)即可。 CUDA安裝有兩種方式安裝,run文件和deb文件兩種,優(yōu)先使用deb,如果安裝出錯(cuò)再考慮使用run文件安裝。 deb:(這里的安裝時(shí)需要網(wǎng)絡(luò)的,即軟件源能連通) 1sudo dpkg -i cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64.deb2sudo apt-get update3sudo apt-get install cuda4sudo dpkg -i cuda-misc-headers-8-0_8.0.27.1-1_amd64.deb run: 1、sudo sh cuda_8.0.27_linux.run 然后一路按空格鍵,直到100%,其它選項(xiàng)基本選擇y即可,但是取消顯卡驅(qū)動(dòng)的安裝即可。 配置與測(cè)試: 1、聲明環(huán)境變量:
export PATH=/usr/local/cuda-8.0/bin{PATH:+:{PATH:+:{PATH}}
export CUDA_PATH=/usr/local/cuda-8.0/lib64{CUDA_PATH:+:{CUDA_PATH:+:{CUDA_PATH}}
2、設(shè)置文件:
sudo gedit /etc/profile
3、在文件末尾添加:
export PATH=/usr/local/cuda/bin:$PATH
4、創(chuàng)建鏈接文件:
sudo gedit /etc/ld.so.conf.d/cuda.conf
5、在打開的文件中添加:
/usr/local/cuda/lib64
6、最后執(zhí)行
sudo ldconfig
7、運(yùn)行測(cè)試用例
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
然后即可顯示出關(guān)于GPU的信息,則說(shuō)明安裝成功了
8、另外使用命令:nvidia-smi直接會(huì)輸出支持cuda的GPU設(shè)備列表
- 這里設(shè)置使用cudnn加速,一定注意前面說(shuō)的計(jì)算能力問(wèn)題,后面還會(huì)提到!!!
cd cuda
sudo cp ./include/cudnn.h /usr/local/cuda/include/ #復(fù)制頭文件
sudo cp ./lib64/lib* /usr/local/cuda/lib64/ #復(fù)制動(dòng)態(tài)鏈接庫(kù)
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #刪除原有動(dòng)態(tài)文件
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成軟銜接
sudo ln -s libcudnn.so.5 libcudnn.so #生成軟鏈接
查看CUDA計(jì)算容量:
sudo /usr/local/cuda/samples/bin/x86_64/linux/release/deviceQuery2.1
在caffe的Makefile.config文件中,找到并修改:
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \-gencode arch=compute_20,code=sm_21 \-gencode arch=compute_21,code=sm_21 \-gencode arch=compute_30,code=sm_30 \-gencode arch=compute_35,code=sm_35 \-gencode arch=compute_50,code=sm_50 \ -gencode arch=compute_50,code=compute_50 ? 不知道是不是有什么用處,但是據(jù)說(shuō)cudnn加速需要cuda計(jì)算能力在3.0以上才可以! 3、OpenCV安裝配置 這里使用OpenCV2.4.13,將opencv也安裝到與cuda一致的目錄下:/usr/local/opencv***- 這里需要注意opencv的版本:最好使用2.4.13,其它版本會(huì)出錯(cuò)誤!!!
注意編譯之前確保numpy已經(jīng)安裝,否則最后不會(huì)生成cv2.so
sudo apt-get install Python-numpy python3-numpy
可能會(huì)出現(xiàn)錯(cuò)誤:error:1 /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
原因是g++版本太新了,需要在CMakeLists.txt中前面幾行添加
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
然后再重新執(zhí)行2中的cmake一次即可。
linux發(fā)行版通常會(huì)把類庫(kù)的頭文件和相關(guān)的pkg-config分拆成一個(gè)單獨(dú)的xxx-dev(el)包.
以python為例, 以下情況你是需要python-dev的
你需要自己安裝一個(gè)源外的python類庫(kù), 而這個(gè)類庫(kù)內(nèi)含需要編譯的調(diào)用python api的c/c++文件
你自己寫的一個(gè)程序編譯需要鏈接libpythonXX.(a|so)
(注:以上不含使用ctypes/ffi或者裸dlsym方式直接調(diào)用libpython.so)
其他正常使用python或者通過(guò)安裝源內(nèi)的python類庫(kù)的不需要python-dev.
cython>=0.19.2
??
?numpy>=1.7.1
??
scipy>=0.13.2
??
?scikit-image>=0.9.3
??
matplotlib>=1.3.1
??
?ipython>=3.0.0
??
h5py>=2.2.0
??
?leveldb>=0.191
??
networkx>=1.8.1
??
?nose>=1.3.0
??
pandas>=0.12.0
??
?python-dateutil>=1.4,<2
??
protobuf>=2.5.0
??
?python-gflags>=2.0
??
pyyaml>=3.10
??
?Pillow>=2.3.0
??
six>=1.1.0
? 2、Matlab安裝,使用2014b版本,匹配python engine支持的版本python2.7,3.3 解壓縮到目錄matlab2014b目錄下,cd到該目錄 sudo ./install 之后即可出現(xiàn)圖形界面。 選擇離線使用安裝碼進(jìn)行安裝,序列碼:29797-39064-48306-32452 安裝目錄默認(rèn)即可,等待安裝完畢 運(yùn)行激活選擇離線激活,激活文件:license.lic 將libmwservices.so復(fù)制到 /matlab安裝目錄/R2014b/bin/glnxa64/下,替換已有文件 即可完整安裝,下面進(jìn)行Matlab engine的安裝即可。 激活選擇已破解的lic文件 替換破解文件 sudo rm /usr/local/MATLAB/R2014b/bin/glnxa64/libmwservices.so sudo cp ~/matlab2014b/crack/libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64/ 3、Matlab engine for python-
-
-
- 這里Matlab engine是非常重要的步驟
-
-
PASS: protobuf-test
PASS: protobuf-lazy-descriptor-test
PASS: protobuf-lite-test
PASS: google/protobuf/compiler/zip_output_unittest.sh
PASS: google/protobuf/io/gzip_stream_unittest.sh
=================================
Testsuite summary for Protocol Buffers 2.5.0
=================================
# TOTAL: 5
# PASS: 5
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
=================================
-
-
- 這里的Makefile設(shè)置非常重要 ?
-
CPU_ONLY := 1
USE_OPENCV := 0
USE_LEVELDB := 0
USE_LMDB := 0
USE_OPENCV := 1
USE_LEVELDB := 1
USE_LMDB := 1
CUSTOM_CXX := g++
WITH_PYTHON_LAYER := 1
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/
可能會(huì)出現(xiàn)錯(cuò)誤:Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0)
說(shuō)明GPU的加速性能不夠,CUDNN只支持CUDA Capability 3.0以上的GPU加速,所以不能使用CUDNN加速,需要在Makefile.config中注釋掉USE_CUDNN := 1
一定要注意自己GPU硬件的計(jì)算能力問(wèn)題!!!
[----------] Global test environment tear-down
[==========] 996 tests from 141 test cases ran. (45874 ms total)
[ PASSED ] 996 tests.
?
-
-
- 這里的pycaffe接口非常重要,一定要配置測(cè)試好!!!(先編譯好caffe后再進(jìn)行pycaffe接口編譯)
-
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp
touch python/caffe/proto/__init__.py
PROTOC (python) src/caffe/proto/caffe.proto
? 測(cè)試demo: 一般第一個(gè)測(cè)試都是對(duì)手寫字體minist進(jìn)行識(shí)別,主要有三個(gè)步驟:準(zhǔn)備數(shù)據(jù)、修改配置、開始使用。 1、準(zhǔn)備數(shù)據(jù) 一般是使用命令: sudo sh ./data/mnist/get_mnist.sh (大約是9.5M左右的數(shù)據(jù),需要聯(lián)網(wǎng)下載) 輸出提示:
Downloading...
--2016-10-07 23:44:11-- http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
Resolving yann.lecun.com (yann.lecun.com)... 128.122.47.89
Connecting to yann.lecun.com (yann.lecun.com)|128.122.47.89|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9912422 (9.5M) [application/x-gzip]
Saving to: ‘train-images-idx3-ubyte.gz’
train-images-idx3-ubyte.gz 100%[=====================================>] 9.45M 39.5KB/s in 2m 42s?
2016-10-07 23:46:53 (59.9 KB/s) - ‘train-images-idx3-ubyte.gz’ saved [9912422/9912422]
Creating lmdb...
I1007 23:47:04.655964 18706 db_lmdb.cpp:35] Opened lmdb examples/mnist/mnist_train_lmdb
I1007 23:47:04.656126 18706 convert_mnist_data.cpp:88] A total of 60000 items.
I1007 23:47:04.656134 18706 convert_mnist_data.cpp:89] Rows: 28 Cols: 28
I1007 23:47:09.992278 18706 convert_mnist_data.cpp:108] Processed 60000 files.
I1007 23:47:10.043660 18708 db_lmdb.cpp:35] Opened lmdb examples/mnist/mnist_test_lmdb
I1007 23:47:10.043848 18708 convert_mnist_data.cpp:88] A total of 10000 items.
I1007 23:47:10.043862 18708 convert_mnist_data.cpp:89] Rows: 28 Cols: 28
I1007 23:47:10.859005 18708 convert_mnist_data.cpp:108] Processed 10000 files.
Done.
USE_LEVELDB := 1
USE_LMDB := 1 一切正常會(huì)在.\examples\mnist\ ?目錄下生成這兩個(gè)數(shù)據(jù)文件夾。
2、修改配置
修改該目錄下的prototxt擴(kuò)展名配置文件
修改./examples/mnist/lenet_solver.prototxt
定位到最后一行:solver_mode: GPU,將GPU改為CPU。?直接先使用CPU進(jìn)行測(cè)試
3、運(yùn)行
執(zhí)行文件命令: sudo sh ./examples/mnist/train_lenet.sh 輸出提示: I?1007 23:53:09.915892 18795 caffe.cpp:210] Use CPU.
I1007 23:53:09.916203 18795 solver.cpp:48] Initializing solver from parameters:?
test_iter: 100
test_interval: 500
base_lr: 0.01
display: 100
max_iter: 10000
lr_policy: "inv"
gamma: 0.0001
power: 0.75
momentum: 0.9
weight_decay: 0.0005
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: CPU
net: "examples/mnist/lenet_train_test.prototxt"
train_state {
level: 0
stage: ""
}
I1008 00:12:51.708220 18795 sgd_solver.cpp:106] Iteration 9800, lr = 0.00599102
I1008 00:13:02.717388 18795 solver.cpp:228] Iteration 9900, loss = 0.00611393
I1008 00:13:02.717483 18795 solver.cpp:244] Train net output #0: loss = 0.00611391 (* 1 = 0.00611391 loss)
I1008 00:13:02.717496 18795 sgd_solver.cpp:106] Iteration 9900, lr = 0.00596843
I1008 00:13:14.016697 18795 solver.cpp:454] Snapshotting to binary proto file examples/mnist/lenet_iter_10000.caffemodel
I1008 00:13:14.025446 18795 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/mnist/lenet_iter_10000.solverstate
I1008 00:13:14.084300 18795 solver.cpp:317] Iteration 10000, loss = 0.00241856
I1008 00:13:14.084349 18795 solver.cpp:337] Iteration 10000, Testing net (#0)
I1008 00:13:21.108484 18795 solver.cpp:404] Test net output #0: accuracy =?0.9905
I1008 00:13:21.108542 18795 solver.cpp:404] Test net output #1: loss = 0.0295916 (* 1 = 0.0295916 loss)
I1008 00:13:21.108553 18795 solver.cpp:322] Optimization Done.
I1008 00:13:21.108559 18795 caffe.cpp:254] Optimization Done.
總結(jié)
以上是生活随笔為你收集整理的深度学习之caffe1——软件配置与测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2015.08.17 Ubuntu 14
- 下一篇: 深度学习框架caffe及py-faste