ホーム » 「Neural Network Intelligence」タグがついた投稿

タグアーカイブ: Neural Network Intelligence

Auto ML : NNI Tutorials : アセッサー

Auto ML : NNI Tutorials : アセッサー (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/07/2019

* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

NNI Tutorials : アセッサー

計算リソースをセーブするために、NNI は早期停止 (= early stop) ポリシーをサポートしてこのジョブを終了するために アセッサー (Assessor) を作成します。
※ 訳注: Assessor は判定者、査定者の意味です。

アセッサーはトライアルから中間結果を受け取りトライアルが特定のアルゴリズムにより kill されるべきか否かを決定します。ひとたびトライアル実験が早期停止条件に遭遇すれば (これはアセッサーは最終結果について悲観的であることを意味します)、アセッサーはトライアルを kill してトライアルのステータスは “EARLY_STOPPED” になります。

ここに maximize モードで Curvefitting アセッサーを使用した後の MNIST の実験結果があります、アセッサーが悪いハイパーパラメータを持つ多くのトライアルを先立って成功的に 早期停止 したことが見て取れます。アセッサーを使用すれば、同じ計算リソースのもとでより良いハイパーパラメータを得るかもしれません。

実装されたコード・ディレクトリ: config_assessor.yml

チューナーのように、ユーザは組み込みアセッサーを使用するか彼ら自身のアセッサーをカスタマイズすることができます。

 

NNI Tutorials : 組み込みアセッサー

NNI は組み込みアセッサーで先端技術の調整アルゴリズムを提供してそれらを容易に利用できるようにしています。下は NNI の現在の組み込みアセッサーの簡潔な概要です。現在次のアセッサーをサポートします :

  • Medianstop
    Medianstop は単純な早期停止ルールです。それはステップ S でペンディング・トライアル X を停止します、もしそのトライアルのステップ S までの最善の目的値がステップ S までに報告された総ての完了したトライアルの目的 (値) の実行平均の median 値よりも厳密に悪い場合には。
    参照ペーパー

  • Curvefitting
    Curve Fitting Assessor は LPA (learning, predicting, assessing) アルゴリズムです。それはステップ S でペンディング・トライアルを停止します、もし最後のエポックのパフォーマンスの予測がトライアル履歴で最善の最後のパフォーマンスよりも悪い場合には。このアルゴリズムでは、精度カーブに fit させるために 12 カーブを使用します。
    参照ペーパー

 

組み込みアセッサーの使用方法

NNI SDK により提供される組み込みアセッサーの使用は config.yml で builtinAssessorName と classArgs を宣言することが必要です。このパートでは、推奨シナリオ、classArg 要件、そして各アセッサーのための例について詳細な使用方法を紹介します。

 

組み込みアセッサー名 : Medianstop

推奨シナリオ

広範囲の性能カーブで適用可能で、様々なシナリオで調整進捗をスピードアップするために利用できます。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、アセッサーはより小さな expectation でトライアルを停止します。
    ‘minimize’ の場合、アセッサーはより小さな expectation でトライアルを停止します。

  • start_step (int, optional, default = 0) – 報告された中間結果の start_step 数を受け取る後で、トライアルが停止されるか否かが決定されます。

 
使用例 :

# config.yml
assessor:
    builtinAssessorName: Medianstop
    classArgs:
      optimize_mode: maximize
      start_step: 5

 

組み込みアセッサー名 : Curvefitting

推奨シナリオ

It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it’s able to handle and assess curves with similar performance.

 
classArg の要件

  • epoch_num (int, required) – エポック総数。どの点で予測する必要があるか決定するエポック数を知る必要があります。
  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、アセッサーはより小さな expectation でトライアルを停止します。
    ‘minimize’ の場合、アセッサーはより小さな expectation でトライアルを停止します。

  • start_step (int, optional, default = 6) – トライアルが停止されるか否かが決定されます、報告された中間結果の start_step 数を受け取る後で予測を始めます。
  • threshold (float, optional, default = 0.95) – より悪い性能カーブを早期停止することを決定する閾値。
    例えば : if threshold = 0.95, optimize_mode = maximize, 履歴の最善性能が 0.9,
    then 予測値が 0.95 * 0.9 = 0.855 より低いトライアルを停止します。

  • gap (int, optional, default = 1) – Assesor 判断間の間隔。
    例えば : if gap = 2, start_step = 6, then 6, 8, 10, 12… 中間結果を得るときに結果を査定します。

 
使用例 :

# config.yml
assessor:
    builtinAssessorName: Curvefitting
    classArgs:
      epoch_num: 20
      optimize_mode: maximize
      start_step: 6
      threshold: 0.95
      gap: 1

 

NNI Tutorials : アセッサーをカスタマイズする

NNI は調整要求のために貴方自身でアセッサーを構築することをサポートします。

カスタマイズされたアセッサーを実装することを望むのであれば、行なうことが 3 つあります :

  1. 基底 Assessor クラスを継承する
  2. assess_trial 関数を実装する
  3. カスタマイズされたアセッサーを実験 YAML config ファイルで configure する

 
1. 基底 Assessor クラスを継承する

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 クラスの位置を指定して literal 値を __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 関数を使用して Trial が Assessor に送る正確なオブジェクトです。

より詳細なサンプルを見ることができるでしょう :

 

以上






Auto ML : NNI Tutorials : チューナー (2) カスタマイズ・チューナー & アドバイザー

Auto ML : NNI Tutorials : チューナー (2) カスタマイズ・チューナー & アドバイザー (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/03/2019

* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

NNI Tutorials : チューナー

NNI はパラメータ調整アルゴリズムをセットアップするアプローチを採用するための簡単な方法を提供します、それらをチューナーと呼びます。

チューナーは、特定のパラメータ/アーキテクチャ構成のパフォーマンスを評価するためにトライアルからメトリクスを受け取ります。

NNI では、チューナーを設定するために 2 つのアプローチをサポートします : 1 番目は nni sdk により提供される組み込みチューナーを直接的に使用します、2 番目は貴方自身でチューナーファイルをカスタマイズします。チューナー & アセッサーの機能を結合する Advisor もまた持ちます。

 

カスタマイズ-チューナー

チューナーをカスタマイズする

NNI は組み込みチューナーで先端技術のチューニング・アルゴリズムを提供します。NNI はチューニング要件のために貴方自身でチューナーを構築することもサポートします。

貴方自身のチューニング・アルゴリズムを実装することを望むのであれば、カスタマイズされたチューナーを実装することができます、3 つの行なうべきことがあります :

  1. 基底 Tuner クラスを継承する
  2. receive_trial_result と generate_parameter 関数を実装する
  3. 実験 YAML config ファイルで貴方のカスタマイズされたチューナーを configure する

 
ここにサンプルがあります :

1. 基底 Tuner クラスを継承する

from nni.tuner import Tuner

class CustomizedTuner(Tuner):
    def __init__(self, ...):
        ...

 
2. receive_trial_result と generate_parameter 関数を実装する

from nni.tuner import Tuner

class CustomizedTuner(Tuner):
    def __init__(self, ...):
        ...

    def receive_trial_result(self, parameter_id, parameters, value):
    '''
    Receive trial's final result.
    parameter_id: int
    parameters: object created by 'generate_parameters()'
    value: final metrics of the trial, including default metric
    '''
    # your code implements here.
    ...

    def generate_parameters(self, parameter_id):
    '''
    Returns a set of trial (hyper-)parameters, as a serializable object
    parameter_id: int
    '''
    # your code implements here.
    return your_parameters
    ...

receive_trial_result はパラメータ入力として parameter_id, parameters, value を受け取ります。また、Tuner は Trial が送ったものと正確に同じ value オブジェクトを受け取ります。

generate_parameters 関数から返される your_parameters は NNI SDK により json オブジェクトとして pack されます。NNI SDK は json オブジェクトを unpack してトライアルは正確に同じ your_parameters を Tuner から受け取ります。

例えば : 貴方がこのように generate_parameters を実装する場合 :

def generate_parameters(self, parameter_id):
    '''
    Returns a set of trial (hyper-)parameters, as a serializable object
    parameter_id: int
    '''
    # your code implements here.
    return {"dropout": 0.3, "learning_rate": 0.4}

それは貴方の Tuner は常にパラメータ {“dropout”: 0.3, “learning_rate”: 0.4} を生成することを意味します。それから Trial は API nni.get_next_parameter() を呼び出すことにより {“dropout”: 0.3, “learning_rate”: 0.4} を受け取ります。ひとたび Trial が結果 (通常はある種のメトリクス) で終われば、それは API nni.report_final_result() を呼び出すことにより結果を Tuner に送ることができます、例えば nni.report_final_result(0.93) です。それから貴方の Tuner の receive_trial_result 関数は次のように結果を受け取ります :

parameter_id = 82347
parameters = {"dropout": 0.3, "learning_rate": 0.4}
value = 0.93

貴方自身のチューナーのディレクトリでファイル (e.g., data.txt) にアクセスすることを望む場合、open(‘data.txt’, ‘r’) は使用できないことに注意してください。代わりに、次を使用するべきです :

_pwd = os.path.dirname(__file__)
_fd = open(os.path.join(_pwd, 'data.txt'), 'r')

これは貴方のチューナーが貴方のチューナーのディレクトリで実行されないからです (i.e., pwd は貴方自身のオーナーのディレクトリではありません)。

 
3. 実験 YAML config ファイルで貴方のカスタマイズされたチューナーを configure する

NNI は貴方のカスタマイズされたチューナークラスの位置を特定してクラスをインスタンス化する必要がありますので、カスタマイズされたチューナークラスの位置を指定してパラメータとして literal values を __init__ コンストラクタに渡す必要があります。

tuner:
  codeDir: /home/abc/mytuner
  classFileName: my_customized_tuner.py
  className: CustomizedTuner
  # Any parameter need to pass to your tuner class __init__ constructor
  # can be specified in this optional classArgs field, for example 
  classArgs:
    arg1: value1

より詳細なサンプルは以下を見ることができるでしょう :

 

より進んだ automl アルゴリズムを書く

上のメソッドは通常は一般的なチューナーを書くために十分です。けれども、よりパワフルな automl アルゴリズムを持つために、ユーザはより多くのメソッド、例えば、中間結果、トライアルの状態 (アセッサーのメソッド) も望むかも知れません。従って、アドバイザーと呼ばれるもう一つの概念を持ちます、これは src/sdk/pynni/nni/msg_dispatcher_base.py の MsgDispatcherBase から直接に継承します。

 

How To – 貴方自身のアドバイザーをカスタマイズする

アドバイザーは automl アルゴリズムがチューナーとアセッサーの両者のメソッドを望むシナリオを対象としています。アドバイザーはそれがトライアル・パラメータ・リクエスト、最終結果を受け取り、トライアル・パラメータを生成するという点でチューナーに類似しています。また、それが中間結果、トライアルの最終状態を受け取り、そしてトライアル kill コマンドを送ることができるという点でアセッサーに類似しています。アドバイザーを使用する場合、チューナーとアセッサーは同時に使用されることが許されないことに注意してください。

従って、ユーザがカスタマイズされたアドバイザーを実装することを望む場合、以下が必要なだけです :

  1. MsgDispatcherBase クラスから継承して Advisor を定義する
  2. handle_request を除いてプレフィクス handle_ でメソッドを実装する
  3. 実験 YAML config ファイルで貴方のカスタマイズされたアドバイザーを configure する

ここにサンプルがあります :

1) MsgDispatcherBase クラスから継承して Advisor を定義する

from nni.msg_dispatcher_base import MsgDispatcherBase

class CustomizedAdvisor(MsgDispatcherBase):
    def __init__(self, ...):
        ...

 
2) handle_request を除いてプレフィクス handle_ でメソッドを実装する

