翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ローリングデプロイを使用する
エンドポイントを更新するときに、ローリングデプロイを指定して、トラフィックを古いフリートから新しいフリートに徐々に移行することができます。評価期間を指定して古いフリートのインスタンスを終了する前に新しいインスタンスに問題がないか監視できるだけでなく、移行トラフィックのステップのサイズも制御できます。ローリングデプロイでは、各トラフィックが新しいフリートに移行された後、古いフリートのインスタンスがクリーンアップされるので、エンドポイントの更新に必要な追加インスタンスの量が減ります。これは、高需要の高速化されたインスタンスで特に役立ちます。
ローリングデプロイでは、設定可能なバッチサイズでエンドポイントを更新することにより、モデルの以前のバージョンのデプロイを新しいバージョンに徐々に置き換えます。ローリングデプロイのトラフィックの移行動作はブルー/グリーンデプロイの線形トラフィック移行モードに似ていますが、ブルー/グリーンデプロイと比較し、ローリングデプロイにはキャパシティ要件が削減されるというメリットがあります。ローリングデプロイでは、一度にアクティブになるインスタンスが少なくなり、新しいフリートで更新するインスタンスの数をきめ細かく制御できます。大規模モデルや多くのインスタンスを持つ大規模エンドポイントを使用している場合は、ブルー/グリーンデプロイの代わりにローリングデプロイの使用を検討する必要があります。
次のリストでは、Amazon SageMaker AI でのローリングデプロイの主な機能について説明します。
-
ベーキング期間。ベーキング期間とは、次のデプロイステージに進む前に新しいフリートを監視する一定の時間のことです。どのベーキング期間中においても、事前に指定したアラームのいずれかが作動した場合、すべてのエンドポイントトラフィックは古いフリートにロールバックされます。ベーキング期間は、トラフィックシフトを永続的なものにする前に、更新の信頼を構築するのに役立ちます。
-
ローリングのバッチサイズ。トラフィック移行のための各バッチサイズ、または各バッチで更新するインスタンスの数をきめ細かく制御できます。この数値は、フリートのサイズの 5~50% の範囲で設定できます。バッチサイズは、インスタンス数、またはフリート全体の割合として指定できます。
-
自動ロールバック。SageMaker AI が新しいフリートをモニタリングするために使用する Amazon CloudWatch アラームを指定できます。更新されたコードの問題がアラームのいずれかを作動させると、SageMaker AI は可用性を維持するために古いフリートへの自動ロールバックを開始し、リスクを最小限に抑えます。
注記
エンドポイントが [除外事項] ページに一覧表示されているいずれかの機能を使用している場合、ローリングデプロイは使用できません。
仕組み
ローリングデプロイ中、SageMaker AI は、すべての新しいインスタンスを一度にプロビジョニングすることなく、古いフリートから新しいフリートにトラフィックを移行するためのインフラストラクチャを提供します。SageMaker AI は、次のステップを使用してトラフィックをシフトします。
-
SageMaker AI は、新しいフリート内のインスタンスの最初のバッチをプロビジョニングします。
-
トラフィックの一部は、古いインスタンスから新しいインスタンスの最初のバッチに移行されます。
-
ベーキング期間の後、Amazon CloudWatch アラームが作動しない場合、SageMaker AI は古いインスタンスのバッチをクリーンアップします。
-
SageMaker AI は、デプロイが完了するまでインスタンスをバッチでプロビジョニング、シフト、クリーンアップし続けます。
いずれかのベーキング期間中にアラームが作動すると、トラフィックは指定したサイズのバッチで古いフリートにロールバックされます。また、ローリングデプロイを指定し、アラームが作動した場合にトラフィックの 100% を古いフリートに戻すこともできます。
次の図は、前のステップで説明したように、ローリングデプロイが成功する場合の進行状況を示しています。

目的のデプロイ構成を指定するだけでローリングデプロイを作成できます。次に、SageMaker AI は新しいインスタンスのプロビジョニング、古いインスタンスの終了、トラフィックの移行を処理します。既存の UpdateEndpoint および CreateEndpoint SageMaker API と AWS Command Line Interface コマンドを使用して、デプロイを作成および管理できます。
前提条件
ローリングデプロイを設定する前に、エンドポイントからのメトリクスを監視する Amazon CloudWatch アラームを作成する必要があります。ベーキング期間中にアラームが作動した場合、トラフィックは古いフリートにロールバックされます。エンドポイントに CloudWatch アラームを設定する方法については、前提条件のページの「Auto-Rollback Configuration and Monitoring」を参照してください。CloudWatch アラームの詳細については、Amazon CloudWatch ユーザーガイドの「Amazon CloudWatch でのアラームの使用」を参照してください。
また、[除外事項] ページを確認して、エンドポイントがローリングデプロイの要件を満たしていることを確認してください。
ローリングのバッチサイズを決定する
エンドポイントを更新する前に、新しいフリートにトラフィックを段階的に移行するのに使用するバッチサイズを決定します。
ローリングデプロイでは、バッチサイズにフリートの容量の 5~50% を指定できます。大きいバッチサイズを選択すると、デプロイはより短時間で完了します。ただし、エンドポイントが更新中に必要とする容量は、バッチサイズのオーバーヘッドとほぼ同じであることに注意してください。小さいバッチサイズを選択した場合、デプロイには時間がかかりますが、デプロイ中に使用する容量は少なくなります。
ローリングデプロイを設定する
デプロイの準備ができ、エンドポイントに CloudWatch アラームを設定したら、SageMaker AI UpdateEndpoint API または の update-endpoint コマンドを使用してデプロイ AWS Command Line Interface を開始できます。
エンドポイントを更新する方法
次の例は、Boto3 SageMaker AI クライアントの update_endpoint
ローリングデプロイを設定するには、次の例とフィールドを使用します。
-
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 API を使用してエンドポイントのステータスを確認できます。
DescribeEndpoint
API によって返される VariantStatus
オブジェクトの Status
フィールドで、エンドポイントの現在のデプロイまたは動作状況がわかります。有効なステータスとその意味に関する詳細については、「ProductionVariantStatus」を参照してください。
ローリングデプロイを試み、エンドポイントのステータスが UpdateRollbackFailed
の場合、トラブルシューティングヘルプについて次のセクションを参照してください。
障害処理
ローリングデプロイが失敗し、自動ロールバックも同様の場合、エンドポイントのステータスは UpdateRollbackFailed
のままです。このステータスは、エンドポイントの背後にあるインスタンスに異なるエンドポイント設定がデプロイされ、古いエンドポイント設定と新しいエンドポイント設定が混在してサービスが稼働中であることを意味しています。
UpdateEndpoint API を再度呼び出して、エンドポイントを正常な状態に戻すことができます。目的のエンドポイント設定とデプロイ設定 (ローリングデプロイ、ブルー/グリーンデプロイ、またはどちらでもない) を指定して、エンドポイントを更新します。
DescribeEndpoint API を呼び出して、エンドポイントの正常性を再確認できます。これは、Status
フィールドとして VariantStatus
オブジェクトで返されます。更新が成功すると、エンドポイントの Status
は InService
に戻ります。