次の方法で共有


CLI (v2) スイープ ジョブ YAML スキーマ

適用対象:Azure CLI ml 拡張機能 v2 (現行)

ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json にあります。

このドキュメントで詳しく説明されている YAML 構文は、最新バージョンの ML CLI v2 拡張機能の JSON スキーマに基づいています。 この構文は、ML CLI v2 拡張機能の最新バージョンでのみ動作することが保証されています。 以前のバージョンの拡張機能のスキーマについては、https://azuremlschemasprod.azureedge.net/ でご確認いただけます。

YAML 構文

キー タイプ 説明 使用できる値 既定値
$schema ひも YAML スキーマ。 Azure Machine Learning 用 VS Code 拡張機能を使用して YAML ファイルを作成する場合、ファイルの先頭に $schema を含めると、スキーマとリソースの入力候補を呼び出すことができます。
type 定数 必須です。 ジョブの種類。 sweep sweep
name ひも ジョブの名前。 ワークスペース内のすべてのジョブで一意である必要があります。 省略した場合、Azure Machine Learning によって名前の GUID が自動生成されます。
display_name ひも スタジオ UI でのジョブの表示名。 ワークスペース内で一意ではない場合があります。 省略した場合、Azure Machine Learning により、表示名として、人間が判読できる形容詞と名詞の識別子が自動生成されます。
experiment_name ひも 実験名でジョブを整理します。 各ジョブの実行レコードは、スタジオの [実験] タブの対応する実験の下に編成されます。 省略すると、Azure Machine Learning は既定でジョブが作成された作業ディレクトリの名前に experiment_name します。
description ひも ジョブの説明。
tags オブジェクト ジョブのタグの辞書。
sampling_algorithm オブジェクト 必須です。 search_space で使用するハイパーパラメーター サンプリング アルゴリズム。 RandomSamplingAlgorithmGridSamplingAlgorithmBayesianSamplingAlgorithm のいずれか。
search_space オブジェクト 必須です。 ハイパーパラメーター検索空間の辞書。 ハイパーパラメーター名はキーであり、値はパラメーター式です。

ハイパーパラメーターは、trial.command式を使用して${{ search_space.<hyperparameter> }}で参照できます。
search_space.<hyperparameter> オブジェクト 使用できる一連の式についてはパラメーター式を参照してください。
objective.primary_metric ひも 必須です。 各トライアル ジョブによって報告されるプライマリ メトリックの名前。 メトリックは、同じ対応するメトリック名を持つ mlflow.log_metric() を使用して、ユーザーのトレーニング スクリプトに記録する必要があります。
objective.goal ひも 必須です。 objective.primary_metric の最適化の目標。 maximizeminimize
early_termination オブジェクト 使用する早期終了ポリシー。 指定したポリシーの条件が満たされると、トライアル ジョブはキャンセルされます。 省略した場合、早期終了ポリシーは適用されません。 BanditPolicyMedianStoppingPolicy、または TruncationSelectionPolicy のいずれか。
limits オブジェクト スイープ ジョブの制限。 「limits キーの属性」を参照してください。
compute ひも 必須です。 azureml:<compute_name>構文を使用して、ジョブを実行するコンピューティング 先の名前。
trial オブジェクト 必須です。 各トライアルのジョブ テンプレート。 各試用版ジョブには、システムが search_spaceからサンプリングするハイパーパラメーター値の異なる組み合わせが用意されています。 trial キーの属性を参照してください。
inputs オブジェクト ジョブへの入力の辞書。 キーは、ジョブのコンテキスト内の入力の名前であり、値は入力値です。

入力は、command 式を使用して ${{ inputs.<input_name> }} で参照できます。
inputs.<input_name> number、integer、boolean、string、または object リテラル値 (型番号、整数、ブール値、または文字列) の 1 つ、または job 入力データ指定を含むオブジェクト
outputs オブジェクト ジョブの出力構成の辞書。 キーはジョブのコンテキスト内の出力の名前であり、値は出力構成です。