メソッドをどのように実装するかについては Hyperband (src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py) の実装を参照してください。

 
3) 実験 YAML config ファイルで貴方のカスタマイズされたアドバイザーを configure する

チューナーとアセッサーと同様です。NNI は貴方のカスタマイズされた Advisor クラスの位置を特定してクラスをインスタンス化する必要がありますので、カスタマイズされた Advisor クラスの位置を指定してパラメータとして literal values を __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
 

以上






Auto ML : NNI Tutorials : チューナー (1) 組み込みチューナー

Auto ML : NNI Tutorials : チューナー (1) 組み込みチューナー (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/01/2019

* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

NNI Tutorials : チューナー

NNI はパラメータ調整アルゴリズムをセットアップするアプローチを採用するための簡単な方法を提供します、それらをチューナーと呼びます。

チューナーは、特定のパラメータ/アーキテクチャ構成のパフォーマンスを評価するためにトライアルからメトリクスを受け取ります。

NNI では、チューナーを設定するために 2 つのアプローチをサポートします : 1 番目は nni sdk により提供される組み込みチューナーを直接的に使用します、2 番目は貴方自身でチューナーファイルをカスタマイズします。チューナー & アセッサーの機能を結合する Advisor もまた持ちます。

 

NNI Tutorials : 組み込みチューナー

NNI は組み込みチューナーとして最先端チューニングアルゴリズムを提供してそれらを使用することを容易にしています。下は現時点での NNI 組み込みチューナーの簡潔な要約です。

現在以下のアルゴリズムをサポートしています :

  • TPE
    TPE (Tree-structured Parzen Estimator, 木構造 Parzen 推定器) は SMBO (sequential model-based optimization, シーケンシャル・モデルベースの最適化) アプローチです。SMBO 法は計測履歴に基づきハイパーパラメータのパフォーマンスを見積もるためにモデルをシーケンシャルに構築し、それから続いてこのモデルに基づいてテストするために新しいパラメータを選択します。
    参照ペーパー

  • ランダム探索 (Random Search)
    ハイパーパラメータ最適化のためのランダム探索ではランダム探索が驚くほど単純で効果的であるかもしれないことを示します。ハイパーパラメータの事前分布について知識を持たないときにはベースラインとしてランダム探索を使用できることを提案します。
    参照ペーパー

  • 焼きなまし (Anneal)
    この単純なアニーリング・アルゴリズムは事前分布からサンプリングすることにより開始しますが、点からのサンプリングは時間とともに (観測される) 最善のものにどんどん近づいていく傾向があります。このアルゴリズムは応答曲面 (= response surface) の滑らかさを活用するランダム探索の単純なバリエーションです。annealing rate は adaptive ではありません。

  • Naive Evolution
    Naive Evolution は “Large-Scale Evolution of Image Classifiers” に由来します。それはランダムに探索空間上 population-based を初期化します。各世代 (= generation) について、それは次の世代を得るためにより良いものを選択してその上で何某かの変更 (= mutation) (e.g., ハイパーパラメータを変更する、一つの層を追加/除去する) を行ないます。Naive Evolution は動作するために多くのトライアルを要求しますが、新しい特徴を拡張することは非常に単純で容易です。
    参照ペーパー

  • SMAC
    SMAC は SMBO (Sequential Model-Based Optimization) に基づいています。カテゴリカル・パラメータを扱うために、それは最も卓越した以前に使用されたモデルクラス (ガウス確率過程モデル) を適合させてランダムフォレストのモデルクラスを SMBO に導入します。nni によりサポートされる SMAC は SMAC3 Github repo 上のラッパーです。注意してください、SMAC は nnictl パッケージコマンドによりインストールされる必要があります。
    参照ペーパー, Github Repo

  • バッチ・チューナー (Batch tuner)
    バッチ・チューナーはユーザにトライアルコードのために様々な configuration (i.e., ハイパーパラメータの選択) を単純に提供することを可能にします。総ての configuration を終了後、実験は完了します。バッチ・チューナーは探索空間 spec で型 (= type) choice をサポートするだけです。

  • グリッドサーチ
    グリッドサーチは searchspace で定義されたハイパーパラメータ空間の手動で指定されたサブセットを通してしらみつぶし探索 (= exhaustive searching) を遂行します。受け入れ可能な探索空間の型は choice, quniform, qloguniform だけであることに注意してください。quniform と qloguniform の数字 q は特別な意味を持ちます (探索空間 spec の spec とは異なります)。範囲 low と high から公平にサンプリングされる値の数を意味します。

  • Hyperband
    Hyperband は多くの configuration をできるかぎり調査するために限定されたリソースを利用しようとして最終結果を得るために有望なもの達を見出します。基本的なアイデアは多くの configuration を生成して有望な一つを見い出すために少数の STEPs の間それらを実行して、それから幾つかのより有望なものを選択するために更にそれらの有望なもの達を訓練します。
    参照ペーパー

  • Network Morphism
    Network Morphism は深層学習モデルのアーキテクチャを自動的に探索するための機能を提供します。総てのチャイルドネットワークはその親ネットワークから知識を継承して多様なネットワークのタイプに変形 (=morph) します、深さ、幅とスキップコネクションを含みます。次に、それは履歴アーキテクチャとメトリックペアを使用してチャイルドネットワークの値を推定します。それからそれは訓練するために最も有望なものを選択します。
    参照ペーパー

  • Metis チューナー
    Metis はそれがチューニング・パラメータになるとき次の恩恵を与えます : 多くのツールが最適な configuration を予測だけをする一方で、Metis は 2 つの出力を貴方に与えます : (a) 最適な configuration の現在の予測、そして (b) 次のトライアルのための提案です。それ以上の当て推量はありません。殆どのツールが訓練データセットがノイズのあるデータを持たないことを仮定する一方で、Metis は実際には特定のハイパーパラメータを再サンプリングする必要があるかを知らせます。
    参照ペーパー

 

組み込みチューナーの使用方法

NNI SDK により提供される組み込みチューナーの利用は config.yml ファイルで builtinTunerName と classArgs を宣言することを必要とします。このパートでは、推奨シナリオ (= suggested scenarios)、classArg 要件と各チューナーのサンプルについての詳細な使用方法を紹介します。

Note: 貴方の config.yml ファイルを書く時フォーマットに従ってください。SMAC のように、幾つかの組み込みチューナーは nnictl パッケージによりインストールされる必要があります。

 

組み込みチューナー名 : TPE

推奨シナリオ

TPE は、ブラックボックスな最適化として、様々なシナリオで使用することができて一般に良いパフォーマンスを示します。特に、制限された計算リソースを持ち少数のトライアルを試すことだけができるときです。巨大な数の実験から、TPE がランダム探索よりも遥かに良いことを見い出せました。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: TPE
  classArgs:
    optimize_mode: maximize

 

組み込みチューナー名 : Random

推奨シナリオ

ランダム探索は各トライアルがそれほど長くはかからず (e.g., 各トライアルがすぐに完了できる、あるいはアセッサーにより迅速に早期に停止される)、そして十分な計算リソースを持つときに提案されます。あるいは探索空間を一様に調査することを望むでしょう。ランダム探索は探索アルゴリズムのベースラインとして考えることができます。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: Random
  classArgs:
    optimize_mode: maximize

 

組み込みチューナー名 : Anneal

推奨シナリオ

アニールは各トライアルがそれほど長くはかからず、そして十分な計算リソースを持つときに提案されます (ランダム探索と殆ど同じです)。あるいは探索空間の変数がある事前分布からサンプリングできるでしょう。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: Anneal
  classArgs:
    optimize_mode: maximize

 

組み込みチューナー名 : Evolution

推奨シナリオ

その計算リソースの要件は比較的高いです。特に、局所的な最適条件にはまることを回避するためにそれは巨大な初期個体群 (= population) を必要とします。貴方のトライアルが短いかアセッサーを活用するのであれば、このチューナーは良い選択です。そして、貴方のトライアルコードが weight transfer をサポートする、つまり、トライアルは converged weights をその親から継承できるときにより提案されます。これは訓練進捗を大いにスピードアップできます。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: Evolution
  classArgs:
    optimize_mode: maximize

 

組み込みチューナー名 : SMAC

インストール

SMAC は最初の使用前に次のコマンドによりインストールされる必要があります。

nnictl package install --name=SMAC

 
推奨シナリオ

TPE と類似して、SMAC もまた様々なシナリオで試せるブラックボック・チューナーで、計算リソースが制限されているときに提案されます。それは離散的なハイパーパラメータのために最適化され、従って貴方のハイパーパラメータの多くが離散的であるときに提案されます。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: SMAC
  classArgs:
    optimize_mode: maximize

 

組み込みチューナー名 : BatchTuner

推奨シナリオ

試すことを望む configuration が決定すれば、それらを (choice を使用して) searchspace ファイルでリストしてそれらをバッチ・チューナーを使用して実行できます。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: BatchTuner

BatchTuner がサポートする探索空間は次のようなものであることに注意してください :

{
    "combine_params":
    {
        "_type" : "choice",
        "_value" : [{"optimizer": "Adam", "learning_rate": 0.00001},
                    {"optimizer": "Adam", "learning_rate": 0.0001},
                    {"optimizer": "Adam", "learning_rate": 0.001},
                    {"optimizer": "SGD", "learning_rate": 0.01}, 
                    {"optimizer": "SGD", "learning_rate": 0.005}, 
                    {"optimizer": "SGD", "learning_rate": 0.0002}]
    }
}

この探索空間ファイルは高位キー combine_params を含みます。探索空間の params の type は choice でなければなりませんそして値は総て combined-params 値を含みます。

 

組み込みチューナー名 : Grid Search

推奨シナリオ

受け入れ可能な探索空間の型は choice, quniform, qloguniform だけであることに注意してください。quniform と qloguniform の数字 q は特別な意味を持ちます (探索空間 spec の spec とは異なります)。範囲 low と high から公平にサンプリングされる値の数を意味します。

それは探索空間が小さいときに提案され、総ての探索空間をしらみつぶしに sweep することに適しています。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: GridSearch

 

組み込みチューナー名 : Hyperband

推奨シナリオ

それは制限された計算リソースを持ちながら比較的巨大な探索空間を持つときに提案されます。中間結果 (e.g. 精度) が良いまたは悪い最終結果 (e.g. 精度) をある程度反映できるシナリオで上手く動作します。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

  • R (int, optional, default = 60) – トライアルの割り当てられる最大 STEPs (ミニバッチかエポックの数であり得ます)。各トライアルはそれがどのくらい長く実行されるかを制御するために STEPS を使用するべきです。
  • eta (int, optional, default = 3) – (eta-1)/eta は破棄されるトライアルの割合です。

 
使用例 :

# config.yml
advisor:
  builtinAdvisorName: Hyperband
  classArgs:
    optimize_mode: maximize
    R: 60
    eta: 3

 

組み込みチューナー名 : NetworkMorphism

インストール

NetworkMorphism は pyTorch を必要としますので、ユーザはそれを最初にインストールするべきです。

 
推奨シナリオ

深層学習メソッドを貴方のタスク (貴方自身のデータセット) に適用することを望むがしかしネットワークをどのように選択して設計するかのアイデアを持たないことが提示されます。貴方自身のデータセットと貴方自身のデータ増強メソッドに fit させるために サンプル を変更します。バッチサイズ、学習率や optimizer を変更することもできます。良いネットワーク・アーキテクチャを見つけるための異なるタスクにも適します。今はこのチューナーはコンピュータビジョン・ドメインをサポートするだけです。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

  • task ((‘cv’), optional, default = ‘cv’) – 実験のドメイン、今のところは、このチューナーはコンピュータ・ビジョン (cv) ドメインをサポートするだけです。
  • input_width (int, optional, default = 32) – 入力画像幅
  • input_channel (int, optional, default = 3) – 入力画像チャネル
  • n_output_node (int, optional, default = 10) – クラス数

 
使用例 :

# config.yml
tuner:
  builtinTunerName: NetworkMorphism
    classArgs:
      optimize_mode: maximize
      task: cv
      input_width: 32
      input_channel: 3
      n_output_node: 10

 

組み込みチューナー名 : MetisTuner

探索空間の受け入れる型は choice, quniform, uniform と randint だけであることに注意してください。

 
インストール

Metis チューナーは sklearn を必要としますので、ユーザは最初にそれをインストールするべきです。ユーザはそれをインストールするために “pip3 install sklearn” を使用できるでしょう。

 
推奨シナリオ

TPE と SMAC に類似して、Metis はブラックボックス・チューナーです。貴方のシステムが各トライアルを終えるのに時間がかかるのであれば、Metis はランダム探索のような他のアプローチよりも好ましいでしょう。更に、Metis は続くトライアルのガイダンスを提供します。ユーザは精度のような最終結果を nni SDK を呼び出すことによりチューナーに送る必要があるだけです。

 
classArg の要件

  • optimize_mode (maximize または minimize, optional, default = maximize) –
    ‘maximize’ の場合、チューナーはより大きな expectation でハイパーパラメータ・セットを返します。
    ‘minimize’ の場合、チューナーはより小さな expectation でハイパーパラメータ・セットを返します。

 
使用例 :

# config.yml
tuner:
  builtinTunerName: MetisTuner
  classArgs:
    optimize_mode: maximize
 

以上






Auto ML : NNI Tutorials : NNI で Trial Run を書く

Auto ML : NNI Tutorials : NNI で Trial Run を書く (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 02/27/2019

* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

 

NNI Tutorials : NNI で Trial Run を書く

NNI のトライアルはモデル上で configuration (e.g., ハイパーパラメータのセット) を適用する個々の試行です。

NNI トライアルを定義するためには、最初にパラメータのセット (i.e., 探索空間) を定義してそれからモデルを更新する必要があります。NNI はトライアルを定義するために貴方に 2 つのアプローチを提供します : NNI APINNI Python アノテーション です。 より多くのトライアル・サンプルは こちら を参照できるでしょう。

 

NNI API

Step 1 – 探索空間パラメータ・ファイルを準備する

サンプルは下で示されます :

{
    "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]},
    "conv_size":{"_type":"choice","_value":[2,3,5,7]},
    "hidden_size":{"_type":"choice","_value":[124, 512, 1024]},
    "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]}
}

探索空間について更に学習するためには SearchSpaceSpec.md を参照してください。

チューナーはこの探索空間から configuration を生成します、つまり、範囲から各ハイパーパラメータのための値を選択します。

 

Step 2 – モデル・コードを更新する

  • Import NNI
    NNI API を使用するためにトライアル・コードに “import nni” を含めます。

  • チューナーから configuration を得る。
    RECEIVED_PARAMS = nni.get_next_parameter()
    

    RECEIVED_PARAMS はオブジェクトです、 例えば :

    {"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029}
    
  • メトリックデータを定期的に報告する (オプション)。
    nni.report_intermediate_result(metrics)
    

    メトリクスは任意の python オブジェクトです。ユーザが NMI 組み込みチューナー/アセッサーを使用するのであれば、メトリクスは 2 つの形式だけを持つことができます: 1) 数字 e.g., float, int, 2) 辞書オブジェクト、これは default と名前付けられたキーを持ちその値は数字です。このメトリクスは アセッサー に報告されます。通常は、メトリクスは定期的に評価された損失か精度であり得ます。

  • configuration のパフォーマンスを報告する。
    nni.report_final_result(metrics)
    

    メトリクスはまた任意のオブジェクトであり得ます。ユーザが NNI 組み込みチューナー/アセッサーを使用するのであれば、メトリクスは report_intermediate_result (の場合) と同じ形式ルールに従います、数字はモデルのパフォーマンスを示します、例えば、モデルの精度、損失 etc. このメトリクスは チューナー に報告されます。

 

Step 3 – NNI API を有効にする

NNI API モードを有効にするには、useAnnotation を false に設定して SearchSpace ファイル (丁度 step 1 で定義しました) のパスを提供する必要があります :

useAnnotation: false
searchSpacePath: /path/to/your/search_space.json

実験 configuration をどのようにセットアップするかについてより多くの情報は こちら を参照できます。

* NNI により提供されるより多くの API (e.g., nni.get_sequence_id()) については こちら を参照してください。

 

NNI Python アノテーション

トライアルを書くための代替は python のための NNI シンタクスを使用します。任意のアノテーションのように単純に、NNI アノテーションは貴方のコードでコメントのように動作します。貴方の既存のコードに構造を作成したり任意の他の大きな変更を行なう必要はありません。NNI アノテーションの数行で、次が可能です :

  • 調整したい変数 (= variables) をアノテートする
  • どの範囲内で変数を調整することを望むか指定する
  • どの変数をアセッサーに中間結果として報告することを望むかをアノテートする
  • どの変数をチューナーに最終結果 (e.g. モデル精度) として報告することを望むかをアノテートする

再度、MNIST を例に取れば、それは NNI アノテーションでトライアルを書くために 2 ステップだけを要求します。

 

Step 1 – アノテーションでコードを更新する

以下は NNI アノテーションのための tensorflow コード・スニペットです、そこではハイライトされた 4 行は次を手助けするためのアノテーションです (訳注: ここではハイライトされていません、行の最初に “+” がついています) :

  1. batch_size と dropout_rate を調整する
  2. 100 ステップ毎に test_acc を報告する
  3. 最後に最終結果として test_acc を報告する

注目すべきことは : これらの新たに追加されたコードはアノテーションですので、それは貴方の以前のコードロジックを実際には変更しません、NNI がインストールされていない環境で通常のようにコードを依然として実行することができます。

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
+   """@nni.variable(nni.choice(50, 250, 500), name=batch_size)"""
    batch_size = 128
    for i in range(10000):
        batch = mnist.train.next_batch(batch_size)
+       """@nni.variable(nni.choice(1, 5), name=dropout_rate)"""
        dropout_rate = 0.5
        mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0],
                                                mnist_network.labels: batch[1],
                                                mnist_network.keep_prob: dropout_rate})
        if i % 100 == 0:
            test_acc = mnist_network.accuracy.eval(
                feed_dict={mnist_network.images: mnist.test.images,
                            mnist_network.labels: mnist.test.labels,
                            mnist_network.keep_prob: 1.0})
