在步骤之间传递数据 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在步骤之间传递数据

使用 Amazon Pipelines 构建 SageMaker 管道时,您可能需要将数据从一个步骤传递到下一个步骤。例如,您可能希望使用训练步骤生成的模型构件作为模型评估或部署步骤的输入。您可以使用此功能来创建相互依赖的工作流步骤并构建您的机器学习工作流程。

当需要从工作流工序的输出中检索信息时,可以使用JsonGetJsonGet帮助您从 Amazon S3 或属性文件中提取信息。以下各节说明了可用于提取步骤输出的方法JsonGet

使用 Amazon S3 在步骤之间传递数据

您可以JsonGet在 a ConditionStep 中使用直接从 Amazon S3 获取JSON输出。Amazon S3 URI 可以是包含原始字符串、管道运行变量或管道参数的Std:Join函数。以下示例显示了如何在 a JsonGet 中使用ConditionStep

# Example json file in s3 bucket generated by a processing_step { "Output": [5, 10] } cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name="<step-name>", s3_uri="<s3-path-to-json>", json_path="Output[1]" ), right=6.0 )

如果您在条件步骤中JsonGet使用 Amazon S3 路径,则必须在条件步骤和生成JSON输出的步骤之间明确添加依赖关系。在以下示例中,创建条件步骤时依赖于处理步骤:

cond_step = ConditionStep( name="<step-name>", conditions=[cond_lte], if_steps=[fail_step], else_steps=[register_model_step], depends_on=[processing_step], )

使用属性文件在步骤之间传递数据

使用属性文件存储处理步骤输出中的信息。这在分析处理步骤的结果以决定如何执行条件步骤时特别有用。该JsonGet函数处理属性文件,并允许您使用 JsonPath 符号来查询该属性JSON文件。有关 JsonPath 符号的更多信息,请参阅 JsonPath repo

要存储属性文件以备日后使用,必须先创建一个具有以下格式的 PropertyFile 实例。path参数是保存属性JSON文件的文件名。任何 output_name 都必须与您在处理步骤中定义的 ProcessingOutputoutput_name 相匹配。这使属性文件能够捕获步骤中的 ProcessingOutput

from sagemaker.workflow.properties import PropertyFile <property_file_instance> = PropertyFile( name="<property_file_name>", output_name="<processingoutput_output_name>", path="<path_to_json_file>" )

创建ProcessingStep实例时,添加property_files参数以列出 Amazon SageMaker Pipelines 服务必须索引的所有参数文件。这将保存属性文件以备日后使用。

property_files=[<property_file_instance>]

要在条件步骤中使用您的属性文件,请将添加到传递给条件步骤的条件中,如以下示例所示,使用json_path参数在JSON文件中查询所需属性。property_file

cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=step_eval.name, property_file=<property_file_instance>, json_path="mse" ), right=6.0 )

有关更深入的示例,请参阅 Amaz SageMaker on Python 中的属性文件SDK。