Blog

Neural Network Console Windows版Version 1.30公開

Thursday, December 06, 2018

News

Posted by Yoshiyuki Kobayashi

本日、Neural Network Console Windowsをアップデートいたしました。本blogでは、新たに追加された以下の新機能と、その使いどころについて紹介していきます。

・ONNX、およびNNBファイルのエクスポートに対応
・ONNX、およびNNPのインポートに対応
・Mixed-Precision学習に対応
・その他の機能・改善点
 

1. ONNX、NNPおよびNNBファイルのエクスポートに対応

クラウド版では既にONNX、NNP、NNBファイルのダウンロードに対応していましたが、今回Windows版においてもこれらのファイル形式でのエクスポートが可能になりました。
エクスポート操作は、学習結果の右クリックメニュー、Exportから実行することができます。

 

ONNXはDeep Learningモデルのオープンなファイルフォーマットで、各社からリリースされている多数のDeep Learningのフレームワーク、ライブラリがこれに対応しています。

ONNX
https://onnx.ai/

今回ONNX対応ファイルフォーマット形式でのエクスポートに対応したことで、Neural Network Console Windowsで学習したモデルの他のDeep Learningフレームワークからの再利用や、各チップベンダの提供する最適化された推論実行環境を利用したより高速な推論実行が可能になりました。

 

NNPファイルは、Neural Network Libraries形式のモデルファイルで、GitHubで公開中のDeep LearningフレームワークNeural Network Librariesを用い、PythonもしくはC++から利用することができます。

Neural Network Libraries
https://nnabla.org/

Neural Network Libraries (GitHub)
https://github.com/sony/nnabla

 

NNBは、ほぼPure Cで書かれた推論実行用のリファレンスCライブラリ、NNabla C Runtime用のモデルファイルフォーマットです。

NNabla C Runtime
https://github.com/sony/nnabla-c-runtime

今回NNBのエクスポートに対応したことで、Neural Network Console Windowsで学習したモデルを、SPRESENSEを含むC言語が利用可能な多様な組み込みデバイス上でも実行可能になりました。

SPRESENSE
https://www.sony-semicon.co.jp/products_ja/spresense/

 

2. ONNX、およびNNPのインポートに対応

ONNX、NNPファイルを学習済み係数と共にGUI上に読み込み、再利用可能になりました。
インポート操作は、EDITタブの右クリックメニュー、Importから実行することができます。

※ネットワークによっては正常にインポートできないこともあります。インポートの互換性については今後も改善していく予定です。

 

3. Mixed-Precision学習に対応

NVIDIAのPascal世代以降のGPUでは、16bit浮動小数点(半精度、fp16、half型)による演算がサポートされています。
これらのGPUをお使いの場合、プロジェクトのGlobal Configに新設されたPrecisionの設定項目をFloatからHalfに変更するだけで、FloatとHalfを組み合わせたMixed-Precisionによる学習が利用可能です。

Mixed-Precisionを用いた学習には以下のようなメリットがあります。

・パラメータやバッファのメモリサイズを約半分に抑えることができ、限られたGPUメモリの中でより大きいニューラルネットワークが学習可能に
・GPUメモリを最大限利用するような学習を行う際、Batch Sizeを倍に設定できるようになり計算効率(学習速度)が向上、さらにVolta世代以降のGPUに搭載されたTensor Coreにより学習速度が向上(合わせて約1.5~2.0倍の高速化)

 

Mixed-Precisionを用いる場合演算精度低下の影響によるモデル精度の低下が懸念されますが、多くのケースではLoss Scalingと呼ばれるテクニックを用いることでこれを回避できることが示されています。
http://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html

 

Neural Network Consoleでは、ロス関数の後にMulScalarレイヤーを用いてロスの値をスケール倍し、Learning Rateをスケール分の1に設定することで、簡単にLoss Scalingを行うことが可能です。


※Mixed-Precisionを用いた学習は、学習対象のニューラルネットワークがGPUメモリを最大限利用するような大型のものである場合に効果を発揮します。
サンプルプロジェクトのほとんどを含む小型のネットワークである場合、また計算量に対して学習に用いるデータのサイズが大きい(読み込みに時間がかかる)場合は速度向上効果が見られないことがありますのでご注意ください。
GPU上での速度向上効果は、Profile機能を用いること細かく計測できます。

 

4. その他の機能・改善点

その他にも、以下のように様々な機能追加や改善が行われています。

Neural Network Console CloudへのデータセットUpload機能を追加

Neural Network Console Windowsのデータセット管理画面、データセットのプレビュー表示から、Neural Network Console Cloudに直接データセットのアップロードが可能になりました。
データを手軽にアップロードし、Neural Network Console Cloudの豊富なGPU資源を利用できます。

 

新しいレイヤー、Optimizer、Learning Rate Schedulerの追加
最近Neural Network Librariesで追加された24種のレイヤー、1つのOptimizer (AMSGRAD)、3つのLearning Rate Schedulerが追加されています。

 

サンプルプロジェクトの追加
簡単操作でデータセットをダウンロードし学習と推論を実行可能なセマンティックセグメンテーションの簡易サンプル、Fashion-MNIST、CIFAR-10、CIFAR-100などのサンプルプロジェクトが追加されています。
samples\sample_project\tutorial\semantic_segmentation
samples\sample_project\image_recognition
サンプルプロジェクトは今後も引き続き追加していく予定です。

 

Neural Network Consoleは今後も改善を継続していきます。
今後の適切な機能追加のため、引き続きユーザの皆さんからのご意見ご要望をお待ちしています!

Neural Network Console Windows
https://dl.sony.com/ja/app/