Run クラス
すべての Azure Machine Learning 実験実行の基本クラスを定義します。
実行は、実験の 1 回の試行を表します。 実行は、試用版の非同期実行を監視し、メトリックをログに記録し、試用版の出力を格納し、評価版によって生成された結果とアクセス成果物を分析するために使用されます。
実行オブジェクトは、HyperDrive の実行、パイプラインの実行、AutoML の実行など、Azure Machine Learning のさまざまなシナリオでモデルをトレーニングするスクリプトを送信するときに作成されます。 Run オブジェクトは、submit クラスをstart_loggingまたはExperimentするときにも作成されます。
実験と実行を開始するには、次を参照してください。
Run オブジェクトを初期化します。
コンストラクター
Run(experiment, run_id, outputs=None, **kwargs)
パラメーター
名前 | 説明 |
---|---|
experiment
必須
|
含まれる実験。 |
run_id
必須
|
実行の ID。 |
outputs
|
追跡する出力。 規定値: None
|
_run_dto
必須
|
<xref:azureml._restclient.models.run_dto.RunDto>
内部のみで使用します。 |
kwargs
必須
|
追加の構成パラメーターのディクショナリ。 |
experiment
必須
|
含まれる実験。 |
run_id
必須
|
実行の ID。 |
outputs
必須
|
追跡する出力。 |
kwargs
必須
|
追加の構成パラメーターのディクショナリ。 |
注釈
実行は、実験の 1 回の試行を表します。 Run オブジェクトは、試用版の非同期実行を監視し、メトリックをログに記録し、試用版の出力を格納し、評価版によって生成された結果とアクセス成果物を分析するために使用されます。
実行は実験コード内で使用され、メトリックと成果物を実行履歴サービスに記録します。
実行は、進行状況を監視し、生成されたメトリックと結果のクエリと分析を行うために、実験の外部で使用されます。
実行の機能には、次のものが含まれます。
メトリックとデータの格納と取得
ファイルのアップロードとダウンロード
タグと子階層を使用して、過去の実行を簡単に検索する
格納されているモデル ファイルを運用可能なモデルとして登録する
実行のプロパティの格納、変更、および取得
get_context メソッドを使用してリモート環境から現在の実行を読み込む
ファイルまたはディレクトリのスナップショットを効率的に作成して再現性を高める
このクラスは、次のシナリオで Experiment で動作します。
を使用してコードを実行して実行を作成する submit
を使用してノートブックで対話形式で実行を作成する start_logging
メトリックをログに記録し、実験で成果物をアップロードする (使用する場合など) log
使用する場合など、試験的な結果を分析するときにメトリックを読み取り、成果物をダウンロードする get_metrics
実行を送信するには、実験の実行方法を説明する構成オブジェクトを作成します。 使用できるさまざまな構成オブジェクトの例を次に示します。
azureml.train.automl.automlconfig.AutoMLConfig
azureml.train.hyperdrive.HyperDriveConfig
azureml.pipeline.core.Pipeline
azureml.pipeline.core.PublishedPipeline
azureml.pipeline.core.PipelineEndpoint
実験のトレーニング中に、次のメトリックを実行に追加できます。
スカラー
logを使用して、指定した名前の実行に数値または文字列値を記録します。 メトリックを実行にログに記録すると、そのメトリックが実験の実行レコードに格納されます。 実行内で同じメトリックを複数回ログに記録できます。その結果は、そのメトリックのベクトルと見なされます。
例:
run.log("accuracy", 0.95)
一覧
log_listを使用して、指定した名前の値の一覧を実行に記録します。
例:
run.log_list("accuracies", [0.6, 0.7, 0.87])
列
log_rowを使用すると、
kwargs
で説明されているように、複数の列を含むメトリックが作成されます。 各名前付きパラメーターは、指定された値を持つ列を生成します。log_row
は、任意のタプルをログに記録するために 1 回呼び出すか、ループ内で複数回呼び出して完全なテーブルを生成できます。例:
run.log_row("Y over X", x=1, y=0.4)
表
log_tableを使用して、指定した名前でディクショナリ オブジェクトを実行に記録します。
例:
run.log_table("Y over X", {"x":[1, 2, 3], "y":[0.6, 0.7, 0.89]})
画像
実行レコードにイメージをログに記録します。 log_imageを使用して、イメージ ファイルまたは matplotlib プロットを実行に記録します。 これらのイメージは、実行レコードに表示され、同等になります。
例:
run.log_image("ROC", path)
メソッド
add_properties |
変更できないプロパティを実行に追加します。 タグとプロパティ (dict[str, str]の両方) は、変更可能性が異なります。 プロパティは変更不可であるため、プロパティによって監査目的の恒久的な記録が作成されます。 タグは変更可能です。 タグとプロパティの操作の詳細については、「タグと 検索の実行」を参照してください。 |
add_type_provider |
実行履歴に格納されているカスタム実行の種類の機能拡張フック。 |
cancel |
実行を取り消し済みとしてマークします。 セット cancel_uri フィールドに関連付けられているジョブがある場合は、そのジョブも終了します。 |
child_run |
子実行を作成します。 |
clean |
実行構成で指定されたターゲットの現在の実行に対応するファイルを削除します。 |
complete |
タスク キューが処理されるまで待ちます。 その後、実行は完了としてマークされます。 これは通常、対話型ノートブックのシナリオで使用されます。 |
create_children |
1 つまたは複数の子実行を作成します。 |
download_file |
ストレージから関連付けられているファイルをダウンロードします。 |
download_files |
プレフィックスが指定されていない場合は、特定のストレージ プレフィックス (フォルダー名) またはコンテナー全体からファイルをダウンロードします。 |
fail |
実行を失敗としてマークします。 必要に応じて、メッセージまたは例外を |
flush |
タスク キューが処理されるまで待ちます。 |
get |
実行 ID を使用して、このワークスペースの実行を取得します。 |
get_all_logs |
実行のすべてのログをディレクトリにダウンロードします。 |
get_children |
指定したフィルターで選択されている現在の実行のすべての子を取得します。 |
get_context |
現在のサービス コンテキストを返します。 メトリックをログに記録し、ファイルをアップロードするための現在のサービス コンテキストを取得するには、このメソッドを使用します。
|
get_detailed_status |
実行の最新の状態をフェッチします。 実行の状態が "Queued" の場合は、詳細が表示されます。 |
get_details |
定義、状態情報、現在のログ ファイル、および実行のその他の詳細を取得します。 |
get_details_with_logs |
ログ ファイルの内容を含む実行状態を返します。 |
get_environment |
この実行で使用された環境定義を取得します。 |
get_file_names |
実行に関連付けて格納されているファイルを一覧表示します。 |
get_metrics |
実行に記録されたメトリックを取得します。
|
get_properties |
サービスから実行の最新のプロパティをフェッチします。 |
get_secret |
実行のコンテキストからシークレット値を取得します。 指定された名前のシークレット値を取得します。 シークレット名は、ワークスペースに関連付けられている Azure Key Vault に格納されている値を参照します。 シークレットの操作例については、「 トレーニングの実行でシークレットを使用する」を参照してください。 |
get_secrets |
特定のシークレット名の一覧のシークレット値を取得します。 指定された名前の一覧の検出されたシークレットと見つからないシークレットのディクショナリを取得します。 各シークレット名は、ワークスペースに関連付けられている Azure Key Vault に格納されている値を参照します。 シークレットの操作例については、「 トレーニングの実行でシークレットを使用する」を参照してください。 |
get_snapshot_id |
最新のスナップショット ID を取得します。 |
get_status |
実行の最新の状態をフェッチします。 返される一般的な値は、"Running"、"Completed"、"Failed" です。 |
get_submitted_run |
廃止。 get_contextを使用します。 この実験のために送信された実行を取得します。 |
get_tags |
サービスから、実行時に変更可能なタグの最新のセットをフェッチします。 |
list |
オプションのフィルターで指定された実験の実行の一覧を取得します。 |
list_by_compute |
省略可能なフィルターで指定されたコンピューティング内の実行の一覧を取得します。 |
log |
指定された名前でメトリック値を実行に記録します。 |
log_accuracy_table |
精度テーブルをアーティファクト ストアに記録します。 精度テーブル メトリックは、複数の種類の折れ線グラフを生成するために使用できるマルチユースの非スカラー メトリックであり、予測される確率の空間にわたって継続的に変化します。 これらのグラフの例としては、ROC、精度再現率、リフト曲線があります。 精度テーブルの計算は、ROC 曲線の計算に似ています。 ROC 曲線は、真陽性率と偽陽性率をさまざまな確率しきい値に格納します。 精度テーブルには、多くの確率しきい値で真陽性、偽陽性、真陰性、偽陰性の生数が格納されます。 しきい値の選択には、"確率" と "百分位数" の 2 つの方法があります。これらは、予測される確率の空間からサンプリングする方法が異なります。 確率のしきい値は、0 から 1 の間で一様に間隔を空けたしきい値です。 NUM_POINTSが 5 の場合、確率しきい値は [0.0, 0.25, 0.5, 0.75, 1.0] になります。 百分位数のしきい値は、予測される確率の分布に従って間隔が空けられます。 各しきい値は、確率しきい値でのデータのパーセンタイルに対応します。 たとえば、NUM_POINTSが 5 の場合、最初のしきい値は 0 パーセンタイル、2 番目のしきい値は 25 パーセンタイル、3 番目は 50 パーセンタイルになります。 確率テーブルとパーセンタイル テーブルはどちらも 3D リストであり、1 番目のディメンションはクラス ラベルを表し、2 番目のディメンションは 1 つのしきい値 (NUM_POINTSを使用したスケール) でサンプルを表し、3 番目のディメンションには常に 4 つの値 (TP、FP、TN、FN、および常にその順序) があります。 混同値 (TP、FP、TN、FN) は、1 対 rest 戦略で計算されます。 詳細については、次のリンクを参照してください。 https://en.wikipedia.org/wiki/Multiclass_classification N = 検証データセット内のサンプルの数 (例では 200) M = # thresholds = # 確率空間から取得されたサンプル (例では 5) 完全なデータセットの C = # クラス (例では 3) 精度テーブルのインバリアント:
注: M は任意の値にすることができ、グラフの解像度を制御します。これはデータセットに依存せず、メトリックの計算時に定義され、ストレージ領域、計算時間、解決をトレードオフします。 クラス ラベルは文字列、混同値は整数、しきい値は float にする必要があります。 |
log_confusion_matrix |
混同行列をアーティファクト ストアに記録します。 これにより、sklearn 混同行列のラッパーがログに記録されます。 メトリック データには、マトリックス自体のクラス ラベルと 2D リストが含まれています。 メトリックの計算方法の詳細については、次のリンクを参照してください。 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html |
log_image |
実行レコードに画像メトリックを記録します。 |
log_list |
指定された名前を使用して、メトリック値の一覧を実行に記録します。 |
log_predictions |
成果物ストアに予測をログに記録します。 これにより、真のターゲット値の分布と回帰タスクの予測値の分布を比較するために使用できるメトリック スコアがログに記録されます。 予測はビン分割され、折れ線グラフの誤差範囲に対して標準偏差が計算されます。 |
log_residuals |
残差をアーティファクト ストアに記録します。 これにより、回帰タスクの残差のヒストグラムを表示するために必要なデータがログに記録されます。 残差は予測されます - 実際。 カウントの数よりも 1 つ多くのエッジが必要です。 カウントとエッジを使用してヒストグラムを表す例については、numpy ヒストグラムのドキュメントを参照してください。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html |
log_row |
指定された名前で行メトリックを実行に記録します。 |
log_table |
指定された名前でテーブル メトリックを実行に記録します。 |
register_model |
運用化のためのモデルを登録します。 |
remove_tags |
この実行で変更可能なタグの一覧を削除します。 |
restore_snapshot |
スナップショットを ZIP ファイルとして復元します。 ZIP へのパスを返します。 |
set_tags |
実行でタグのセットを追加または変更します。 辞書に渡されないタグは変更されずに残ります。 単純な文字列のタグを追加することもできます。 これらのタグがキーとしてタグ ディクショナリに表示される場合、値は None になります。 詳細については、「 実行のタグ付けと検索」を参照してください。 |
start |
実行を開始済みとしてマークします。 これは通常、実行が別のアクターによって作成された高度なシナリオで使用されます。 |
submit_child |
実験を送信し、アクティブな子実行を返します。 |
tag |
文字列キーと省略可能な文字列値を使用して、実行にタグを付きます。 |
take_snapshot |
入力ファイルまたはフォルダーのスナップショットを保存します。 |
upload_file |
ファイルを実行レコードにアップロードします。 |
upload_files |
ファイルを実行レコードにアップロードします。 |
upload_folder |
指定したフォルダーを特定のプレフィックス名にアップロードします。 |
wait_for_completion |
この実行が完了するまで待ちます。 待機後の状態オブジェクトを返します。 |
add_properties
add_type_provider
実行履歴に格納されているカスタム実行の種類の機能拡張フック。
static add_type_provider(runtype, run_factory)
パラメーター
名前 | 説明 |
---|---|
runtype
必須
|
ファクトリが呼び出される Run.type の値。 たとえば、"hyperdrive" や "azureml.scriptrun" などですが、カスタム型で拡張できます。 |
run_factory
必須
|
<xref:function>
シグネチャを持つ関数 (実験、RunDto) -> 実行を一覧表示するときに呼び出されます。 |
cancel
実行を取り消し済みとしてマークします。
セット cancel_uri フィールドに関連付けられているジョブがある場合は、そのジョブも終了します。
cancel()
child_run
子実行を作成します。
child_run(name=None, run_id=None, outputs=None)
パラメーター
名前 | 説明 |
---|---|
name
|
子実行の省略可能な名前 。通常は "パーツ" に指定されます。 規定値: None
|
run_id
|
子の実行 ID (省略可能)、それ以外の場合は自動生成されます。 通常、このパラメーターは設定されません。 規定値: None
|
outputs
|
子を追跡するディレクトリを出力するオプション。 規定値: None
|
戻り値
型 | 説明 |
---|---|
子実行。 |
注釈
これは、実行の一部をサブセクションに分離するために使用されます。 これは、サブプロセスの間で分離したり、独立したメトリックをキャプチャしたりする目的で、実行の識別可能な "部分" に対して行うことができます。
子実行の出力ディレクトリが設定されている場合、そのディレクトリの内容は、子の完了時に子実行レコードにアップロードされます。
clean
complete
タスク キューが処理されるまで待ちます。
その後、実行は完了としてマークされます。 これは通常、対話型ノートブックのシナリオで使用されます。
complete(_set_status=True)
パラメーター
名前 | 説明 |
---|---|
_set_status
|
追跡のために状態イベントを送信するかどうかを示します。 規定値: True
|
create_children
1 つまたは複数の子実行を作成します。
create_children(count=None, tag_key=None, tag_values=None)
パラメーター
名前 | 説明 |
---|---|
count
|
作成する子の数 (省略可能)。 規定値: None
|
tag_key
|
作成されたすべての子に Tags エントリを設定するための省略可能なキー。 規定値: None
|
tag_Values
必須
|
作成された実行の一覧の Tags[tag_key] にマップされる値の省略可能なリスト。 |
tag_values
|
規定値: None
|
戻り値
型 | 説明 |
---|---|
子実行の一覧。 |
注釈
AND count
tag_key
OR パラメーターtag_values
パラメーターを指定する必要があります。
download_file
download_files
プレフィックスが指定されていない場合は、特定のストレージ プレフィックス (フォルダー名) またはコンテナー全体からファイルをダウンロードします。
download_files(prefix=None, output_directory=None, output_paths=None, batch_size=100, append_prefix=True, timeout_seconds=None)
パラメーター
名前 | 説明 |
---|---|
prefix
必須
|
すべての成果物のダウンロード元となるコンテナー内の filepath プレフィックス。 |
output_directory
必須
|
すべてのアーティファクト パスがプレフィックスとして使用する省略可能なディレクトリ。 |
output_paths
必須
|
[str]
ダウンロードした成果物を格納するオプションのファイルパス。 パスの一意の長さと一致する必要があります。 |
batch_size
必須
|
バッチごとにダウンロードするファイルの数。 既定値は 100 ファイルです。 |
append_prefix
必須
|
最終的な出力ファイル パスから指定したプレフィックスを追加するかどうかを示す省略可能なフラグ。 False の場合、プレフィックスは出力ファイル パスから削除されます。 |
timeout_seconds
必須
|
ファイルをダウンロードするためのタイムアウト。 |
fail
実行を失敗としてマークします。
必要に応じて、メッセージまたは例外を error_details
に渡して、実行の Error プロパティを設定します。
fail(error_details=None, error_code=None, _set_status=True)
パラメーター
名前 | 説明 |
---|---|
error_details
|
str または
BaseException
エラーのオプションの詳細。 規定値: None
|
error_code
|
エラー分類のエラーの省略可能なエラー コード。 規定値: None
|
_set_status
|
追跡のために状態イベントを送信するかどうかを示します。 規定値: True
|
flush
タスク キューが処理されるまで待ちます。
flush(timeout_seconds=300)
パラメーター
名前 | 説明 |
---|---|
timeout_seconds
|
タスク キューが処理されるまでの待機時間 (秒単位)。 規定値: 300
|
get
get_all_logs
get_children
指定したフィルターで選択されている現在の実行のすべての子を取得します。
get_children(recursive=False, tags=None, properties=None, type=None, status=None, _rehydrate_runs=True)
パラメーター
名前 | 説明 |
---|---|
recursive
|
すべての子孫を再帰するかどうかを示します。 規定値: False
|
tags
|
指定した場合、指定された "tag" または {"tag": "value"} に一致する実行が返されます。 規定値: None
|
properties
|
指定した場合、指定した "property" または {"property": "value"} に一致する実行が返されます。 規定値: None
|
type
|
指定した場合、この型に一致する実行が返されます。 規定値: None
|
status
|
指定した場合は、状態が "status" と指定された実行を返します。 規定値: None
|
_rehydrate_runs
|
元の型の実行をインスタンス化するか、基本実行をインスタンス化するかを示します。 規定値: True
|
戻り値
型 | 説明 |
---|---|
Run オブジェクトの一覧。 |
get_context
現在のサービス コンテキストを返します。
メトリックをログに記録し、ファイルをアップロードするための現在のサービス コンテキストを取得するには、このメソッドを使用します。
allow_offline
が True (既定値) の場合、Run オブジェクトに対するアクションは標準出力に出力されます。
get_context(allow_offline=True, used_for_context_manager=False, **kwargs)
パラメーター
名前 | 説明 |
---|---|
cls
必須
|
クラス メソッドを示します。 |
allow_offline
|
SDK を使用してジョブを送信せずにトレーニング スクリプトをローカルでテストできるように、サービス コンテキストをオフライン モードにフォールバックできるようにします。 既定では True です。 規定値: True
|
kwargs
必須
|
追加パラメーターのディクショナリ。 |
used_for_context_manager
|
規定値: False
|
戻り値
型 | 説明 |
---|---|
送信された実行。 |
注釈
この関数は、experiment.submit() を介して実行するために送信されるスクリプト内で認証された Run オブジェクトを取得するために一般的に使用されます。 この実行オブジェクトは、Azure Machine Learning サービスと通信するための認証済みコンテキストと、メトリック、ファイル (成果物)、モデルが含まれる概念コンテナーの両方です。
run = Run.get_context() # allow_offline=True by default, so can be run locally as well
...
run.log("Accuracy", 0.98)
run.log_row("Performance", epoch=e, error=err)
get_detailed_status
実行の最新の状態をフェッチします。 実行の状態が "Queued" の場合は、詳細が表示されます。
get_detailed_status()
戻り値
型 | 説明 |
---|---|
最新の状態と詳細 |
注釈
status: 実行の現在の状態。 get_status()から返される値と同じです。
details: 現在の状態の詳細情報。
run = experiment.submit(config)
details = run.get_detailed_status()
# details = {
# 'status': 'Queued',
# 'details': 'Run requested 1 node(s). Run is in pending status.',
# }
get_details
定義、状態情報、現在のログ ファイル、および実行のその他の詳細を取得します。
get_details()
戻り値
型 | 説明 |
---|---|
実行の詳細を返す |
注釈
返されるディクショナリには、次のキーと値のペアが含まれています。
runId: この実行の ID。
ターゲット を する
status: 実行の現在の状態。 get_status()から返される値と同じです。
startTimeUtc: この実行が開始されたときの UTC 時刻 (ISO8601)。
endTimeUtc: この実行が完了した時刻 (完了または失敗) の UTC 時刻 (ISO8601)。
実行がまだ進行中の場合、このキーは存在しません。
properties: 実行に関連付けられている変更できないキーと値のペア。 既定のプロパティには、実行のスナップショット ID と、実行の作成元の Git リポジトリ (存在する場合) に関する情報が含まれます。 add_propertiesを使用して、実行に追加のプロパティを追加できます。
inputDatasets: 実行に関連付けられている入力データセット。
outputDatasets: 実行に関連付けられている出力データセット。
logFiles
submittedBy
run = experiment.start_logging()
details = run.get_details()
# details = {
# 'runId': '5c24aa28-6e4a-4572-96a0-fb522d26fe2d',
# 'target': 'sdk',
# 'status': 'Running',
# 'startTimeUtc': '2019-01-01T13:08:01.713777Z',
# 'endTimeUtc': '2019-01-01T17:15:65.986253Z',
# 'properties': {
# 'azureml.git.repository_uri': 'https://example.com/my/git/repo',
# 'azureml.git.branch': 'master',
# 'azureml.git.commit': '7dc972657c2168927a02c3bc2b161e0f370365d7',
# 'azureml.git.dirty': 'True',
# 'mlflow.source.git.repoURL': 'https://example.com/my/git/repo',
# 'mlflow.source.git.branch': 'master',
# 'mlflow.source.git.commit': '7dc972657c2168927a02c3bc2b161e0f370365d7',
# 'ContentSnapshotId': 'b4689489-ce2f-4db5-b6d7-6ad11e77079c'
# },
# 'inputDatasets': [{
# 'dataset': {'id': 'cdebf245-701d-4a68-8055-41f9cf44f298'},
# 'consumptionDetails': {
# 'type': 'RunInput',
# 'inputName': 'training-data',
# 'mechanism': 'Mount',
# 'pathOnCompute': '/mnt/datasets/train'
# }
# }],
# 'outputDatasets': [{
# 'dataset': {'id': 'd04e8a19-1caa-4b1f-b318-4cbff9af9615'},
# 'outputType': 'RunOutput',
# 'outputDetails': {
# 'outputName': 'training-result'
# }
# }],
# 'runDefinition': {},
# 'logFiles': {},
# 'submittedBy': 'Alan Turing'
# }
get_details_with_logs
get_environment
get_metrics
実行に記録されたメトリックを取得します。
recursive
が True (既定では False) の場合は、指定された実行のサブツリー内の実行のメトリックをフェッチします。
get_metrics(name=None, recursive=False, run_type=None, populate=False)
パラメーター
名前 | 説明 |
---|---|
name
|
メトリックの名前。 規定値: None
|
recursive
|
すべての子孫を再帰するかどうかを示します。 規定値: False
|
run_type
|
規定値: None
|
populate
|
メトリックにリンクされている外部データの内容をフェッチするかどうかを示します。 規定値: False
|
戻り値
型 | 説明 |
---|---|
ユーザー メトリックを含むディクショナリ。 |
注釈
run = experiment.start_logging() # run id: 123
run.log("A", 1)
with run.child_run() as child: # run id: 456
child.log("A", 2)
metrics = run.get_metrics()
# metrics = { 'A': 1 }
metrics = run.get_metrics(recursive=True)
# metrics = { '123': { 'A': 1 }, '456': { 'A': 2 } } note key is runId
get_properties
サービスから実行の最新のプロパティをフェッチします。
get_properties()
戻り値
型 | 説明 |
---|---|
実行のプロパティ。 |
注釈
プロパティは、期間、実行日、ユーザー、 add_properties メソッドで追加されたカスタム プロパティなど、システムによって生成される不変の情報です。 詳細については、「 実行のタグ付けと検索」を参照してください。
Azure Machine Learning にジョブを送信するときに、ソース ファイルがローカル Git リポジトリに格納されている場合、リポジトリに関する情報はプロパティとして格納されます。 これらの git プロパティは、実行の作成時または Experiment.submit の呼び出し時に追加されます。 Git プロパティの詳細については、 Azure Machine Learning の Git 統合に関するページを参照してください。
get_secret
実行のコンテキストからシークレット値を取得します。
指定された名前のシークレット値を取得します。 シークレット名は、ワークスペースに関連付けられている Azure Key Vault に格納されている値を参照します。 シークレットの操作例については、「 トレーニングの実行でシークレットを使用する」を参照してください。
get_secret(name)
パラメーター
名前 | 説明 |
---|---|
name
必須
|
シークレットを返すシークレット名。 |
戻り値
型 | 説明 |
---|---|
シークレット値。 |
get_secrets
特定のシークレット名の一覧のシークレット値を取得します。
指定された名前の一覧の検出されたシークレットと見つからないシークレットのディクショナリを取得します。 各シークレット名は、ワークスペースに関連付けられている Azure Key Vault に格納されている値を参照します。 シークレットの操作例については、「 トレーニングの実行でシークレットを使用する」を参照してください。
get_secrets(secrets)
パラメーター
名前 | 説明 |
---|---|
secrets
必須
|
シークレット値を返すシークレット名の一覧。 |
戻り値
型 | 説明 |
---|---|
検出されたシークレットと見つからないシークレットのディクショナリを返します。 |
get_snapshot_id
get_status
実行の最新の状態をフェッチします。
返される一般的な値は、"Running"、"Completed"、"Failed" です。
get_status()
戻り値
型 | 説明 |
---|---|
最新の状態。 |
注釈
NotStarted - これは、クラウドの送信前にクライアント側の Run オブジェクトが存在する一時的な状態です。
開始 - クラウドでの実行の処理が開始されました。 呼び出し元には、この時点で実行 ID があります。
プロビジョニング - 特定のジョブの送信に対してオンデマンド コンピューティングが作成されるときに返されます。
準備中 - 実行環境が準備中です。
docker イメージのビルド
conda 環境のセットアップ
キュー - ジョブはコンピューティング 先でキューに入れられます。 たとえば、BatchAI では、ジョブはキューに登録された状態です
要求されたすべてのノードの準備が整うのを待機しています。
実行中 - コンピューティング 先でジョブの実行が開始されました。
最終処理 - ユーザー コードが完了し、実行は後処理段階にあります。
CancelRequested - ジョブの取り消しが要求されました。
完了 - 実行が正常に完了しました。 これには、ユーザー コードと実行の両方が含まれます
後処理ステージ。
失敗 - 実行に失敗しました。 通常、実行の Error プロパティは、理由に関する詳細を提供します。
Canceled - 取り消し要求に従い、実行が正常に取り消されたことを示します。
NotResponding - ハートビートが有効になっている実行の場合、ハートビートは最近送信されていません。
run = experiment.submit(config)
while run.get_status() not in ['Completed', 'Failed']: # For example purposes only, not exhaustive
print('Run {} not in terminal state'.format(run.id))
time.sleep(10)
get_submitted_run
get_tags
list
オプションのフィルターで指定された実験の実行の一覧を取得します。
static list(experiment, type=None, tags=None, properties=None, status=None, include_children=False, _rehydrate_runs=True)
パラメーター
名前 | 説明 |
---|---|
experiment
必須
|
含まれる実験。 |
type
|
指定した場合は、指定した型に一致する実行が返されます。 規定値: None
|
tags
|
指定した場合、指定された "tag" または {"tag": "value"} に一致する実行が返されます。 規定値: None
|
properties
|
指定した場合、指定した "property" または {"property": "value"} に一致する実行が返されます。 規定値: None
|
status
|
指定した場合は、状態が "status" と指定された実行を返します。 規定値: None
|
include_children
|
true に設定した場合は、最上位の実行だけでなく、すべての実行をフェッチします。 規定値: False
|
_rehydrate_runs
|
True (既定) に設定すると、登録されたプロバイダーを使用して、基本実行の代わりにその型のオブジェクトが再作成されます。 規定値: True
|
戻り値
型 | 説明 |
---|---|
実行の一覧。 |
注釈
次のコード例は、 list
メソッドのいくつかの使用方法を示しています。
favorite_completed_runs = Run.list(experiment, status='Completed', tags='favorite')
all_distinct_runs = Run.list(experiment)
and_their_children = Run.list(experiment, include_children=True)
only_script_runs = Run.list(experiment, type=ScriptRun.RUN_TYPE)
list_by_compute
省略可能なフィルターで指定されたコンピューティング内の実行の一覧を取得します。
static list_by_compute(compute, type=None, tags=None, properties=None, status=None)
パラメーター
名前 | 説明 |
---|---|
compute
必須
|
包含コンピューティング。 |
type
|
指定した場合は、指定した型に一致する実行が返されます。 規定値: None
|
tags
|
指定した場合、指定された "tag" または {"tag": "value"} に一致する実行が返されます。 規定値: None
|
properties
|
指定した場合、指定した "property" または {"property": "value"} に一致する実行が返されます。 規定値: None
|
status
|
指定した場合は、状態が "status" と指定された実行を返します。 使用できる値は、"実行中" と "Queued" のみです。 規定値: None
|
戻り値
型 | 説明 |
---|---|
<xref:builtin.generator>
|
~_restclient.models.RunDto のジェネレーター |
log
指定された名前でメトリック値を実行に記録します。
log(name, value, description='', step=None)
パラメーター
名前 | 説明 |
---|---|
name
必須
|
メトリックの名前。 |
value
必須
|
サービスにポストされる値。 |
description
必須
|
オプションのメトリックの説明。 |
step
|
メトリック内の値の順序を指定するオプションの軸。 規定値: None
|
注釈
メトリックを実行にログに記録すると、そのメトリックが実験の実行レコードに格納されます。 実行内で同じメトリックを複数回ログに記録できます。その結果は、そのメトリックのベクトルと見なされます。 メトリックにステップを指定する場合は、すべての値に対して指定する必要があります。
log_accuracy_table
精度テーブルをアーティファクト ストアに記録します。
精度テーブル メトリックは、複数の種類の折れ線グラフを生成するために使用できるマルチユースの非スカラー メトリックであり、予測される確率の空間にわたって継続的に変化します。 これらのグラフの例としては、ROC、精度再現率、リフト曲線があります。
精度テーブルの計算は、ROC 曲線の計算に似ています。 ROC 曲線は、真陽性率と偽陽性率をさまざまな確率しきい値に格納します。 精度テーブルには、多くの確率しきい値で真陽性、偽陽性、真陰性、偽陰性の生数が格納されます。
しきい値の選択には、"確率" と "百分位数" の 2 つの方法があります。これらは、予測される確率の空間からサンプリングする方法が異なります。
確率のしきい値は、0 から 1 の間で一様に間隔を空けたしきい値です。 NUM_POINTSが 5 の場合、確率しきい値は [0.0, 0.25, 0.5, 0.75, 1.0] になります。
百分位数のしきい値は、予測される確率の分布に従って間隔が空けられます。 各しきい値は、確率しきい値でのデータのパーセンタイルに対応します。 たとえば、NUM_POINTSが 5 の場合、最初のしきい値は 0 パーセンタイル、2 番目のしきい値は 25 パーセンタイル、3 番目は 50 パーセンタイルになります。
確率テーブルとパーセンタイル テーブルはどちらも 3D リストであり、1 番目のディメンションはクラス ラベルを表し、2 番目のディメンションは 1 つのしきい値 (NUM_POINTSを使用したスケール) でサンプルを表し、3 番目のディメンションには常に 4 つの値 (TP、FP、TN、FN、および常にその順序) があります。
混同値 (TP、FP、TN、FN) は、1 対 rest 戦略で計算されます。 詳細については、次のリンクを参照してください。 https://en.wikipedia.org/wiki/Multiclass_classification
N = 検証データセット内のサンプルの数 (例では 200) M = # thresholds = # 確率空間から取得されたサンプル (例では 5) 完全なデータセットの C = # クラス (例では 3)
精度テーブルのインバリアント:
- すべてのクラスのすべてのしきい値に対する TP + FP + TN + FN = N
- TP + FN は、任意のクラスのすべてのしきい値で同じです
- TN + FP は、任意のクラスのすべてのしきい値で同じです
- 確率テーブルとパーセンタイル テーブルの形状 [C, M, 4]
注: M は任意の値にすることができ、グラフの解像度を制御します。これはデータセットに依存せず、メトリックの計算時に定義され、ストレージ領域、計算時間、解決をトレードオフします。
クラス ラベルは文字列、混同値は整数、しきい値は float にする必要があります。
log_accuracy_table(name, value, description='')
パラメーター
名前 | 説明 |
---|---|
name
必須
|
精度テーブルの名前。 |
value
必須
|
名前、バージョン、データのプロパティを含む JSON。 |
description
必須
|
オプションのメトリックの説明。 |
注釈
有効な JSON 値の例:
{
"schema_type": "accuracy_table",
"schema_version": "1.0.1",
"data": {
"probability_tables": [
[
[82, 118, 0, 0],
[75, 31, 87, 7],
[66, 9, 109, 16],
[46, 2, 116, 36],
[0, 0, 118, 82]
],
[
[60, 140, 0, 0],
[56, 20, 120, 4],
[47, 4, 136, 13],
[28, 0, 140, 32],
[0, 0, 140, 60]
],
[
[58, 142, 0, 0],
[53, 29, 113, 5],
[40, 10, 132, 18],
[24, 1, 141, 34],
[0, 0, 142, 58]
]
],
"percentile_tables": [
[
[82, 118, 0, 0],
[82, 67, 51, 0],
[75, 26, 92, 7],
[48, 3, 115, 34],
[3, 0, 118, 79]
],
[
[60, 140, 0, 0],
[60, 89, 51, 0],
[60, 41, 99, 0],
[46, 5, 135, 14],
[3, 0, 140, 57]
],
[
[58, 142, 0, 0],
[56, 93, 49, 2],
[54, 47, 95, 4],
[41, 10, 132, 17],
[3, 0, 142, 55]
]
],
"probability_thresholds": [0.0, 0.25, 0.5, 0.75, 1.0],
"percentile_thresholds": [0.0, 0.01, 0.24, 0.98, 1.0],
"class_labels": ["0", "1", "2"]
}
}
log_confusion_matrix
混同行列をアーティファクト ストアに記録します。
これにより、sklearn 混同行列のラッパーがログに記録されます。 メトリック データには、マトリックス自体のクラス ラベルと 2D リストが含まれています。 メトリックの計算方法の詳細については、次のリンクを参照してください。 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
log_confusion_matrix(name, value, description='')
パラメーター
名前 | 説明 |
---|---|
name
必須
|
混同行列の名前。 |
value
必須
|
名前、バージョン、データのプロパティを含む JSON。 |
description
必須
|
オプションのメトリックの説明。 |
注釈
有効な JSON 値の例:
{
"schema_type": "confusion_matrix",
"schema_version": "1.0.0",
"data": {
"class_labels": ["0", "1", "2", "3"],
"matrix": [
[3, 0, 1, 0],
[0, 1, 0, 1],
[0, 0, 1, 0],
[0, 0, 0, 1]
]
}
}
log_image
実行レコードに画像メトリックを記録します。
log_image(name, path=None, plot=None, description='')
パラメーター
名前 | 説明 |
---|---|
name
必須
|
メトリックの名前。 |
path
必須
|
イメージのパスまたはストリーム。 |
plot
必須
|
<xref:matplotlib.pyplot>
画像としてログに記録するプロット。 |
description
必須
|
オプションのメトリックの説明。 |
注釈
このメソッドを使用して、イメージ ファイルまたは matplotlib プロット を実行に記録します。 これらのイメージは、実行レコードに表示され、同等になります。
log_list
log_predictions
成果物ストアに予測をログに記録します。
これにより、真のターゲット値の分布と回帰タスクの予測値の分布を比較するために使用できるメトリック スコアがログに記録されます。
予測はビン分割され、折れ線グラフの誤差範囲に対して標準偏差が計算されます。
log_predictions(name, value, description='')
パラメーター
名前 | 説明 |
---|---|
name
必須
|
予測の名前。 |
value
必須
|
名前、バージョン、データのプロパティを含む JSON。 |
description
必須
|
オプションのメトリックの説明。 |
注釈
有効な JSON 値の例:
{
"schema_type": "predictions",
"schema_version": "1.0.0",
"data": {
"bin_averages": [0.25, 0.75],
"bin_errors": [0.013, 0.042],
"bin_counts": [56, 34],
"bin_edges": [0.0, 0.5, 1.0]
}
}
log_residuals
残差をアーティファクト ストアに記録します。
これにより、回帰タスクの残差のヒストグラムを表示するために必要なデータがログに記録されます。 残差は予測されます - 実際。
カウントの数よりも 1 つ多くのエッジが必要です。 カウントとエッジを使用してヒストグラムを表す例については、numpy ヒストグラムのドキュメントを参照してください。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
log_residuals(name, value, description='')
パラメーター
名前 | 説明 |
---|---|
name
必須
|
残差の名前。 |
value
必須
|
名前、バージョン、データのプロパティを含む JSON。 |
description
必須
|
オプションのメトリックの説明。 |
注釈
有効な JSON 値の例:
{
"schema_type": "residuals",
"schema_version": "1.0.0",
"data": {
"bin_edges": [50, 100, 200, 300, 350],
"bin_counts": [0.88, 20, 30, 50.99]
}
}
log_row
指定された名前で行メトリックを実行に記録します。
log_row(name, description=None, **kwargs)
パラメーター
名前 | 説明 |
---|---|
name
必須
|
メトリックの名前。 |
description
|
オプションのメトリックの説明。 規定値: None
|
kwargs
必須
|
追加パラメーターのディクショナリ。 この場合、メトリックの列。 |
注釈
log_row
を使用すると、kwargs で説明されているように、列を含むテーブル メトリックが作成されます。 各名前付きパラメーターは、指定された値を持つ列を生成します。
log_row
は、任意のタプルをログに記録するために 1 回呼び出すか、ループ内で複数回呼び出して完全なテーブルを生成することができます。
citrus = ['orange', 'lemon', 'lime']
sizes = [ 10, 7, 3]
for index in range(len(citrus)):
run.log_row("citrus", fruit = citrus[index], size=sizes[index])
log_table
register_model
運用化のためのモデルを登録します。
register_model(model_name, model_path=None, tags=None, properties=None, model_framework=None, model_framework_version=None, description=None, datasets=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None, **kwargs)
パラメーター
名前 | 説明 |
---|---|
model_name
必須
|
モデルの名前。 |
model_path
|
モデルへの相対クラウド パス ("outputs/modelname" など)。
指定しない場合 (なし)、パスとして 規定値: None
|
tags
|
モデルに割り当てるキー値タグのディクショナリ。 規定値: None
|
properties
|
モデルに割り当てるキー値プロパティのディクショナリ。 これらのプロパティはモデルの作成後に変更できませんが、新しいキー値ペアを追加できます。 規定値: None
|
model_framework
|
登録するモデルのフレームワーク。 現在サポートされているフレームワーク: TensorFlow、ScikitLearn、Onnx、Custom、Multi 規定値: None
|
model_framework_version
|
登録済みモデルのフレームワーク バージョン。 規定値: None
|
description
|
モデルの説明 (省略可能)。 規定値: None
|
datasets
|
最初の要素がデータセット モデルのリレーションシップを記述し、2 番目の要素がデータセットであるタプルのリスト。 規定値: None
|
sample_input_dataset
|
省略可。 登録済みモデルのサンプル入力データセット 規定値: None
|
sample_output_dataset
|
省略可。 登録済みモデルのサンプル出力データセット 規定値: None
|
resource_configuration
|
省略可。 登録済みモデルを実行するためのリソース構成 規定値: None
|
kwargs
必須
|
省略可能なパラメーター。 |
戻り値
型 | 説明 |
---|---|
登録済みモデル。 |
注釈
model = best_run.register_model(model_name = 'best_model', model_path = 'outputs/model.pkl')
remove_tags
この実行で変更可能なタグの一覧を削除します。
remove_tags(tags)
パラメーター
名前 | 説明 |
---|---|
tags
必須
|
削除するタグの一覧。 |
戻り値
型 | 説明 |
---|---|
run オブジェクトに格納されているタグ |
restore_snapshot
set_tags
実行でタグのセットを追加または変更します。 辞書に渡されないタグは変更されずに残ります。
単純な文字列のタグを追加することもできます。 これらのタグがキーとしてタグ ディクショナリに表示される場合、値は None になります。 詳細については、「 実行のタグ付けと検索」を参照してください。
set_tags(tags)
パラメーター
名前 | 説明 |
---|---|
tags
必須
|
run オブジェクトに格納されているタグ。 |
start
実行を開始済みとしてマークします。
これは通常、実行が別のアクターによって作成された高度なシナリオで使用されます。
start()
submit_child
実験を送信し、アクティブな子実行を返します。
submit_child(config, tags=None, **kwargs)
パラメーター
名前 | 説明 |
---|---|
config
必須
|
送信する構成。 |
tags
|
送信された実行に追加されるタグ (例: {"tag": "value"})。 規定値: None
|
kwargs
必須
|
構成の送信関数で使用される追加のパラメーター。 |
戻り値
型 | 説明 |
---|---|
実行オブジェクト。 |
注釈
Submit は、ローカルまたはリモートのハードウェアで試用版を実行するための Azure Machine Learning プラットフォームへの非同期呼び出しです。 構成に応じて、submit によって実行環境が自動的に準備され、コードが実行され、ソース コードと結果が実験の実行履歴にキャプチャされます。
実験を送信するには、まず、実験の実行方法を説明する構成オブジェクトを作成する必要があります。 構成は、必要な試用版の種類によって異なります。
ScriptRunConfigを使用してローカル コンピューターから子実験を送信する方法の例を次に示します。
from azureml.core import ScriptRunConfig
# run a trial from the train.py code in your current directory
config = ScriptRunConfig(source_directory='.', script='train.py',
run_config=RunConfiguration())
run = parent_run.submit_child(config)
# get the url to view the progress of the experiment and then wait
# until the trial is complete
print(run.get_portal_url())
run.wait_for_completion()
実行を構成する方法の詳細については、 submitを参照してください。
tag
文字列キーと省略可能な文字列値を使用して、実行にタグを付きます。
tag(key, value=None)
パラメーター
名前 | 説明 |
---|---|
key
必須
|
タグ キー |
value
|
タグの省略可能な値 規定値: None
|
注釈
実行のタグとプロパティは、どちらも文字列 -> 文字列のディクショナリです。 それらの違いは変更可能性です。タグは設定、更新、削除できますが、プロパティは追加することしかできません。 これにより、プロパティはシステム/ワークフロー関連の動作トリガーにより適切になりますが、タグは一般にユーザー向けであり、実験のコンシューマーにとって意味があります。
run = experiment.start_logging()
run.tag('DeploymentCandidate')
run.tag('modifiedBy', 'Master CI')
run.tag('modifiedBy', 'release pipeline') # Careful, tags are mutable
run.add_properties({'BuildId': os.environ.get('VSTS_BUILD_ID')}) # Properties are not
tags = run.get_tags()
# tags = { 'DeploymentCandidate': None, 'modifiedBy': 'release pipeline' }
take_snapshot
入力ファイルまたはフォルダーのスナップショットを保存します。
take_snapshot(file_or_folder_path)
パラメーター
名前 | 説明 |
---|---|
file_or_folder_path
必須
|
実行ソース コードを含むファイルまたはフォルダー。 |
戻り値
型 | 説明 |
---|---|
スナップショット ID を返します。 |
注釈
スナップショットは、実験の実行に使用される ソース コード を目的としています。 これらは、実行試用版を将来レプリケートできるように、実行と共に格納されます。
注
スナップショットは、 submit が呼び出されたときに自動的に作成されます。 通常、このtake_snapshot メソッドは対話型 (ノートブック) の実行にのみ必要です。
upload_file
ファイルを実行レコードにアップロードします。
upload_file(name, path_or_stream, datastore_name=None)
パラメーター
名前 | 説明 |
---|---|
name
必須
|
アップロードするファイルの名前。 |
path_or_stream
必須
|
アップロードするファイルへの相対ローカル パスまたはストリーム。 |
datastore_name
必須
|
オプションのデータストア名 |
戻り値
型 | 説明 |
---|---|
注釈
run = experiment.start_logging()
run.upload_file(name='important_file', path_or_stream="path/on/disk/file.txt")
注
実行は、指定された出力ディレクトリ内のファイルを自動的にキャプチャします。ほとんどの実行の種類では、既定では "./outputs" になります。 upload_fileは、追加のファイルをアップロードする必要がある場合、または出力ディレクトリが指定されていない場合にのみ使用します。
upload_files
ファイルを実行レコードにアップロードします。
upload_files(names, paths, return_artifacts=False, timeout_seconds=None, datastore_name=None)
パラメーター
名前 | 説明 |
---|---|
names
必須
|
アップロードするファイルの名前。 設定する場合は、パスも設定する必要があります。 |
paths
必須
|
アップロードするファイルへの相対ローカル パス。 設定する場合は、名前が必要です。 |
return_artifacts
必須
|
アップロードされたファイルごとに成果物オブジェクトを返す必要があることを示します。 |
timeout_seconds
必須
|
ファイルをアップロードするためのタイムアウト。 |
datastore_name
必須
|
オプションのデータストア名 |
注釈
upload_files
は個別のファイルに対する upload_file
と同じ効果がありますが、 upload_files
を使用する場合、パフォーマンスとリソース使用率の利点があります。
import os
run = experiment.start_logging()
file_name_1 = 'important_file_1'
file_name_2 = 'important_file_2'
run.upload_files(names=[file_name_1, file_name_2],
paths=['path/on/disk/file_1.txt', 'other/path/on/disk/file_2.txt'])
run.download_file(file_name_1, 'file_1.txt')
os.mkdir("path") # The path must exist
run.download_file(file_name_2, 'path/file_2.txt')
注
実行では、指定された出力ディレクトリ内のファイルが自動的にキャプチャされます。これは、ほとんどの実行の種類で既定で "./outputs" になります。 upload_filesは、追加のファイルをアップロードする必要がある場合、または出力ディレクトリが指定されていない場合にのみ使用します。
upload_folder
指定したフォルダーを特定のプレフィックス名にアップロードします。
upload_folder(name, path, datastore_name=None)
パラメーター
名前 | 説明 |
---|---|
name
必須
|
アップロードするファイルのフォルダーの名前。 |
folder
必須
|
アップロードするフォルダーへの相対ローカル パス。 |
datastore_name
必須
|
オプションのデータストア名 |
注釈
run = experiment.start_logging()
run.upload_folder(name='important_files', path='path/on/disk')
run.download_file('important_files/existing_file.txt', 'local_file.txt')
注
実行では、指定された出力ディレクトリ内のファイルが自動的にキャプチャされます。これは、ほとんどの実行の種類で既定で "./outputs" になります。 upload_folderは、追加のファイルをアップロードする必要がある場合、または出力ディレクトリが指定されていない場合にのみ使用します。
wait_for_completion
この実行が完了するまで待ちます。 待機後の状態オブジェクトを返します。
wait_for_completion(show_output=False, wait_post_processing=False, raise_on_error=True)
パラメーター
名前 | 説明 |
---|---|
show_output
|
sys.stdout に実行出力を表示するかどうかを示します。 規定値: False
|
wait_post_processing
|
実行の完了後に後処理が完了するまで待機するかどうかを示します。 規定値: False
|
raise_on_error
|
実行が失敗状態のときにエラーが発生するかどうかを示します。 規定値: True
|
戻り値
型 | 説明 |
---|---|
状態オブジェクト。 |
属性
description
display_name
experiment
id
name
number
parent
properties
status
実行オブジェクトの状態を返します。