一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

EC2上的深度學(xué)習(xí):CUDA 7/cuDNN/caffe/DIGITS實(shí)戰(zhàn)教程

 haosunzhe 2015-05-14

本教程將演示如何在一個g2.2xlarge EC2實(shí)例(運(yùn)行64位的Ubuntu14.04)中設(shè)置CUDA7、cuDNN、caffe和DIGITS,以及如何快速上手DIGITS。為了說明DIGITS的應(yīng)用,本教程使用一個當(dāng)前的 Kaggle競賽項(xiàng)目作為案例進(jìn)行演示, 是關(guān)于糖尿病視網(wǎng)膜病變檢測的,其狀態(tài)來自于熒光血管造影。

圖像分類的卷積深度神經(jīng)網(wǎng)絡(luò)(DNN)

對于圖像的分類或回歸,你有兩種選擇:

  • 特征工程及把圖像轉(zhuǎn)換為向量;

  • 依賴于一個卷積DNN求出特征。

深度神經(jīng)網(wǎng)絡(luò)對計(jì)算的要求相當(dāng)苛刻。這是由兩個原因造成的:

  • 即使你使用一個很小的圖像分辨率,輸入數(shù)據(jù)也大得多,256×256的RGB像素意味著196608個輸入神經(jīng)元(256×256×3)。而如果你要使你的特征工程智能一些,那么1000個神經(jīng)元已經(jīng)是一個很大的數(shù)量了;

  • 讓網(wǎng)絡(luò)有計(jì)算出相關(guān)特征也需要一個更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)和更多層。

幸運(yùn)的是,許多浮點(diǎn)矩陣的運(yùn)算都被顯卡的GPU無意中解決。

NVIDIA DIGITS和caffe

利用GPU支持深度學(xué)習(xí)的主流框架目前有三個,包括Theano、Torch和caffe。 NVIDIA DIGITS則是一個網(wǎng)絡(luò)服務(wù)器,它提供了一個方便的網(wǎng)絡(luò)接口,用于訓(xùn)練和測試基于caffe的深度神經(jīng)網(wǎng)絡(luò)。我打算在以后的文章中涵蓋如何使用caffe工作。在這里,我會告訴你如何設(shè)置CUDA。

首先你需要一個AWS賬號和g2.2xlarge實(shí)例啟動和運(yùn)行,并確保為你的IP的5000端口添加入站規(guī)則——這是DIGITS服務(wù)器的需要。

# don't forget to get your system up to date
sudo apt-get update
sudo apt-get dist-upgrade

安裝CUDA7

這一步的主要來源是 Markus Beissinger關(guān)于建立Theano的博客文章。

  1. # installation of required tools

  2. sudo apt-get install -y gcc g++ gfortran build-essential \

  3. git wget linux-image-generic libopenblas-dev python-dev \

  4. python-pip python-nose python-numpy python-scipy

  5. # downloading the (currently) most recent version of CUDA 7

  6. sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

  7. # installing CUDA

  8. sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

  9. sudo apt-get update

  10. sudo apt-get install cuda

  11. # setting the environment variables so CUDA will be found

  12. echo -e "\nexport PATH=/usr/local/cuda/bin:$PATH" >> .bashrc

  13. echo -e "\nexport LD_LIBRARY_PATH=/usr/local/cuda/lib64" >> .bashrc

  14. sudo reboot

  15. # installing the samples and checking the GPU

  16. cuda-install-samples-7.0.sh ~/

  17. cd NVIDIA\_CUDA-7.0\_Samples/1\_Utilities/deviceQuery

  18. make

  19. ./deviceQuery

安裝cuDNN

要進(jìn)一步加快深度學(xué)習(xí)相關(guān)的計(jì)算,安裝cuDNN庫是一個好主意。為了這個目的,你將需要注冊一個NVIDIA開發(fā)者賬戶,并加入CUDA注冊開發(fā)者計(jì)劃。最后一步需要NVIDIA解鎖你的帳戶,這可能需要一兩天。但你也可以在沒有cuDNN庫的情況下開始。只要你得到他們的允許—— 下載cuDNN并把它上傳到您的實(shí)例。

  1. # unpack the library

  2. gzip -d cudnn-6.5-linux-x64-v2.tar.gz

  3. tar xf cudnn-6.5-linux-x64-v2.tar

  4. # copy the library files into CUDA's include and lib folders

  5. sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda-7.0/include

  6. sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda-7.0/lib64

