1. 程式人生 > >NVIDIA DIGITS 學習筆記(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

NVIDIA DIGITS 學習筆記(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0環境配置

引言

DIGITS簡介

DIGITS: Deep Learning GPU Training System1,是由英偉達NVIDIA)公司開發的第一個互動式深度學習GPU訓練系統。目的在於整合現有的Deep Learning開發工具,實現深度神經網路(Deep Neural Network,DNN)設計、訓練和視覺化等任務變得簡單化。DIGITS是基於瀏覽器的介面,因而通過實時的網路行為的視覺化,可以快速設計最優的DNN。DIGITS是開源軟體,

可在GitHub上找到,因而開發人員可以擴充套件和自定義DIGITS。

DIGITS控制檯

DIGITS特性

  • 提供了友好的使用者介面,只需簡單的點選即完成DNNs的訓練。DIGITS是一個Web應用,用瀏覽器訪問,上圖是典型的工作流程圖。

  • DIGITS使用者介面提供了DNN優化工具。主控制檯列出了現有的資料庫和機器上可用的先前訓練好的網路模型以及正在進行的訓練活動。

  • DIGITS使視覺化網路和快速對比精度變得簡單。你選擇一個模型,DIGITS顯示訓練狀態和精度,並提供在網路訓練時或訓練完畢後加載和分類影象的選項。

  • 由於DIGITS執行在一個web伺服器上,團隊使用者可以很方便地分享資料庫和網路配置,以及測試和分享結果。

資源資訊

登陸軟體首頁,註冊後下載DIGITS(注意到註冊郵箱裡點選啟用連結),也可以下載原始碼(基於Python)安裝。

參考資料

說明

  1. 如官方所述,DIGITS現在僅支援Ubuntu,當然也在其它Linux系統上測試成功,未見有在Windows上配置的案例;
  2. DIGITS嘗試囊括更多的開源Deep Learning 框架,當前(digits-2.0)僅包括:Caffe, Torch, Theano, and BIDMach.

DIGITS安裝

安裝指導,官網說DIGITS的安裝相當方便:1)訪問digits home page註冊並下載安裝器安裝;或者2)

從GitHub上獲取原始碼安裝。實際上,對於新手來說並非如此,下面介紹採用原始碼的安裝方式。

說明1:本人將採用原始碼安裝的軟體的安裝根目錄為:/home/liu/sfw,即~/sfw,本文中記為yourpath。這樣Caffe的安裝路徑:/home/liu/sfw/caffe,DIGITS的安裝路徑:/home/liu/sfw/digits;而CUDA預設安裝根目錄為/usr/local

說明2:每個軟體的安裝方法可以檢視官網的線上幫助,也可以檢視原始碼中的文件。對於後者,多為“.md”即markdown檔案,可以安裝ReText檢視,如下圖為預覽的Caffe的“installation.md”檔案。
使用ReText檢視installation.md

軟硬體環境

硬體環境

筆記本× 1、CPU(Intel® Core™ i5-3210M CPU @ 2.50GHz × 4 )× 1、GPU(GeForce GT 635M/PCIe/SSE2 + IntelGMAHD3000)× 1。

軟體環境

環境簡介及下載連結:

作業系統安裝

DIGITS安裝前準備

採用原始碼安裝DIGITS前,事先要安裝CUDA(必須)、cuDNN(用於GPU加速,建議安裝),Caffe(執行DIGITS至少要有一個Deep Learning framework,也可以安裝Theano,這裡不介紹)。

安裝CUDA7.0(“.deb”方式)

CUDA-7.0在Linux下的安裝步驟參見官網手冊:CUDA_Getting_Started_Linux,其中提及了“.run”、“.deb”等安裝檔案的安裝方法,本人選擇”deb”包的格式,因為它比較簡單。

0.檢查你的電腦是否支援CUDA
檢查GPU是否支援:輸入如下命令,如果輸出的GPU型號是NVIDIA的,並且在此http://developer.nvidia.com/cuda-gpus列表內,則支援。

lspci | grep -i nvidia

1.下載安裝檔案:可以直接訪問上面給出的官網連結下載,也可以在終端視窗輸入如下命令下載。

# downloading the (currently) most recent version of CUDA 7
sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0.28_amd64.deb

2.安裝依賴工具:需要連網。

# installation of required tools
sudo apt-get install -y gcc g++ gfortran build-essential \
  git wget linux-image-generic libopenblas-dev python-dev \
  python-pip python-nose python-numpy python-scipy

3.安裝CUDA

