Linear トラフィックシフト - Amazon SageMaker

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

Linear トラフィックシフト

Linear トラフィックシフトは、古いフリート (青のフリート) から新しいフリート (緑のフリート) に徐々にトラフィックをシフトさせることができます。Linear トラフィックシフトにより、複数のステップでトラフィックをシフトできるため、エンドポイントで障害が発生する可能性を最小限に抑えることができます。この Blue/Green デプロイオプションでは、トラフィックシフトを最も細かくコントロールできます。

各ステップでアクティブ化するインスタンス数または緑のフリートの容量の割合のいずれかを選択できます。各 Linear ステップは、緑のフリートの容量の 10~50% の間にしてください。ステップごとに、事前に指定した Amazon CloudWatch アラームがグリーンフリートのメトリクスをモニタリングするベーキング期間があります。ベーキング期間が終了し、アラームの作動がなければ、緑のフリートのアクティブな部分は引き続きトラフィックを受信し、新しいステップが始まります。ベーキング期間中にアラームが作動した場合、100% のエンドポイントトラフィックは青のフリートにロールバックされます。

次の図は、Linear トラフィックシフトがトラフィックを青と緑のフリートにルーティングする方法を示しています。

古いフリートから新しいフリートへの 3 ステップの線形トラフィックシフトが成功しました。

が新しいフリートを SageMaker プロビジョニングすると、グリーンフリートの最初の部分がオンになり、トラフィックを受信します。 はブルーフリートの同じサイズ部分を SageMaker 無効にし、ベーキング期間が始まります。アラームが作動した場合、すべてのエンドポイントトラフィックは青のフリートにロールバックされます。ベーキング期間が終了すると、次のステップが始まります。緑のフリートの別の部分がアクティブ化されてトラフィックを受信し、青のフリートの一部が非アクティブ化され、別のベーキング期間が始まります。青のフリートが完全に非アクティブ化され、緑のフリートが完全にアクティブ化され、すべてのトラフィックを受信するまで、同じプロセスが繰り返されます。アラームが任意の時点で作動すると、 はシフトプロセス SageMaker を終了し、トラフィックの 100% がブルーフリートにロールバックされます。

前提条件

線形トラフィックシフトを使用してデプロイを設定する前に、エンドポイントからメトリクスをモニタリングする CloudWatch アラームを作成する必要があります。アラームはベーキング期間中アクティブになり、いずれかのアラームが作動した場合、すべてのエンドポイントトラフィックは青のフリートにロールバックされます。エンドポイントでアラームを設定する CloudWatch方法については、「前提条件」ページを参照してください設定とモニタリングを自動ロールバックする。 CloudWatch アラームの詳細については、「Amazon ユーザーガイド」の「Amazon CloudWatch アラームの使用」を参照してください。 CloudWatch

Linear トラフィックシフトを設定する

デプロイの準備が整い、エンドポイントの CloudWatch アラームを設定したら、 で Amazon SageMaker UpdateEndpoint APIまたは update-endpoint コマンドを使用してデプロイ AWS CLI を開始できます。

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

次の の例は、線形トラフィックシフトでエンドポイントを更新する方法UpdateEndpointAPIを示しています。

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "BlueGreenUpdatePolicy": { "TrafficRoutingConfiguration": { "Type": "LINEAR", "LinearStepSize": { "Type": "CAPACITY_PERCENT", "Value": 20 }, "WaitIntervalInSeconds": 300 }, "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600 }, "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" } ] } } )

Linear トラフィックシフトオプションを設定するには、以下を実行します。

  • EndpointName には、更新する既存のエンドポイントの名前を使用します。

  • EndpointConfigName には、使用するエンドポイント設定の名前を使用します。

  • DeploymentConfigBlueGreenUpdatePolicy の下の TrafficRoutingConfiguration で、Type パラメータを LINEAR に設定します。これは、デプロイが Linear トラフィックシフトを使うよう指定します。

  • LinearStepSize フィールドでは、TypeValue パラメータを変更することでステップのサイズを変更できます。Type には、CAPACITY_PERCENT を使用します。これは、ステップサイズとして使う緑のフリートの割合を意味し、Value には 20 を設定します。この例では、トラフィックシフトステップごとに緑のフリートの容量の 20% をオンにします。Linear ステップサイズをカスタマイズする場合、緑のフリートの容量の 10~50% のステップのみを使うよう注意してください。

  • WaitIntervalInSeconds の場合は、300 を使用します。パラメータは、各トラフィックシフト間の指定された時間 (秒単位) を待機 SageMaker するように に指示します。この間隔は、各 Linear ステップ間のベーキング期間の長さです。前の例では、 は各トラフィックシフトの間に 5 分間 SageMaker 待機します。

  • TerminationWaitInSeconds の場合は、300 を使用します。このパラメータは SageMaker 、緑のフリートが完全にアクティブになってから青のフリートのインスタンスを終了するまで、指定された時間 (秒単位) 待機するように に指示します。この例では、ブルーフリートを終了する前に、最後のベーキング期間から 5 分間 SageMaker 待機します。

  • MaximumExecutionTimeoutInSeconds の場合は、3600 を使用します。このパラメータは、デプロイがタイムアウトするまでに実行できる最大時間を設定します。前の例では、デプロイが終了するまでの制限時間は 1 時間です。

  • ではAutoRollbackConfigurationAlarmsフィールド内で、 CloudWatch アラームを名前で追加できます。使うアラームごとに 1 つの AlarmName: <your-cw-alarm> エントリを作成します。

既存のブルー/グリーン更新ポリシーでエンドポイントを更新する方法 (API)

を使用してエンドポイントCreateEndpointAPIを作成する場合、必要に応じてデプロイ設定を指定して、今後のエンドポイントの更新に再利用できます。前の UpdateEndpoint API例と同じDeploymentConfigオプションを使用できます。動作に変更 CreateEndpoint APIはありません。デプロイ設定を指定しても、エンドポイントでの Blue/Green 更新が自動的に実行されるわけではありません。

以前のデプロイ設定を使用するオプションは、 を使用してエンドポイントUpdateEndpointAPIを更新するときに発生します。エンドポイントを更新するときは、RetainDeploymentConfig オプションを使って、エンドポイントの作成時に指定したデプロイ設定を保持できます。

を呼び出すときはAPI、 RetainDeploymentConfigUpdateEndpoint に設定Trueして、元のエンドポイント設定DeploymentConfigのオプションを保持します。

response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", RetainDeploymentConfig=True )

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

を使用している場合、次の例は AWS CLI update-endpoint コマンドを使用してブルー/グリーン線形デプロイを開始する方法を示しています。

update-endpoint --endpoint-name <your-endpoint-name> --endpoint-config-name <your-config-name> --deployment-config '{"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "LINEAR", "LinearStepSize": {"Type": "CAPACITY_PERCENT", "Value": 20}, "WaitIntervalInSeconds": 300}, "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600}, "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'

Linear トラフィックシフトオプションを設定するには、以下を実行します。

  • endpoint-name には、更新するエンドポイントの名前を使用します。

  • endpoint-config-name には、使用するエンドポイント設定の名前を使用します。

  • にはdeployment-configBlueGreenUpdatePolicy JSON オブジェクトを使用します。

注記

JSON オブジェクトをファイルに保存する場合は、「 AWS CLI ユーザーガイド」の AWS CLI 「スケルトンと入力パラメータの生成」を参照してください。