Share via


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.object
PipelineData

建構函式

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)

參數

名稱 Description
name
必要
str

PipelineData 物件的名稱,只能包含字母、數位和底線。

PipelineData 名稱可用來識別步驟的輸出。 管線執行完成後,您可以使用步驟名稱搭配輸出名稱來存取特定輸出。 名稱在管線的單一步驟內應該是唯一的。

datastore

PipelineData 所在的數據存放區。 如果未指定,則會使用預設資料存放區。

預設值: None
output_name
str

如果使用 None 名稱,則輸出的名稱。 只能包含字母、數位和底線。

預設值: None
output_mode
str

指定產生步驟會使用「上傳」或「掛接」方法來存取數據。

預設值: mount
output_path_on_compute
str

針對 output_mode = “upload”,此參數代表模組寫入輸出的路徑。

預設值: None
output_overwrite

針對 output_mode = “upload”,此參數會指定是否要覆寫現有的數據。

預設值: None
data_type
str

選擇性。 數據類型可用來指定輸出的預期類型,並詳細說明取用步驟應該如何使用數據。 它可以是任何使用者定義的字串。

預設值: None
is_directory

指定資料是目錄或單一檔案。 這隻會用來判斷未提供 參數時 data_type ,Azure ML 後端所使用的數據類型。 預設值是 False。

預設值: None
pipeline_output_name

如果提供此輸出,可以使用 PipelineRun.get_pipeline_output()。 管線輸出名稱在管線中必須是唯一的。

預設值: None
training_output

定義定型結果的輸出。 這僅適用於會產生不同種類的輸出的特定定型,例如計量和模型。 例如, AutoMLStep 產生計量和模型。 您也可以定義用來取得最佳模型的特定定型反覆專案或計量。 針對 HyperDriveStep,您也可以定義要包含在輸出中的特定模型檔案。

預設值: None
name
必要
str

PipelineData 物件的名稱,只能包含字母、數位和底線。

PipelineData 名稱可用來識別步驟的輸出。 管線執行完成後,您可以使用步驟名稱搭配輸出名稱來存取特定輸出。 名稱在管線的單一步驟內應該是唯一的。

datastore
必要

PipelineData 所在的數據存放區。 如果未指定,則會使用預設資料存放區。

output_name
必要
str

如果使用 None 名稱,則輸出的名稱。 只能包含字母、數位和底線。

output_mode
必要
str

指定產生步驟會使用「上傳」或「掛接」方法來存取數據。

output_path_on_compute
必要
str

針對 output_mode = “upload”,此參數代表模組寫入輸出的路徑。

output_overwrite
必要

針對 output_mode = “upload”,此參數會指定是否要覆寫現有的數據。

data_type
必要
str

選擇性。 數據類型可用來指定輸出的預期類型,並詳細說明取用步驟應該如何使用數據。 它可以是任何使用者定義的字串。

is_directory
必要

指定資料是目錄或單一檔案。 這隻會用來判斷未提供 參數時 data_type ,Azure ML 後端所使用的數據類型。 預設值是 False。

pipeline_output_name
必要
str

如果提供此輸出,可以使用 PipelineRun.get_pipeline_output()。 管線輸出名稱在管線中必須是唯一的。

training_output
必要

定義定型結果的輸出。 這僅適用於會產生不同種類的輸出的特定定型,例如計量和模型。 例如, 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 物件當做其中一個自變數傳遞至腳本,例如使用 argumentsPythonScriptStep參數,而 物件會解析為數據的路徑。 針對輸出,您的計算文本應該在此輸出路徑建立檔案或目錄。 若要查看當您傳入 Pipeline 物件做為自變數時所使用的環境變數值,請使用 get_env_variable_name 方法。

  • 上傳:指定 output_path_on_compute 對應至文稿將產生的檔案或目錄名稱。 在此案例中不會使用環境變數 (。)

方法

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_download

使用 PipelineData 作為下載。

as_input

Create InputPortBinding 並指定輸入名稱 (,但使用預設模式) 。

as_mount

使用 PipelineData 作為掛接。

create_input_binding

Create 輸入系結。

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()

傳回

類型 Description

中繼輸出做為數據集。

as_download

使用 PipelineData 作為下載。

as_download(input_name=None, path_on_compute=None, overwrite=None)

參數

名稱 Description
input_name
str

使用 指定此輸入的名稱。

預設值: None
path_on_compute
str

要下載的計算路徑。

預設值: None
overwrite

使用 來指出是否要覆寫現有的數據。

預設值: None

傳回

類型 Description

InputPortBinding 使用此 PipelineData 作為來源。

as_input

Create InputPortBinding 並指定輸入名稱 (,但使用預設模式) 。

as_input(input_name)

參數

名稱 Description
input_name
必要
str

使用 指定此輸入的名稱。

傳回

類型 Description

InputPortBinding 使用此 PipelineData 作為來源。

as_mount

使用 PipelineData 作為掛接。

as_mount(input_name=None)

參數

名稱 Description
input_name
str

使用 指定此輸入的名稱。

預設值: None

傳回

類型 Description

InputPortBinding 使用此 PipelineData 作為來源。

create_input_binding

Create 輸入系結。

create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)

參數

名稱 Description
input_name
str

輸入的名稱。

預設值: None
mode
str

存取 PipelineData (“mount” 或 “download”) 的模式。

預設值: None
path_on_compute
str

針對「下載」模式,數據將位於計算上的路徑。

預設值: None
overwrite

如果是「下載」模式,是否要覆寫現有的數據。

預設值: None

傳回

類型 Description

InputPortBinding 使用此 PipelineData 作為來源。

get_env_variable_name

傳回這個 PipelineData 的環境變數名稱。

get_env_variable_name()

傳回

類型 Description
str

環境變數名稱。

屬性

data_type

將產生的數據類型。

傳回

類型 Description
str

數據類型名稱。

datastore

PipelineData 所在的數據存放區。

傳回

類型 Description

數據存放區物件。

name

PipelineData 物件的名稱。

傳回

類型 Description
str

Name: