在步骤之间传递数据 - 亚马逊 SageMaker AI

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

在步骤之间传递数据

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

当您需要从管道步骤的输出中获取信息时,可以使用 JsonGetJsonGet 可以帮助您从 Amazon S3 或属性文件中提取信息。下文将介绍使用 JsonGet 提取步进输出的方法。

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

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

# 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。