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。

构造函数

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

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

默认值: None
output_name
str

如果使用了 None 名称,则输出的名称。 只能包含字母、数字和下划线。

默认值: None
output_mode
str

指定生成步骤是使用“upload”还是“mount”方法来访问数据。

默认值: 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

指定生成步骤是使用“upload”还是“mount”方法来访问数据。

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 对象作为参数之一传递给脚本,例如使用 arguments 参数 PythonScriptStep,该对象将解析为数据的路径。 对于输出,计算脚本应在此输出路径上创建文件或目录。 若要查看将 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

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

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

默认值: 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

访问 PipelineData(“mount”或“download”)的模式。

默认值: None
path_on_compute
str

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

默认值: None
overwrite

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

默认值: None

返回

类型 说明

将此 PipelineData 用作源的 InputPortBinding。

get_env_variable_name

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

get_env_variable_name()

返回

类型 说明
str

环境变量名称。

属性

data_type

将生成的数据类型。

返回

类型 说明
str

数据类型名称。

datastore

PipelineData 将驻留在的数据存储。

返回

类型 说明

数据存储对象。

name

PipelineData 对象的名称。

返回

类型 说明
str

姓名。