管道步骤 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

管道步骤

SageMaker Pipelines 由步骤 组成。这些步骤定义管道执行的操作,以及使用属性的步骤之间的关系。

Amazon SageMaker Model Building Pipelines 支持以下步骤类型:

  • 处理

  • 培训

  • Condition

  • BatchTransform

  • RegisterModel

  • CreateModel

下面介绍了每个步骤的要求,并提供了该步骤的示例实施。这些不是功能化的实现,因为它们不提供所需的资源和输入。有关实施这些步骤的教程,请参阅创建和管理SageMaker Pipelines

处理

您可以使用处理步骤创建处理作业以进行数据处理。有关处理作业的更多信息,请参阅处理数据和评估模型

处理步骤需要处理器、定义处理代码的 Python 脚本、要处理的输出和作业参数。以下示例演示如何创建 ProcessingStep 定义。  有关处理步骤要求的更多信息,请参阅 sagemaker.workflow.steps.ProcessingStep 文档。

from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep step_process = ProcessingStep( name="AbaloneProcess", processor=sklearn_processor, inputs=[ ProcessingInput(source=input_data, destination="/opt/ml/processing/input"), ], outputs=[ ProcessingOutput(output_name="train", source="/opt/ml/processing/train"), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"), ProcessingOutput(output_name="test", source="/opt/ml/processing/test") ], code="abalone/preprocessing.py" )

培训

您可以使用训练步骤创建训练作业来训练模型。有关训练作业的更多信息,请参阅使用 Amazon SageMaker 训练模型。

训练步骤需要评估程序以及训练和验证数据输入。以下示例演示如何创建TrainingStep 定义。  有关训练步骤要求的更多信息,请参阅 sagemaker.workflow.steps.TrainingStep 文档。

from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TrainingStep step_train = TrainingStep( name="TrainAbaloneModel", estimator=xgb_train, inputs={ "train": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train" ].S3Output.S3Uri, content_type="text/csv" ), "validation": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "validation" ].S3Output.S3Uri, content_type="text/csv" ) } )

Condition

您可以使用条件步骤评估步骤属性的条件,以评估接下来应在管道中采取哪些操作。

条件步骤需要条件列表、条件计算为 时要执行的步骤列表true以及条件计算为 时要执行的步骤列表false。以下示例演示如何创建Condition步骤定义。  有关步骤要求的更多信息Condition,请参阅 sagemaker.workflow.condition_step.ConditionStep 文档。 

注意

SageMaker Pipelines 不支持使用嵌套条件步骤。您不能将条件步骤作为另一个条件步骤的输入传递。

from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo from sagemaker.workflow.condition_step import ( ConditionStep, JsonGet ) step_cond = ConditionStep( name="AbaloneMSECond", conditions=[cond_lte], if_steps=[step_register, step_create_model, step_transform], else_steps=[] )

转换

您可以使用批量转换的转换步骤在整个数据集上运行推理。有关批量转换的更多信息,请参阅使用推理管道运行批量转换

转换步骤需要转换器和要在其上运行批量转换的数据。以下示例演示如何创建Transform步骤定义。  有关步骤要求的更多信息Transform,请参阅 sagemaker.workflow.steps.TransformStep。 

from sagemaker.inputs import TransformInput from sagemaker.workflow.steps import TransformStep step_transform = TransformStep( name="AbaloneTransform", transformer=transformer, inputs=TransformInput(data=batch_data) )

RegisterModel

您可以使用 RegisterModel 步骤将模型注册到模型组。有关注册模型的更多信息,请参阅使用模型注册表注册和部署模型

RegisterModel 步骤需要评估程序、来自训练的模型数据输出以及要与模型包关联的模型包组名称。以下示例演示如何创建RegisterModel 定义。  有关 RegisterModel 步骤要求的更多信息,请参阅 sagemaker.workflow.step_collections.RegisterModel。 

from sagemaker.workflow.step_collections import RegisterModel step_register = RegisterModel( name="AbaloneRegisterModel", estimator=xgb_train, model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, content_types=["text/csv"], response_types=["text/csv"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name=model_package_group_name, approval_status=model_approval_status, model_metrics=model_metrics )

CreateModel

您可以使用 CreateModel 步骤创建SageMaker模型。有关SageMaker模型的更多信息,请参阅使用 Amazon SageMaker 训练模型。

CreateModel 步骤需要模型构件以及有关创建模型所需SageMaker实例类型的信息。以下示例演示如何创建CreateModel步骤定义。  有关步骤要求的更多信息CreateModel,请参阅 sagemaker.workflow.steps.CreateModelStep 文档。 

from sagemaker.workflow.steps import CreateModelStep step_create_model = CreateModelStep( name="AbaloneCreateModel", model=model, inputs=inputs )

有关可用步骤及其输入要求的更多信息,请参阅管道文档。

步骤属性

properties 属性用于在管道中的步骤之间添加数据依赖项。然后, 将使用这些数据依赖项从管道定义SageMaker Pipelines构建 DAG。这些属性可作为占位符值引用,并在运行时解析。 

properties 步骤的 SageMaker Pipelines 属性与相应Describe作业类型的 SageMaker 调用返回的对象匹配。对于每个作业类型, Describe 调用返回以下响应对象:

步骤之间的数据依赖项

您可以通过指定步骤之间的数据关系来定义 DAG 的结构。要在步骤之间创建数据依赖项,请将一个步骤的属性作为输入传递给管道中的另一个步骤。数据依赖项使用以下格式的 JsonPath 表示法。此格式遍历 JSON 属性文件,这意味着您可以附加尽可能多的 <property> 实例 (根据需要访问 文件中的所需嵌套属性)。有关 JsonPath 表示法的更多信息,请参阅 JsonPath 存储库

<step_name>.properties.<property>.<property>

以下是使用处理步骤的 ProcessingOutputConfig 属性的数据依赖项示例:

step_processing.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri

可以将数据依赖项作为输入传递给步骤,如下所示:

step_train = TrainingStep( name="CensusTrain", estimator=sklearn_train, inputs=TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train_data" ].S3Output.S3Uri ), )

在管道中使用自定义映像

在管道中创建步骤时,您可以使用任何可用的SageMaker深度学习容器映像

您还可以使用 SageMaker S3 应用程序创建步骤。SageMaker S3 应用程序是一个 tar.gz 捆绑包,其中包含可在该捆绑包中运行的一个或多个 Python 脚本。有关应用程序包打包的更多信息,请参阅直接从模型构件https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/using_tf.html?highlight=packaging#id22部署。

您还可以将自己的容器与管道步骤一起使用。由于您无法从 SageMaker Studio 中创建映像,因此,您必须先使用其他方法创建映像,然后才能将其与 一起使用Amazon SageMaker Model Building Pipelines。

要在为您的管道创建步骤时使用您自己的容器,请在评估程序定义中包含映像 URI。有关将您自己的容器与 结合使用的更多信息SageMaker,请参阅将 Docker 容器与 SageMaker结合使用。