自動スケーリングの概要 - Amazon SageMaker

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

自動スケーリングの概要

以下の概要では、auto Scaling の前提条件とコンポーネントについて詳しく説明します。

前提条件

auto Scaling を使用するには、Amazon SageMaker モデルエンドポイントを事前に作成しておく必要があります。同じエンドポイントに複数のモデルバージョンを設定できます。各モデルはプロダクション (モデル) バリアントと呼ばれます。モデルのエンドポイントのデプロイの詳細については、「 SageMaker ホスティングサービスにモデルをデプロイする」を参照してください。

モデルのauto スケーリングを有効にするには、 SageMaker コンソール、 AWS Command Line Interface (AWS CLI)、またはApplication Auto Scaling API を介した AWS SDK を使用できます。

  • モデルのスケーリングを初めて設定する場合は、コンソールを使用してモデルの自動スケーリングを設定する使用することをおすすめします。

  • AWS CLI またはApplication Auto Scaling APIを使用する場合のフローは、モデルをスケーラブルターゲットとして登録し、スケーリングポリシーを定義して適用することです。 SageMaker コンソールのナビゲーションペインの [推論] で [エンドポイント] を選択します。モデルのエンドポイント名を検索し、それを選択してバリアント名を検索します。モデルのauto スケーリングを有効にするには、エンドポイント名とバリアント名の両方を指定する必要があります。

スケーリングポリシーの概要

auto Scaling を使用するには、実際のワークロードに応じてプロダクションバリアントのインスタンス数を追加および削除するスケーリングポリシーを定義します。

ワークロードの変化に応じて自動的にスケーリングするには、ターゲット追跡ポリシーとステップスケーリングポリシーの 2 つのオプションがあります。

ターゲット追跡スケーリングポリシーの使用をお勧めします。ターゲットトラッキングでは、Amazon CloudWatch メトリックスとターゲット値を選択します。Auto Scaling CloudWatch はスケーリングポリシーのアラームを作成および管理し、メトリックスと目標値に基づいてスケーリング調整を計算します。ポリシーは、メトリクスを指定された目標値またはそれに近い値に保つために、必要に応じてインスタンスの追加や削除を行います。たとえば、事前定義された InvocationsPerInstance メトリクスのターゲット値を 70 に設定すると、InvocationsPerInstance を 70 または 70 近くに維持できます。詳細については、Application Auto Scaling ユーザーガイドの Target Tracking Scaling Policies を参照してください。

ステップスケーリングは、デプロイするインスタンスの数や条件を指定するなど、高度な設定が必要な場合に使用できます。それ以外の場合は、完全に自動化されてしまうため、ターゲット追跡スケーリングの使用が推奨されます。ステップスケーリングは、 AWS CLI またはApplication Auto Scaling API からのみ管理できることに注意してください。ステップスケーリングポリシーの概要とその仕組みについては、『アプリケーション Auto Scaling ユーザーガイド』の「ステップスケーリングポリシー」を参照してください。

ターゲット追跡スケーリングポリシーを作成するには、以下を指定します。

  • メトリックス — インスタンスあたりの平均呼び出し数など、 CloudWatch 追跡するメトリックス。

  • 目標値 — メトリクスの目標値 (インスタンスあたり 1 分あたり 70 回の呼び出しなど)。

事前定義されたメトリクスまたはカスタムメトリクスのいずれかを使用して、ターゲット追跡スケーリングポリシーを作成できます。定義済みのメトリクスは列挙型で定義されるため、コード内で名前を指定したり、コンソールで使用したりできます。 SageMaker または Application Auto Scaling API を使用して、 AWS CLI 事前定義済みまたはカスタムメトリックスに基づいてターゲットの追跡スケーリングポリシーを適用することもできます。

キャパシティの急激な変動を防ぐために、スケーリングアクティビティはクールダウン期間を設けて実行されることに注意してください。オプションでスケーリングポリシーのクールダウン期間を設定できます。

スケジュールに基づくスケーリング

また、スケジュールされたアクションを作成して、特定の時間にスケーリングアクティビティを実行することもできます。スケジュールされたアクションは、1 度だけスケールする、または定期的なスケジュールに従ってスケールするものを作成できます。スケジュールされたアクションが実行された後も、ワークロードの変化に応じて動的にスケーリングするかどうかをスケーリングポリシーが決定し続けることができます。スケジュールされたスケーリングは、 AWS CLI またはApplication Auto Scaling API からのみ管理できます。詳細については、「Application Auto Scaling ユーザーガイド」の「スケジュールされたスケーリング」を参照してください。

スケーリングの上限と下限

