ParallelRunConfig クラス
ParallelRunStep オブジェクトの構成を定義します。
ParallelRunStep の使用例については、ノートブック https://aka.ms/batch-inference-notebooks を参照してください。
トラブルシューティング ガイドについては、https://aka.ms/prstsg を参照してください。 その他の参照情報を見つけることができます。
config オブジェクトを初期化します。
- 継承
-
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBaseParallelRunConfig
コンストラクター
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 の場合は 1MB です。) 規定値: None
|
source_directory
|
コンピューティング先で実行するために使用される 規定値: None
|
description
|
表示目的に使用されるバッチ サービスに関する説明。 規定値: None
|
logging_level
|
ログ レベル名の文字列。'logging' で定義されます。 指定可能な値は、'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 に昇格した場合、list 型は現時点では PipelineParameter ではサポートされていないため、既定値はリストの json dump 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 の場合は 1MB です。) |
source_directory
必須
|
コンピューティング先で実行するために使用される |
description
必須
|
表示目的に使用されるバッチ サービスに関する説明。 |
logging_level
必須
|
ログ レベル名の文字列。'logging' で定義されます。 指定可能な値は、'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 に昇格した場合、list 型は現時点では PipelineParameter ではサポートされていないため、既定値はリストの json dump 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 ファイルにエクスポートします。 |
load_yaml
YAML ファイルから並列実行構成データを読み込みます。
static load_yaml(workspace, path)
パラメーター
名前 | 説明 |
---|---|
workspace
必須
|
構成データを読み取るワークスペース。 |
path
必須
|
構成を読み込むパス。 |