読者です 読者をやめる 読者になる 読者になる

Volo di notte

お勉強の成果メモや日常のこと

[Windows] NVIDIA DIGITSをGPUなしで使う!

Windows DeepLearning Python

はじめに

NVIDIA Deep Learning Day 2016などで華々ししく紹介されているNVIDIA DIGITS. いつものことながらWindows文化のメーカー系会社員には中々導入が難しいです。 そのうえ、支給パソコンにはGPUがないものまであります。

そんな環境でもDIGITSをお試ししてみたい!という思いで試験的にインストールしました。

環境

DIGITSとは

NVIDIA DIGITS (the Deep Learning GPU Training System)NVIDIAが公開しているディープラーニングのWebアプリ インタフェースです。バックエンドはCaffeとなっており、ディープラーニングのライブラリとして有名なCaffeをプログラミングしないでも使えるようにするツールです。

使い方などは、たぶんビデオ見た方が早いですが、ブラウザベースで画像をアップロードするなどして、ニューラルネットワークを選んでほおっておくと出来上がり!


NVIDIA Deep Learning Course: Class #2 - Getting Started with DIGITS

手っ取り早く結果のイメージだけ紹介すると、こんな風にディープラーニングできちゃうのだそうです! f:id:Chachay:20160721221208p:plain 出典:NVIDIA DIGITS

さっそくインストールしてみよう!

DIGITSのインストール

DIGITSはCaffe+Pythonで動くので、まずCaffeをインストールする必要があります。

すでにCaffeが入っている方は読み飛ばしてもらって結構です。

  1. Pythonの必要なライブラリインストール
  2. Caffeのインストール
  3. Graphizのインストール
  4. DIGITSのインストール

DIGITSソースコードのダウンロード (GitHubからのダウンロード方法)

最新版はGitHubから落とせます ⇒ NVIDIA/DIGITS: Deep Learning GPU Training System

"GitHubデスクトップ"をインストールしていない方は、zipとしてダウンロードして解凍してください。

f:id:Chachay:20160721220018p:plain

インストール作業の全体像

基本的に付属のマニュアルに従います ⇒ DIGITS/BuildDigitsWindows.md

必要なPythonのライブラリの追加

DIGITS(Caffe)の動作には

  • numpy
  • scipy
  • matplotlib
  • scikit-image
  • h5py
  • google protobuf
  • pyreadline
  • gevent
  • requests
  • image
  • pillow
  • wergzeug
  • wtforms
  • flask
  • flask-wtf
  • flask-scoketio
  • pydot
  • lmdb
  • gunicorn

が必要になります(多いですね) 以下で.whlで終わるファイルについてはPython Extension Packages for Windows - Christoph Gohlkeからダウンロードしてきて、pipコマンドでインストール。

pipのバージョンが7.1.2など古い場合はうまく動きませんので、念のためアップグレード。

python -m pip install --upgrade pip
pip install cython
pip install numpy-1.11.0+mkl-cp27-cp27m-win_amd64.whl
pip install scipy-0.17.0-cp27-none-win_amd64.whl
pip install matplotlib-1.5.1-cp27-none-win_amd64.whl
pip install scikit_image-0.12.3-cp27-cp27m-win_amd64.whl
pip install h5py-2.6.0-cp27-cp27m-win_amd64.whl
pip install protobuf
pip install pyreadline
pip install gevent
pip install requests
pip install image
pip install pillow
pip install wergzeug
pip install wtforms
pip install flask
pip install flask-wtf
pip install flask-socketio
pip install pydot
pip install lmdb
pip install gunicorn

Caffeのインストール

Windows用のCaffeもGitHubにあります。⇒ BVLC/caffe at windows

CaffeのビルドにはVisual Studio 2013が必要だそうです! VS2015でやろうとしましたが、boostライブラリのバージョン違いなど細かいところで面倒です。

Caffeビルドオプションの作成と変更

Caffe-Windowsのフォルダの中にwindowsフォルダがあります。

そのフォルダの中にCommonSettings.props.exampleというファイルがありますが、 これをCommonSettings.propsという名前でコピーします。

