PipelineData 类

表示 Azure 机器学习管道中的中间数据。

管道中使用的数据可以通过一个步骤生成,并在另一个步骤中通过提供 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)

参数

name
str
必需

PipelineData 对象的名称,只能包含字母、数字和下划线。

PipelineData 名称用于标识步骤的输出。 管道运行完成后,可以将步骤名称与输出名称搭配使用来访问特定的输出。 名称在管道中的单个步骤内应该是唯一的。

datastore
AbstractAzureStorageDatastoreAzureDataLakeDatastore
默认值: None

PipelineData 将驻留的数据存储。 如果未指定,将使用默认数据存储。

output_name
str
默认值: None

输出的名称(如果未使用任何名称)。 只能包含字母、数字和下划线。

output_mode
str
默认值: mount

指定生成步骤是使用“上传”还是“装载”方法来访问数据。

output_path_on_compute
str
默认值: None

如果 output_mode =“上传”,此参数表示模块将输出写入到的路径。

output_overwrite
bool
默认值: None

如果 output_mode =“上传”,此参数指定是否覆盖现有数据。

data_type
str
默认值: None

可选。 数据类型可用于指定输出的预期类型,并详细说明使用步骤使用数据的方式。 可以是任何用户定义的字符串。

is_directory
bool
默认值: None

指定数据是目录还是单个文件。 这仅在未提供 data_type 参数时用于确定 Azure 机器学习后端使用的数据类型。 默认值为 False。

pipeline_output_name
默认值: None

如果提供了该参数,此输出将通过使用 PipelineRun.get_pipeline_output() 来提供。 管道输出名称在管道中必须是唯一的。

training_output
TrainingOutput
默认值: None

定义训练结果的输出。 只有特定的训练需要此值,这会导致不同种类的输出,例如指标和模型。 例如,AutoMLStep 将生成指标和模型。 还可以定义用于获取最佳模型的特定训练迭代或指标。 对于 HyperDriveStep,你还可以定义要包括在输出中的特定模型文件。

name
str
必需

PipelineData 对象的名称,只能包含字母、数字和下划线。

PipelineData 名称用于标识步骤的输出。 管道运行完成后,可以将步骤名称与输出名称搭配使用来访问特定的输出。 名称在管道中的单个步骤内应该是唯一的。

datastore
AbstractAzureStorageDatastoreAzureDataLakeDatastore
必需

PipelineData 将驻留的数据存储。 如果未指定,将使用默认数据存储。

output_name
str
必需

输出的名称(如果未使用任何名称)。 只能包含字母、数字和下划线。

output_mode
str
必需

指定生成步骤是使用“上传”还是“装载”方法来访问数据。

output_path_on_compute
str
必需

如果 output_mode =“上传”,此参数表示模块将输出写入到的路径。

output_overwrite
bool
必需

如果 output_mode =“上传”,此参数指定是否覆盖现有数据。

data_type
str
必需

可选。 数据类型可用于指定输出的预期类型,并详细说明使用步骤使用数据的方式。 可以是任何用户定义的字符串。

is_directory
bool
必需

指定数据是目录还是单个文件。 这仅在未提供 data_type 参数时用于确定 Azure 机器学习后端使用的数据类型。 默认值为 False。

pipeline_output_name
str
必需

如果提供了该参数,此输出将通过使用 PipelineRun.get_pipeline_output() 来提供。 管道输出名称在管道中必须是唯一的。

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 自变量提供给脚本的位置。

构造管道来描述步骤依赖项时,也要用到 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 机器学习会将进程步骤生成的输出提供给训练步骤。

有关使用 PipelineData 构造管道的更多示例,请参阅此页:https://aka.ms/pl-data-dep

对于支持的计算类型,还可以使用 PipelineData 来指定运行将生成和使用数据的方式。 有两个支持的方法:

  • 装载(默认):输入或输出数据装载到计算节点上的本地存储,并且环境变量设置为指向此数据的路径 ($AZUREML_DATAREFERENCE_name)。 为方便起见,可以将 PipelineData 对象作为脚本的其中一个参数传入(例如,使用 PythonScriptSteparguments 参数),该对象将解析为数据的路径。 对于输出,计算脚本应在此输出路径中创建文件或目录。 若要查看将管道对象作为参数传入时所使用的环境变量的值,请使用 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

创建 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)

参数

input_name
str
默认值: None

用于指定此输入的名称。

path_on_compute
str
默认值: None

要下载到的计算上的路径。

overwrite
bool
默认值: None

用于指示是否覆盖现有数据。

返回

以此 PipelineData 作为源的 InputPortBinding。

返回类型

as_input

创建 InputPortBinding 并指定输入名称(但使用默认模式)。

as_input(input_name)

参数

input_name
str
必需

用于指定此输入的名称。

返回

以此 PipelineData 作为源的 InputPortBinding。

返回类型

as_mount

将 PipelineData 作为装载使用。

as_mount(input_name=None)

参数

input_name
str
默认值: None

用于指定此输入的名称。

返回

以此 PipelineData 作为源的 InputPortBinding。

返回类型

create_input_binding

创建输入绑定。

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

参数

input_name
str
默认值: None

输入的名称。

mode
str
默认值: None

用于访问 PipelineData 的模式(“装载”或“下载”)。

path_on_compute
str
默认值: None

对于“下载”模式,数据将驻留的计算的路径。

overwrite
bool
默认值: None

对于“下载”模式,是否覆盖现有数据。

返回

以此 PipelineData 作为源的 InputPortBinding。

返回类型

get_env_variable_name

为此 PipelineData 返回环境变量的名称。

get_env_variable_name()

返回

环境变量名称。

返回类型

str

属性

data_type

将生成的数据类型。

返回

数据类型名称。

返回类型

str

datastore

PipelineData 将驻留的数据存储。

返回

数据存储对象。

返回类型

name

PipelineData 对象的名称。

返回

名称:

返回类型

str