# installing CUDA
sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb

sudo apt-get update
sudo apt-get install cuda

4.設定環境變數

注意:此環境變數為64位系統下的,32位的把lib64改成lib即可。

方式1,僅修改使用者變數

# setting the environment variables so CUDA will be found

echo "\nexport PATH=/usr/local/cuda-7.0/bin:$PATH" >> ~/.bashrc
echo "\nexport LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc

方式2,修改所有使用者變數
先使用sudo gedit /etc/profile開啟“profile”檔案,或者sudo gedit ~/.bashrc開啟“./bashrc”檔案,然後在開啟的檔案的末尾新增如下程式碼並儲存

# setting the environment variables so CUDA will be found
# After open profile, Add follow code at the end of file
export PATH=/usr/local/cuda-7.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH

5.載入新的環境變數:新增好環境變數後,需要載入新的環境變數,才能應用於系統。

載入更新環境變數source ~/.bashrc(方式1),source /etc/profilesource ~/.bashrc(方式2)。

=====重啟系統!重啟系統!重啟系統!=======

sudo reboot

6.安裝samples並檢查CPU:samples被預設安裝在/home/liu下:

# installing the samples and checking the GPU

cuda-install-samples-7.0.sh ~/
cd NVIDIA_CUDA-7.0_Samples/1_Utilities/deviceQuery
make  
./deviceQuery

執行完./deviceQuery命令,終端輸出如下類似資訊,有GPU型號、驅動版本和執行版本、計算能力……諸多資訊:
GPU裝置資訊

至此CUDA安裝成功。

顯示卡切換

如果你用的是具有雙顯示卡的PC機,比如本人的Intel整合顯示卡+NVIDIA的獨立顯示卡,可以使用nvidia-prime來切換使用哪個顯示卡。雙擊/usr/share/applications/NVIDIA X Server Settings啟動NVIDIA X Server 設定,如下圖,但不像網上說的有nvidia-prime那一項:
NVIDIA X Server Settings

於是自己安裝NVIDIA-prime指示器,命令如下:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install prime-indicator
sudo reboot

重啟系統後,在右上方托盤區可見NVIDIA或Intel的圖示,點選即可切換。

安裝cuDNN7.0

cuDNN的安裝很簡單:

1.解壓:進入“cudnn-7.0-linux-x64-v3.0-rc.tgz”所在目錄,將檔案解壓,如下:

#注意修改成你的目錄
cd /home/liu/sfw
#解壓
gzip -d cudnn-7.0-linux-x64-v3.0-rc.tgz
tar xf cudnn-7.0-linux-x64-v3.0-rc.tar

2.copy檔案至CUDA安裝目錄:解壓後,在你的目錄下生成一個“cuda”資料夾,對於cuDNN6.5的版本解壓後生成“cudnn-6.5-linux-x64-v2”檔案。使用如下命令copy,注意第二個有個-a引數,否則,拷貝過去的檔案失去了連結。

# copy the library files into CUDA's include and lib folders
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64

cuDNN安裝完成。

安裝Caffe-0.13.0

下載好Caffe-0.13.0後,解壓檔案caffe-master.zip生成“caffe-master”資料夾,並將其重新命名為“caffe”,放在yourpath根目錄下下,如:/home/liu/sfw

1.首先安裝一些依賴庫:CUDA(已安裝)、BLAS 、Boost、OpenCV等等,見官網的安裝方法:http://caffe.berkeleyvision.org/installation.html,或自述檔案(installation.md)。

sudo apt-get install libprotobuf-dev libleveldb-dev \
  libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev \
  libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler \
  libatlas-base-dev

2.安裝其它的依賴庫:檢視“requirements.txt”檔案,請注意將下面的路徑替換為你的路徑。

cd ~/sfw/caffe/python
for req in $(cat requirements.txt); do sudo pip install $req; done

2.修改配置檔案並編譯:終端進入“caffe”資料夾,複製一份Makefile.config檔案,然後修改Makefile.config檔案,如不使用GPU,可以去掉#GPU_ONLY=1的註釋符:#,請根據需要自行修改,這裡採用預設值,不做修改。然後進行編譯:

cd ~/sfw/caffe
cp Makefile.config.example Makefile.config

# for a faster build, compile in parallel by doing make all -j8 where 8 is the number of parallel threads for compilation (a good choice for the number of threads is the number of cores in your machine).

make all
make py
make test
make runtest

編譯時間比較漫長,可以使用多執行緒,需要知道你的電腦的執行緒數,下面這樣會快好多:

