共用方式為


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)

參數

名稱 Description
environment
必要

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

entry_script
必要
str

將在多個節點上平行執行的用戶腳本。 這會指定為本機檔案路徑。 如果 source_directory 指定 ,則 entry_script 為目錄內的相對路徑。 否則,它可以是計算機上可存取的任何路徑。 entry_script應該包含兩個函式: init()此函式應該用於後續推斷的任何昂貴或常見準備,例如,還原串行化模型並將其載入全域物件。 run(mini_batch):要平行處理的方法。 每個調用都會有一個迷你批次。 'mini_batch':批次推斷會叫用 run 方法,並將清單或 Pandas DataFrame 當做自變數傳遞至 方法。 如果輸入是 FileDataset,則min_batch中的每個項目都會是 filepath,如果輸入是 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
必要

要用於 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 輸入,此字段是使用者腳本可以在一次 run() 呼叫中處理的檔案數目。 針對 TabularDataset 輸入,此字段是使用者腳本可在一次 run() 呼叫中處理的大約數據大小。 範例值為 1024、1024KB、10MB 和 1GB。 (選擇性,預設值為 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 表示在處理期間忽略所有失敗。 迷你批次可能會在第一次處理時失敗,然後在第二次嘗試時成功。 第一次和第二次檢查會將其計算為失敗。 在第二次檢查之後不會將它計算為失敗。 自變數 –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,預設值應該是清單的 json 傾印 str,因為 PipelineParameter 目前不支援清單類型。 輸入必須分割數據集(s),而且partition_keys必須是每個輸入數據集的索引鍵子集,才能運作。

預設值: None
environment_variables

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

預設值: None
environment
必要

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

entry_script
必要
str

將在多個節點上平行執行的用戶腳本。 這會指定為本機檔案路徑。 如果 source_directory 指定 ,則 entry_script 為目錄內的相對路徑。 否則,它可以是計算機上可存取的任何路徑。 entry_script應該包含兩個函式: init()此函式應該用於後續推斷的任何昂貴或常見準備,例如,還原串行化模型並將其載入全域物件。 run(mini_batch):要平行處理的方法。 每個調用都會有一個迷你批次。 'mini_batch':批次推斷會叫用 run 方法,並將清單或 Pandas DataFrame 當做自變數傳遞至 方法。 如果輸入是 FileDataset,則min_batch中的每個項目都會是 filepath,如果輸入是 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
必要

要用於 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 輸入,此字段是使用者腳本可以在一次 run() 呼叫中處理的檔案數目。 針對 TabularDataset 輸入,此字段是使用者腳本可在一次 run() 呼叫中處理的大約數據大小。 範例值為 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
必要

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

partition_keys
必要

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

environment_variables
必要

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

備註

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)

參數

名稱 Description
workspace
必要

要從中讀取組態數據的工作區。

path
必要
str

要從中載入組態的路徑。

save_to_yaml

將平行執行組態數據匯出至 YAML 檔案。

save_to_yaml(path)

參數

名稱 Description
path
必要
str

要儲存盤案的路徑。