AutoML : NNI 1.5 : 自動調整 : チューナー : PBT チューナー (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 05/30/2020 (1.6.0)
* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
自動調整 : チューナー : PBT チューナー
PBT (集団ベース訓練, Population Based Training) は ニューラルネットワークの集団ベース訓練 に由来します。それは単純な非同期最適化アルゴリズムで、これはパフォーマンスを最大化するためにモデルの集団とそれらのハイパーパラメータを結合的に最適化するために固定計算バジェットを効果的に利用します。重要なことは、PBT は単一の固定セットを見つけようとする generally sub-optimal ストラテジーに従うよりもハイパーパラメータ設定のスケジュールを発見することです。
PBTTuner は幾つかのトライアル (i.e. population_size) で集団を初期化します。上の図で 4 つのステップがあり、各トライアルは 1 ステップにより実行されます。1 ステップがどれくらい長いかはトライアルコードにより制御されます, e.g. 1 エポック。トライアルが開始されるとき、それは PBTTuner により指定されたチェックポイントをロードして続けて 1 ステップを実行します、それからチェックポイントを PBTTuner により指定されたディレクトリにセーブして抜けます。(一つの) 集団内のトライアル (群) は同期的にステップを実行します、つまり、総てのトライアルが i-th ステップを終了した後、(i+1)-th ステップが開始できます。PBT の exploitation と探索は 2 つの連続するステップの間で実行されます。
チェックポイント・ディレクトリを提供する
幾つかのトライアルは他のトライアルのチェックポイントをロードする必要がありますので、ユーザは総てのトライアルからアクセス可能なディレクトリ (i.e., all_checkpoint_dir) を提供するべきです。それはローカルモードでは容易です、ユーザはデフォルトディレクトリを直接利用するか、またはローカルマシン上の任意のディレクトリを指定できるでしょう。他の訓練サービスについては、ユーザはNFS、Azure ストレージのような、共有ストレージでディレクトリを提供するために それらの訓練サービスのドキュメント に従うべきです。
トライアルコードを変更する
ステップを実行する前に、トライアルはチェックポイントをロードする必要があります、チェックポイント・ディレクトリは PBTTuner により生成されるハイパーパラメータ configuration で指定されます, i.e., params[‘load_checkpoint_dir’]。同様に、チェックポイントをセーブするためのディレクトリも configuration に含まれます, i.e., params[‘save_checkpoint_dir’]。ここでは、all_checkpoint_dir が load_checkpoint_dir と save_checkpoint_dir のベースフォルダで、その形式は all_checkpoint_dir/<population-id>/<step> です。
params = nni.get_next_parameter() # the path of the checkpoint to load load_path = os.path.join(params['load_checkpoint_dir'], 'model.pth') # load checkpoint from `load_path` ... # run one step ... # the path for saving a checkpoint save_path = os.path.join(params['save_checkpoint_dir'], 'model.pth') # save checkpoint to `save_path` ...
完全なサンプルは ここ で見つかります。
実験 config
下は実験 config ファイルの PBTTuner configuration のサンプルです。PBTTuner が使用される場合アセッサーは許可されないことに注意してください。
# config.yml tuner: builtinTunerName: PBTTuner classArgs: optimize_mode: maximize all_checkpoint_dir: /the/path/to/store/checkpoints population_size: 10
制限
データのインポートはまだサポートされていません。
以上