make all -j4  
make py -j4
make test -j4  
make runtest -j4

編譯中沒有錯誤提示,說明正確。

3.新增環境變數:方法同CUDA(安裝CUDA7.0(“.deb”方式)),只是環境變數名稱及路徑需要變化,如:

# Add environment
echo -e "\nexport CAFFE_HOME=/home/liu/sfw/caffe" >> ~/.bashrc
# load the new environmental variables
source ~/.bashrc

或者:

# Add environment
sudo gedit /etc/profile

# After open profile, Add follow code at the end

# Set Caffe environment
export CAFFE_HOME="/home/liu/sfw/caffe"
# load the new environmental variables
source /etc/profile

這樣caffe就安裝好了!如果在make runtest時提示“Core dumped”,現象截圖及解決辦法見一個小問題(Caffe&cuDNN)

安裝DIGITS

1.解壓檔案:終於可以安裝DIGITS了,解壓下載好的DIGITS-master.zip檔案生成“DIGITS-master”資料夾,將其重新命名為“digits”,並copy到你的目錄yourpath,如/home/liu/sfw下面。

2.安裝DIGITS:命令如下,注意修改路徑。

cd /home/liu/sfw/digits
sudo apt-get install graphviz gunicorn
for req in $(cat requirements.txt); do sudo pip install $req; done

如果網路不好,或軟體源服務關閉等等可能造成某些依賴庫無法下載和安裝,終端會有大片紅色文字,請更改軟體源確認網路連線正常,重新執行上述命令。

啟動DIGITS

進入digits資料夾,給檔案“./digits-devserver”賦予可執行許可權,然後./digits-devserver執行digits:

cd ~/sfw/digits
chmod +x ./digits-devserver
./digits-devserver

第一次執行會提示輸入caffe的安裝路徑:
輸入caffe的安裝路徑

執行時可能會提示啟動失敗:$ImportError: /usr/lib/liblapack.so.3: undefined symbol: ATL_chemv

sudo apt-get remove libopenblas-base

然後在終端輸入./digits-devserver,即可成功啟動:
啟動digits server

久違的介面終於出來了:
digits server

配置DIGITS

上述步驟,是按預設配置啟動digits,如果你想自定義配置,可以在啟動前輸入:

Most values are set silently by default. If you need more control over your configuration, try one of these commands:
# Set more options before starting the server
./digits-devserver --config
# Advanced usage
python -m digits.config.edit --verbose

使用DIGITS

digits官方自帶例子(MNIST)

參見GettingStarted或原始碼包中的“GettingStarted.md”檔案。

下載MNIST資料集

DIGITS提供了下載資料集MNISTCIFAR的工具,在/digits/tools/download_data目錄下,包含如下檔案:
資料集下載工具

執行其中的main.py程式即可:
賦予執行許可權
下載資料集

主要程式碼如下:

#首次使用賦予執行許可權
chmod +x *.py
#檢視幫助
./main.py -h
#建立一個目錄用於存放MNIST資料集
mkdir -p /home/liu/sfw/digits/data/mnist
#下載資料集至上述目錄
./main.py -c mnist ~/sfw/digits/data/mnist

執行後,可以在/digits/data/mnist目錄下看到下載好的資料集,如下圖:
下載的MNIST資料集

在DIGITS server上建立資料集

這裡按照“GettingStarted.md”檔案中所述,建立資料集為分類資料集:在digits server首頁的DataSets區域點選Images,選擇Classfication,在彈出的視窗填寫訓練資料集資訊,這裡為60000個樣本(“GettingStarted.md”裡的例子樣本數為10k),資訊見下圖:
建立資料集

資料集建立過程:
digits server正在建立資料集

digits建立的資料集資訊

點選左上角的“DIGITS”返回檢視建立好的MNIST train 60k資料集:
檢視建立好的資料集

在DIGITS server上建立深度網路模型並訓練

如上圖,在Models區域點選Images,選擇Classfication。在彈出的頁面填寫資訊,資料集選擇:MNIST train 60k,模型命名為:LeNet on MNIST 60k,如下圖:
建立網路模型為LeNet

點選藍色按鈕“Create”後,任務即開始執行!

一個小問題(Caffe&cuDNN)

原以為可以興奮地看到結果,然而失望了,報出了錯誤:

ERROR: Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) CUDNN_STATUS_ARCH_MISMATCH

如下圖:
出錯啦

其實,在安裝Caffe時,當執行make runtest時就有個小問題,報出了“Check failure”,不過讓我直接忽略了,沒想到又回來了,哈哈。
Chek failure