出力は、command 式を使用して ${{ outputs.<output_name> }} で参照できます。
outputs.<output_name> オブジェクト オブジェクトは空のままにしておくことができます。その場合、既定では出力は uri_folder の種類であり、Azure Machine Learning システムによって出力の出力場所が生成されます。 出力ディレクトリへのすべてのファイルは、読み取り/書き込みマウントを使用して書き込まれます。 出力に別のモードを指定するには、 job 出力仕様を含むオブジェクトを指定
identity オブジェクト ID は、データアクセスに使用されます。 User Identity ConfigurationManaged Identity Configuration None を指定できます。 UserIdentityConfiguration の場合、ジョブの送信者の ID を使用して入力データにアクセスし、結果を出力フォルダーに書き込みます。 それ以外の場合は、コンピューティング 先のマネージド ID が使用されます。

サンプリング アルゴリズム

RandomSamplingAlgorithm

キー タイプ 説明 使用できる値 既定値
type 定数 必須です。 サンプリング アルゴリズムの種類。 random
seed 整数 (integer) 乱数の生成を初期化するために使用するランダム シード。 省略すると、既定のシード値は null になります。
rule ひも 使用するランダム サンプリングの種類。 既定の randomでは単純な均一なランダム サンプリングが使用され、 sobol では Sobol 準ランダム シーケンスが使用されます。 randomsobol random

GridSamplingAlgorithm

キー タイプ 説明 使用できる値
type 定数 必須です。 サンプリング アルゴリズムの種類。 grid

BayesianSamplingAlgorithm

キー タイプ 説明 使用できる値
type 定数 必須です。 サンプリング アルゴリズムの種類。 bayesian

早期終了ポリシー

BanditPolicy

キー タイプ 説明 使用できる値 既定値
type 定数 必須です。 ポリシーの種類。 bandit
slack_factor 数値 最高パフォーマンスのトライアルからの許容される距離を計算するために使用される比率。 slack_factor または slack_amount のいずれかが必須です。
slack_amount 数値 最高パフォーマンスのトライアルからの許容される絶対距離。 slack_factor または slack_amount のいずれかが必須です。
evaluation_interval 整数 (integer) ポリシーを適用する頻度。 1
delay_evaluation 整数 (integer) 最初のポリシー評価を遅延する間隔の数。 指定した場合、evaluation_interval 以上の delay_evaluation の倍数ごとにポリシーが適用されます。 0

MedianStoppingPolicy

キー タイプ 説明 使用できる値 既定値
type 定数 必須です。 ポリシーの種類。 median_stopping
evaluation_interval 整数 (integer) ポリシーを適用する頻度。 1
delay_evaluation 整数 (integer) 最初のポリシー評価を遅延する間隔の数。 指定した場合、evaluation_interval 以上の delay_evaluation の倍数ごとにポリシーが適用されます。 0

TruncationSelectionPolicy

キー タイプ 説明 使用できる値 既定値
type 定数 必須です。 ポリシーの種類。 truncation_selection
truncation_percentage 整数 (integer) 必須です。 各評価期間にキャンセルされるトライアル ジョブの割合。
evaluation_interval 整数 (integer) ポリシーを適用する頻度。 1
delay_evaluation 整数 (integer) 最初のポリシー評価を遅延する間隔の数。 指定した場合、evaluation_interval 以上の delay_evaluation の倍数ごとにポリシーが適用されます。 0

パラメーター式

選択肢

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 choice
values 配列 必須です。 選択する個別の値の一覧。

Randint

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 randint
upper 整数 (integer) 必須です。 整数の範囲の排他的な上限。

Qlognormal、qnormal

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 qlognormalqnormal
mu 数値 必須です。 正規分布の平均。
sigma 数値 必須です。 正規分布の標準偏差。
q 整数 (integer) 必須です。 スムージング係数。

Qloguniform、quniform

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 qloguniformquniform
min_value 数値 必須です。 範囲内の最小値 (包含的)。
max_value 数値 必須です。 範囲内の最大値 (包含的)。
q 整数 (integer) 必須です。 スムージング係数。

Lognormal、normal

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 lognormalnormal
mu 数値 必須です。 正規分布の平均。
sigma 数値 必須です。 正規分布の標準偏差。

Loguniform

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 loguniform
min_value 数値 必須です。 範囲内の最小値は exp(min_value) (両端を含む) です。
max_value 数値 必須です。 範囲内の最大値は exp(max_value) (両端を含む) です。