+           """@nni.report_intermediate_result(test_acc)"""

    test_acc = mnist_network.accuracy.eval(
        feed_dict={mnist_network.images: mnist.test.images,
                    mnist_network.labels: mnist.test.labels,
                    mnist_network.keep_prob: 1.0})
+   """@nni.report_final_result(test_acc)"""

NOTE:

  • @nni.variable はそれに続く行上で効果があり、それは割り当てステートメントでその左辺値は @nni.variable でキーワード名により指定されなければなりません。
  • @nni.report_intermediate_result/@nni.report_final_result はその行でデータをアセッサー/チューナーに送ります。

アノテーション・シンタックスとその使用方法についてのより多くの情報については、Annotation を参照してください。

 

Step 2 – NNI アノテーションを有効にする

YAML configuration ファイルでは、NNI アノテーションを有効にするために useAnnotation を true に設定する必要があります :

useAnnotation: true

 

より多くのトライアル・サンプル

 

以上






Auto ML : Neural Network Intelligence : QuickStart

Auto ML : Neural Network Intelligence : QuickStart (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 02/26/2019

* 本ページは、NNI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

 

Neural Network Intelligence : QuickStart

MNIST 上の “Hello World” サンプル

NNI は自動化された機械学習実験を実行することを手助けするツールキットです。それはハイパーパラメータを得て、トライアルを実行して、結果をテストして、ハイパーパラメータを調整する循環する過程を自動的に遂行することができます。今、最適なハイパーパラメータを見つけることを助けるためにどのように NNI を利用するかを示します。

ここに NNI なしで MNIST データセット上で CNN を訓練するサンプル・スクリプトがあります :

def run_trial(params):
    # 入力データ
    mnist = input_data.read_data_sets(params['data_dir'], one_hot=True)
    # ネットワークを構築
    mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate'])
    mnist_network.build_network()

    test_acc = 0.0
    with tf.Session() as sess:
        # ネットワークを訓練
        mnist_network.train(sess, mnist)
        # ネットワークを評価
        test_acc = mnist_network.evaluate(mnist)

if __name__ == '__main__':
    params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32}
    run_trial(params)

 