這是因為筆記本上的GT635M的計算能力CUDA Capability是2.1,而官方的cuDNN加速是不支援3.0以下的版本的,因此只能在Makefile.config中註釋掉USE_CUDNN這行,重新執行以下編譯2

make clean  
make all -j4  
make test -j4  
make runtest -j4

:訪問CUDA GPUs檢視GPU的計算能力,在頁面選擇GPU的型號,如Geforce GT 635M,如下圖:
GPU的計算能力資訊

編譯完成後,刪除之前建的LetNet on MNIST 60k任務,然後仿造上述步驟,重新新建一個任務,執行後,如下圖:
執行介面

執行過程,網路的訓練狀態,GPU的狀態等資訊會實時顯示:
執行狀態

學習率與訓練代數關係
學習率與訓練代數關係圖

使用DIGITS server 進行分類操作(MNIST)

訓練結束後,可以對手寫體數字影象進行分類,可以對單個影象分類,也可以同時分類多幅影象,這裡以上述步驟中生成的“MNIST train 60k”資料集中的驗證集為例。

在“Upload Image List”區域點選選擇檔案按鈕,選擇驗證集的 list檔案val.txt:
選擇val.txt

選擇好後,點選Classify Many Images按鈕,即可對多幅影象分類,這時,介面上沒有顯示進度,在終端中顯示,如下圖:
分類程序

對所選影象分類完成後,彈出分類結果頁面:
分類結果

視覺化分類結果:
視覺化分類結果

結語

本文記錄了本人安裝配置NVIDIA DIGITS步驟與方法,軟體環境為Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0 + DIGITS 2.0。並以DIGITS自述檔案中的例子為例,簡單介紹了DIGITS的用法。

可見,DIGITS的原始碼安裝方式還是有一定難度,特別是對Linux不熟悉的使用者。DIGITS的使用很方便,只需進行簡單的點選操作,即可完成資料集建立、網路模型建立、網路訓練、網路訓練狀態的實時顯示、用訓練好的網路進行影象分類等任務,使得不熟悉深度學習的人員也可以在深度學習的大海中輕而易舉地航行,這正式DIGITS的設計目的所在。

DIGITS除了支援Caffe,還支援Theano,本文並未介紹Theano,不過會陸續補充,關於Theano的一些資訊,也可以在本人的其它部落格裡找到。

相關推薦

NVIDIA DIGITS 學習筆記NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0

NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0環境配置 引言 DIGITS簡介 DIGITS: Deep Learning GPU Tra

NVIDIA DIGITS 學習筆記引數