auto Scaling を設定する場合、スケーリングポリシーを作成する前にスケーリング制限を指定する必要があります。最小値と最大値にはそれぞれ制限を設定します。

最小値は 1 以上で、最大値に指定された値以下でなければなりません。

最大値は、最小値に指定された値以上でなければなりません。 SageMaker auto スケーリングでは、この値の制限は適用されません。

一般的なトラフィックに必要なスケーリング制限を決定するには、モデルへのトラフィックの予想レートを使用して auto Scaling 設定をテストします。

バリアントのトラフィックがゼロになると、 SageMaker 指定された最小インスタンス数に自動的にスケールインします。この場合、 SageMaker 値がゼロのメトリクスを出力します。

最小容量と最大容量を指定するには次の 3 つのオプションがあります。

  1. コンソールを使用して [最小インスタンス数] と [最大インスタンス数] の設定を更新します。

  2. register-scalable-targetコマンドを実行するときは、--min-capacity--max-capacityおよびおよびオプションを使用してください。 AWS CLI

  3. RegisterScalableTargetAPI を呼び出し、MinCapacityMaxCapacityおよびパラメータを指定します。

ヒント

最小値を増やして手動でスケールアウトすることも、最大値を減らして手動でスケールインすることもできます。

クールダウン期間

クールダウン期間は、モデルがスケールイン (キャパシティの削減) またはスケールアウト (キャパシティの増加) を行う際のオーバースケーリングを防ぐために使用されます。これは、その期間が終了するまで、以降のスケーリングアクティビティを遅らせることで実現されます。具体的には、スケールインリクエストではインスタンスの削除をブロックし、スケールアウトリクエストではインスタンスの作成を制限します。詳細については、『Application Auto Scaling ユーザーガイド』の「クールダウン期間の定義」を参照してください。

クールダウン期間はスケーリングポリシーで設定します。

スケールインまたはスケールアウトのクールダウン期間を指定しない場合、スケーリングポリシーではそれぞれ 300 秒というデフォルトが使用されます。

スケーリング設定をテストするときにインスタンスの追加や削除が早すぎる場合は、この値を増やすことを検討してください。モデルへのトラフィックの急増が多い場合や、バリアントに対して複数のスケーリングポリシーが定義されている場合に、この現象が発生する可能性があります。

インスタンスが追加されるペースが増加したトラフィックに対処するのに十分でない場合は、この値を減らすことを検討してください。

アクセス許可

自動スケーリングは SageMaker、Amazon、Amazon CloudWatch、およびApplication Auto Scaling API の組み合わせによって可能になります。最低限必要なアクセス権限については、『Application Auto Scaling ユーザーガイド』の「Application Auto Scaling ID ベースのポリシーの例」を参照してください。

SagemakerFullAccessPolicyIAM ポリシーには、auto スケーリングを実行するために必要なすべての IAM 権限が含まれています。 SageMaker IAM 権限の詳細については、「」を参照してください。 SageMaker 実行ロールの使用方法

独自のアクセス権限ポリシーを管理する場合は、以下のアクセス権限を含める必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeEndpoint", "sagemaker:DescribeEndpointConfig", "sagemaker:UpdateEndpointWeightsAndCapacities" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "application-autoscaling:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint", "Condition": { "StringLike": { "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:DeleteAlarms" ], "Resource": "*" } ] }

サービスリンクロール

Auto Scaling AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint はサービスにリンクされたロールを使用します。このサービスにリンクされたロールは、ポリシーのアラームを記述し、現在の容量レベルを監視し、ターゲットリソースをスケーリングする権限をアプリケーションの Auto Scaling に付与します。このロールは自動的に作成されます。ロールの自動作成を成功させるには、iam:CreateServiceLinkedRoleそのアクションを実行する権限が必要です。詳細については、アプリケーション Auto Scaling ユーザーガイドの「サービスにリンクされたロール」を参照してください。

auto Scaling の設定について詳しくは、以下のリソースを参照してください。

注記

SageMaker 最近、リアルタイム推論エンドポイント上に構築された新しい推論機能が導入されました。 SageMaker エンドポイントのインスタンスタイプと初期インスタンス数を定義するエンドポイント設定を使用してエンドポイントを作成します。次に、推論コンポーネントを作成します。これは、 SageMaker エンドポイントにモデルをデプロイするために使用できるホスティングオブジェクトです。推論コンポーネントのスケーリングについては、「SageMaker 基礎モデルのデプロイコストとレイテンシの削減に役立つ新しい推論機能の追加」と「ブログの最新機能を使用してモデルデプロイコストを平均 50% 削減する」を参照してください。 SageMaker AWS