ParallelRunConfig 類別

定義 物件的組 ParallelRunStep 態。

如需使用 ParallelRunStep 的範例,請參閱筆記本 https://aka.ms/batch-inference-notebooks

如需疑難排解指南,請參閱 https://aka.ms/prstsg 。 您可以在該處找到更多參考。

初始化組態物件。

繼承
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
Environment
必要

設定 Python 環境的環境定義。 它可以設定為使用現有的 Python 環境,或設定實驗的暫存環境。 環境定義負責定義必要的應用程式相依性,例如 conda 或 pip 套件。

entry_script
str
必要

將在多個節點上平行執行的使用者腳本。 這會指定為本機檔案路徑。 如果 source_directory 指定 ,則 entry_script 為目錄內的相對路徑。 否則,它可以是電腦上可存取的任何路徑。 entry_script應該包含兩個函式: init() :此函式應該用於任何成本高昂或常見的後續推斷準備,例如,將模型還原序列化和載入全域物件。 run(mini_batch):要平行處理的方法。 每個調用都會有一個迷你批次。 'mini_batch':Batch 推斷會叫用 run 方法,並將清單或 Pandas DataFrame 當做引數傳遞至 方法。 如果 input 是 FileDataset,則min_batch中的每個專案都會是 filepath,如果 input 是 TabularDataset,則為 Pandas DataFrame。 run () 方法應該會傳回 Pandas DataFrame 或陣列。 針對 append_row output_action,這些傳回的元素會附加至一般輸出檔案。 針對 summary_only,則會忽略元素的內容。 針對所有輸出動作,每個傳回的輸出元素會指出輸入迷你批次中一次成功的輸入元素推斷。 每個平行背景工作進程都會呼叫 init 一次,然後迴圈執行 式,直到處理所有迷你批次為止。

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 的唯一檔案,該檔案會在輸出位置中建立。
  2. 'summary_only' – 使用者腳本預期會儲存輸出本身。 處理的每個成功輸入專案仍預期輸出資料列。 系統只會將此輸出用於錯誤閾值計算, (忽略資料列的實際值) 。
compute_target
AmlComputestr
必要

用於 ParallelRunStep 執行的計算目標。 此參數可以指定為計算目標物件或工作區中的計算目標名稱。

node_count
int
必要

用於執行 ParallelRunStep 的計算目標中的節點數目。

process_count_per_node
int
預設值: None

每個節點的背景工作進程數目,以平行方式執行專案腳本。 針對 GPU 電腦,預設值為 1。 針對 CPU 電腦,預設值為核心數目。 背景工作處理序會透過傳遞所取得的迷你批次來重複呼叫 run()。 您作業中的背景工作處理序總數為 process_count_per_node * node_count,此數目會決定平行執行的 run() 上限數。

mini_batch_size
Union[str, int]
預設值: None

對於 FileDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的檔案數目。 對於 TabularDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的大約資料大小。 範例值為 1024、1024KB、10MB 和 1GB。 (選擇性,FileDataset 的預設值為 10 個檔案,而 TabularDataset 的預設值為 1MB。)

source_directory
str
預設值: None

資料夾的路徑,其中包含 entry_script 和支援用來在計算目標上執行的檔案。

description
str
預設值: None

提供用於顯示之批次服務的描述。

logging_level
str
預設值: INFO

記錄層級名稱的字串,定義於 'logging' 中。 可能的值為 'WARNING'、'INFO'和 'DEBUG'。 (選擇性,預設值為 'INFO'。)

run_invocation_timeout
int
預設值: 60

run () 方法的每個調用以秒為單位的逾時。 (選擇性,預設值為 60.)

run_max_try
int
預設值: 3

失敗或逾時迷你批次的最大嘗試次數。 此範圍為 [1, int.max]。 預設值是 3。 清除佇列計數大於此計數的迷你批次不會再次處理,而且會直接刪除。

append_row_file_name
str
預設值: None

如果 output_action 為 'append_row',則為輸出檔的名稱。 (選擇性,預設值為 'parallel_run_step.txt')

allowed_failed_count
int
預設值: None

處理期間應該忽略的失敗迷你批次數目。 如果失敗的計數高於此值,作業將會中止。 此臨界值適用于整個輸入,而不是傳送至 run () 方法的個別迷你批次。 此範圍為 [-1, int.max]。 -1 表示忽略處理期間的所有失敗。 第一次處理迷你批次時可能會失敗,然後在第二次嘗試時成功。 第一次和第二次檢查會將其視為失敗。 第二次檢查不會將其視為失敗。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定了一個以上,如果作業超過其中任何一項,作業將會中止。

allowed_failed_percent
float
預設值: None

處理期間應該忽略的失敗迷你批次百分比。 如果失敗的百分比高於此值,則會中止作業。 此臨界值適用于整個輸入,而不是傳送至 run () 方法的個別迷你批次。 此範圍為 [0, 100]。 100 或 100.0 表示忽略處理期間的所有失敗。 檢查會在排程所有迷你批次之後開始。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定了一個以上,如果作業超過其中任何一項,作業將會中止。

partition_keys
List[str]
預設值: None

用來將資料資料集分割成迷你批次的索引鍵。 如果指定,具有相同索引鍵的資料會分割成相同的迷你批次。 如果同時指定partition_keys和mini_batch_size,則會引發錯誤。 它應該是 str 元素的清單,每個元素都是用來分割輸入資料集的索引鍵。 不過,如果升級為 PipelineParameter,預設值應該是清單的 json 傾印 str,因為 PipelineParameter 目前不支援清單類型。 輸入 () 必須是分割資料集 () ,而partition_keys必須是每個輸入資料集的索引鍵子集,才能運作。

