Translate

2017年6月28日水曜日

SONYのAIコアライブラリ NNabla の概要を調べてみる

ソニーがAIライブラリをオープンソース公開したという記事を読んだ。

ソニー、ディープラーニングのコアライブラリを無償公開
https://japan.cnet.com/article/35103402/
トップサイトが

https://nnabla.org/ja/

にあるが、どうもナンチャッテとっぷさいとのようだ。
おそらくだけど、真のトップがここのようだ。

https://nnabla.readthedocs.io/en/latest/#

..結局英語かよ..


トップの英語をGoogle翻訳にかけてみた。

NNablaは、研究、開発、および生産に使用するための深い学習フレームワークです。 私たちは、デスクトップPC、HPCクラスタ、組み込み機器、プロダクションサーバなどあらゆる場所で稼動させることを目指しています。

このドキュメントでは、Python APIおよびC ++ APIの使用方法、開発者向けの寄付ガイド、およびこのソフトウェアのライセンス期間について説明します。 Python APIは、ディープ・ラーニング・システムの迅速なプロトタイプ作成や実験に適していますが、C ++ APIは、推論やトレーニング・アルゴリズムを組み込みシステムやサーバーに組み込むためのものです(ドキュメントは現在のところ入手できません。 このフレームワークは、モジュール性と拡張性を念頭に置いて設計されています。 コミュニティ寄稿者は、ニューラルネットワークの新しいオペレータまたはオプティマイザモジュール、および特定のターゲットデバイス用のニューラルネットワークモジュールの特別な実装を拡張モジュールとして追加できます。

Pythonライブラリになっていて、C++ もあるけどそっちはどうも実際の計算モジュール実装に使っていて、今のところドキュメントはないらしい。今回はコアライブラリで、オプティマイザとかのcontribを追加できるような構造になってるよ、ということらしい。

ちなみにラインセンスはApache2.0である。

以下、Windows環境でのインストール手順をGoogle翻訳に掛けたものだ。

■Windowsへのインストール

・前提条件

Windows8.1 64bitとWindows10 64bitでは動作確認テスト済み。

インストールには次のソフトウェアが必要となる。

 - 必要なソフトウェア。
   Python 2.7:PIP
   Microsoft Visual C ++ 2015再頒布可能
 - 推奨ソフトウェア
   CUDAツールキット8.0 / cuDNN 6.0(NVIDIA GPUユーザー向け)

・セットアップ環境
 - Python2.7
   この手順では、minicondaを使用します。
   ここからWindowsバイナリを入手してインストールしてください。
  
   コマンドプロンプトから必要なパッケージをインストールします。
   > conda install scipy scikit-image ipython
   ネットワークがプロキシを使用しており、セットアップが失敗した場合は、環境変数を使用してプロキシサーバーを構成し、再度インストールしてください。
   > SET HTTP_PROXY=http://(ここにhttpプロキシサーバーのアドレスを入力します)
   > SET HTTPS_PROXY = https://(ここにhttpsプロキシサーバーのアドレスを入力します)


 - Microsoft Visual C ++ 2015 Redistributable
   ここから取得してインストールしてください
 

 - CUDA Toolkit 8.0 / cuDNN 6.0
   NVIDIA GPUを使用している場合、次のソフトウェアをインストールすることで実行速度が大幅に向上します。
   CUDAツールキット
 
  cuDNN
 
  cuDNNをインストールするには、binincludelibを"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"にコピーします。

 - インストール
  CPUパッケージをインストールします。
  > pip install nnabla

  NVIDIA GPUを使用している場合は、CUDA/cuDNN パッケージをインストールします。
  > pip install nnabla_ext_cuda

  実行を確認します。
  > ipython
 
  In [1]: import nnabla
  2017-06-06 21:36:07,101 [nnabla][Level 99]: Initializing CPU extension...
 
  In [2]: exit
 
  >


  動作(CUDA/cuDNN)を確認します。
  > ipython
 
  In [1]: import nnabla_ext.cuda.cudnn
  2017-06-16 18:42:18,881 [nnabla][Level 99]: Initializing CPU extension...
  2017-06-16 18:42:19,923 [nnabla][Level 99]: Initializing CUDA extension...
  2017-06-16 18:42:20,243 [nnabla][Level 99]: Initializing cuDNN extension...
 
  In [2]: exit
 
  >


・サンプルの実行
 ここからNNablaリポジトリをダウンロードし、解凍してサンプルディレクトリに移動してください。

 > cd nnabla \ examples \ vision \ mnist

 MNIST分類を実行します。
 nnabla\examples\vision\mnist > python classification.py

 CUDA/cuDNNでMNIST分類を実行します。
 nnabla\examples\vision\mnist > python classification.py -c cuda.cudnn

・FAQ
 Q. Scikitイメージのインストールには長い時間がかかります。
 環境によっては時間がかかります。 お待ちください。

 Q.インストール中にScipyのインストールに失敗しました。
 "pip install nnabla"の前に "conda install"を使ってscipyをインストールしてください。


インストールは簡単そうだ。

Windows7で動作確認はしてないんだ..というのはおいといて..

Anacondaが入ってるのでこれでできそうだし、GitHubのIssueにはPython3で云々っていうのも見かけた。

ちょっとおもしろそうなのは、MS C++ランタイムを入れている所。おそらくだけど、Anaconda上からなのにネイティブのC++ライブラリを使ってGPUが使える..つまりWindows上でGPUが使えるんじゃなかろうか

Windows上のAnacondaからのTensorFlowはCPUのみしかサポートしていなかったはずだから、Windowsの世界から出たくないよってもやし君にはちょうどいいかもしれない。

でもグラフィックリソースバリバリ使っているWindows OS 上でGPUって..どれくらいリソース開いてるのかはわからないけど..



Dockerインストールの方はTODOでからっぽだったが、Docker Hubにはもう載っかていた。

CPU版のほうのREADME.mdは

開発用Dockerイメージのビルド

 ./docker-build <タグ名>

これは、nnabla:<タグ名>という名前のDocker イメージを生成します。

使用可能なタグは、 Dockerfile.<タグ名> を使用して、このディレクトリのファイルに名前形式で表示されます。

とだけしか書かれていない。タグも今見たらlatestしかない..怖ェ..

CUDA版のREADME.mdは、

■NNablaのCUDA拡張機能

このリポジトリは、公式のCUDA / cuDNNで拡張されたNNablaの深い学習フレームワークです。


使用するには、デフォルトのコンテキストを 'cpu'から 'cuda.cudnn'に変更します:
from nnabla.contrib.context import extension_context

ctx = extension_context('cuda.cudnn', device_id=args.device_id)
nn.set_default_context(ctx)


現在、インストールのドキュメントと使用方法はbase NNablaに統合されています。



・FAQ
  近日公開


..どうもコンテキストというオブジェクト処理をコードに加えないとダメっぽいことが書かれている。
#TensorFlowのsession相当かもしれないなあ..

それに numpy のかわりに CuPy をとか nvidia-docker で動かせとかの指示もない..

Dockerは少し枯れるまで、待ったほうが良いかもしれない..




p.s.

どうでもいいはなしだが、NNabla の読み。
NNはニューラルネットワークをあらわしてるのだから
エヌエヌイネーブラ」と読んでいたが..
もしかしたら、単に「イネーブラ」と読んでほしいと思っているのかも..



(2017/08/22追記)

遅ればせながら..Neural Network Consoleの記事を読む。

SONYの本気!AI開発ツール『Neural Network Console』が現場の常識をぶっ壊す

この動画を見る限りでは




Azure Machine Learning と TensorBoard の機能を合わせた

ようなGUIツールらしい..

エンジンはこの NNabla らしいが、
どうもSONYは本気のようだ..

とすると、苦しくなるのが同じ日本勢のChainer..
なんたって事業継続性がネ...

..しかも日本人って大企業大好きだから..


個人的に
試そうとしたのですが、
Windows8.1以降らしく
残念ながら断念..
Ubuntu版ないのか..


..全部ビンボが悪いんや..


0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...