ParallelRunConfig クラス

ParallelRunStep オブジェクトの構成を定義します。

ParallelRunStep の使用例については、ノートブック https://aka.ms/batch-inference-notebooks を参照してください。

トラブルシューティング ガイドについては、https://aka.ms/prstsg を参照してください。 その他の参照情報を見つけることができます。

config オブジェクトを初期化します。

継承
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBase
ParallelRunConfig

コンストラクター

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
必須
str

複数のノードで並列に実行されるユーザー スクリプト。 これは、ローカル ファイル パスとして指定されます。 source_directory が指定された場合は、entry_script がディレクトリ内部の相対パスになります。 そうでない場合は、マシン上でアクセス可能な任意のパスを指定できます。 entry_script には、次の 2 つの関数が含まれている必要があります。init(): この関数は、モデルの逆シリアル化やグローバル オブジェクトへの読み込みなど、後で推論するためのコストのかかる準備、または一般的な準備を行うときに使用する必要があります。 run(mini_batch): 並列化するメソッド。 各呼び出しには 1 つのミニバッチがあります。 'mini_batch': バッチ推論は run メソッドを呼び出して、そのメソッドに、リストまたは Pandas データフレームのいずれかを引数として渡します。 min_batch のエントリはそれぞれ、filepath (入力が FileDataset の場合) または Pandas データフレーム (入力が TabularDataset の場合) になります。 run() メソッドは、Pandas データフレームまたは配列を返します。 append_row output_action の場合、これらの返される要素は、共通の出力ファイルに追加されます。 summary_only の場合、要素のコンテンツは無視されます。 すべての出力アクションについて、返される出力要素はそれぞれ、入力ミニバッチ内で成功した 1 つの入力要素の推論を示します。 各並列ワーカー プロセスは、init を 1 回呼び出してから、すべてのミニバッチが処理されるまで run 関数をループします。

error_threshold
必須
int

処理中に無視する必要のあるエラーの数。TabularDataset の場合はレコード エラー数、FileDataset の場合はファイル エラー数を示します。 エラー数がこの値を超えた場合は、ジョブが中止されます。 エラーのしきい値は、入力全体を対象にしており、run() メソッドに送信された個々のミニバッチを対象にしていません。 範囲は [-1, int.max] です。 -1 は、処理中のすべての失敗を無視することを示します。

output_action
必須
str

出力を整理する方法。 現在サポートされている値は、'append_row' と 'summary_only' です。

  1. 'append_row' - run() メソッドの呼び出しによって出力されるすべての値は、出力場所に作成された parallel_run_step.txt という名前の 1 つの一意のファイルに集約されます。
  2. 'summary_only' - ユーザー スクリプトは、それ自体で出力を格納することが想定されます。 出力行は、引き続き、正常に処理された入力項目ごとに必要です。 システムは、この出力をエラーしきい値の計算にのみ使用します (行の実際の値は無視します)。
compute_target
必須
AmlCompute または str

ParallelRunStep の実行に使用するコンピューティング先。 このパラメーターは、コンピューティング先オブジェクトとして、または、ワークスペース上のコンピューティング先の名前として指定できます。

node_count
必須
int

ParallelRunStep の実行に使用されるコンピューティング先のノードの数。

process_count_per_node
int

エントリ スクリプトを並列で実行するノードあたりのワーカー プロセスの数。 GPU マシンの場合、既定値は 1 です。 CPU マシンの場合、既定値はコア数です。 ワーカー プロセスが、取得したミニ バッチを渡すことで run() を繰り返し呼び出します。 ジョブ内のワーカー プロセスの総数は process_count_per_node * node_count で、これにより並列で実行する run() の最大数が決定します。

既定値: None
mini_batch_size

FileDataset 入力の場合は、このフィールドが、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるファイルの数です。 TabularDataset 入力の場合、このフィールドは、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるデータのおおよそのサイズです。 値の例は、1024、1024 KB、10 MB、1 GB です。 (省略可能。既定値は、FileDataset の場合は 10 ファイル、TabularDataset の場合は 1MB です。)

既定値: None
source_directory
str

コンピューティング先で実行するために使用される entry_script およびサポート ファイルが格納されているフォルダーへのパス。

既定値: None
description
str

表示目的に使用されるバッチ サービスに関する説明。

既定値: None
logging_level
str

ログ レベル名の文字列。'logging' で定義されます。 指定可能な値は、'WARNING'、'INFO'、'DEBUG' です。 (省略可能。既定値は 'INFO' です。)

既定値: INFO
run_invocation_timeout
int

run () メソッドの呼び出しごとのタイムアウト (秒単位) (省略可能。既定値は 60 です。)

既定値: 60
run_max_try
int

失敗した、またはタイムアウトになったミニ バッチの最大再試行回数。 範囲は [1, int.max] です。 既定値は、3 です。 デキュー回数がこの値を超えるミニバッチは再び処理されず、直接削除されます。

既定値: 3
append_row_file_name
str

output_action が 'append_row' の場合の出力ファイルの名前。 (省略可能、既定値は 'parallel_run_step.txt')

既定値: None
allowed_failed_count
int

処理中に無視する必要のある、失敗したミニバッチの数。 失敗した数がこの値を超えた場合は、ジョブが中止されます。 このしきい値は、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
必須
str

