PipelineData 類別
代表 Azure Machine Learning 管線中的中繼資料。
管線中使用的資料可由一個步驟產生,另一個步驟是提供 PipelineData 物件做為一個步驟的輸出,以及一或多個後續步驟的輸入。
請注意 ,如果您使用管線資料,請確定所使用的目錄已存在。
若要確保目錄存在,Python 範例假設您在一個管線步驟中有名為 output_folder 的輸出埠,您想要將此資料夾中的一些資料寫入相對路徑。
import os
os.makedirs(args.output_folder, exist_ok=True)
f = open(args.output_folder + '/relative_path/file_name', 'w+')
PipelineData 會使用不再建議的資料存取和傳遞方法 DataReference 基礎,請改用 OutputFileDatasetConfig ,您可以在這裡找到範例: 使用 OutputFileDatasetConfig 的管線。
初始化 PipelineData。
- 繼承
-
builtins.objectPipelineData
建構函式
PipelineData(name, datastore=None, output_name=None, output_mode='mount', output_path_on_compute=None, output_overwrite=None, data_type=None, is_directory=None, pipeline_output_name=None, training_output=None)
參數
- name
- str
PipelineData 物件的名稱,只能包含字母、數位和底線。
PipelineData 名稱可用來識別步驟的輸出。 管線執行完成後,您可以使用步驟名稱搭配輸出名稱來存取特定輸出。 名稱在管線的單一步驟內應該是唯一的。
- datastore
- AbstractAzureStorageDatastore 或 AzureDataLakeDatastore
PipelineData 所在的資料存放區。 如果未指定,則會使用預設資料存放區。
- is_directory
- bool
指定資料是目錄還是單一檔案。 這只會用來判斷未提供 參數時 data_type
,Azure ML 後端所使用的資料類型。 預設值是 False。
- pipeline_output_name
如果提供此輸出,則會使用 來使用 PipelineRun.get_pipeline_output()
。 管線輸出名稱在管線中必須是唯一的。
- training_output
- TrainingOutput
定義定型結果的輸出。 這只適用于產生不同類型輸出的特定定型,例如計量和模型。 例如, AutoMLStep 產生計量和模型。 您也可以定義用來取得最佳模型的特定定型反復專案或計量。 針對 HyperDriveStep ,您也可以定義要包含在輸出中的特定模型檔案。
- name
- str
PipelineData 物件的名稱,只能包含字母、數位和底線。
PipelineData 名稱可用來識別步驟的輸出。 管線執行完成後,您可以使用步驟名稱搭配輸出名稱來存取特定輸出。 名稱在管線的單一步驟內應該是唯一的。
- datastore
- AbstractAzureStorageDatastore 或 AzureDataLakeDatastore
PipelineData 所在的資料存放區。 如果未指定,則會使用預設資料存放區。
- training_output
- TrainingOutput
定義定型結果的輸出。 這只適用于產生不同類型輸出的特定定型,例如計量和模型。 例如, AutoMLStep 產生計量和模型。 您也可以定義用來取得最佳模型的特定定型反復專案或計量。 針對 HyperDriveStep ,您也可以定義要包含在輸出中的特定模型檔案。
備註
PipelineData 代表執行步驟時會產生的資料輸出。 建立步驟時,請使用 PipelineData 來描述步驟所產生的檔案或目錄。 這些資料輸出會新增至指定的資料存放區,稍後可以擷取和檢視。
例如,下列管線步驟會產生一個名為 「model」 的輸出:
from azureml.pipeline.core import PipelineData
from azureml.pipeline.steps import PythonScriptStep
datastore = ws.get_default_datastore()
step_output = PipelineData("model", datastore=datastore)
step = PythonScriptStep(script_name="train.py",
arguments=["--model", step_output],
outputs=[step_output],
compute_target=aml_compute,
source_directory=source_directory)
在此情況下,train.py 腳本會將它產生的模型寫入至透過 –model 引數提供給腳本的位置。
當建構 Pipelines 來描述步驟相依性時,也會使用 PipelineData 物件。 若要指定步驟需要另一個步驟的輸出做為輸入,請在這兩個步驟的建構函式中使用 PipelineData 物件。
例如,管線定型步驟取決於管線進程步驟的process_step_output輸出:
from azureml.pipeline.core import Pipeline, PipelineData
from azureml.pipeline.steps import PythonScriptStep
datastore = ws.get_default_datastore()
process_step_output = PipelineData("processed_data", datastore=datastore)
process_step = PythonScriptStep(script_name="process.py",
arguments=["--data_for_train", process_step_output],
outputs=[process_step_output],
compute_target=aml_compute,
source_directory=process_directory)
train_step = PythonScriptStep(script_name="train.py",
arguments=["--data_for_train", process_step_output],
inputs=[process_step_output],
compute_target=aml_compute,
source_directory=train_directory)
pipeline = Pipeline(workspace=ws, steps=[process_step, train_step])
這會建立具有兩個步驟的管線。 程式步驟會先執行,然後在完成之後執行定型步驟。 Azure ML 會將程式步驟所產生的輸出提供給定型步驟。
如需使用 PipelineData 建構管線的進一步範例,請參閱此頁面: https://aka.ms/pl-data-dep
針對支援的計算類型,PipelineData 也可以用來指定執行將如何產生及取用資料。 支援的方法有兩種:
掛接 (預設) :輸入或輸出資料會掛接至計算節點上的本機儲存體,並設定環境變數以指向此資料的路徑, ($AZUREML_DATAREFERENCE_name) 。 為了方便起見,您可以將 PipelineData 物件當作其中一個引數傳遞至腳本,例如使用
arguments
的 PythonScriptStep 參數,而 物件會解析為數據的路徑。 針對輸出,您的計算腳本應該在此輸出路徑建立檔案或目錄。 若要查看當您以引數的形式傳入 Pipeline 物件時所使用的環境變數值,請使用 get_env_variable_name 方法。上傳:指定
output_path_on_compute
對應至腳本將產生的檔案或目錄名稱。 在此案例中不會使用 (環境變數。)
方法
as_dataset |
將中繼輸出升階至資料集。 執行步驟之後,將會存在此資料集。 請注意,輸出必須升階為資料集,才能將後續輸入當做資料集使用。 如果as_dataset未在輸出上呼叫,但只會在輸入上呼叫,則會是 noop,而且不會以資料集的形式取用輸入。 下列程式碼範例顯示正確的as_dataset用法:
|
as_download |
使用 PipelineData 作為下載。 |
as_input |
建立 InputPortBinding 並指定輸入名稱 (,但使用預設模式) 。 |
as_mount |
使用 PipelineData 作為掛接。 |
create_input_binding |
建立輸入系結。 |
get_env_variable_name |
傳回這個 PipelineData 的環境變數名稱。 |
as_dataset
將中繼輸出升階至資料集。
執行步驟之後,將會存在此資料集。 請注意,輸出必須升階為資料集,才能將後續輸入當做資料集使用。 如果as_dataset未在輸出上呼叫,但只會在輸入上呼叫,則會是 noop,而且不會以資料集的形式取用輸入。 下列程式碼範例顯示正確的as_dataset用法:
# as_dataset is called here and is passed to both the output and input of the next step.
pipeline_data = PipelineData('output').as_dataset()
step1 = PythonScriptStep(..., outputs=[pipeline_data])
step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_dataset()
傳回
中繼輸出做為資料集。
傳回類型
as_download
使用 PipelineData 作為下載。
as_download(input_name=None, path_on_compute=None, overwrite=None)
參數
傳回
InputPortBinding,此 PipelineData 做為來源。
傳回類型
as_input
建立 InputPortBinding 並指定輸入名稱 (,但使用預設模式) 。
as_input(input_name)
參數
傳回
InputPortBinding,此 PipelineData 做為來源。
傳回類型
as_mount
使用 PipelineData 作為掛接。
as_mount(input_name=None)
參數
傳回
InputPortBinding,此 PipelineData 做為來源。
傳回類型
create_input_binding
建立輸入系結。
create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)
參數
傳回
InputPortBinding,此 PipelineData 做為來源。
傳回類型
get_env_variable_name
屬性
data_type
datastore
name
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應