environment_variables
Dict[str, str]
預設值: None

環境變數名稱和值的字典。 這些環境變數會在執行使用者指令碼的程序上設定。

environment
Environment
必要

設定 Python 環境的環境定義。 它可以設定為使用現有的 Python 環境,或設定實驗的暫存環境。 環境定義負責定義必要的應用程式相依性,例如 conda 或 pip 套件。

entry_script
str
必要

將在多個節點上平行執行的使用者腳本。 這會指定為本機檔案路徑。 如果 source_directory 指定 ,則 entry_script 為目錄內的相對路徑。 否則,它可以是電腦上可存取的任何路徑。 entry_script應該包含兩個函式: init() :此函式應該用於任何成本高昂或常見的後續推斷準備,例如,將模型還原序列化和載入全域物件。 run(mini_batch):要平行處理的方法。 每個調用都會有一個迷你批次。 'mini_batch':Batch 推斷會叫用 run 方法,並將清單或 Pandas DataFrame 當做引數傳遞至 方法。 如果 input 是 FileDataset,則min_batch中的每個專案都會是 filepath,如果 input 是 TabularDataset,則為 Pandas DataFrame。 run () 方法應該會傳回 Pandas DataFrame 或陣列。 針對 append_row output_action,這些傳回的元素會附加至一般輸出檔案。 針對 summary_only,則會忽略元素的內容。 針對所有輸出動作,每個傳回的輸出元素會指出輸入迷你批次中一次成功的輸入元素推斷。 每個平行背景工作進程都會呼叫 init 一次,然後迴圈執行 式,直到處理所有迷你批次為止。

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 的唯一檔案,該檔案會在輸出位置中建立。
  2. 'summary_only' – 使用者腳本預期會儲存輸出本身。 處理的每個成功輸入專案仍預期輸出資料列。 系統只會將此輸出用於錯誤閾值計算, (忽略資料列的實際值) 。
compute_target
AmlComputestr
必要

用於 ParallelRunStep 執行的計算目標。 此參數可以指定為計算目標物件或工作區中的計算目標名稱。

node_count
int
必要

用於執行 ParallelRunStep 的計算目標中的節點數目。

process_count_per_node
int
必要

每個節點的背景工作進程數目,以平行方式執行專案腳本。 若為 GPU 機器,預設值為 1。 針對 CPU 電腦,預設值為核心數目。 背景工作處理序會透過傳遞所取得的迷你批次來重複呼叫 run()。 您作業中的背景工作處理序總數為 process_count_per_node * node_count,此數目會決定平行執行的 run() 上限數。

mini_batch_size
strint
必要

對於 FileDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的檔案數目。 對於 TabularDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的大約資料大小。 範例值為 1024、1024KB、10MB 和 1GB。 (選擇性,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 表示忽略處理期間的所有失敗。 第一次處理迷你批次時可能會失敗,然後在第二次嘗試時成功。 第一次和第二次檢查會將其視為失敗。 第二次檢查不會將其視為失敗。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定了一個以上,如果作業超過其中任何一項,作業將會中止。

allowed_failed_percent
float
必要

處理期間應該忽略的失敗迷你批次百分比。 如果失敗的百分比高於此值,則會中止作業。 此臨界值適用于整個輸入,而不是傳送至 run () 方法的個別迷你批次。 此範圍為 [0, 100]。 100 或 100.0 表示忽略處理期間的所有失敗。 檢查會在排程所有迷你批次之後開始。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定了一個以上,如果作業超過其中任何一項,作業將會中止。

partition_keys
List[str]
必要

用來將資料資料集分割成迷你批次的索引鍵。 如果指定,具有相同索引鍵的資料會分割成相同的迷你批次。 如果同時指定partition_keys和mini_batch_size,則會引發錯誤。 它應該是 str 元素的清單,每個元素都是用來分割輸入資料集的索引鍵。 不過,如果升級為 PipelineParameter,預設值應該是清單的 json 傾印 str,因為 PipelineParameter 目前不支援清單類型。 輸入 () 必須是分割資料集 () ,而partition_keys必須是每個輸入資料集的索引鍵子集,才能運作。

environment_variables
Dict[str, str]
必要

環境變數名稱和值的字典。 這些環境變數會在執行使用者指令碼的程序上設定。

備註

ParallelRunConfig 類別可用來提供 類別的組 ParallelRunStep 態。 ParallelRunConfig 和 ParallelRunStep 可以一起使用,以平行方式處理大量資料。 常見的使用案例是定型 ML 模型或執行離線推斷,以產生一批觀察的預測。 ParallelRunStep 的運作方式是將您的資料細分為平行處理的批次。 您可以使用 類別來控制 ParallelRunConfig 批次大小、節點計數和其他無法調整的參數,以加速平行處理。 ParallelRunStep 可以使用 TabularDatasetFileDataset 作為輸入。

若要使用 ParallelRunStep 和 ParallelRunConfig:

  • 建立 ParallelRunConfig 物件以指定批次處理的執行方式,以及控制批次大小的參數、每個計算目標的節點數目,以及自訂 Python 腳本的參考。

  • 建立使用 ParallelRunConfig 物件的 ParallelRunStep 物件,定義步驟的輸入和輸出。

  • 使用 中 Pipeline 已設定的 ParallelRunStep 物件,就像您使用其他管線步驟類型一樣。

下列文章會討論使用 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
Workspace
必要

要從中讀取組態資料的工作區。

path
str
必要

要從中載入組態的路徑。

save_to_yaml

將平行執行組態資料匯出至 YAML 檔案。

save_to_yaml(path)

參數

path
str
必要

要儲存檔案的路徑。