

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

# ローリングデプロイを使用する
<a name="deployment-guardrails-rolling"></a>

エンドポイントを更新するときに、ローリングデプロイを指定して、トラフィックを古いフリートから新しいフリートに徐々に移行することができます。評価期間を指定して古いフリートのインスタンスを終了する前に新しいインスタンスに問題がないか監視できるだけでなく、移行トラフィックのステップのサイズも制御できます。ローリングデプロイでは、各トラフィックが新しいフリートに移行された後、古いフリートのインスタンスがクリーンアップされるので、エンドポイントの更新に必要な追加インスタンスの量が減ります。これは、高需要の高速化されたインスタンスで特に役立ちます。

ローリングデプロイでは、設定可能なバッチサイズでエンドポイントを更新することにより、モデルの以前のバージョンのデプロイを新しいバージョンに徐々に置き換えます。ローリングデプロイのトラフィックの移行動作はブルー/グリーンデプロイの[線形トラフィック移行モード](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green-linear.html)に似ていますが、ブルー/グリーンデプロイと比較し、ローリングデプロイにはキャパシティ要件が削減されるというメリットがあります。ローリングデプロイでは、一度にアクティブになるインスタンスが少なくなり、新しいフリートで更新するインスタンスの数をきめ細かく制御できます。大規模モデルや多くのインスタンスを持つ大規模エンドポイントを使用している場合は、ブルー/グリーンデプロイの代わりにローリングデプロイの使用を検討する必要があります。

次のリストで、Amazon SageMaker AI の ローリングデプロイの主な機能について説明します:
+ **ベーキング期間。**ベーキング期間とは、次のデプロイステージに進む前に新しいフリートを監視する一定の時間のことです。どのベーキング期間中においても、事前に指定したアラームのいずれかが作動した場合、すべてのエンドポイントトラフィックは古いフリートにロールバックされます。ベーキング期間は、トラフィックシフトを永続的なものにする前に、更新の信頼を構築するのに役立ちます。
+ **ローリングのバッチサイズ。**トラフィック移行のための各バッチサイズ、または各バッチで更新するインスタンスの数をきめ細かく制御できます。この数値は、フリートのサイズの 5～50% の範囲で設定できます。バッチサイズは、インスタンス数、またはフリート全体の割合として指定できます。
+ **自動ロールバック。**SageMaker AI が新しいフリートの監視に使用する Amazon CloudWatch アラームを指定できます。更新されたコードの問題によってアラームが作動した場合、SageMaker AI は可用性を維持するために古いフリートへの自動ロールバックを開始し、リスクを最小限に抑えます。

**注記**  
エンドポイントが [[除外事項]](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) ページに一覧表示されているいずれかの機能を使用している場合、ローリングデプロイは使用できません。

## 仕組み
<a name="deployment-guardrails-rolling-how-it-works"></a>

ローリングデプロイ中、SageMaker AI は、すべての新しいインスタンスを一度にプロビジョニングすることなく古いフリートから新しいフリートにトラフィックを移行するためのインフラストラクチャを提供します。SageMaker AI は次の手順を使用してトラフィックを移行します。

1. SageMaker AI は、新しいフリートのインスタンスの最初のバッチをプロビジョニングします。

1. トラフィックの一部は、古いインスタンスから新しいインスタンスの最初のバッチに移行されます。

1. ベーキング期間の後、Amazon CloudWatch アラームが作動しなければ、SageMaker AI は古いインスタンスのバッチをクリーンアップします。

1. SageMaker AI は、デプロイが完了するまで、バッチのインスタンスのプロビジョニング、移行、およびクリーンアップを継続します。

いずれかのベーキング期間中にアラームが作動すると、トラフィックは指定したサイズのバッチで古いフリートにロールバックされます。また、ローリングデプロイを指定し、アラームが作動した場合にトラフィックの 100% を古いフリートに戻すこともできます。

次の図は、前のステップで説明したように、ローリングデプロイが成功する場合の進行状況を示しています。