Note : フル実装を見ることを望むのであれば、examples/trials/mnist/mnist_before.py を参照してください。

上のコードは一度にパラメータの 1 つのセットを試すことができるだけです、もし学習率を調整することを望む場合、ハイパーパラメータを手動で修正してトライアルを何度も開始する必要があります。

NNI はユーザが調整ジョブを行なうことを助けるために生まれました、NNI 作業過程は次のように表わされます :

input: search space, trial code, config file
output: one optimal hyperparameter configuration

1: For t = 0, 1, 2, ..., maxTrialNum,
2:      hyperparameter = chose a set of parameter from search space
3:      final result = run_trial_and_evaluate(hyperparameter)
4:      report final result to NNI
5:      If reach the upper limit time,
6:          Stop the experiment
7: return hyperparameter value with best final result

(訳注: 擬似コードを単純に翻訳しておくと : )

入力: 探索空間, トライアルコード, config file
出力: 一つの最適なハイパーパラメータ configuration

1: For t = 0, 1, 2, ..., maxTrialNum,
2:      hyperparameter = 探索空間からパラメータのセットを選択する
3:      最終結果 = run_trial_and_evaluate(hyperparameter)
4:      NNI に最終結果を報告
5:      If 上限時間に到達,
6:          実験を停止する
7: return 最善の最終結果を持つハイパーパラメータ値

