自动回滚配置和监控 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

自动回滚配置和监控

Amazon CloudWatch 警报是在部署护栏中使用烘焙周期的先决条件。只有在设置了可以监控端点的 CloudWatch 警报后,才能在部署护栏中使用自动回滚功能。如果您的任何警报在指定的监控期内跳动,则 SageMaker 会启动对旧端点的完全回滚以保护您的应用程序。如果您没有设置任何 CloudWatch 警报来监控您的终端节点,则自动回滚功能在部署期间将不起作用。

要了解有关亚马逊的更多信息 CloudWatch,请参阅什么是亚马逊 CloudWatch? 在《亚马逊 CloudWatch 用户指南》中。

注意

确保您的 IAM 执行角色有权对您指定的自动回滚警报执行 cloudwatch:DescribeAlarms 操作。

警报示例

为了帮助您入门,我们提供了以下示例来演示 CloudWatch 警报的功能。除了使用或修改以下示例之外,您还可以创建自己的警报以及配置警报,以便监控特定时段内指定实例集上的各种指标。要查看您可以添加到警报中的更多 SageMaker 指标和维度,请参阅 SageMaker 使用亚马逊监控亚马逊 CloudWatch

监控新旧实例集上的调用错误

以下 CloudWatch 警报监控端点的平均错误率。您可以将此警报与任何部署防护机制流量转移类型配合使用,以对新旧实例集进行全面监控。如果警报跳动,则 SageMaker 启动回滚到旧舰队。

平均错误率包括来自旧实例集和新实例集的调用错误。如果平均错误率超过指定的阈值,就会触发警报。此特殊示例监视部署期间新旧实例集上的 4xx 错误(客户端错误)。您还可以使用指标 Invocation5XXErrors 监控 5xx 错误(服务器错误)。

注意

对于这种警报类型,如果您的旧舰队在部署期间触发警报,则 SageMaker会终止您的部署。因此,如果您当前的生产实例集已导致错误,请考虑使用或修改以下示例之一,这些示例仅监控新实例集内的错误。

#Applied deployment type: all types { "AlarmName": "EndToEndDeploymentHighErrorRateAlarm", "AlarmDescription": "Monitors the error rate of 4xx errors", "MetricName": "Invocation4XXErrors", "Namespace": "AWS/SageMaker", "Statistic": "Average", "Dimensions": [ { "Name": "EndpointName", "Value": <your-endpoint-name> }, { "Name": "VariantName", "Value": "AllTraffic" } ], "Period": 600, "EvaluationPeriods": 2, "Threshold": 1, "ComparisonOperator": "GreaterThanThreshold", "TreatMissingData": "notBreaching" }

在上一个示例中,记录以下字段的值:

  • 对于 AlarmNameAlarmDescription,输入您为警报选择的名称和描述。

  • 对于 MetricName,使用值 Invocation4XXErrors 来监控端点上的 4xx 错误。

  • 对于 Namespace,请使用值 AWS/SageMaker。您还可以指定自己的自定义指标(如果适用)。

  • 对于 Statistic,请使用 Average。这意味着在计算错误率是否超过阈值时,警报采用的是评估期间的平均错误率。

  • 对于维度 EndpointName,请使用要更新的端点的名称作为值。

  • 对于维度 VariantName,请使用值 AllTraffic 指定所有端点的流量。

  • 对于 Period,请使用 600。这会将警报的评估周期设置为 10 分钟。

  • 对于 EvaluationPeriods,请使用 2。此值告知警报在确定警报状态时,需要考虑最近的两个评估周期。

监控新实例集上的模型延迟

以下 CloudWatch 警报示例监控部署期间新队列的模型延迟。您可以使用此警报仅监控新实例集并排除旧实例集。警报在整个部署期间保持。此示例为您提供了对新队列的全面 end-to-end 监控,并在新队列出现任何响应时间问题时启动回滚到旧队列。

CloudWatch 在新队列开始接收流量EndpointConfigName:{New-Ep-Config}后发布带有维度的指标,即使部署完成后,这些指标仍会持续下去。

您可以在任意部署类型中使用以下示例警报。

#Applied deployment type: all types { "AlarmName": "NewEndpointConfigVersionHighModelLatencyAlarm", "AlarmDescription": "Monitors the model latency on new fleet", "MetricName": "ModelLatency", "Namespace": "AWS/SageMaker", "Statistic": "Average", "Dimensions": [ { "Name": "EndpointName", "Value": <your-endpoint-name> }, { "Name": "VariantName", "Value": "AllTraffic" }, { "Name": "EndpointConfigName", "Value": <your-config-name> ], "Period": 300, "EvaluationPeriods": 2, "Threshold": 100000, # 100ms "ComparisonOperator": "GreaterThanThreshold", "TreatMissingData": "notBreaching" }

在上一个示例中,记录以下字段的值:

  • 对于 MetricName,请使用值 ModelLatency 来监控模型的响应时间。

  • 对于 Namespace,请使用值 AWS/SageMaker。您还可以指定自己的自定义指标(如果适用)。

  • 对于维度 EndpointName,请使用要更新的端点的名称作为值。

  • 对于维度 VariantName,请使用值 AllTraffic 指定所有端点的流量。

  • 对于维度 EndpointConfigName,该值应引用新端点或更新后端点的端点配置名称。

注意

如果您想监控旧实例集而不是新实例集,则可以更改维度 EndpointConfigName 以指定旧实例集配置的名称。