制服

キー タイプ 説明 使用できる値
type 定数 必須です。 式の型。 uniform
min_value 数値 必須です。 範囲内の最小値 (包含的)。
max_value 数値 必須です。 範囲内の最大値 (包含的)。

limits キーの属性

キー タイプ 説明 既定値
max_total_trials 整数 (integer) トライアル ジョブの最大数。 1000
max_concurrent_trials 整数 (integer) 同時に実行できるトライアル ジョブの最大数。 既定値は max_total_trials です。
timeout 整数 (integer) スイープ ジョブ全体の実行が許可される最大時間 (秒単位)。 この制限に達すると、システムは、すべての試行を含むスイープ ジョブを取り消します。 5184000
trial_timeout 整数 (integer) 各トライアル ジョブを実行できる最大時間 (秒単位)。 この制限に達すると、システムは試用版をキャンセルします。

trial キーの属性

キー タイプ 説明 既定値
command ひも 必須です。 実行するコマンドです。
code ひも アップロードしてジョブに使用するソース コード ディレクトリへのローカル パス。
environment 文字列またはオブジェクト 必須です。 ジョブに使用する環境。 この値は、ワークスペース内の既存のバージョン管理された環境への参照、またはインライン環境仕様のいずれかになります。

既存の環境を参照するには、azureml:<environment-name>:<environment-version> 構文を使用します。

環境をインラインで定義するには、環境スキーマに従います。 インライン環境ではサポートされていないため、 name プロパティと version プロパティを除外します。
environment_variables オブジェクト コマンドが実行されるプロセスに設定する環境変数の名前と値のペアの辞書。
distribution オブジェクト 分散トレーニング シナリオの配布構成。 Mpi 構成PyTorch 構成、または TensorFlow 構成のいずれか。
resources.instance_count 整数 (integer) ジョブに使用するノードの数。 1

配布構成

MpiConfiguration
キー タイプ 説明 使用できる値
type 定数 必須です。 配布の種類。 mpi
process_count_per_instance 整数 (integer) 必須です。 ジョブに対して起動するノードあたりのプロセスの数。
PyTorchConfiguration
キー タイプ 説明 使用できる値 既定値
type 定数 必須です。 配布の種類。 pytorch
process_count_per_instance 整数 (integer) ジョブに対して起動するノードあたりのプロセスの数。 1
TensorFlowConfiguration
キー タイプ 説明 使用できる値 既定値
type 定数 必須です。 配布の種類。 tensorflow
worker_count 整数 (integer) ジョブに対して起動するワーカーの数。 既定値は resources.instance_count です。
parameter_server_count 整数 (integer) ジョブに対して起動するパラメーター サーバーの数。 0

ジョブの入力

キー タイプ 説明 使用できる値 既定値
type ひも ジョブ入力の種類。 1 つのファイル ソースを指す入力データの場合は uri_file、フォルダー ソースを指す入力データの場合は uri_folder を指定します。 詳細については、 データ アクセスの詳細を参照してください。 uri_fileuri_foldermltablemlflow_model uri_folder
path ひも 入力として使用するデータのパス。 この値は、いくつかの方法で指定できます。

- データ ソース ファイルまたはフォルダーへのローカル パス (例: path: ./iris.csv)。 ジョブの送信中にデータがアップロードされます。

- 入力として使用するファイルまたはフォルダーへのクラウド パスの URI。 サポートされる URI の種類は azuremlhttpswasbsabfssadl です。 azureml:// URI 形式の使用の詳細については、Core yaml 構文を参照してください。

- 入力として使用する既存の登録済み Azure Machine Learning データ資産。 登録済みデータ資産を参照するには、 azureml:<data_name>:<data_version> 構文または azureml:<data_name>@latest (そのデータ資産の最新バージョンを参照する場合) ( path: azureml:cifar10-data:1path: azureml:cifar10-data@latestなど) を使用します。
mode ひも コンピューティング先にデータを配信する方法のモード。

読み取り専用マウント (ro_mount) の場合、データはマウント パスとして使用されます。 フォルダーはフォルダーとしてマウントされ、ファイルはファイルとしてマウントされます。 Azure Machine Learning は、マウント パスへの入力を解決します。