自動的にモデルを訓練して最適なハイパーパラメータを見つけるために NNI を使用することを望むのであれば、貴方のコードをベースに 3 つの変更を行なうことが必要です :

 

NNI を使用するときに行なうべき 3 つのこと

Step 1: json で探索空間ファイルを与えます、探索が必要な総てのハイパーパラメータの名前と (離散値または連続値の) 分布を含みます。

-   params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64,
-   'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32}
+ {
+     "dropout_rate":{"_type":"uniform","_value":[0.5, 0.9]},
+     "conv_size":{"_type":"choice","_value":[2,3,5,7]},
+     "hidden_size":{"_type":"choice","_value":[124, 512, 1024]},
+     "batch_size": {"_type":"choice", "_value": [1, 4, 8, 16, 32]},
+     "learning_rate":{"_type":"choice","_value":[0.0001, 0.001, 0.01, 0.1]}
+ }

 
実行されたコード・ディレクトリ: search_space.json

 
Step 2: NNI からハイパーパラメータのセットを得て NNI に最終結果を報告するためにトライアル・ファイルを修正しました。

+ import nni

  def run_trial(params):
      mnist = input_data.read_data_sets(params['data_dir'], one_hot=True)

      mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate'])
      mnist_network.build_network()

      with tf.Session() as sess:
          mnist_network.train(sess, mnist)
          test_acc = mnist_network.evaluate(mnist)
