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
- Environment
設定 Python 環境的環境定義。 它可以設定為使用現有的 Python 環境,或設定實驗的暫存環境。 環境定義負責定義必要的應用程式相依性,例如 conda 或 pip 套件。
- entry_script
- str
將在多個節點上平行執行的使用者腳本。 這會指定為本機檔案路徑。 如果 source_directory
指定 ,則 entry_script
為目錄中的相對路徑。 否則,它可以是電腦上可存取的任何路徑。
entry_script應該包含兩個函式: init()
:此函式應該用於後續推斷的任何昂貴或常見準備,例如將模型還原序列化並載入全域物件。
run(mini_batch)
:要平行處理的方法。 每個叫用都會有一個迷你批次。
'mini_batch':Batch 推斷會叫用 run 方法,並將清單或 Pandas DataFrame 當做引數傳遞至 方法。 如果輸入是 FileDataset,則min_batch中的每個專案都會是檔案路徑,如果輸入是 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'。
- 'append_row' – run () 方法調用的所有值都會匯總成一個名為 parallel_run_step.txt 的唯一檔案,該檔案會在輸出位置中建立。
- 'summary_only' – 使用者腳本應該儲存輸出本身。 處理的每個成功輸入專案仍預期輸出資料列。 系統只會將此輸出用於錯誤臨界值計算, (忽略資料列的實際值) 。
- process_count_per_node
- int
每個節點的背景工作進程數目,以平行方式執行專案腳本。
針對 GPU 電腦,預設值為 1。
對於 CPU 電腦,預設值為核心數目。
背景工作處理序會透過傳遞所取得的迷你批次來重複呼叫 run()
。
您作業中的背景工作處理序總數為 process_count_per_node * node_count
,此數目會決定平行執行的 run()
上限數。
針對 FileDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的檔案數目。 對於 TabularDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的資料大約大小。 範例值為 1024、1024KB、10MB 和 1GB。 (選擇性,預設值為 FileDataset 的 10 個檔案,而 TabularDataset 的預設值為 1MB。)
- logging_level
- str
記錄層級名稱的字串,定義於 'logging' 中。 可能的值為 'WARNING'、'INFO'和 'DEBUG'。 (選擇性,預設值為 'INFO'.)
- 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
處理期間應忽略的失敗迷你批次數目。 如果失敗的計數超過此值,作業將會中止。 此臨界值適用于整個輸入,而不是傳送至執行 () 方法的個別迷你批次。 此範圍為 [-1, int.max]。 -1 表示處理期間忽略所有失敗。 迷你批次可能會在第一次處理時失敗,然後在第二次嘗試時成功。 第一次和第二次檢查會將其視為失敗。 第二次檢查不會將其計算為失敗。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定一個以上的作業,如果作業超過其中任何一項作業,將會中止。
- allowed_failed_percent
- float
處理期間應忽略的失敗迷你批次百分比。 如果失敗的百分比高於此值,則會中止作業。 此臨界值適用于整個輸入,而不是傳送至執行 () 方法的個別迷你批次。 範圍是 [0, 100]。 100 或 100.0 表示在處理期間忽略所有失敗。 檢查會在排程所有迷你批次之後開始。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定一個以上的作業,如果作業超過其中任何一項作業,將會中止。
用來將資料資料集分割成迷你批次的索引鍵。 如果指定,具有相同索引鍵的資料會分割成相同的迷你批次。 如果同時指定partition_keys和mini_batch_size,則會引發錯誤。 它應該是用於分割輸入資料集之索引鍵的 str 元素清單。 不過,如果升階為 PipelineParameter,預設值應該是清單的 json 傾印 str,因為 PipelineParameter 目前不支援清單類型。 輸入 () 必須是分割資料集 (s) ,而partition_keys必須是每個輸入資料集的索引鍵子集,才能運作。
- 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 當做引數傳遞至 方法。 如果輸入是 FileDataset,則min_batch中的每個專案都會是檔案路徑,如果輸入是 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'。
- 'append_row' – run () 方法調用的所有值都會匯總成一個名為 parallel_run_step.txt 的唯一檔案,該檔案會在輸出位置中建立。
- 'summary_only' – 使用者腳本應該儲存輸出本身。 處理的每個成功輸入專案仍預期輸出資料列。 系統只會將此輸出用於錯誤臨界值計算, (忽略資料列的實際值) 。
- process_count_per_node
- int
每個節點的背景工作進程數目,以平行方式執行專案腳本。
若為 GPU 機器,預設值為 1。
若為 CPU 電腦,預設值為核心數目。
背景工作處理序會透過傳遞所取得的迷你批次來重複呼叫 run()
。
您作業中的背景工作處理序總數為 process_count_per_node * node_count
,此數目會決定平行執行的 run()
上限數。
針對 FileDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的檔案數目。 對於 TabularDataset 輸入,此欄位是使用者腳本可在一次執行 () 呼叫中處理的資料大約大小。 範例值為 1024、1024KB、10MB 和 1GB。 (選擇性,預設值為 FileDataset 的 10 個檔案,而 TabularDataset 的預設值為 1MB。)
- append_row_file_name
- str
如果 output_action
為 'append_row',輸出檔的名稱。
(選擇性,預設值為 'parallel_run_step.txt')
- allowed_failed_count
- int
處理期間應忽略的失敗迷你批次數目。 如果失敗的計數超過此值,作業將會中止。 此臨界值適用于整個輸入,而不是傳送至執行 () 方法的個別迷你批次。 此範圍為 [-1, int.max]。 -1 表示處理期間忽略所有失敗。 迷你批次可能會在第一次處理時失敗,然後在第二次嘗試時成功。 第一次和第二次檢查會將其視為失敗。 第二次檢查不會將其計算為失敗。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定一個以上的作業,如果作業超過其中任何一項作業,將會中止。
- allowed_failed_percent
- float
處理期間應忽略的失敗迷你批次百分比。 如果失敗的百分比高於此值,則會中止作業。 此臨界值適用于整個輸入,而不是傳送至執行 () 方法的個別迷你批次。 範圍是 [0, 100]。 100 或 100.0 表示在處理期間忽略所有失敗。 檢查會在排程所有迷你批次之後開始。 引數 –error_threshold、–allowed_failed_count 和 –allowed_failed_percent可以一起運作。 如果指定一個以上的作業,如果作業超過其中任何一項作業,將會中止。
用來將資料資料集分割成迷你批次的索引鍵。 如果指定,具有相同索引鍵的資料會分割成相同的迷你批次。 如果同時指定partition_keys和mini_batch_size,則會引發錯誤。 它應該是用於分割輸入資料集之索引鍵的 str 元素清單。 不過,如果升階為 PipelineParameter,預設值應該是清單的 json 傾印 str,因為 PipelineParameter 目前不支援清單類型。 輸入 () 必須是分割資料集 (s) ,而partition_keys必須是每個輸入資料集的索引鍵子集,才能運作。
備註
ParallelRunConfig 類別可用來提供 類別的組 ParallelRunStep 態。 ParallelRunConfig 和 ParallelRunStep 可用來平行處理大量資料。 常見的使用案例是定型 ML 模型或執行離線推斷,以產生一批觀察的預測。 ParallelRunStep 的運作方式是將您的資料細分為平行處理的批次。 您可以使用 類別來控制 ParallelRunConfig 批次大小、節點計數和其他無法調整的參數,以加速平行處理。 ParallelRunStep 可以使用 TabularDataset 或 FileDataset 作為輸入。
若要使用 ParallelRunStep 和 ParallelRunConfig:
建立 ParallelRunConfig 物件以指定批次處理的執行方式,以及控制批次大小的參數、每個計算目標的節點數目,以及自訂 Python 腳本的參考。
建立使用 ParallelRunConfig 物件的 ParallelRunStep 物件、定義步驟的輸入和輸出。
使用 中已設定的 Pipeline ParallelRunStep 物件,就像使用其他管線步驟類型一樣。
下列文章將討論如何使用 ParallelRunStep 和 ParallelRunConfig 類別進行批次推斷的範例:
教學課程:建置 Azure Machine Learning 管線進行批次評分。 本文說明如何在管線中使用這兩個類別進行非同步批次評分,並且讓 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)
參數
save_to_yaml
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應