次の方法で共有


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

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

error_threshold
必須
int

処理中に無視する必要があるTabularDatasetFileDatasetおよびファイルエラーのレコードエラーの数。 エラー数がこの値を超えた場合、ジョブは中止されます。 エラーしきい値は、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 の場合は 1 MB です)。

規定値: None
source_directory
str

コンピューティング 先で実行するために使用する entry_script およびサポート ファイルを含むフォルダーへのパス。

規定値: None
description
str

表示目的で使用されるバッチ サービスを指定する説明。

規定値: None
logging_level
str

"ログ記録" で定義されているログ レベル名の文字列。 指定できる値は、'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 に昇格した場合、現時点では PipelineParameter ではリストの種類がサポートされていないため、既定値はリストの json ダンプ str である必要があります。 入力はパーティション分割されたデータセットである必要があり、partition_keysは、これを機能させるために、すべての入力データセットのキーのサブセットである必要があります。

規定値: None
environment_variables

環境変数の名前と値のディクショナリ。 これらの環境変数は、ユーザー スクリプトが実行されているプロセスで設定されます。

規定値: None
environment
必須

Python 環境を構成する環境定義。 既存の Python 環境を使用するか、実験の一時環境を設定するように構成できます。 環境定義は、conda パッケージや pip パッケージなど、必要なアプリケーションの依存関係を定義する役割を担います。

entry_script
必須
str

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

error_threshold
必須
int

処理中に無視する必要があるTabularDatasetFileDatasetおよびファイルエラーのレコードエラーの数。 エラー数がこの値を超えた場合、ジョブは中止されます。 エラーしきい値は、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 の場合は 1 MB です)。

source_directory
必須
str

コンピューティング 先で実行するために使用する entry_script およびサポート ファイルを含むフォルダーへのパス。

description
必須
str

表示目的で使用されるバッチ サービスを指定する説明。

logging_level
必須
str

"ログ記録" で定義されているログ レベル名の文字列。 指定できる値は、'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 に昇格した場合、現時点では 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 クラスを操作する例については、次の記事で説明します。


   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

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