+         nni.report_final_result(acc)

  if __name__ == '__main__':
-     params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64,
-     'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32}
+     params = nni.get_next_parameter()
      run_trial(params)

 
実行されたコード・ディレクトリ: mnist.py

 
Step 3 : YAML で config ファイルを定義します、これは探索空間とトライアルへのパスを宣言し、また調整アルゴリズム、最大トライアル数と最大 duration 引数のような他の情報も与えます。

authorName: default
experimentName: example_mnist
trialConcurrency: 1
maxExecDuration: 1h
maxTrialNum: 10
trainingServicePlatform: local
# 探索空間へのパス
searchSpacePath: search_space.json
useAnnotation: false
tuner:
  builtinTunerName: TPE
# トライアルのパスと実行コマンド
trial:  
  command: python3 mnist.py
  codeDir: .
  gpuNum: 0

実行されたコード・ディレクトリ : config.yml

上の総てのコードは既に準備されて examples/trials/mnist/ にストアされています。

これらのことが成されたとき、実験を開始するためにコマンドラインから config.yml ファイルを実行します

nnictl create --config nni/examples/trials/mnist/config.yml

Note: nnictl はコマンドライン・ツールで、これは実験の start/stop/resume, NNIBoard の start/stop, etc のような実験を制御するために使用できます。nnictl のより多くの使用方法については ここ をクリックしてください。