そして、コンパイルオプションをGPUなしに変え、python用とするため、 ファイルの中の6~7行目が

        <!--NOTE: CpuOnlyBuild and UseCuDNN flags can't be set at the same time.-->
        <CpuOnlyBuild>false</CpuOnlyBuild>
        <UseCuDNN>true</UseCuDNN>
        <CudaVersion>7.5</CudaVersion>
        <!-- NOTE: If Python support is enabled, PythonDir (below) needs to be
         set to the root of your Python installation. If your Python installation
         does not contain debug libraries, debug build will not work. -->
        <PythonSupport>false</PythonSupport>

となっていますが、これを

        <!--NOTE: CpuOnlyBuild and UseCuDNN flags can't be set at the same time.-->
        <CpuOnlyBuild>true</CpuOnlyBuild>
        <UseCuDNN>false</UseCuDNN>
        <CudaVersion>7.5</CudaVersion>
        <!-- NOTE: If Python support is enabled, PythonDir (below) needs to be
         set to the root of your Python installation. If your Python installation
         does not contain debug libraries, debug build will not work. -->
        <PythonSupport>true</PythonSupport>

に変更します。

さらに、Pythonフォルダを設定します。47行目あたりの

    <PropertyGroup Condition="'$(PythonSupport)'=='true'">
        <PythonDir>C:\Miniconda2\</PythonDir>

Pythonインストールフォルダに合わせて

    <PropertyGroup Condition="'$(PythonSupport)'=='true'">
        <PythonDir>C:\Python27-64\</PythonDir>

へ変更。

Caffeのビルド + Pythonへのインストール

Caffe-Windows以下のCaffe.slnVisual Studio 2013でひらき、ビルドを実行します。 10分後くらいにはCaffe-windows/Build/x64以下にビルド結果ができているはず。

そして、caffe-windows/Build/x64/Release/pycaffe以下のcaffeフォルダを、 C:/Python27-64/Lib/site-packages以下へコピー。

コマンドプロンプト

python -c "import caffe"

としてエラーがでなければ大丈夫です。

さらに、caffe-windows/Build/x64/Release/以下を、C:\Caffe\フォルダを作り、そこへコピー。 環境変数にC:\Caffe\を追加

Graphvizのインストール

DIGITSでディープラーニングニューラルネットを可視化するために使います。

Download | Graphviz - Graph Visualization Softwareから、Windowsインストーラをダウンロードしてきて、インストール。

DIGITSからのアクセス性を考えて、C:\Graphviz2.38\やD:\Graphviz2.38\へのインストールがおすすめ。

そして環境変数にC:\Graphviz2.38\binを追加しましょう。

DIGITSのインストール

やっと本体のインストールですね。

コマンドプロンプトをDIGITSのREADME.mdがあるフォルダで開きます。

そして、インストールに必要な要件がそろっているか確認するコマンドを実行します。 ただし、pipのバグかわかりませんが、pillowのファイル名をPIL⇒pilなど軒並み小文字に変えてしまい、 モジュール動作ができなくなってしまうような事態が発生するので、一部同梱のrequirements.txtを編集する必要があります。 具体的には最初の3行を消して、

protobuf>=2.5.0,<=2.6.1
six>=1.5.2,<=1.10.0
requests>=2.2.1,<=2.9.1
gevent>=1.0,<=1.1.0
Flask==0.10.1
Flask-WTF==0.11,<=0.12
wtforms>=2.0,<=2.1
Flask-SocketIO==0.6.0
gunicorn==17.5
setuptools>=3.3,<=20.7.0
lmdb==0.87
h5py>=2.2.1,<=2.6.0
pydot==1.0.28

とします。 そのうえで、下記を実行しましょう。モジュールのバージョンを調整してくれます。

python -m pip install -r requirements.txt

DIGITSの起動と実行

DIGITSフォルダで開いたコマンドプロンプトで、

python digits-devserver

を実行すると、http://localhost:5000でDIGITSにアクセスできます。

f:id:Chachay:20160723144520p:plain

MNISTも動きました!

chachay.hatenablog.com

注意事項

DIGITS 4.0からは物体認識タスクに対応したようですが、使っているCaffeがNVCaffeではないため、 detectNETをそのままでは構成することができずサンプルの物体認識は実行できません。

参考

GPUなしのNVIDIA DIGITS3で始めるDeepLearning - Qiita

G2's Forest – Deep Learning 用ライブラリ Caffe を Windows で使う

ドウジンテイスウ.log — Caffeのvisual studioビルド