検索
連載

Microsoftが開発、Web UIで学習状況を可視化するAutoML OSS「Neural Network Intelligence」AutoML OSS入門(9)(1/3 ページ)

AutoML OSSを紹介する本連載第9回は「Neural Network Intelligence」を解説します。Neural Network Intelligenceは、ハイパーパラメーターチューニングやニューラルアーキテクチャ探索、モデル圧縮、自動特徴量エンジニアリングなどの機能を持つツールキットです。Web UIで学習の進行状況や結果を確認できます。

Share
Tweet
LINE
Hatena

本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。


 本連載第8回ではUberが開発したノーコードでディープラーニングを実現するOSS(オープンソースソフトウェア)「Ludwig」を紹介しました。今回は「Neural Network Intelligence」(以下、NNI)を紹介します。

Neural Network Intelligenceとは

 NNIは、Microsoftが中心となって開発しているAutoML OSSです。ハイパーパラメーターチューニングやニューラルアーキテクチャ探索、モデル圧縮、自動特徴量エンジニアリングなどの機能をツールキットとして提供しています。また、Web UIで学習の進行状況や結果を確認できます。

開発元 Microsoft
GitHubコミット日 2018年9月
リポジトリ https://github.com/microsoft/nni
実装言語 Python
ライセンス MIT License
公式サイト https://nni.readthedocs.io/en/stable/
表1 NNIの基本情報

 本連載で紹介したAutoML OSSの多くは、さまざまなアルゴリズムを用いてモデルを構築し、その中から精度の良いモデルを選択していました。NNIはハイパーパラメーターチューニングやニューラルアーキテクチャ探索がメインの機能となり、機械学習のモデル構築に慣れている人向けのツールとなっています。

 以下に、NNIにおけるハイパーパラメーターチューニングのイメージとキーとなる7個の概念を紹介します。

図1 NNIによる学習のイメージ(筆者作成)
図1 NNIによる学習のイメージ(筆者作成)
概念 説明
Experiment(実験) 後述する複数のTrialとAutoMLアルゴリズムで構成される1つのタスク(例:Random Searchを用いて最適なハイパーパラメーターを見つける、最適なニューラルアーキテクチャを見つけるなど)
Search Space(探索空間) ハイパーパラメーターの種類やその値など、モデルを探索する範囲
Configuration(構成) Search Spaceから選択された、特定のハイパーパラメーターの値やニューラルアーキテクチャなどの組み合わせ
Trial(トライアル) 新しいConfigurationを適用するための個別の試み
Tuner(チューナー) 次の実行のために新しいConfigurationを生成するAutoMLアルゴリズム。このConfigurationで新しいTrialが実行される
Assessor(評価アルゴリズム) Trialを早期に中止できるかどうかを判断するために学習途中結果を分析する評価アルゴリズム
Training Platform(トレーニングプラットフォーム) Trialを実行する環境。ローカルマシンやリモートサーバ、大規模なトレーニングプラットフォーム(OpenPAI、Kubernetesなど)が適用できる
表2 NNIの概念

主な特徴

 NNIは、AutoMLができる他のOSSと比較して次のような特徴があります。

  • 3つのファイルを用意するだけで簡単に学習できる
  • Web UIで学習の進行状況や結果を確認できる
  • モデルのプルーニングと量子化のプロセスを自動化できる

 それぞれの特徴をもう少し詳しく見ていきましょう。

3つのファイルを用意するだけで簡単に学習できる

 (モデル学習用のpythonファイルは用意している前提で、)NNIでは主に以下のステップ1〜3に沿って、モデルの学習を準備します。

  • ステップ1:Search Spaceを定義する
    • json形式のSearch Spaceファイル(search_space.json)を作成し、探索が必要な全てのハイパーパラメーターとその探索範囲を定義する
  • ステップ2:NNIに連携するコードを追記する
    • モデル学習用pythonファイルに、NNIからハイパーパラメーターの値を得て実行するコードや実行結果をNNIに連携するコードを追記する
  • ステップ3:Experimentを定義する
    • yaml形式のconfigファイル(config.yml)を作成し、Search Spaceやpythonファイルのパス、Tunerのアルゴリズム、最大Trial数などを定義する
図2 NNIの3つのステップ(出典元: https://nni.readthedocs.io/en/stable/Overview.htmlhttps://nni.readthedocs.io/en/stable/Overview.html)
図2 NNIの3つのステップ(出典元: https://nni.readthedocs.io/en/stable/Overview.html

 これらのステップに沿って各ファイルを作成したら、あとは学習するだけです。最初は取り組みづらいかもしれませんが、必要なファイルをそろえれば、必要に応じて各ファイルを更新するだけで済むため、さまざまなパラメーターを簡単に試すことができます。

 例えば、探索するハイパーパラメーターの種類やその値を変更したい場合はsearch_space.jsonを、実行するファイルやTrial数を変更したい場合はconfig.ymlを更新するだけでさまざまな学習を試すことができます。

Web UIで学習の進行状況や結果を確認できる

 NNIでは複数サーバを使用した分散学習もでき、その学習の進行状況や結果をGUIで確認できるのが大きな特徴の一つです。

図3 Experimentの一覧(出典元:https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html)
図3 Experimentの一覧 (出典元:https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html
図4 Experimentの詳細(出典元:https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html)
図4 Experimentの詳細(出典元:https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html

 各Trialの詳細(TrialのIDや進行状況、精度など)や中間結果のグラフなども表示できます。

図5 中間結果のグラフ(出典元:https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html)
図5 中間結果のグラフ(出典元:https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html

 さらにWeb UI内でTensorBoardを使用して実行結果を可視化できます。詳細は「How to Use Tensorboard within WebUI」を確認してください。

モデルのプルーニングと量子化のプロセスを自動化できる

 ニューラルネットワークモデルをエッジデバイスに組み込む際には、予測精度を保ちつつ、モデルを軽量化して処理速度を向上することが求められます。そこで、モデル圧縮技術を使用することで、スペックの高くないデバイスでもモデルに求められる精度、処理速度で動くようにモデルを圧縮できます。

 NNIでは無駄なノードを間引くプルーニング(枝刈り、Pruning)のアルゴリズムを16種類、重みなどのパラメーターに使用するビットを制限する量子化(Quantize)のアルゴリズムを6種類サポートしています。これにより、モデルのプルーニングと量子化のプロセスを自動化でき、推論時間を短くしたりモデルのサイズを小さくしたりできます。

 NNIで提供されているモデル圧縮のためのパイプラインは以下となっており、事前トレーニング済みモデルを圧縮する場合、プルーニングと量子化を単独で、または組み合わせて使用できます。

図6 圧縮パイプライン(出典元: https://nni.readthedocs.io/en/stable/Compression/Overview.html)
図6 圧縮パイプライン(出典元: https://nni.readthedocs.io/en/stable/Compression/Overview.html

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る