本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在步骤之间传递数据
使用 Amazon Pipelines 构建 SageMaker 管道时,您可能需要将数据从一个步骤传递到下一个步骤。例如,您可能希望将训练步骤生成的模型构件作为模型评测或部署步骤的输入。您可以使用该功能创建相互依赖的管道步骤,并构建您的 ML 工作流程。
当您需要从管道步骤的输出中获取信息时,可以使用 JsonGet
。JsonGet
可以帮助您从 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
都必须与您在处理步骤中定义的 ProcessingOutput
的 output_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