安裝caffe

caffe及DIGITS的安裝步驟主要來源于 DIGITS項(xiàng)目的自述文件。

  1. sudo apt-get install libprotobuf-dev libleveldb-dev \

  2. libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev \

  3. libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler \

  4. libatlas-base-dev

  5. # the version number of the required branch might change

  6. # consult https://github.com/NVIDIA/DIGITS/blob/master/README.md

  7. git clone --branch v0.11.0 https://github.com/NVIDIA/caffe.git

  8. cd ~/caffe/python

  9. for req in $(cat requirements.txt); do sudo pip install $req; done

  10. cd ~/caffe

  11. cp Makefile.config.example Makefile.config

  12. # check that USE_CUDNN is set to 1 in case you would

  13. # like to use it and to 0 if not

  14. make all

  15. make py

  16. make test

  17. make runtest

  18. echo -e "\nexport CAFFE_HOME=/home/ubuntu/caffe" >> ~/.bashrc

  19. # load the new environmental variables

  20. bash

安裝DIGITS

  1. cd ~

  2. git clone https://github.com/NVIDIA/DIGITS.git digits

  3. cd digits

  4. sudo apt-get install graphviz gunicorn

  5. for req in $(cat requirements.txt); do sudo pip install $req; done

啟動和配置DIGITS

DIGITS在第一次啟動時會問你一些關(guān)于配置目的的問題。這些設(shè)置是非常直白,并且可以事后在~/.digits/digits.cfg中更改。你可能要考慮在一個EBS上定位你的工作目錄(jobs_dir)——在我的例子中,大約140,000 張PNG圖像數(shù)據(jù)集,消耗大約10 GB的空間,訓(xùn)練模型(含所有的模型快照)約占1 GB。

  1. # change into your digits directory

  2. cd digits

  3. # start the server

  4. ./digits-devserver

DIGITS故障排除

當(dāng)你第一次啟動DIGITS時,你可能會遇到一些錯誤和警告。以下是我的情況。

  1. "libdc1394 error: Failed to initialize libdc1394"

  2. # no big deal - either ignore or treat symptomatically

  3. sudo ln /dev/null /dev/raw1394


  1. "Gtk-WARNING **: Locale not supported by C library."

  2. # not sure how serious this is - but it is easy to resolve

  3. sudo apt-get install language-pack-en-base

  4. sudo dpkg-reconfigure locales

  5. # check what locales are available and then ...

  6. locale -a

  7. # ... set LC_ALL to it

  8. echo -e "\nexport LC_ALL=\"en_US.utf8\"" >> ~/.bashrc


  1. "Gdk-CRITICAL **: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed"

  2. # this is a big deal and will cause the server start up to fail:

  3. # connect with ssh flags -Xi

  4. ssh -Xi ...


  1. "Couldn't import dot_parser, loading of dot files will not be possible."

  2. # reinstall pyparsing:

  3. sudo pip uninstall pyparsing

  4. sudo pip install pyparsing==1.5.7

  5. sudo pip install pydot

DIGITS入門

首先,你必須在想要訓(xùn)練的模型上創(chuàng)建一個數(shù)據(jù)集。你必須提供至少一個大的圖片數(shù)據(jù)集用于訓(xùn)練并且任選兩個較小的數(shù)據(jù)集進(jìn)行驗(yàn)證和測試。你可以通過不同的文件夾的意思分離這些數(shù)據(jù)集(及它們正確的標(biāo)簽),或者通過提供相應(yīng)的CSV。這些CSV中都應(yīng)該具有兩個未命名的制表符分隔列。第一列保證圖像的完整路徑(home不要使用~,要使用它的實(shí)際路徑),第二列保證基于0的索引引用正確的類。你還需要提供一個文本文件持有不同的類別——每行一個。


例如,如果你有兩個類“POS”(行1)和“NEG”(行2)——那么一個屬于“POS”類的圖像必須有與之相關(guān)聯(lián)的類索引0。加載可能需要一段時間。我加載140,000個PNG的256×256分辨率的圖像歷時約一小時。