コマンドラインでメッセージ “INFO: Successfully started experiment!” を待ちます。このメッセージは貴方の実験が成功的に開始されたことを示しています。そしてこれが私達が得ることを期待していたものです :

INFO: Starting restful server...
INFO: Successfully started Restful server!
INFO: Setting local config...
INFO: Successfully set local config!
INFO: Starting experiment...
INFO: Successfully started experiment!
-----------------------------------------------------------------------
The experiment id is egchD4qy
The Web UI urls are: [Your IP]:8080
-----------------------------------------------------------------------

You can use these commands to get more information about the experiment
-----------------------------------------------------------------------
         commands                       description
1. nnictl experiment show        show the information of experiments
2. nnictl trial ls               list all of trial jobs
3. nnictl top                    monitor the status of running experiments
4. nnictl log stderr             show stderr log content
5. nnictl log stdout             show stdout log content
6. nnictl stop                   stop an experiment
7. nnictl trial kill             kill a trial job by id
8. nnictl --help                 get help information about nnictl
-----------------------------------------------------------------------

上のステップに従ってトライアル、探索空間と config を準備して NNI ジョブを成功的に作成すれば、NNI は最適なハイパーパラメータを自動的に調整して貴方が設定した要件に従って各トライアルのために異なるハイパーパラメータ・セットを実行します。その進捗を NNI WebUI により明瞭に見ることができます。

 

