PipelineStep 类
表示 Azure 机器学习管道中的执行步骤。
管道是通过多个管道步骤构造的,这些步骤是管道中的不同计算单元。 每个步骤都可以独立运行,并使用独立的计算资源。 每个步骤通常都有自己的命名输入、输出和参数。
PipelineStep 是一种基类,其他为常见场景设计的内置步骤类继承自该基类(如 PythonScriptStep、DataTransferStep 和 HyperDriveStep)。
有关管道和 PipelineSteps 之间关系的概述,请参阅什么是 ML 管道。
初始化 PipelineStep。
- 继承
-
builtins.objectPipelineStep
构造函数
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
获取步骤的源目录,并检查脚本是否存在。
get_source_directory(context, source_directory, script_name)
参数
名称 | 说明 |
---|---|
context
必需
|
<xref:azureml.pipeline.core._GraphContext>
图形上下文对象。 |
source_directory
必需
|
步骤的源目录。 |
script_name
必需
|
步骤的脚本名称。 |
hash_paths
必需
|
确定模块指纹时使用的哈希路径。 |
返回
类型 | 说明 |
---|---|
源目录和哈希路径。 |
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
必需
|
在此步骤之前运行的管道步骤。 |
注解
如果要在步骤 1 和步骤 2 完成后运行步骤 3,可以使用:
step3.run_after(step1)
step3.run_after(step2)