Caffe的核心程序是用C++實(shí)現(xiàn)的,并提供了Python和Matlab的接口,也就是說(shuō)你可以在python和matlab中調(diào)用caffe訓(xùn)練好的模型。并且caffe支持cpu和gpu的無(wú)縫切換,這一點(diǎn)在現(xiàn)在的大數(shù)據(jù)時(shí)代顯得尤為重要。目前搞深度學(xué)習(xí)的人大部分都是在gpu上跑程序的,一個(gè)ImageNet數(shù)據(jù)集有上千萬(wàn)張圖片,加上深度學(xué)習(xí)使用的模型層數(shù)又比較多,跑一個(gè)程序所花費(fèi)的時(shí)間都是以天為單位計(jì)算的,若在cpu上跑,可能需要一周的時(shí)間,但在gpu上可能只需兩三天就好了。
但是對(duì)于我們這些正常人來(lái)說(shuō),如果讓我們?cè)趃pu上進(jìn)行編程,恐怕都要傻眼了,這時(shí)caffe就提供了一個(gè)便捷的方式,可以讓你忽略cpu和gpu的差別,僅僅一個(gè)參數(shù)就可以讓你的模型在cpu和gpu之間自由切換,大大提升了各位童鞋‘發(fā)論文’的速度。(還有一個(gè)python工具包也可以讓你方便的在cpu和gpu之間進(jìn)行切換,那就是Theano了,本人最初正是因?yàn)橹挥衟ython工具包才有支持gpu編程的功能,所以才棄matlab從python的)
功能特色:
Caffe的設(shè)計(jì)考慮了以下幾個(gè)方面:
1、表示:模型和優(yōu)化以純文本的模式定義,而不是以代碼模式;
2、速度:運(yùn)算速度對(duì)于最先進(jìn)模型和海量數(shù)據(jù)是至關(guān)重要的;
3、模塊化:新的任務(wù)和配置要求框架具有靈活性和擴(kuò)展性;
4、開(kāi)放性:科研和應(yīng)用過(guò)程需要公共的代碼、可參考的模型和可再現(xiàn)性;
5、社區(qū):通過(guò)共同討論和具體協(xié)議共同開(kāi)發(fā)這個(gè)項(xiàng)目,學(xué)術(shù)研究、起步階段的原型和工業(yè)應(yīng)用可以共享各自的力量。
擁有以上諸多優(yōu)勢(shì),經(jīng)過(guò)兩年多的版本迭代,Caffe框架已經(jīng)在學(xué)術(shù)界和工業(yè)界得到了廣泛的認(rèn)可。
那么是什么原因促使caffe的運(yùn)行速度比其它深度學(xué)習(xí)框架的運(yùn)行速度快呢?個(gè)人認(rèn)為有以下幾點(diǎn):
1、數(shù)據(jù)存儲(chǔ):
Caffe生成的數(shù)據(jù)分為2種格式:Lmdb和Leveldb
它們都是鍵/值對(duì)嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)編程庫(kù)。
雖然lmdb的內(nèi)存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允許多種訓(xùn)練模型同時(shí)讀取同一組數(shù)據(jù)集。
因此lmdb取代了leveldb成為Caffe默認(rèn)的數(shù)據(jù)集生成格式。(這點(diǎn)得吐槽下了,沒(méi)空的自行跳過(guò)此段。之前用的是實(shí)驗(yàn)室服務(wù)器上安裝的老版本的caffe,在運(yùn)行MNIST和CIFAR-10的例子時(shí),caffe官網(wǎng)教程上的還是生成*_leveldb格式的數(shù)據(jù),但當(dāng)我?guī)滋旌笈躀mageNet實(shí)例時(shí),提示我找不到$CAFFE_ROOT/build/tools/目錄下的caffe文件,后來(lái)還是通過(guò)和網(wǎng)友的tools目錄下的文件對(duì)比才發(fā)現(xiàn),編譯后生成的老版本的caffe比新版的少了一堆東西,只好重新編譯新版本,編譯過(guò)程中發(fā)現(xiàn)缺少lmdb,查資料才發(fā)現(xiàn),caffe已經(jīng)用lmdb取代了leveldb,而返回去看之前的MNIST和CIFAR-10實(shí)例教程,發(fā)現(xiàn)教程上也已經(jīng)將leveldb的部分改成lmdb了。唉~,這更新速度也忒快了吧,還是提醒各位及時(shí)升級(jí),有問(wèn)題多看幾遍官網(wǎng)教程)
2、數(shù)據(jù)傳輸
當(dāng)數(shù)據(jù)在前向后向傳輸時(shí),caffe采用blobs的形式對(duì)數(shù)據(jù)進(jìn)行傳遞或處理,它是該框架采用的標(biāo)準(zhǔn)的存儲(chǔ)接口。下面是百度百科上對(duì)blob的一段解釋?zhuān)築LOB (binary large object),二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。在計(jì)算機(jī)中,BLOB常常是數(shù)據(jù)庫(kù)中用來(lái)存儲(chǔ)二進(jìn)制文件的字段類(lèi)型。BLOB是一個(gè)大文件,典型的BLOB是一張圖片或一個(gè)聲音文件,由于它們的尺寸,必須使用特殊的方式來(lái)處理(例如:上傳、下載或者存放到一個(gè)數(shù)據(jù)庫(kù),caffe中的lmdb或leveldb)
在caffe中,blob是一個(gè)四位數(shù)組,不過(guò)在不同的場(chǎng)合,各維表示的意義不同
對(duì)于數(shù)據(jù):Number*Channel*Height*Width
對(duì)于卷積權(quán)重:Output*Input*Height*Width
對(duì)于卷積偏置:Output*1*1*1
3、其它
c++的運(yùn)行效率就不用多說(shuō)了,暫時(shí)這些吧,如有新內(nèi)容再補(bǔ)充了,也歡迎大家來(lái)補(bǔ)充……
介紹完caffe了,接下來(lái)就該安裝caffe跑跑實(shí)例看看效果了
不過(guò)先說(shuō)明下,本系列caffe學(xué)習(xí)筆記中,不涉及caffe的安裝部分,如有此需求請(qǐng)移步他處。我用的是實(shí)驗(yàn)室的服務(wù)器,caffe是別人裝的,本人沒(méi)有root權(quán)限沒(méi)有實(shí)際安裝過(guò),所以安裝部分就無(wú)從奉告了~
CAFFE系統(tǒng)配置:
1、硬件配置
參數(shù)規(guī)格
CPU 架構(gòu)x86_64
系統(tǒng)內(nèi)存8-32GB
CPU1
GPU 型號(hào)NVIDIA TITAN X
GPU1-2
2、服務(wù)器
參數(shù)規(guī)格
CPU 架構(gòu)x86_64
系統(tǒng)內(nèi)存32 GB
每節(jié)點(diǎn)的 CPU 數(shù)目1-2
GPU 型號(hào)
Tesla M40
Tesla P100
每節(jié)點(diǎn)的 GPU 數(shù)目1-4
3、軟件配置
參數(shù)版本
操作系統(tǒng)Ubuntu 14.04
GPU 驅(qū)動(dòng)程序367.27 或更新版本
CUDA 工具包8.0
cuDNN 庫(kù)v5.1
如何下載并安裝Caffe
Caffe在更新的 NVIDIA Pascal GPU 上運(yùn)行的速度最高可提高65%,并能夠跨單個(gè)節(jié)點(diǎn)中的多個(gè) GPU 進(jìn)行擴(kuò)展。如今,您訓(xùn)練模型的時(shí)間可以從幾天縮短到幾個(gè)小時(shí)。
第1步:安裝 CUDA
要結(jié)合使用 Caffe 和 NVIDIA GPU,步要安裝CUDA 工具包。
第2步:安裝 cuDNN
安裝 CUDA 工具包后,下載適用于 Linux 的cuDNN v5.1 庫(kù)(請(qǐng)注意,您將需要注冊(cè)加速計(jì)算開(kāi)發(fā)人員計(jì)劃)。
下載后,解壓縮文件并將其復(fù)制到 CUDA 工具包目錄(此處假設(shè)在 /usr/local/cuda/ 中):
$ sudo tar -xvf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
第 3 步:安裝依賴(lài)項(xiàng)
Caffe依賴(lài)于多個(gè)庫(kù),您應(yīng)該從您系統(tǒng)的數(shù)據(jù)包管理器獲得這些庫(kù)。
在 Ubuntu 14.04 中,將使用以下命令安裝必要的庫(kù):
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev git
$ sudo apt-get install --no-install-recommends libboost-all-dev
第4步:安裝 NCCL
在多個(gè) GPU 上運(yùn)行 Caffe 需要使用 NVIDIA NCCL??墒褂靡韵旅畎惭b NCCL:
$ git clone
$ cd nccl
$ sudo make install -j4
NCCL 庫(kù)和文件頭將安裝在 /usr/local/lib 和 /usr/local/include 中。
第5步:安裝 Caffe
我們建議安裝 NVIDIA 發(fā)布的新版 Caffe,請(qǐng)?jiān)L問(wèn)獲取新版本。截至發(fā)稿時(shí),超級(jí)新版本為 0.15.9。
$ wget
$ tar -zxf v0.15.9.tar.gz
$ cd caffe-0.15.9
$ cp Makefile.config.example Makefile.config
在文本編輯器中打開(kāi)新創(chuàng)建的 Makefile.config,然后進(jìn)行以下更改:
取消對(duì)行 USE_CUDNN := 1 的注釋。這可以啟用 cuDNN 加速。
取消對(duì)行 USE_NCCL := 1 的注釋。這可以啟用在多個(gè) GPU 上運(yùn)行 Caffe 所需的 NCCL。
保存并關(guān)閉文件?,F(xiàn)在,您可以編譯 Caffe 了。
$ make all -j4
完成此命令后,您會(huì)在 build/tools/caffe 中獲得 Caffe 二進(jìn)制文件。
準(zhǔn)備圖像數(shù)據(jù)庫(kù)
測(cè)試 Caffe 的訓(xùn)練性能需要使用圖像數(shù)據(jù)庫(kù)作為輸入資源。Caffe 自帶多個(gè)模型,可使用來(lái)自 ILSVRC12 挑戰(zhàn)賽(“ImageNet”)的圖像。原始圖像文件可從 下載(您將需要開(kāi)通帳戶(hù)并同意其條款)。下載原始圖像文件并解壓到您的系統(tǒng)中后,請(qǐng)繼續(xù)執(zhí)行以下步驟。假設(shè)原始圖像以如下方式存儲(chǔ)在您的磁盤(pán)中:
/path/to/imagenet/train/n01440764/n01440764_10026.JPEG
/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG
第 6 步:下載輔助數(shù)據(jù)
$ ./data/ilsvrc12/get_ilsvrc_aux.sh
第 7 步:創(chuàng)建數(shù)據(jù)庫(kù)在文本編輯器中打開(kāi)文件 examples/imagenet/create_imagenet.sh,然后進(jìn)行以下更改:
將變量 TRAIN_DATA_ROOT 和 VAL_DATA_ROOT 更改為您解壓原始圖像的路徑。設(shè)置 RESIZE=true 以便在將圖像添加到數(shù)據(jù)庫(kù)之前將其調(diào)整到適當(dāng)大小。
保存并關(guān)閉文件?,F(xiàn)在,您可以使用以下命令創(chuàng)建圖像數(shù)據(jù)庫(kù)了:$ ./examples/imagenet/create_imagenet.sh
然后,使用以下命令創(chuàng)建所需的圖像均值文件:
$ ./examples/imagenet/make_imagenet_mean.sh
- 下載地址
發(fā)表評(píng)論
0條評(píng)論軟件排行榜
- 1RedisInsight官方版 v2.44
- 2jdk17官方版 附安裝教程
- 3Java SE Development Kit(JDK)7.0官方正式版 32位&64位
- 4python最新版本 v3.13.1
- 5virtual serial ports driver虛擬串口調(diào)試工具 v11.0.1047.0官方版
- 6研華汽車(chē)數(shù)碼大師3 v1.7.2312.26官方版
- 7NotepadNext官方版 v0.8綠色版
- 8vnote(Markdown筆記軟件) v3.18.0官方版
- 9VBA for WPS v7.0
- 10matplotlib 2D繪圖數(shù)據(jù)庫(kù) v3.8.3官方版
熱門(mén)推薦
- python最新版本 v3.13.127.08M / 簡(jiǎn)體中文
- dotCover 2024官方版 v2024.2.549.78M / 多國(guó)語(yǔ)言
- 微軟visual c++運(yùn)行庫(kù)合集包 v3.0.22.0317官方版85.82M / 簡(jiǎn)體中文
- dwin dgus(開(kāi)發(fā)配置工具) v5.04官方版6.87M / 簡(jiǎn)體中文
- RegEx Tester(正則表達(dá)式調(diào)試工具) v3.2.0.0綠色版26K / 英文
- Report Builder v3.0官方版32.16M / 簡(jiǎn)體中文
- Convert.NET(代碼翻譯器) v8.4.6675.71官方版4.48M / 多國(guó)語(yǔ)言[中文]
- msys2(類(lèi)Linux開(kāi)發(fā)環(huán)境) v2016.10.25官方版100.11M / 簡(jiǎn)體中文
- node.js安裝包 v18.12.127.76M / 簡(jiǎn)體中文
- APKSign(APK簽名工具) v1.0官方版292K / 簡(jiǎn)體中文