AutoML : NNI 1.5 : 自動調整 : 上級 : How To – 貴方自身のアドバイザーをカスタマイズする (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 06/01/2020
* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
自動調整 : 上級 : How To – 貴方自身のアドバイザーをカスタマイズする
アドバイザーは automl アルゴリズムがチューナーとアセッサーの両者のメソッドを望むシナリオを対象としています。アドバイザーはそれがトライアル・パラメータ・リクエスト、最終結果を受け取り、そしてトライアル・パラメータを生成するという点でチューナーに類似しています。また、それが中間結果、トライアルの最終状態を受け取り、そしてトライアル kill コマンドを送ることができるという点でアセッサーに類似しています。アドバイザーを使用する場合、チューナーとアセッサーは同時に使用されることが許されないことに注意してください。
ユーザがカスタマイズされたアドバイザーを実装することを望む場合、以下が必要なだけです :
1. MsgDispatcherBase クラスから継承して Advisor を定義する。例えば :
from nni.msg_dispatcher_base import MsgDispatcherBase class CustomizedAdvisor(MsgDispatcherBase): def __init__(self, ...): ...
2) handle_request を除いてプレフィクス handle_ でメソッドを実装する。MsgDispatcherBase のための docs を有用と見出すかもしれません。
3) 実験 YAML config ファイルで貴方のカスタマイズされたアドバイザーを configure する
チューナーとアセッサーと同様です。NNI は貴方のカスタマイズされた Advisor クラスの位置を特定してクラスをインスタンス化する必要がありますので、カスタマイズされた Advisor クラスの位置を指定してパラメータとしてリテラル値を __init__ コンストラクタに渡す必要があります。
advisor: codeDir: /home/abc/myadvisor classFileName: my_customized_advisor.py className: CustomizedAdvisor # Any parameter need to pass to your advisor class __init__ constructor # can be specified in this optional classArgs field, for example classArgs: arg1: value1
貴方のアドバイザーの作業ディレクトリは <home>/nni/experiments/<experiment_id>/log で、これは環境変数 NNI_LOG_DIRECTORY で取得できることに注意してください。
サンプル
ここ でサンプルを提供しています。
以上