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)
參數
名稱 | Description |
---|---|
name
必要
|
PipelineData 物件的名稱,只能包含字母、數位和底線。 PipelineData 名稱可用來識別步驟的輸出。 管線執行完成後,您可以使用步驟名稱搭配輸出名稱來存取特定輸出。 名稱在管線的單一步驟內應該是唯一的。 |
datastore
|
PipelineData 所在的數據存放區。 如果未指定,則會使用預設資料存放區。 預設值: None
|
output_name
|
如果使用 None 名稱,則輸出的名稱。 只能包含字母、數位和底線。 預設值: None
|
output_mode
|
指定產生步驟會使用「上傳」或「掛接」方法來存取數據。 預設值: mount
|
output_path_on_compute
|
針對 預設值: None
|
output_overwrite
|
針對 預設值: None
|
data_type
|
選擇性。 數據類型可用來指定輸出的預期類型,並詳細說明取用步驟應該如何使用數據。 它可以是任何使用者定義的字串。 預設值: None
|
is_directory
|
指定資料是目錄或單一檔案。 這隻會用來判斷未提供 參數時 預設值: None
|
pipeline_output_name
|
如果提供此輸出,可以使用 預設值: None
|
training_output
|
定義定型結果的輸出。 這僅適用於會產生不同種類的輸出的特定定型,例如計量和模型。 例如, AutoMLStep 產生計量和模型。 您也可以定義用來取得最佳模型的特定定型反覆專案或計量。 針對 HyperDriveStep,您也可以定義要包含在輸出中的特定模型檔案。 預設值: None
|
name
必要
|
PipelineData 物件的名稱,只能包含字母、數位和底線。 PipelineData 名稱可用來識別步驟的輸出。 管線執行完成後,您可以使用步驟名稱搭配輸出名稱來存取特定輸出。 名稱在管線的單一步驟內應該是唯一的。 |
datastore
必要
|
PipelineData 所在的數據存放區。 如果未指定,則會使用預設資料存放區。 |
output_name
必要
|
如果使用 None 名稱,則輸出的名稱。 只能包含字母、數位和底線。 |
output_mode
必要
|
指定產生步驟會使用「上傳」或「掛接」方法來存取數據。 |
output_path_on_compute
必要
|
針對 |
output_overwrite
必要
|
針對 |
data_type
必要
|
選擇性。 數據類型可用來指定輸出的預期類型,並詳細說明取用步驟應該如何使用數據。 它可以是任何使用者定義的字串。 |
is_directory
必要
|
指定資料是目錄或單一檔案。 這隻會用來判斷未提供 參數時 |
pipeline_output_name
必要
|
如果提供此輸出,可以使用 |
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 物件當做其中一個自變數傳遞至腳本,例如使用
arguments
的 PythonScriptStep參數,而 物件會解析為數據的路徑。 針對輸出,您的計算文本應該在此輸出路徑建立檔案或目錄。 若要查看當您傳入 Pipeline 物件做為自變數時所使用的環境變數值,請使用 get_env_variable_name 方法。上傳:指定
output_path_on_compute
對應至文稿將產生的檔案或目錄名稱。 在此案例中不會使用環境變數 (。)
方法
as_dataset |
將中繼輸出升階為數據集。 執行步驟之後,就會存在此數據集。 請注意,輸出必須升階為數據集,才能將後續輸入當做數據集取用。 如果未在輸出上呼叫as_dataset,但只會在輸入上呼叫,則它將會是 noop,而且不會以數據集的形式取用輸入。 下列程式代碼範例顯示正確使用as_dataset:
|
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
|
使用 指定此輸入的名稱。 預設值: None
|
path_on_compute
|
要下載的計算路徑。 預設值: None
|
overwrite
|
使用 來指出是否要覆寫現有的數據。 預設值: None
|
傳回
類型 | Description |
---|---|
InputPortBinding 使用此 PipelineData 作為來源。 |
as_input
Create InputPortBinding 並指定輸入名稱 (,但使用預設模式) 。
as_input(input_name)
參數
名稱 | Description |
---|---|
input_name
必要
|
使用 指定此輸入的名稱。 |
傳回
類型 | Description |
---|---|
InputPortBinding 使用此 PipelineData 作為來源。 |
as_mount
使用 PipelineData 作為掛接。
as_mount(input_name=None)
參數
名稱 | Description |
---|---|
input_name
|
使用 指定此輸入的名稱。 預設值: 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
|
輸入的名稱。 預設值: None
|
mode
|
存取 PipelineData (“mount” 或 “download”) 的模式。 預設值: None
|
path_on_compute
|
針對「下載」模式,數據將位於計算上的路徑。 預設值: None
|
overwrite
|
如果是「下載」模式,是否要覆寫現有的數據。 預設值: None
|
傳回
類型 | Description |
---|---|
InputPortBinding 使用此 PipelineData 作為來源。 |
get_env_variable_name
屬性
data_type
datastore
PipelineData 所在的數據存放區。
傳回
類型 | Description |
---|---|
數據存放區物件。 |