Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Sony nnabla



ずーと、スルーしていましたが、どんな実装なのかを調べました。

サポートするのは、CPUと別途CUDA。

CPUでは、elgenを使っているので、コンパイラを使って、SIMD化も可能!

CUDAは別途、extensionという形でリリースしています。

で、どうやって切り替えているかというと、Contextクラスを使うようですね。

CUDAの場合は、
引用
from nnabla.contrib.context import extension_context

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

のように、extension_contextで 'cuda.cuddn'を指定して得たctxをnn.set_default_contextで設定するだけ!

Pythonだけでなく、C++だけでもOKのようです。

例題:cpp graph
引用
Context ctx; // ("cpu", "CpuArray", "0", "default");
で、デフォルトでは、CPUになる ctx を使っています。

このぐらいであれば、ARM Compute Library v17.6と同じですね。

C++では、各種パラメータとかどうするかというと、
例題:MNIST
引用
  // Create a context (the following setting is recommended.)
  nbla::Context ctx{"cpu", "CpuCachedArray", "0", "default"};

  // Create a Nnp objct
  nbla::utils::nnp::Nnp nnp(ctx);

  // Set nnp file to Nnp object.
  nnp.add(nnp_file);


のように、ファイルからnnpモデルをロードできるようです。 nnpモデルは学習後、生成しておきます。

追記)2017.11.11
Neural Network LibrariesがmacOSに対応しました、2017.11.08
人工知能(AI)を実現するディープラーニング(深層学習)の統合開発環境Neural Network Console をクラウドサービスで提供
2017.11.18
IBM Systems - Japan‏(@SystemsJP)さんのツイートによると、
引用
ソニーの #ディープラーニング 開発のためのオープンソースのコアライブラリーであるNNablaの、IBM MinskyことIBM Power System S822LC for HPCでのシングルノード・マルチGPU環境における動作・性能検証の結果がSlideShareで公開されました。 #NNabla #POWER8
で、発表資料(NNabla on Minsky動作・性能検証のご紹介)は、Slideshareにアップされています。