Auto ML : Neural Network Intelligence : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 02/25/2019
* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
Neural Network Intelligence : 概要
NNI (Neural Network Intelligence) はユーザが機械学習モデル (e.g. ハイパーパラメータ)、ニューラルネットワーク・アーキテクチャ、あるいは複雑なシステムのパラメータを設計して調整することを効率的で自動的な方法で手助けするツールキットです。NNI は幾つかの魅力的な特性を持ちます: easy-to-use, スケーラビリティ、柔軟性そして効率性です。
- Easy-to-use: NMI は python pip を通して容易にインストールされます。NNI のパワーを使用するためには貴方のコードにわずか数行を追加することが必要なだけです。実験で作業するためにコマンドラインツールと WebUI の両者を利用できます。
- スケーラビリティ : ハイパーパラメータやニューラル・アーキテクチャの調整はしばしば計算リソースの巨大な総量を要求しますが、一方で NNI は遠隔マシン、訓練プラットフォーム (e.g., OpenPAI, Kubernetes) のような異なる計算リソースをフルに活用するように設計されています。貴方の構成された訓練プラットフォームのキャパシティに依拠して数百のトライアルが並列に実行できるでしょう。
- 柔軟性 : 豊富な組み込みアルゴリズムに加えて、NNI はユーザに様々なハイパーパラメータ調整アルゴリズム、ニューラル・アーキテクチャ検索アルゴリズム、early stopping アルゴリズム, etc をカスタマイズすることを可能にします。ユーザはまた NNI をクラウド上の仮想マシン、kubernetes サービスのような、より多くの訓練プラットフォームで拡張できるでしょう。更に、それらの上の特殊なアプリケーション/モデルを調整するために外部環境に接続することもできます。
- 効率性 : システム・レベルとアルゴリズム・レベルの両者から調整している効率的なモデル上で私達は集中的に作業しています。例えば、調整手続きをスピードアップするためにフィードバックを早期に活用しています。
下の図は NNI の高位アーキテクチャを示します。
主要概念
- 実験 (Experiment) : 実験は例えば、モデルの最善のハイパーパラメータを見い出し、最善のニューラルネットワーク・アーキテクチャを見い出す一つのタスクです。それは試行 (traial) と AutoML アルゴリズムから成ります。
- 探索空間 (Search Space) : それはモデルを調整するための適した (= feasible) 領域を意味します。例えば、各ハイパーパラメータの値範囲です。
- Configuration : configuration は探索空間からのインスタンスです、つまり、各ハイパーパラメータは特定の値を持ちます。
- トライアル (Trial) : トライアルは新しい configuration (e.g., ハイパーパラメータ値のセット、特定のニューラル・アーキテクチャ) を適用する個々の試行です。トライアル・コードは提供された configuration で実行可能であるべきです。
- チューナー (Tuner) : チューナーは AutoML アルゴリズムで、これは次のトライアルのための新しい configuration を生成します。新しいトライアルはこの configuration で実行されるでしょう。
- アセッサー (Assessor) : アセッサーはこのトライアルが早期に停止可能か否かを伝えるためにトライアルの中間的な結果 (e.g., テストデータセット上で定期的に評価された精度) を解析します。
- 訓練プラットフォーム : それはトライアルがどこで実行されるかを意味します。実験の configuration に依拠して、それは貴方のローカルマシンか、遠隔サーバか、訓練プラットフォーム (e.g., OpenPAI, Kubernetes) であり得ます。
基本的には、実験は次のように実行されます : チューナーは探索空間を受け取り configuration を生成します。これらの configuration はローカルマシン、遠隔マシン、あるいは訓練クラスタのような訓練プラットフォームに提出 (= submit) されます。それらのパフォーマンスはチューナーに報告が返されます。それから、新しい configuration が生成されて提出されます。
各実験について、ユーザは探索空間を定義して 2, 3 行のコードを更新する必要があるだけです、それから最善のハイパーパラメータ and/or ニューラル・アーキテクチャを探索するために NNI 組み込みチューナー/アセッサーと訓練プラットフォームを活用します。基本的に 3 ステップあります :
- Step 1: 探索空間を定義する
- Step 2: モデル・コードを更新する
- Step 3: 実験を定義する
以上