![\[ローリングデプロイにおいて古いフリートから新しいフリートにトラフィックを正常に移行する手順。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/deployment-guardrails-rolling-diagram.png)


目的のデプロイ構成を指定するだけでローリングデプロイを作成できます。その後、SageMaker AI は新しいインスタンスのプロビジョニング、古いインスタンスの終了、トラフィックの移行を行います。デプロイを作成および管理するには、既存の [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) および [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API と AWS Command Line Interface コマンドを使用します。

## 前提条件
<a name="deployment-guardrails-prereqs"></a>

ローリングデプロイを設定する前に、エンドポイントからのメトリクスを監視する Amazon CloudWatch アラームを作成する必要があります。ベーキング期間中にアラームが作動した場合、トラフィックは古いフリートにロールバックされます。エンドポイントに CloudWatch アラームを設定する方法については、前提条件のページの「Auto-Rollback Configuration and Monitoring」を参照してください。CloudWatch アラームの詳細については、[Amazon CloudWatch ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)の「*Amazon CloudWatch でのアラームの使用*」を参照してください。

また、[[除外事項]](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) ページを確認して、エンドポイントがローリングデプロイの要件を満たしていることを確認してください。

## ローリングのバッチサイズを決定する
<a name="deployment-guardrails-rolling-batch-size"></a>

エンドポイントを更新する前に、新しいフリートにトラフィックを段階的に移行するのに使用するバッチサイズを決定します。

ローリングデプロイでは、バッチサイズにフリートの容量の 5～50% を指定できます。大きいバッチサイズを選択すると、デプロイはより短時間で完了します。ただし、エンドポイントが更新中に必要とする容量は、バッチサイズのオーバーヘッドとほぼ同じであることに注意してください。小さいバッチサイズを選択した場合、デプロイには時間がかかりますが、デプロイ中に使用する容量は少なくなります。

## ローリングデプロイを設定する
<a name="deployment-guardrails-rolling-configure"></a>

デプロイの準備ができ、エンドポイントに CloudWatch アラームを設定したら、SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API または の [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) コマンドを使用してデプロイ AWS Command Line Interface を開始できます。

エンドポイントを更新する方法

次の例は、Boto3 SageMaker AI クライアントの [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_endpoint.html) メソッドを使用し、ローリングデプロイでエンドポイントを更新する方法を示しています。

ローリングデプロイを設定するには、次の例とフィールドを使用します。
+ `EndpointName` には、更新する既存のエンドポイントの名前を使用します。
+ `EndpointConfigName` には、使用するエンドポイント設定の名前を使用します。
+ `AutoRollbackConfiguration` オブジェクトの `Alarms` フィールドに、CloudWatch アラームを名前で追加できます。使うアラームごとに 1 つの `AlarmName: <your-cw-alarm>` エントリを作成します。
+ `DeploymentConfig` で、`RollingUpdatePolicy` オブジェクトに次のフィールドを指定します。
  + `MaximumExecutionTimeoutInSeconds` — デプロイの合計制限時間。この制限を超えるとタイムアウトになります。このフィールドに指定できる最大値は 28800 秒、つまり 8 時間です。
  + `WaitIntervalInSeconds` — SageMaker AI が新しいフリートの各バッチのアラームを監視するベーキング期間の長さ。
  + `MaximumBatchSize` — 使用するバッチの `Type` (インスタンス数またはフリート全体に対する割合) と `Value`、または各バッチのサイズを指定します。
  + `RollbackMaximumBatchSize` — このオブジェクトを使用して、アラームが作動した場合のロールバック戦略を指定します。使用するバッチの `Type` (インスタンス数またはフリート全体に対する割合) と `Value`、または各バッチのサイズを指定します。これらのフィールドを指定しない場合、または値をエンドポイントの 100% に設定した場合、SageMaker AI はブルー/グリーンロールバック戦略を使用し、アラームの作動時にすべてのトラフィックを古いフリートにロールバックします。

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                },
            ]
        },
        "RollingUpdatePolicy": { 
            "MaximumExecutionTimeoutInSeconds": number,
            "WaitIntervalInSeconds": number,
            "MaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
            "RollbackMaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
        }  
    }
)
```

エンドポイントを更新した後、ローリングデプロイのステータスやエンドポイントの正常性を確認したい場合があります。SageMaker AI コンソールでエンドポイントのステータスを確認することも、[DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API を使用してエンドポイントのステータスを確認することもできます。

`DescribeEndpoint` API によって返される `VariantStatus` オブジェクトの `Status`フィールドで、エンドポイントの現在のデプロイまたは動作状況がわかります。有効なステータスとその意味に関する詳細については、「[ProductionVariantStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantStatus.html)」を参照してください。

ローリングデプロイを試み、エンドポイントのステータスが `UpdateRollbackFailed` の場合、トラブルシューティングヘルプについて次のセクションを参照してください。

## 障害処理
<a name="deployment-guardrails-rolling-failures"></a>

ローリングデプロイが失敗し、自動ロールバックも同様の場合、エンドポイントのステータスは `UpdateRollbackFailed` のままです。このステータスは、エンドポイントの背後にあるインスタンスに異なるエンドポイント設定がデプロイされ、古いエンドポイント設定と新しいエンドポイント設定が混在してサービスが稼働中であることを意味しています。

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API を再度呼び出して、エンドポイントを正常な状態に戻すことができます。目的のエンドポイント設定とデプロイ設定 (ローリングデプロイ、ブルー/グリーンデプロイ、またはどちらでもない) を指定して、エンドポイントを更新します。

[DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API を呼び出して、エンドポイントの正常性を再確認できます。これは、`Status` フィールドとして `VariantStatus` オブジェクトで返されます。更新が成功すると、エンドポイントの `Status` は `InService` に戻ります。