PipelineStep 类
表示 Azure 机器学习管道中的执行步骤。
管道是从多个管道步骤构造的,这些步骤是管道中的不同计算单元。 每个步骤都可以独立运行并使用独立的计算资源。 每个步骤通常都有自己的命名输入、输出和参数。
PipelineStep 类是基类,其他专为常见方案设计的内置步骤类继承,例如 PythonScriptStep, DataTransferStep和 HyperDriveStep。
有关 Pipelines 和 PipelineSteps 关联方式的概述,请参阅 什么是 ML 管道。
初始化 PipelineStep。
构造函数
PipelineStep(name, inputs, outputs, arguments=None, fix_port_name_collisions=False, resource_inputs=None)
参数
名称 | 说明 |
---|---|
name
必需
|
管道步骤的名称。 |
inputs
必需
|
步骤输入的列表。 |
outputs
必需
|
步骤输出的列表。 |
arguments
|
要传递给步骤中使用的脚本的参数的可选列表。 默认值: None
|
fix_port_name_collisions
|
指定是否修复名称冲突。 如果 True 和输入和输出具有相同的名称,则输入的前缀为“INPUT”。 默认值为 False。 默认值: False
|
resource_inputs
|
要用作资源的输入的可选列表。 资源将下载到脚本文件夹,并提供一种方法来更改运行时脚本的行为。 默认值: None
|
name
必需
|
管道步骤的名称。 |
inputs
必需
|
步骤输入的列表。 |
outputs
必需
|
步骤输出的列表。 |
arguments
必需
|
要传递给步骤中使用的脚本的参数的可选列表。 |
fix_port_name_collisions
必需
|
指定是否修复名称冲突。 如果 True 和输入和输出具有相同的名称,则输入的前缀为“INPUT”。 默认值为 False。 |
resource_inputs
必需
|
要用作资源的输入的可选列表。 资源将下载到脚本文件夹,并提供一种方法来更改运行时脚本的行为。 |
注解
PipelineStep 是一个执行单元,通常需要执行目标(计算目标)、使用可选脚本参数和输入执行的脚本,并且可以生成输出。 该步骤还可以执行许多特定于该步骤的其他参数。
管道步骤可以一起配置为构造一个 Pipeline表示可共享和可重用的 Azure 机器学习工作流的管道步骤。 如果步骤内容(脚本/依赖项)以及输入和参数保持不变,则可以将管道的每个步骤配置为允许重用其以前的运行结果。 重用步骤时,将立即向任何后续步骤提供上一次运行的结果,而不是将作业提交到计算。
Azure 机器学习管道为常见方案提供内置步骤。 有关示例,请参阅 steps 包和 AutoMLStep 类。 有关基于预生成步骤构造管道的概述,请参阅 https://aka.ms/pl-first-pipeline。
从 PipelineStep 派生的预生成步骤是一个管道中使用的步骤。 如果使用机器学习工作流调用创建可跨不同管道进行版本控制和使用的步骤,请使用该 Module 类。
使用管道步骤、输入/输出数据和步骤重用时,请记住以下几点。
建议对单独的步骤使用单独的source_directory位置。 如果管道步骤中的所有脚本都位于单个目录中,则每次对一个脚本进行更改时,该目录的哈希都会更改,迫使所有步骤重新运行。 有关使用不同的步骤使用单独的目录的示例,请参阅 https://aka.ms/pl-get-started。
为每个步骤维护脚本和依赖文件的独立文件夹有助于减小为每个步骤创建的快照的大小,因为仅快照特定文件夹。 由于步骤source_directory中的任何文件中的更改都会触发快照的重新上传,因此每个步骤都会维护单独的文件夹,因此有助于过度重复使用管道中的步骤,因为如果步骤的source_directory没有更改,则会重复使用该步骤的上一次运行。
如果在步骤中使用的数据位于数据存储中,并且allow_reuse为 True,则不会检测到对数据更改所做的更改。 如果数据作为快照的一部分上传(在步骤的source_directory下),但不建议这样做,则哈希将更改,并触发重新运行。
方法
create_input_output_bindings |
从步骤输入和输出创建输入和输出绑定。 |
create_module_def |
创建描述步骤的模块定义对象。 |
create_node |
根据此步骤为管道图创建节点。 |
get_source_directory |
获取步骤的源目录,并检查脚本是否存在。 |
resolve_input_arguments |
将输入和输出与参数匹配以生成参数字符串。 |
run_after |
在指定步骤之后运行此步骤。 |
validate_arguments |
验证参数中提供的步骤输入和输出是否在输入和输出列表中。 |
create_input_output_bindings
从步骤输入和输出创建输入和输出绑定。
create_input_output_bindings(inputs, outputs, default_datastore, resource_inputs=None)
参数
名称 | 说明 |
---|---|
inputs
必需
|
步骤输入的列表。 |
outputs
必需
|
步骤输出的列表。 |
default_datastore
必需
|
默认数据存储。 |
resource_inputs
|
要用作资源的输入列表。 资源将下载到脚本文件夹,并提供一种方法来更改运行时脚本的行为。 默认值: None
|
返回
类型 | 说明 |
---|---|
输入绑定和输出绑定的元组。 |
create_module_def
创建描述步骤的模块定义对象。
create_module_def(execution_type, input_bindings, output_bindings, param_defs=None, create_sequencing_ports=True, allow_reuse=True, version=None, module_type=None, arguments=None, runconfig=None, cloud_settings=None)
参数
名称 | 说明 |
---|---|
execution_type
必需
|
模块的执行类型。 |
input_bindings
必需
|
步骤输入绑定。 |
output_bindings
必需
|
步骤输出绑定。 |
param_defs
|
步骤参数定义。 默认值: None
|
create_sequencing_ports
|
指定是否为模块创建序列化端口。 默认值: True
|
allow_reuse
|
指定模块是否可用于将来的管道中重复使用。 默认值: True
|
version
|
模块的版本。 默认值: None
|
module_type
|
要创建的模块创建服务的模块类型。 目前仅支持两种类型:“None”和“BatchInferencing”。
默认值: None
|
arguments
|
调用此模块时要使用的批注参数列表 默认值: None
|
runconfig
|
将用于python_script_step的 Runconfig 默认值: None
|
cloud_settings
|
<xref:azureml.pipeline.core._restclients.aeva.models.CloudSettings>
将用于云的设置 默认值: None
|
返回
类型 | 说明 |
---|---|
模块定义对象。 |
create_node
根据此步骤为管道图创建节点。
abstract create_node(graph, default_datastore, context)
参数
名称 | 说明 |
---|---|
graph
必需
|
要向其添加节点的图形。 |
default_datastore
必需
|
用于此步骤的默认数据存储。 |
context
必需
|
<xref:azureml.pipeline.core._GraphContext>
图形上下文对象。 |
返回
类型 | 说明 |
---|---|
创建的节点。 |
get_source_directory
resolve_input_arguments
将输入和输出与参数匹配以生成参数字符串。
static resolve_input_arguments(arguments, inputs, outputs, params)
参数
名称 | 说明 |
---|---|
arguments
必需
|
步骤参数的列表。 |
inputs
必需
|
步骤输入的列表。 |
outputs
必需
|
步骤输出的列表。 |
params
必需
|
步骤参数列表。 |
返回
类型 | 说明 |
---|---|
返回两个项的元组。 第一个是已解析参数的项的平面列表。 第二个是结构化参数列表(_InputArgument、_OutputArgument、_ParameterArgument和_StringArgument) |
run_after
在指定步骤之后运行此步骤。
run_after(step)
参数
名称 | 说明 |
---|---|
step
必需
|
在此步骤之前运行的管道步骤。 |
注解
如果要运行步骤(例如,步骤 3)步骤 1 和步骤 2 完成后,可以使用:
step3.run_after(step1)
step3.run_after(step2)