WebUI

NNI で貴方の実験を成功的に開始した後、このように Web UI url を知らせるためにコマンドライン・インターフェイスでメッセージを見つけられます :

The Web UI urls are: [Your IP]:8080

ブラウザで Web UI url (この情報では: [Your IP]:8080) をオープンしてください、下で示されるように実験と総ての submit されたトライアル・ジョブの詳細情報を見ることができます。

 

要約ページを見る

タブ “Overview” をクリックします。

この実験についての情報は WebUI で示されます、これは実験トライアル・プロフィールと探索空間メッセージを含みます。NNI はまた Download ボタンを通してこれらの情報とパラメータをダウンロードすることもサポートします。実験結果は実行の途中でも実行の最後等でもいつでもダウンロード可能です。

Overview ページで top 10 トライアルがリストされます、“Trials Detail” ページで総てのトライアルをブラウズすることができます。

 

トライアル詳細ページを見る

総てのトライアルの点グラフを見るためには “Default Metric” をクリックしてください。その特定のデフォルト・メトリックと探索空間メッセージまわりを見てください。

並列グラフを見るためにはタブ “Hyper Parameter” をクリックしてください。

  • top トライアルを見るために percentage を選択できます。
  • その位置を交換するために 2 つの軸を選択します。

棒グラフを見るためにタブ “Trial Duration” をクリックします。

下は総てのトライアルのステータスです。特に :

  • トライアル詳細 : トライアル id, トライアル時間 (= duration), 開始時刻, 終了時刻, ステータス, 精度と探索空間ファイル。
  • OpenPAI プラットフォーム上で実行する場合には、hdfsLogPath を見ることもできます。
  • Kill: ステータスが実行中であるジョブを kill できます。
  • 特定のトライアルを検索するサポート。

  • 中間的な結果グラフ。
 

以上






Auto ML : Neural Network Intelligence : 概要

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: 実験を定義する

 

以上






AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com