設(shè)置目標(biāo)訓(xùn)練模型會很容易,倘若你堅(jiān)持使用默認(rèn)建議——你只需要選擇要使用的數(shù)據(jù)集、網(wǎng)絡(luò)就可以了。在描述的數(shù)據(jù)集上訓(xùn)練一個30 epochs的 GoogLeNet大約花一天又6小時。所以你需要確保以下兩點(diǎn):

  • 對于Spot實(shí)例的出價不能太低——否則你會有被終止的風(fēng)險;

  • 在tmux session上啟動服務(wù)器。否則,如果連接中斷(也許因?yàn)槟愕腎P在一夜之間改變了),服務(wù)器進(jìn)程將會被殺死。

應(yīng)對糖尿病性視網(wǎng)膜病變的Kaggle挑戰(zhàn)

所提供的訓(xùn)練集由約35,000個高分辨率的圖像組成——壓縮和拆分成五個文件。所有ZIP壓縮包大小約33 GB。我用lynx直接下載五個壓縮包到一個EBS中——因?yàn)槟憧梢远ㄆ诘卿洸酉螺d。順便說一下,g2.2xlarge實(shí)例的下載速度是令人難以置信——你被授予最高100MB/秒的速度。我同時開始所有的五個下載任務(wù),每個下載任務(wù)的速度是6MB/秒。準(zhǔn)確地說,是兆字節(jié)(mega byte),而不是兆比特(mega bit——DSL提供商使用的單位)。

糖尿病性視網(wǎng)膜病變的可見指標(biāo),按照我的理解主要是泄漏(瘤)和病理上不斷增長的血管。我認(rèn)為,這些特征像具有相似性且旋轉(zhuǎn)不變。因此,為了增加可用訓(xùn)練集我創(chuàng)建了四個版本:

  • (A):調(diào)整為256×256像素并保存為PNG;

  • (R):(A)的180度旋轉(zhuǎn);

  • (A)的垂直鏡像;

  • (R)的垂直鏡像。

因?yàn)槭诸^的任務(wù)顯然不是一個分類而是一個回歸,我放棄嘗試學(xué)習(xí)一個分類為無DR和DR的四個階段。我標(biāo)記所有DR的情況為“積極”,無DR情況為“消極”。這都會被執(zhí)行于所有四個可能的分割({0} VS {1,…,4},…,{0,…,3},{4}),這些預(yù)測最后會相對實(shí)際階段回歸。

這一變換的bash腳本,你都可以在相應(yīng)的 bash命令行上找到。

結(jié)果

一方面我本來希望看到一個更高的精度——在另一方面,我勉強(qiáng)可以(如果有的話)做出在一些健康的情況下和在有些極端的第四階段情況下之間的差異。以73.95%為消極的情況下的比例——這也是網(wǎng)絡(luò)精度的起點(diǎn)。經(jīng)過30 epochs,它提高約8個百分點(diǎn),達(dá)到81.8%。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91人妻丝袜一区二区三区| 少妇被粗大进猛进出处故事| 日韩精品一区二区亚洲| 欧美丰满大屁股一区二区三区| 一级欧美一级欧美在线播| 日韩人妻中文字幕精品| 黄色在线免费高清观看| 熟女体下毛荫荫黑森林自拍| 可以在线看的欧美黄片| 99久久精品午夜一区| 中文字幕久久精品亚洲乱码| 微拍一区二区三区福利| 国产女优视频一区二区| 视频在线观看色一区二区| 国产男女激情在线视频| 在线欧洲免费无线码二区免费 | 十八禁日本一区二区三区| 日韩欧美精品一区二区三区| 国产精品欧美一区两区| 欧美夫妻性生活一区二区| 国产一区二区三区口爆在线| 欧美国产精品区一区二区三区| 视频一区中文字幕日韩| 热情的邻居在线中文字幕| 在线播放欧美精品一区| 中国美女草逼一级黄片视频| 精品欧美日韩一区二区三区| 99久久精品国产日本| 无套内射美女视频免费在线观看| 精品日韩欧美一区久久| 男女一进一出午夜视频| 亚洲综合一区二区三区在线| 欧美一区二区三区在线播放| 亚洲一区二区三区精选| 国产目拍亚洲精品区一区| 国产精品日本女优在线观看| 国产内射一级一片内射高清视频 | 久久久精品日韩欧美丰满| 欧美人妻少妇精品久久性色| 少妇肥臀一区二区三区| 成人精品一区二区三区在线|