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

自动回滚配置和监控

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

有关 Amazon CloudWatch 的更多信息,请参阅《Amazon CloudWatch 用户指南》中的什么是 Amazon CloudWatch?

注意

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

警报示例

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

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

以下 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 警报示例监控部署期间新实例集的模型延迟。您可以使用此警报仅监控新实例集并排除旧实例集。警报在整个部署期间保持。此示例为您提供了对新实例集的全面、端到端的监控,如果新实例集出现任何响应时间问题,则启动回滚到旧实例集。

在新实例集开始接收流量之后,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 以指定旧实例集配置的名称。