AutoML : NNI 1.5 : 自動調整 : 上級 : アセッサーのカスタマイズ (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 06/01/2020
* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
自動調整 : 上級 : アセッサーのカスタマイズ
NNI は調整要求のために貴方自身でアセッサーを構築することをサポートします。
カスタマイズされたアセッサーを実装することを望む場合、行なうべき 3 つのことがあります :
- 基底 Assessor クラスを継承する。
- assess_trial 関数を実装する。
- 実験 YAML config ファイルで貴方のカスタマイズされたアセッサーを configure する。
1. Inherit the base Assessor class
from nni.assessor import Assessor
class CustomizedAssessor(Assessor):
def __init__(self, ...):
...
2. assess_trial 関数を実装する
from nni.assessor import Assessor, AssessResult
class CustomizedAssessor(Assessor):
def __init__(self, ...):
...
def assess_trial(self, trial_history):
"""
Determines whether a trial should be killed. Must override.
trial_history: a list of intermediate result objects.
Returns AssessResult.Good or AssessResult.Bad.
"""
# you code implement here.
...
3. 実験 YAML config ファイルで貴方のカスタマイズされたアセッサーを configure する
NNI は貴方のカスタマイズされた Assessor クラスの位置を特定してクラスをインスタンス化する必要がありますので、カスタマイズされた Assessor クラスの位置を指定してパラメータとしてリテラル値を __init__ コンストラクタに渡す必要があります。
assessor:
codeDir: /home/abc/myassessor
classFileName: my_customized_assessor.py
className: CustomizedAssessor
# Any parameter need to pass to your Assessor class __init__ constructor
# can be specified in this optional classArgs field, for example
classArgs:
arg1: value1
2 内で注意してください。オブジェクト trial_history は正確に、トライアルが SDK report_intermediate_result 関数を使用してアセッサーに送るオブジェクトです。
アセッサーの作業ディレクトリは <home>/nni/experiments/<experiment_id>/log で、これは環境変数 NNI_LOG_DIRECTORY で取得できます。
より詳細なサンプルは以下で見れるでしょう :
以上