設定とモニタリングを自動ロールバックする - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

設定とモニタリングを自動ロールバックする

Amazon CloudWatch アラームは、デプロイガードレールでベーキング期間を使うための前提条件です。デプロイガードレールにおける自動ロールバック機能は、エンドポイントをモニタリングできる CloudWatch アラームを設定した場合にのみ、使用できます。指定したモニタリング期間中にいずれかのアラームが作動した場合、SageMaker AI はアプリケーションを保護するために古いエンドポイントへの完全なロールバックを開始します。エンドポイントをモニタリングするように CloudWatch アラームを設定していない場合、デプロイ中に自動ロールバック機能は機能しません。

Amazon CloudWatch の詳細については、Amazon CloudWatch ユーザーガイドの「Amazon CloudWatch とは」を参照してください。

注記

IAM 実行ロールに、指定した自動ロールバックアラームの cloudwatch:DescribeAlarms アクションを実行するアクセス許可があることを確認してください。

アラームの例

開始に役立つよう、CloudWatch アラームの機能をデモする以下の例を用意しました。次の例の使用または変更するだけでなく、独自のアラームを作成し、指定したフリートのさまざまなメトリクスを一定期間モニタリングするようにアラームを設定できます。アラームに追加できる SageMaker AI メトリクスとディメンションの詳細については、「」を参照してくださいAmazon CloudWatch で Amazon SageMaker AI をモニタリングするためのメトリクス

新旧両方のフリートの呼び出しエラーをモニタリングする

次の CloudWatch アラームは、エンドポイントの平均エラー率をモニタリングします。このアラームを任意のデプロイガードレールのトラフィックシフトタイプで使うことで、新旧両方のフリートで全体的なモニタリングを行うことができます。アラームが作動すると、SageMaker AI は古いフリートへのロールバックを開始します。

新旧両方のフリートから発生する呼び出しエラーは、平均エラー率に影響します。平均エラー率が指定されたしきい値を超えると、アラームが作動します。この例では、デプロイ期間中、新旧両方のフリートで 4xx エラー (クライアントエラー) をモニタリングします。メトリクス Invocation5XXErrors を使って 5xx エラー (サーバーエラー) をモニタリングすることもできます。

注記

このアラームタイプでは、古いフリートがデプロイ中にアラームを作動すると、SageMaker AI はデプロイを終了します。したがって、現在の本番稼働フリートで既にエラーが発生している場合は、次の例のいずれかを使用または変更して、新しいフリートのエラーのみをモニタリングすることを検討してください。

#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 を使用します。この値は、アラームステータスを決定する際に、直近の 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 を、古いフリートの設定名を指定するように変更できます。