2016

11-01

Tue

Deep Learningに対する関心が非常に高まっています。

今回はDIGITSでのDeepLearning環境構築方法をご紹介します。

DIGITSを利用すればNVIDIA製のGPUを使用して簡単に
Deep Learning環境が構築できます。

DIGITSでは、フレームワークとしてCaféとTorchが、
ネットワークとしてLeNet、AlexNet、GoogLeNetが標準で組込まれています。

またGUIベースで操作できますので、簡単にDeep Learningを
使いたいという方には非常に便利な環境です。

現時点(2016/11/1)でNVIDIAのWebサイト上から提供されている
最新環境で設定することにします。

1. Ubuntu14.04LTS
2. CUDA8.0
3. DIGITS v4

マシン環境としてはIA(x86_64)サーバとCUDAが動作するGPUがあれば
インストール可能です。
(利用可能なGPUは https://developer.nvidia.com/cuda-gpus を参照。)

今回実際にインストールを行ったマシン環境は以下の通りです。

SolutionServer HPC-30222P64-A98WTARB カスタマイズ仕様
CPU Memory GPU
Xeon E5-2640v4 x2 DDR4-2133 128GB NVIDIA GTX1080 x2
(SLIなし)

では、環境構築手順を説明していきます。

基本的にはそれぞれの標準インストールを順次行うことで完了します。
1. Ubuntu14.04LTSのインストール

今回はUbuntu Japan Teamが公開している、Ubuntu DeskTop日本語ReMix版を
使用してインストールします。以下のURLからダウンロードして下さい。

http://cdimage.ubuntulinux.jp/releases/14.04/ubuntu-ja-14.04-desktop-amd64.iso

標準インストール後再起動してログインし、以下を実行してください。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential

インストール環境を確認

$ lspci | grep -i nvidia

GPUが認識されている事

$ uname -m && cat /etc/*release

Ubuntu 14.04.x LTS であることを確認。16.04に上げないように注意してください。

$ gcc –version

Gccのバージョンは 4.8.4

DIGITSで始めるDeepLearning-図1

2.CUDAのインストール

NVIDAのWebサイトから、CUDA Tool kitをダウンロードします。
https://developer.nvidia.com/cuda-downloads

Linux→x86_64→Ubuntu→14.04→deb(local)→Downloadで
debファイルをダウンロード。

ダウンロードしたdebファイルを使用してNVIDIAドライバとCUDAを
同時に適用します。

ダウンロードした場所に移動して以下を実行

$ sudo dpkg -i cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda

~/.bashrcにvi等を使用して以下を末尾に追加

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

GPUドライバが正しく適用できているか確認してください。

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 367.48 Sat Sep 3 18:21:08 PDT 2016
GCC version: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)

GPUドライバが有効になっていること確認してください。

$ nvidia-smi

DIGITSで始めるDeepLearning-図2

CUDAデバイスとして正しく認識されていることを確認します

$ cd /usr/local/cuda/samples
$ cd 1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery

DIGITSで始めるDeepLearning-図3

以上でCUDAインストールの確認は終了です。

※runファイルで適用した場合は、sampleプログラムのインストール先を
指定してください。

※ドライバの不整合等でインストール失敗するなどでNVIDIAドライバとCUDAを
別々にインストールする場合は、下記手順で行ってください。
(NVIDIAドライバはGPUドライバサイトから)

①それぞれrun形式のファイルをダウンロード
②CLIモードでNVIDIAドライバを適用 (Ctrl + Alt + F1等でGUIを停止してから)
③CUDAをNVIDIAドライバ無でインストール

画面出力のあるGPUを使用してインストールする際は、画面出力先に注意して
インストールしてください。
NVIDIAドライバを入れるまではGPUから出力されない場合があります。

※以前からの環境を利用していてGPUドライバ、CUDAがインストールされている
場合は以下で確認し、アンインストール後に再インストールしてください。

$ dpkg -l | grep nvidia
$ dpkg -l | grep cuda
$ sudo apt-get –purge remove nvidia-*
$ sudo apt-get –purge remove cuda-*

 

3.DIGITSのインストール

以下のサイトからDIGITSをダウンロードします。(事前登録要)
https://developer.nvidia.com/digits

未登録の方はRegisterボタンを押して、メールアドレス等を登録してください。
ログインして、Downloadボタンを押してください。
いくつか質問に答えてDownload画面に進んだら、DIGITS v4 for CUDA8を選択し、
緑色のDownloadの文字をクリックしてください。

DIGITSで始めるDeepLearning-図4

ダウンロードしたファイルをWebに記載の手順でインストールします。

$ sudo dpkg -i nv-deep-learning-repo-ubuntu1404-6-ga2-cuda8.0_8.0.7-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install DIGITS

これでブラウザを使ってDIGITSを利用することができます。
ローカルアクセスであれば、Firefoxを起動して以下のURLを入力

http://localhosts:34448/  #デフォルトのポート番号:34448

他のPC等からアクセスしたいときはapache等のhttpサーバを
インストールしてください。

$ sudo apt-get install apache2

PC等からブラウザでDIGITSが起動しているサーバをアクセスしてください。

http://DIGITSサーバのIPアドレス:34448/

 

4.MNISTを評価してみる

手書き数字の画像認識データMNISTを使って、学習と認識テストをやってみましょう。
DIGITSのインストール環境でMNISTの環境をダウンロードできます。

$ cd /usr/share/digits/tools/download_data
$ mkdir ~/mnist  #ダウンロード先フォルダ作成
$ python main.py mnist ~/mnist

※MNIST以外にもcifar10、cifar100のダウンロードが同様にできます。

それではブラウザを立ち上げてDIGITSに接続します。

①New Dataset → images → Classification
初回はログインアカウントを聞いてきますので、サーバ上のアカウントを
入力して下さい。

②データセットを登録します。

DIGITSで始めるDeepLearning-図5

■Image Type : Grayscale
■Image size : 28×28
■Training Imagesに学習用データのパス(~/mnist/train)を指定、
Dataset名を設定(MNIST)してCreate実行

しばらくすると登録が完了します。

DIGITSで始めるDeepLearning-図6

③学習(モデルの登録)を行います。

New Model → images → Classification

DIGITSで始めるDeepLearning-図7

DIGITSで始めるDeepLearning-図8

DatasetとしてMNISTを選択。下段のNetworkでLeNetを指定、GPUが複数ある
場合はGPU数または実行するGPUを指定し、Model Nameを
設定(LeNet)してCreateを実行

※フレームワークはデフォルトでCaféが指定されていますが、Torchを
指定することもできます。
※Imageデータサイズが28×28ですのでそのまま実行できるネットワークは
LeNetになります。他は256×256サイズなので実行させたい場合はDataset作成時に
変換(サイズを指定してCreate)するなどしてください。

以下のような表示が出て、学習が始まります。

DIGITSで始めるDeepLearning-図9

CPU/GPUパワーによって処理時間は大きく異なりますが、
評価構成では1分程度で完了します。

DIGITSで始めるDeepLearning-図10

④認識をさせてみましょう
学習させた画面の下側の“Test a single image”または”Test list of images”で
認識させるデータを指定します。
MNISTのテストデータはtestフォルダ(~/mnist/test)配下に数字毎に
分かれて格納されています。

DIGITSで始めるDeepLearning-図11

一つずつ認識させるには、左側のTest a single imageで、
パスとファイル名をして下さい。“Classify One”ボタンをクリックすると、
指定した手書き文字が認識率順に表示されます。(以下の例では、0が100%ヒット)

DIGITSで始めるDeepLearning-図12

リストで指定する場合はリストファイルを指定して実行させます。
testフォルダ配下に test.txtというファイルがありますので、
それを指定して実行してみましょう。

DIGITSで始めるDeepLearning-図13

認識結果としてリストで指定されたデータの認識結果の一覧が表示されます。

DIGITSで始めるDeepLearning-図14
以上のように、DIGITSでは簡単なGUIを使用して学習、認識をさせることが出来ます。

弊社では、Deep Learning向けにGPGPUやXeon Phiを実装した各種サーバや
ワークステーションをご用意しております。
また、各種フレームワーク(Café、Chainer、Torch、Tensorflow、Theano等)、
ライブラリ等のインストールやカスタマイズの対応をさせて頂きますので
ぜひご相談ください。

 

【関連製品】

・Quadro M6000を搭載。水冷ワークステーション

HWS6000

・NVLink対応P100を最大4基搭載。DL向けサーバ

SolutionHPC 30222P64-A12WTA4RB

 

⇒お問合せはこちらから!

このエントリーをはてなブックマークに追加
ページトップへ
BTO for your success