FANATIC REPORT ファナティックレポート

NVIDIA® DIGITSで始めるDeep Learning

2016.11.01 お知らせ


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-downloadsLinux→x86_64→Ubuntu→14.04→deb(local)→Downloadでdebファイルをダウンロード。
    ダウンロードしたdebファイルを使用してNVIDIAドライバとCUDAを同時に適用します。

    ダウンロードした場所に移動して以下を実行
    $ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_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://localhost: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.listというファイルがありますので、
    それを指定して実行してみましょう。

    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

お問い合わせはこちら

人気レポートランキング

レポートカテゴリ