download モードの場合、データはコンピューティング 先にダウンロードされます。 Azure Machine Learning は、ダウンロードしたパスへの入力を解決します。

データ自体をマウントまたはダウンロードする代わりに、データ成果物または成果物の保存場所の URL に対して、 direct モードを使用します。 これにより、ジョブ入力としてストレージの場所の URL が渡されます。 この場合、ストレージにアクセスするための資格情報を処理する責任があります。
ro_mountdownloaddirect ro_mount

ジョブ出力

キー タイプ 説明 使用できる値 既定値
type ひも ジョブ出力の種類。 既定の uri_folder の種類の場合、出力はフォルダーに対応します。 uri_fileuri_foldermltablemlflow_model uri_folder
mode ひも 出力ファイルまたはファイルを宛先ストレージに配信するモード。 読み取り/書き込みマウント モード (rw_mount) の場合、出力ディレクトリはマウントされたディレクトリです。 アップロード モードでは、書き込まれたすべてのファイルがジョブの最後にアップロードされます。 rw_mountupload rw_mount

ID の構成

UserIdentityConfiguration

キー タイプ 説明 使用できる値
type 定数 必須です。 ID の型。 user_identity

ManagedIdentityConfiguration

キー タイプ 説明 使用できる値
type 定数 必須です。 ID の型。 managed または managed_identity

解説

az ml job コマンドを使用して、Azure Machine Learning ジョブを管理できます。

例については、 サンプル GitHub リポジトリ を参照してください。 いくつかのものを次に示します。

YAML: hello sweep

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  command: >-
    python hello-sweep.py
    --A ${{inputs.A}}
    --B ${{search_space.B}}
    --C ${{search_space.C}}
  code: src
  environment: azureml:AzureML-sklearn-1.5@latest
inputs:
  A: 0.5
sampling_algorithm: random
search_space:
  B:
    type: choice
    values: ["hello", "world", "hello_world"]
  C:
    type: uniform
    min_value: 0.1
    max_value: 1.0
objective:
  goal: minimize
  primary_metric: random_metric
limits:
  max_total_trials: 4
  max_concurrent_trials: 2
  timeout: 3600
display_name: hello-sweep-example
experiment_name: hello-sweep-example
description: Hello sweep job example.

YAML: sobol とシード値を使用した hello sweep

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  code: src
  command: >-
    python main.py
    --iris-csv ${{inputs.iris_csv}}
    --learning-rate ${{search_space.learning_rate}}
    --boosting ${{search_space.boosting}}
  environment: azureml:AzureML-lightgbm-3.3@latest
inputs:
  iris_csv:
    type: uri_file
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm:
  type: random
  rule: sobol
  seed: 123
search_space:
  learning_rate:
    type: uniform
    min_value: 0.01
    max_value: 0.9
  boosting:
    type: choice
    values: ["gbdt", "dart"]
objective:
  goal: minimize
  primary_metric: test-multi_logloss
limits:
  max_total_trials: 20
  max_concurrent_trials: 10
  timeout: 7200
display_name: lightgbm-iris-sweep-example
experiment_name: lightgbm-iris-sweep-example
description: Run a hyperparameter sweep job for LightGBM on Iris dataset.

YAML: 基本的な Python モデルのハイパーパラメーター調整

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  code: src
  command: >-
    python main.py 
    --iris-csv ${{inputs.iris_csv}}
    --C ${{search_space.C}}
    --kernel ${{search_space.kernel}}
    --coef0 ${{search_space.coef0}}
  environment: azureml:AzureML-sklearn-1.5@latest
inputs:
  iris_csv: 
    type: uri_file
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm: random
search_space:
  C:
    type: uniform
    min_value: 0.5
    max_value: 0.9
  kernel:
    type: choice
    values: ["rbf", "linear", "poly"]
  coef0:
    type: uniform
    min_value: 0.1
    max_value: 1
objective:
  goal: minimize
  primary_metric: training_f1_score
limits:
  max_total_trials: 20
  max_concurrent_trials: 10
  timeout: 7200
display_name: sklearn-iris-sweep-example
experiment_name: sklearn-iris-sweep-example
description: Sweep hyperparemeters for training a scikit-learn SVM on the Iris dataset.

次のステップ