AutoML : NNI 1.5 : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 05/22/2020 (1.5)
* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
NNI : 概要
NNI (Neural Network Intelligence) はユーザが機械学習モデル (e.g. ハイパーパラメータ)、ニューラルネットワーク・アーキテクチャあるいは複雑なシステムのパラメータを設計して調整することを効率的で自動的な方法で手助けするツールキットです。NNI は幾つかの魅力的な特性を持ちます: easy-to-use, スケーラビリティ、柔軟性そして効率性です。
- Easy-to-use: NNI は python pip を通して容易にインストールできます。NNI のパワーを利用するためには貴方のコードにわずか数行を追加することが必要なだけです。貴方の実験とともに作業するためにコマンドラインツールと WebUI の両者を利用できます。
- スケーラビリティ : ハイパーパラメータやニューラル・アーキテクチャの調整はしばしば巨大な総量の計算リソースを要求しますが、一方で NNI は遠隔マシン、訓練プラットフォーム (e.g., OpenPAI, Kubernetes) のような種々の計算リソースをフルに活用するように設計されています。構成された訓練プラットフォームのキャパシティに依拠して数百のトライアルが並列に実行できるでしょう。
- 柔軟性 : 豊富な組込みアルゴリズムに加えて、NNI はユーザに様々なハイパーパラメータ調整アルゴリズム、ニューラル・アーキテクチャ探索アルゴリズム、early stopping アルゴリズム等をカスタマイズすることを可能にします。ユーザはまた NNI をクラウド上の仮想マシン、kubernetes サービスのような、より多くの訓練プラットフォームで拡張できるでしょう。更に、NNI はそれらの上の特殊なアプリケーション/モデルを調整するために外部環境に接続することもできます。
- 効率性 : システムとアルゴリズム・レベルの両者で調整している効率的なモデル上で私達は集中的に作業しています。例えば、調整手続きをスピードアップするためにフィードバックを早期に活用しています。
下図は NNI の高位アーキテクチャを示しています。
主要概念
- 実験 (Experiment) : 例えば、モデルの最善のハイパーパラメータを見い出し、最善のニューラルネットワーク・アーキテクチャを見い出す等の一つのタスクです。それはトライアルと AutoML アルゴリズムから成ります。
- 探索空間 (Search Space) : それはモデルを調整するための適した (= feasible) 領域を意味します。例えば、各ハイパーパラメータの値範囲です。
- Configuration : 探索空間からのインスタンスです、つまり、各ハイパーパラメータは特定の値を持ちます。
- トライアル (Trial) : 新しい configuration (e.g., ハイパーパラメータ値のセット、特定のニューラル・アーキテクチャ等) を適用する個々の試行です。トライアル・コードは提供された configuration で実行可能であるべきです。
- チューナー (Tuner) : AutoML アルゴリズムで、これは次の試行のための新しい configuration を生成します。新しいトライアルはこの configuration で実行されます。
- アセッサー (評価者・査定者) (Assessor) : このトライアルが早期に停止可能か否かを伝えるためにトライアルの中間的な結果 (e.g., テストデータセット上で定期的に評価される精度) を解析します。
- 訓練プラットフォーム : トライアルがどこで実行されるかです。実験の configuration に依拠して、それは貴方のローカルマシンか、遠隔サーバか、巨大スケールの訓練プラットフォーム (e.g., OpenPAI, Kubernetes) であり得ます。
基本的には、実験は次のように実行されます : チューナーは探索空間を受け取り configuration を生成します。これらの configuration はローカルマシン、遠隔マシン、あるいは訓練クラスタのような訓練プラットフォームに提出 (= submit) されます。それらのパフォーマンスはチューナーに報告が返されます。それから、新しい configuration が生成されて提出されます。
各実験について、ユーザは探索空間を定義して数行のコードを更新する必要があるだけです、それから最善のハイパーパラメータ and/or ニューラル・アーキテクチャを探索するために NNI 組込みチューナー/アセッサーと訓練プラットフォームを活用します。基本的に 3 ステップあります :
- Step 1: 探索空間を定義する
- Step 2: モデル・コードを更新する
- Step 3: 実験を定義する
実験をどのように実行するかについてのより詳細は、Get Started を参照してください。
中核の特徴
NNI はパラメータの最善の組み合わせを見つけるために複数のインスタンスを並列に実行するための主要なキャパシティを提供します。この特徴は、深層学習モデルのための最善のハイパーパラメータを見つけたり、データベースとリアルデータを持つ他の複雑なシステムのための最善の configuration を見つけるような、様々なドメインで利用できます。
NNI はまた、機械学習と深層学習、特にニューラル・アーキテクチャ探索 (NAS) アルゴリズム、モデル圧縮アルゴリズム、そして特徴エンジニアリング・アルゴリズムのためのアルゴリズム・ツールキットも提供します。
ハイパーパラメータ調整
これは NNI の中心的で基本的な特徴で、多くのポピュラーな 自動調整アルゴリズム (i.e. チューナー) と early stop アルゴリズム (i.e., assessor) を提供します。貴方のモデル (or システム) を調整するために Quick Start に従うことができるでしょう。基本的には、上の 3 つのステップがありそれから NNI 実験を開始します。
一般的な NAS フレームワーク
この NAS フレームワークはユーザが容易に候補ニューラル・アーキテクチャを指定できます、例えば、シングル層に対して複数の候補演算 (e.g., separable conv, dilated conv) を指定して可能なスキップ接続を指定できます。NNI は最善の候補を自動的に見つけます。その一方で、NAS フレームワークは他のタイプのユーザ (e.g., NAS アルゴリズム研究者) のために新しい NAS アルゴリズムを実装するための単純なインターフェイスを提供します。NAS の詳細な説明と利用方法は ここ で見つけられます。
NNI は NNI トライアル SDK を通して ENAS と DARTS のような多くの one-shot NAS アルゴリズムのためのサポートを持ちます。これらのアルゴリズムを使用するために NNI 実験を開始しなければならないということはありません。代わりに、トライアルコードでアルゴリズムをインポートして、単純に貴方のトライアルコードを実行します。アルゴリズムでハイパーパラメータを調整することを望むか、複数のインスタンスを実行することを望む場合、チューナーを選択して NNI 実験を開始することができます。
one-shot NAS 以外では、NAS はまたクラシックモードで動作可能です、そこでは各候補アーキテクチャは独立したトライアルジョブとして動作します。このモードでは、ハイパーパラメータ調整と同様に、ユーザは NNI 実験を開始して NAS のためのチューナーを選択しなければなりません。
モデル圧縮
NNI のモデル圧縮は枝刈り (= pruning) アルゴリズムと量子化アルゴリズムを含みます。これらのアルゴリズムは NNI トライアル SDK を通して提供されます。ユーザはトライアルコードでそれらを直接利用して NNI 実験を開始することなくトライアルコードを実行できます。モデル圧縮とその使用方法の詳細説明は ここ で見つけられます。
モデル圧縮には様々なタイプのハイパーパラメータがあります。一つのタイプは圧縮アルゴリズムへの入力 configuration (e.g., 疎性 (= sparsity), 量子化ビット) のハイパーパラメータです。他のタイプは圧縮アルゴリズムのハイパーパラメータです。ここでは、NNI のハイパーパラメータ調整は最善に圧縮されたモデルを自動的に見つける際に多く役立ちます。単純なサンプルは ここ で見つけられます。
自動特徴エンジニアリング
自動特徴エンジニアリングはユーザのために彼らのタスクのための最善の特徴を見つけます。自動特徴エンジニアリングとその使用方法の詳細説明は ここ で見つけられます。それは NNI トライアル SDK を通してサポートされ、これは NNI 実験を作成しなくても良いことを意味します。代わりに、トライアルコードで組込みの自動特徴エンジニアリング・アルゴリズムを単純にインポートしてトライアルコードを直接実行します。
自動特徴エンジニアリング・アルゴリズムは通常は多くのハイパーパラメータ自身を持ちます。それらのハイパーパラメータを自動的に調整することを望む場合、NNI のハイパーパラメータ調整を活用できます、つまり、調整アルゴリズム (i.e., チューナー) を選択してそのための NNI 実験を開始します。
以上