PythonScriptStep 类
创建运行 Python 脚本的 Azure ML 管道步骤。
有关使用 PythonScriptStep 的示例,请参阅笔记本 https://aka.ms/pl-get-started。
创建运行 Python 脚本的 Azure ML Pipeline 步骤。
- 继承
-
azureml.pipeline.core._python_script_step_base._PythonScriptStepBasePythonScriptStep
构造函数
PythonScriptStep(script_name, name=None, arguments=None, compute_target=None, runconfig=None, runconfig_pipeline_params=None, inputs=None, outputs=None, params=None, source_directory=None, allow_reuse=True, version=None, hash_paths=None)
参数
名称 | 说明 |
---|---|
script_name
必需
|
[必需] Python 脚本的名称,相对于 |
name
|
步骤的名称。 如果未指定,则使用 默认值: None
|
arguments
|
Python 脚本文件的命令行参数。 参数将通过 RunConfiguration 中的 默认值: None
|
compute_target
|
[必需] 要使用的计算目标。 如果未指定,将使用 runconfig 中的目标。 此参数可以指定为计算目标对象或工作区中计算目标的字符串名称。 (可选)如果计算目标在管道创建时不可用,可能需要指定一个元组 ('compute target name', 'compute target type') 以避免提取计算目标对象(AmlCompute 类型为“AmlCompute”,RemoteCompute 类型为“VirtualMachine”)。 默认值: None
|
runconfig
|
要使用的可选 RunConfiguration。 RunConfiguration 可用于指定其他运行要求,例如 conda 依赖项和 docker 映像。 如果未指定,将创建默认的 runconfig。 默认值: None
|
runconfig_pipeline_params
|
在运行时使用键值对重写 runconfig 属性,每个键值对分别具有 runconfig 属性的名称和该属性的 PipelineParameter。 支持的值:“NodeCount”、“MpiProcessCountPerNode”、“TensorflowWorkerCount”、“TensorflowParameterServerCount” 默认值: None
|
inputs
|
list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData, PipelineOutputFileDataset, PipelineOutputTabularDataset, DatasetConsumptionConfig]]
输入端口绑定的列表。 默认值: None
|
outputs
|
list[Union[PipelineData, OutputDatasetConfig, PipelineOutputFileDataset, PipelineOutputTabularDataset, OutputPortBinding]]
输出端口绑定的列表。 默认值: None
|
params
|
使用“AML_PARAMETER_”注册为环境变量的名称/值对的字典。 默认值: None
|
source_directory
|
包含 Python 脚本、conda env 和步骤中使用的其他资源的文件夹。 默认值: None
|
allow_reuse
|
指示当使用相同的设置重新运行时,该步骤是否应重用以前的结果。 默认情况下启用重用。 如果步骤内容(脚本/依赖项)以及输入和参数保持不变,则重用此步骤以前运行的输出。 重用该步骤时,不是将作业提交到计算,而是使前一运行的结果立即可供后续步骤使用。 如果使用 Azure 机器学习数据集作为输入,则重用取决于数据集的定义是否已更改,而不是基础数据是否已更改。 默认值: True
|
version
|
一个可选的版本标记,用于表示该步骤的功能更改。 默认值: None
|
hash_paths
|
已弃用:不再需要。 检查对步骤内容所做的更改时要哈希处理的路径列表。 如果未检测到更改,则管道将重用前一运行中的步骤内容。 默认情况下,将哈希处理 默认值: None
|
script_name
必需
|
[必需] Python 脚本的名称,相对于 |
name
必需
|
步骤的名称。 如果未指定,则使用 |
arguments
必需
|
[str]
Python 脚本文件的命令行参数。 参数将通过 RunConfiguration 中的 |
compute_target
必需
|
[必需] 要使用的计算目标。 如果未指定,将使用 runconfig 中的目标。 此参数可以指定为计算目标对象或工作区中计算目标的字符串名称。 (可选)如果计算目标在管道创建时不可用,可能需要指定一个元组 ('compute target name', 'compute target type') 以避免提取计算目标对象(AmlCompute 类型为“AmlCompute”,RemoteCompute 类型为“VirtualMachine”)。 |
runconfig
必需
|
要使用的可选 RunConfiguration。 RunConfiguration 可用于指定运行的其他要求,例如 conda 依赖项和 docker 映像。 如果未指定,将创建默认的 runconfig。 |
runconfig_pipeline_params
必需
|
在运行时使用键值对重写 runconfig 属性,每个键值对分别具有 runconfig 属性的名称和该属性的 PipelineParameter。 支持的值:“NodeCount”、“MpiProcessCountPerNode”、“TensorflowWorkerCount”、“TensorflowParameterServerCount” |
inputs
必需
|
list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData, PipelineOutputFileDataset, PipelineOutputTabularDataset, DatasetConsumptionConfig]]
输入端口绑定的列表。 |
outputs
必需
|
list[Union[PipelineData, OutputDatasetConfig, PipelineOutputFileDataset, PipelineOutputTabularDataset, OutputPortBinding]]
输出端口绑定的列表。 |
params
必需
|
<xref:<xref:{str: str}>>
名称/值对的字典。 注册为具有“>>AML_PARAMETER_<<”的环境变量。 |
source_directory
必需
|
包含 Python 脚本、conda env 和步骤中使用的其他资源的文件夹。 |
allow_reuse
必需
|
指示当使用相同的设置重新运行时,该步骤是否应重用以前的结果。 默认情况下启用重用。 如果步骤内容(脚本/依赖项)以及输入和参数保持不变,则重用此步骤以前运行的输出。 重用该步骤时,不是将作业提交到计算,而是使前一运行的结果立即可供后续步骤使用。 如果使用 Azure 机器学习数据集作为输入,则重用取决于数据集的定义是否已更改,而不是基础数据是否已更改。 |
version
必需
|
一个可选的版本标记,用于表示该步骤的功能更改。 |
hash_paths
必需
|
已弃用:不再需要。 检查对步骤内容所做的更改时要哈希处理的路径列表。 如果未检测到更改,则管道将重用前一运行中的步骤内容。 默认情况下,将哈希处理 |
注解
PythonScriptStep 是一个基本的内置步骤,用于在计算目标上运行 Python 脚本。 它采用脚本名称和其他可选参数,例如脚本、计算目标、输入和输出的自变量。 如果未指定计算目标,则使用工作区的默认计算目标。 还可以使用 RunConfiguration 指定 PythonScriptStep 的要求,例如 conda 依赖项和 docker 映像。
使用 PythonScriptStep 的最佳做法是为脚本和与该步骤关联的任何相关文件使用单独的文件夹,并使用 source_directory
参数指定该文件夹。
遵循此最佳做法有两个好处。 首先,它有助于减少为该步骤创建的快照的大小,因为只有该步骤需要进行快照操作。 其次,如果 source_directory
没有任何更改会触发快照的重新上载,则可以重复使用前一次运行的步骤输出。
以下代码示例演示如何在机器学习训练方案中使用 PythonScriptStep。 有关此示例的更多详细信息,请参阅 https://aka.ms/pl-first-pipeline。
from azureml.pipeline.steps import PythonScriptStep
trainStep = PythonScriptStep(
script_name="train.py",
arguments=["--input", blob_input_data, "--output", output_data1],
inputs=[blob_input_data],
outputs=[output_data1],
compute_target=compute_target,
source_directory=project_folder
)
PythonScriptSteps 支持多种输入和输出类型。 这包括适用于输入的 DatasetConsumptionConfig,以及适用于输入和输出的 OutputDatasetConfig、PipelineOutputAbstractDataset 和 PipelineData。
下面是使用 Dataset 作为步骤输入和输出的示例:
from azureml.core import Dataset
from azureml.pipeline.steps import PythonScriptStep
from azureml.pipeline.core import Pipeline, PipelineData
# get input dataset
input_ds = Dataset.get_by_name(workspace, 'weather_ds')
# register pipeline output as dataset
output_ds = PipelineData('prepared_weather_ds', datastore=datastore).as_dataset()
output_ds = output_ds.register(name='prepared_weather_ds', create_new_version=True)
# configure pipeline step to use dataset as the input and output
prep_step = PythonScriptStep(script_name="prepare.py",
inputs=[input_ds.as_named_input('weather_ds')],
outputs=[output_ds],
compute_target=compute_target,
source_directory=project_folder)
有关使用其他输入/输出类型的示例,请参考相应的文档页。
方法
create_node |
为 PythonScriptStep 创建节点并将其添加到指定的图。 此方法不能直接使用。 通过此步骤实例化管道时,Azure ML 会自动通过此方法传递所需的参数,以便可以将步骤添加到表示工作流的管道图中。 |
create_node
为 PythonScriptStep 创建节点并将其添加到指定的图。
此方法不能直接使用。 通过此步骤实例化管道时,Azure ML 会自动通过此方法传递所需的参数,以便可以将步骤添加到表示工作流的管道图中。
create_node(graph, default_datastore, context)
参数
名称 | 说明 |
---|---|
graph
必需
|
要将节点添加到的图对象。 |
default_datastore
必需
|
默认数据存储。 |
context
必需
|
<xref:azureml.pipeline.core._GraphContext>
图形上下文。 |
返回
类型 | 说明 |
---|---|
创建的节点。 |