複数のノードで並列に実行されるユーザー スクリプト。 これは、ローカル ファイル パスとして指定されます。 source_directory が指定された場合は、entry_script がディレクトリ内部の相対パスになります。 そうでない場合は、マシン上でアクセス可能な任意のパスを指定できます。 entry_script には、次の 2 つの関数が含まれている必要があります。init(): この関数は、モデルの逆シリアル化やグローバル オブジェクトへの読み込みなど、後で推論するためのコストのかかる準備、または一般的な準備を行うときに使用する必要があります。 run(mini_batch): 並列化するメソッド。 各呼び出しには 1 つのミニバッチがあります。 'mini_batch': バッチ推論は run メソッドを呼び出して、そのメソッドに、リストまたは Pandas データフレームのいずれかを引数として渡します。 min_batch のエントリはそれぞれ、filepath (入力が FileDataset の場合) または Pandas データフレーム (入力が TabularDataset の場合) になります。 run() メソッドは、Pandas データフレームまたは配列を返します。 append_row output_action の場合、これらの返される要素は、共通の出力ファイルに追加されます。 summary_only の場合、要素のコンテンツは無視されます。 すべての出力アクションについて、返される出力要素はそれぞれ、入力ミニバッチ内で成功した 1 つの入力要素の推論を示します。 各並列ワーカー プロセスは、init を 1 回呼び出してから、すべてのミニバッチが処理されるまで run 関数をループします。

error_threshold
必須
int

処理中に無視する必要のあるエラーの数。TabularDataset の場合はレコード エラー数、FileDataset の場合はファイル エラー数を示します。 エラー数がこの値を超えた場合は、ジョブが中止されます。 エラーのしきい値は、入力全体を対象にしており、run() メソッドに送信された個々のミニバッチを対象にしていません。 範囲は [-1, int.max] です。 -1 は、処理中のすべての失敗を無視することを示します。

output_action
必須
str

出力を整理する方法。 現在サポートされている値は、'append_row' と 'summary_only' です。

  1. 'append_row' - run() メソッドの呼び出しによって出力されるすべての値は、出力場所に作成された parallel_run_step.txt という名前の 1 つの一意のファイルに集約されます。
  2. 'summary_only' - ユーザー スクリプトは、それ自体で出力を格納することが想定されます。 出力行は、引き続き、正常に処理された入力項目ごとに必要です。 システムは、この出力をエラーしきい値の計算にのみ使用します (行の実際の値は無視します)。
compute_target
必須
AmlCompute または str

ParallelRunStep の実行に使用するコンピューティング先。 このパラメーターは、コンピューティング先オブジェクトとして、または、ワークスペース上のコンピューティング先の名前として指定できます。

node_count
必須
int

ParallelRunStep の実行に使用されるコンピューティング先のノードの数。

process_count_per_node
必須
int

エントリ スクリプトを並列で実行するノードあたりのワーカー プロセスの数。 GPU マシンの場合、既定値は 1 です。 CPU マシンの場合、既定値はコアの数です。 ワーカー プロセスが、取得したミニ バッチを渡すことで run() を繰り返し呼び出します。 ジョブ内のワーカー プロセスの総数は process_count_per_node * node_count で、これにより並列で実行する run() の最大数が決定します。

mini_batch_size
必須
str または int

FileDataset 入力の場合は、このフィールドが、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるファイルの数です。 TabularDataset 入力の場合、このフィールドは、ユーザー スクリプトが 1 回の run() 呼び出しで処理できるデータのおおよそのサイズです。 値の例は、1024、1024 KB、10 MB、1 GB です。 (省略可能。既定値は、FileDataset の場合は 10 ファイル、TabularDataset の場合は 1MB です。)

source_directory
必須
str

コンピューティング先で実行するために使用される entry_script およびサポート ファイルが格納されているフォルダーへのパス。

description
必須
str

表示目的に使用されるバッチ サービスに関する説明。

logging_level
必須
str

ログ レベル名の文字列。'logging' で定義されます。 指定可能な値は、'WARNING'、'INFO'、'DEBUG' です。 (省略可能。既定値は 'INFO' です。)

run_invocation_timeout
必須
int

run () メソッドの呼び出しごとのタイムアウト (秒単位) (省略可能。既定値は 60 です。)

run_max_try
必須
int

失敗した、またはタイムアウトになったミニ バッチの最大再試行回数。 範囲は [1, int.max] です。 既定値は、3 です。 デキュー回数がこの値を超えるミニバッチは再び処理されず、直接削除されます。

append_row_file_name
必須
str

output_action が 'append_row' の場合の出力ファイルの名前。 (省略可能、既定値は 'parallel_run_step.txt')

allowed_failed_count
必須
int

処理中に無視する必要のある、失敗したミニバッチの数。 失敗した数がこの値を超えた場合は、ジョブが中止されます。 このしきい値は、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 クラスを使用する例については、次の記事で説明されています。


   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
必須
str

構成を読み込むパス。

save_to_yaml

並列実行構成データを YAML ファイルにエクスポートします。

save_to_yaml(path)

パラメーター

名前 説明
path
必須
str

ファイルを保存するパス。