ParallelRunConfig クラス
ParallelRunStep オブジェクトの構成を定義します。
ParallelRunStep の使用例については、ノートブックの https://aka.ms/batch-inference-notebooksを参照してください。
トラブルシューティング ガイドについては、 https://aka.ms/prstsgを参照してください。 その他の参照を見つけることができます。
config オブジェクトを初期化します。
コンストラクター
ParallelRunConfig(environment, entry_script, error_threshold, output_action, compute_target, node_count, process_count_per_node=None, mini_batch_size=None, source_directory=None, description=None, logging_level='INFO', run_invocation_timeout=60, run_max_try=3, append_row_file_name=None, allowed_failed_count=None, allowed_failed_percent=None, partition_keys=None, environment_variables=None)
パラメーター
名前 | 説明 |
---|---|
environment
必須
|
Python 環境を構成する環境定義。 既存の Python 環境を使用するか、実験の一時環境を設定するように構成できます。 環境定義は、conda パッケージや pip パッケージなど、必要なアプリケーションの依存関係を定義する役割を担います。 |
entry_script
必須
|
複数のノードで並列に実行されるユーザー スクリプト。 これはローカル ファイル パスとして指定されます。
|
error_threshold
必須
|
処理中に無視する必要があるTabularDatasetのFileDatasetおよびファイルエラーのレコードエラーの数。 エラー数がこの値を超えた場合、ジョブは中止されます。 エラーしきい値は、run() メソッドに送信される個々のミニバッチではなく、入力全体に対して行われます。 範囲は [-1, int.max] です。 -1 は、処理中のすべてのエラーを無視します。 |
output_action
必須
|
出力の編成方法。 現在サポートされている値は、'append_row' と 'summary_only' です。
|
compute_target
必須
|
AmlCompute または
str
ParallelRunStep の実行に使用するコンピューティング 先。 このパラメーターは、コンピューティング ターゲット オブジェクトまたはワークスペース内のコンピューティング 先の名前として指定できます。 |
node_count
必須
|
ParallelRunStep の実行に使用されるコンピューティング ターゲット内のノードの数。 |
process_count_per_node
|
エントリ スクリプトを並列で実行するノードあたりのワーカー プロセスの数。
GPU マシンの場合、既定値は 1 です。
CPU マシンの場合、既定値はコアの数です。
ワーカー プロセスが、取得したミニ バッチを渡すことで 規定値: None
|
mini_batch_size
|
FileDataset 入力の場合、このフィールドは、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるファイルの数です。 TabularDataset 入力の場合、このフィールドは、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるデータのおおよそのサイズです。 値の例は、1024、1024 KB、10 MB、1 GB です。 (省略可能。既定値は FileDataset の場合は 10 ファイル、TabularDataset の場合は 1 MB です)。 規定値: None
|
source_directory
|
コンピューティング 先で実行するために使用する 規定値: None
|
description
|
表示目的で使用されるバッチ サービスを指定する説明。 規定値: None
|
logging_level
|
"ログ記録" で定義されているログ レベル名の文字列。 指定できる値は、'WARNING'、'INFO'、および 'DEBUG' です。 (省略可能、既定値は 'INFO' です)。 規定値: INFO
|
run_invocation_timeout
|
run() メソッドの呼び出しごとにタイムアウト (秒単位)。 (省略可能、既定値は 60 です)。 規定値: 60
|
run_max_try
|
ミニ バッチの失敗またはタイムアウトに対する最大試行回数。 範囲は [1, int.max] です。 既定値は、3 です。 デキュー数がこれより大きいミニ バッチは再処理されないため、直接削除されます。 規定値: 3
|
append_row_file_name
|
規定値: None
|
allowed_failed_count
|
処理中に無視する必要がある失敗したミニ バッチの数。 失敗した数がこの値を超えた場合、ジョブは中止されます。 このしきい値は、run() メソッドに送信される個々のミニバッチではなく、入力全体に対して行われます。 範囲は [-1, int.max] です。 -1 は、処理中のすべてのエラーを無視します。 ミニ バッチは、最初に処理された時点で失敗し、2 回目の試行で成功する可能性があります。 1 回目と 2 回目の間を確認すると、失敗としてカウントされます。 2 回目以降のチェックでは、失敗としてカウントされません。 引数 –error_threshold、–allowed_failed_count、および –allowed_failed_percent は連携できます。 複数のジョブが指定されている場合、そのジョブがいずれかのジョブを超えると、ジョブは中止されます。 規定値: None
|
allowed_failed_percent
|
処理中に無視する必要がある、失敗したミニ バッチの割合。 失敗率がこの値を超えた場合、ジョブは中止されます。 このしきい値は、run() メソッドに送信される個々のミニバッチではなく、入力全体に対して行われます。 範囲は [0, 100] です。 100 または 100.0 は、処理中のすべてのエラーを無視します。 チェックは、すべてのミニ バッチがスケジュールされた後に開始されます。 引数 –error_threshold、–allowed_failed_count、および –allowed_failed_percent は連携できます。 複数のジョブが指定されている場合、そのジョブがいずれかのジョブを超えると、ジョブは中止されます。 規定値: None
|
partition_keys
|
データセットをミニバッチにパーティション分割するために使用されるキー。 指定した場合、同じキーを持つデータが同じミニバッチにパーティション分割されます。 partition_keysとmini_batch_sizeの両方を指定すると、エラーが発生します。 これは、入力データセットのパーティション分割に使用されるキーである str 要素のリストである必要があります。 ただし、PipelineParameter に昇格した場合、現時点では PipelineParameter ではリストの種類がサポートされていないため、既定値はリストの json ダンプ str である必要があります。 入力はパーティション分割されたデータセットである必要があり、partition_keysは、これを機能させるために、すべての入力データセットのキーのサブセットである必要があります。 規定値: None
|
environment_variables
|
環境変数の名前と値のディクショナリ。 これらの環境変数は、ユーザー スクリプトが実行されているプロセスで設定されます。 規定値: None
|
environment
必須
|
Python 環境を構成する環境定義。 既存の Python 環境を使用するか、実験の一時環境を設定するように構成できます。 環境定義は、conda パッケージや pip パッケージなど、必要なアプリケーションの依存関係を定義する役割を担います。 |
entry_script
必須
|
複数のノードで並列に実行されるユーザー スクリプト。 これはローカル ファイル パスとして指定されます。
|
error_threshold
必須
|
処理中に無視する必要があるTabularDatasetのFileDatasetおよびファイルエラーのレコードエラーの数。 エラー数がこの値を超えた場合、ジョブは中止されます。 エラーしきい値は、run() メソッドに送信される個々のミニバッチではなく、入力全体に対して行われます。 範囲は [-1, int.max] です。 -1 は、処理中のすべてのエラーを無視します。 |
output_action
必須
|
出力の編成方法。 現在サポートされている値は、'append_row' と 'summary_only' です。
|
compute_target
必須
|
AmlCompute または
str
ParallelRunStep の実行に使用するコンピューティング 先。 このパラメーターは、コンピューティング ターゲット オブジェクトまたはワークスペース内のコンピューティング 先の名前として指定できます。 |
node_count
必須
|
ParallelRunStep の実行に使用されるコンピューティング ターゲット内のノードの数。 |
process_count_per_node
必須
|
エントリ スクリプトを並列で実行するノードあたりのワーカー プロセスの数。
GPU マシンの場合、既定値は 1 です。
CPU マシンの場合、既定値はコアの数です。
ワーカー プロセスが、取得したミニ バッチを渡すことで |
mini_batch_size
必須
|
FileDataset 入力の場合、このフィールドは、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるファイルの数です。 TabularDataset 入力の場合、このフィールドは、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるデータのおおよそのサイズです。 値の例は、1024、1024 KB、10 MB、1 GB です。 (省略可能。既定値は FileDataset の場合は 10 ファイル、TabularDataset の場合は 1 MB です)。 |
source_directory
必須
|
コンピューティング 先で実行するために使用する |
description
必須
|
表示目的で使用されるバッチ サービスを指定する説明。 |
logging_level
必須
|
"ログ記録" で定義されているログ レベル名の文字列。 指定できる値は、'WARNING'、'INFO'、および 'DEBUG' です。 (省略可能、既定値は 'INFO' です)。 |
run_invocation_timeout
必須
|
run() メソッドの呼び出しごとにタイムアウト (秒単位)。 (省略可能、既定値は 60 です)。 |
run_max_try
必須
|
ミニ バッチの失敗またはタイムアウトに対する最大試行回数。 範囲は [1, int.max] です。 既定値は、3 です。 デキュー数がこれより大きいミニ バッチは再処理されないため、直接削除されます。 |
append_row_file_name
必須
|
|
allowed_failed_count
必須
|
処理中に無視する必要がある失敗したミニ バッチの数。 失敗した数がこの値を超えた場合、ジョブは中止されます。 このしきい値は、run() メソッドに送信される個々のミニバッチではなく、入力全体に対して行われます。 範囲は [-1, int.max] です。 -1 は、処理中のすべてのエラーを無視します。 ミニ バッチは、最初に処理された時点で失敗し、2 回目の試行で成功する可能性があります。 1 回目と 2 回目の間を確認すると、失敗としてカウントされます。 2 回目以降のチェックでは、失敗としてカウントされません。 引数 –error_threshold、–allowed_failed_count、および –allowed_failed_percent は連携できます。 複数のジョブが指定されている場合、そのジョブがいずれかのジョブを超えると、ジョブは中止されます。 |
allowed_failed_percent
必須
|
処理中に無視する必要がある、失敗したミニ バッチの割合。 失敗率がこの値を超えた場合、ジョブは中止されます。 このしきい値は、run() メソッドに送信される個々のミニバッチではなく、入力全体に対して行われます。 範囲は [0, 100] です。 100 または 100.0 は、処理中のすべてのエラーを無視します。 チェックは、すべてのミニ バッチがスケジュールされた後に開始されます。 引数 –error_threshold、–allowed_failed_count、および –allowed_failed_percent は連携できます。 複数のジョブが指定されている場合、そのジョブがいずれかのジョブを超えると、ジョブは中止されます。 |
partition_keys
必須
|
データセットをミニバッチにパーティション分割するために使用されるキー。 指定した場合、同じキーを持つデータが同じミニバッチにパーティション分割されます。 partition_keysとmini_batch_sizeの両方を指定すると、エラーが発生します。 これは、入力データセットのパーティション分割に使用されるキーである str 要素のリストである必要があります。 ただし、PipelineParameter に昇格した場合、現時点では PipelineParameter ではリストの種類がサポートされていないため、既定値はリストの json ダンプ str である必要があります。 入力はパーティション分割されたデータセットである必要があり、partition_keysは、これを機能させるために、すべての入力データセットのキーのサブセットである必要があります。 |
environment_variables
必須
|
環境変数の名前と値のディクショナリ。 これらの環境変数は、ユーザー スクリプトが実行されているプロセスで設定されます。 |
注釈
ParallelRunConfig クラスは、 ParallelRunStep クラスの構成を提供するために使用されます。 ParallelRunConfig と ParallelRunStep は、大量のデータを並列で処理するために一緒に使用できます。 一般的なユース ケースは、ML モデルのトレーニングや、観測のバッチで予測を生成するためのオフライン推論の実行などです。 ParallelRunStep の機能よって、データは並列処理されるバッチに分割されます。 並列処理を高速化するためのバッチ サイズ、ノード数、およびその他の調整可能なパラメーターは、 ParallelRunConfig クラスで制御できます。 ParallelRunStep は、 TabularDataset または FileDataset を入力として使用できます。
ParallelRunStep と ParallelRunConfig を使用するには:
バッチ処理の実行方法を指定する ParallelRunConfig オブジェクトを作成し、バッチ サイズ、コンピューティング ターゲットあたりのノード数、カスタム Python スクリプトへの参照を制御するパラメーターを指定します。
ParallelRunConfig オブジェクトを使用する ParallelRunStep オブジェクトを作成し、ステップの入力と出力を定義します。
他のパイプライン ステップの種類と同様に、構成された ParallelRunStep オブジェクトを Pipeline で使用します。
バッチ推論のために ParallelRunStep クラスと ParallelRunConfig クラスを操作する例については、次の記事で説明します。
「チュートリアル: バッチ スコアリング用の Azure Machine Learning パイプラインを作成する」。 この記事では、これら 2 つのクラスをパイプラインで非同期バッチ スコアリングに使用する方法と、パイプラインを実行するために REST エンドポイントを有効にする方法が説明されています。
「Azure Machine Learning を使用して大規模なデータでバッチ推論を実行する」。 この記事では、大量のデータを非同期的に、そしてカスタム推論スクリプトおよび MNIST データセットの事前トレーニング済みイメージ分類モデル ベースと並列に、処理する方法が示されています。
from azureml.pipeline.steps import ParallelRunStep, ParallelRunConfig
parallel_run_config = ParallelRunConfig(
source_directory=scripts_folder,
entry_script=script_file,
mini_batch_size="5", # or partition_keys=["key1", "key2"], which is another way to partition the
# input to mini-batches, refer to the parameter description for details
error_threshold=10, # Optional, allowed failed count on mini batch items
allowed_failed_count=15, # Optional, allowed failed count on mini batches
allowed_failed_percent=10, # Optional, allowed failed percent on mini batches
run_max_try=3,
output_action="append_row",
environment=batch_env,
compute_target=compute_target,
node_count=2)
parallelrun_step = ParallelRunStep(
name="predict-digits-mnist",
parallel_run_config=parallel_run_config,
inputs=[ named_mnist_ds ],
output=output_dir,
arguments=[ "--extra_arg", "example_value" ],
allow_reuse=True
)
この例の詳細については、ノートブックの https://aka.ms/batch-inference-notebooksを参照してください。
メソッド
load_yaml |
YAML ファイルから並列実行構成データを読み込みます。 |
save_to_yaml |
並列実行構成データを YAML ファイルにエクスポートします。 |