本文主要記錄了NVIDIA DIGITS的引數設定方法及其與Caffe中的引數的對應關係。 資料集 手寫體MNIST資料集的原始資料格式為:png,每幅影象大小為:28×28,包含70K個手寫體數字,共10類,其中60K為訓練用樣本(tra

OpenLDAP學習筆記基於OpenLDAP-2.4.x

ldap slapd 同步 1.1、什麽是目錄服務(Directory Services)? 目錄是一個特殊的數據庫,專門用於搜索和瀏覽,另外也支持基本的查詢和更新功能。 目錄是一個為查詢、瀏覽和搜索而優化的專業分布式數據庫,它呈樹狀結構組織數據,就好象Linux/Unix系統中的文件

python學習筆記集合的使用、文件操作、字符編碼與轉碼、函數

函數式編程 close 取值 指定編碼 mage 指定位置 lac 空白 你在 集合 集合(set):把不同的元素組成一起形成集合,是python基本的數據類型。 集合元素(set elements):組成集合的成員 為什麽需要集合? 集合的作用 1 .列表去重復數據

Servlet學習筆記設定servlet的字符集、生命週期、對映配置、資料庫連線引數的區域性配置

設定servlet的字符集 servlet是sun公司提供的一門用於開發動態web資源的技術,使用java語言編寫的執行在伺服器端的程式,通過http超文字傳輸協議接受和響應來自客戶端的請求。 servlet的產生是把“html標記”和“大量的業務處理邏輯”給分開,繼續留在html頁

Intel Composer XE 2013 Update 2 Linux (Ubuntu 14.04) 安裝筆記

序言:在intel處理器平臺上編寫應用程式,如果能使用Intel公司開發的C/C++編譯器(即Intel C/C++ Compiler,以下簡稱ICPC)能充分的利用SSE這樣的單指令多運算元指令,能

NVIDIA CUDA初級教程視訊 - 學習筆記CPU體系架構概述

一句話:CPU大量用於資料搬運而非數值運算,用流水線和分支提高效率 周斌老師:NVIDIA CUDA初級教程視訊第2集 【計算機組成原理】 Q:什麼是CPU? A:是執行指令、處理資料的器件,用於完成基本的邏輯和算術指令,現在增加了複雜功能(記憶體介面、外部裝置介面),包含大量電晶體(上

TX2學習筆記1——NVIDIA Jetson TX2 開箱上電

期待已久的NVIDIA Jetson TX2終於到貨了,迫不及待拆箱上電學習學習! 第一次接觸這麼高配置的板子,拆箱上電還是比較束手束腳,怕一不小心就弄壞了,好在這板子質量確實可以。 按照教程放心用

學習筆記2---Matlab 圖像處理相關函數命令大全

緩沖 操作 .... 命令 tor ace trac cati msh Matlab 圖像處理相關函數命令大全 一、通用函數: colorbar 顯示彩色條 語法:colorbar \ colorbar(‘vert‘) \ colorbar(‘horiz‘) \ co

5.27:cocos2d-x初探學習筆記2--重要概念及Test樣例結構(轉)

這樣的 發生 菜單 add css 基礎 dsm 人的 添加 1.幾個重要概念 在cocos2d引擎中,有幾個概念,各自是導演。場景,布景和人物角色。 導演(CCDirector):在cocos2d-x引擎中,導演類是遊戲的組織者和領導者。導演制定規則讓遊戲內的場

WPF學習筆記2——動畫效果按鈕變長

anim aud tor col log 筆記 wpf style 分享 說明(2017-6-12 11:26:48): 1. 視頻教程裏是把一個按鈕點擊一下,慢慢變長: 註意幾個方面: (1)RoutedEvent="Button.Click",這裏面要用Button,是

bootstrap 學習筆記2---- 排版

-i 排列 分段函數 class 總結 capital src 設置 per 安裝和柵格系統學完,這篇寫的是排版手冊中排版的目錄如下圖 《標題,頁面主題,內聯文本元素,對齊,改變大小寫,縮略語,地址,引用,列表》手冊中介紹那麽多,其實並不是所有的都要去看看。很多都是沒有必

Python學習筆記2.1函數參數練習

col python學習 nbsp cnblogs print item info inf -- 關鍵字參數 和 命名關鍵字參數 # -*- coding: utf-8 -*- def print_scores(**kw): print(‘

.net core 2.0學習筆記:遷移.net framework 工程到.net core

編譯 its evel hashtable ref 學習筆記 inline null 創建 在遷移.net core的過程中,第一步就是要把.net framework 工程的目標框架改為.net core2.0,但是官網卻沒有提供轉換工具,需要我們自己動手完成了

.net core 2.0學習筆記:Remoting核心類庫RealProxy遷移

ride dispatch 包含 void reflect 既然 splay creat (六) 在學習.net core的過程中,我們已經明確被告知,Remoting將不會被支持。官方的解釋是,.net framework 類型包含了太多的Runtime的內容,是

jQuery源碼學習筆記2

dom src asc turn rdo dom節點 defer ++ des 我們會認識到jQuery中一個叫做domManip的函數,這個函數的作用主要是處理DOM相關的操作,讓傳入的參數更加“幹凈”。 為什麽需要用這個domManip函數呢? 我們知道節點操作瀏覽

後盾網-CI框架實例教程-馬振宇 - 學習筆記2

welcom index 如何 ech lin bsp 後臺模板 back href 第三節視頻:   1、配置自動加載輔助函數URL:     在application/config/autoload.php中設置:       $autoload[‘helper‘] =

linux學習筆記2

linux配置IP進入操作系統界面後,輸入root用戶密碼。<[email protected] ~># root為用戶localhost為主機名(可修改)root用戶後跟的是# 其他用戶為$===============================================

Halcon學習筆記2 VS2010 + Halcon12 C#鏈接相機

operator debug ets generic code locate != 目錄 empty 1.打開Halcon, 使用圖像采集助手獲取相機實時圖像:      1.1 獲取實時圖像:          1.2 插入采集實時圖像的Halcon代碼,並導出:    

Byte of Python學習筆記2——回文練習

span forbidden you 一點 學習筆記 成員 reverse 大小寫 lis   Byte of Python 第111頁有關回文的作業練習,原題為:要想檢查文本是否屬於回文需要忽略其中的標點、空格與大小寫。例如,“Rise to vote, sir.”是一段