既存のエンドポイントの推論レコメンデーションを取得する - Amazon SageMaker

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

既存のエンドポイントの推論レコメンデーションを取得する

推論レコメンデーションジョブは、レコメンデーションインスタンスタイプおよび既存のエンドポイントに対して一連のロードテストを実行します。推論レコメンデーションジョブでは、モデルバージョンの登録時に指定したサンプルデータを使用したロードテストに基づくパフォーマンスメトリクスを使用します。

既存の推論エンドポイントをベンチマークして SageMaker 推論レコメンデーションを取得することで、エンドポイントのパフォーマンスを向上させることができます。既存の SageMaker 推論エンドポイントのレコメンデーションを取得する手順は、エンドポイントなしで推論レコメンデーションを取得する手順と似ています。既存のエンドポイントをベンチマークする際に注意すべき機能の除外事項がいくつかあります。

  • 既存のエンドポイントは、Inference Recommender ジョブごとに 1 つしか使用できません。

  • エンドポイントで設定できるバリアントは 1 つだけです。

  • 自動スケーリングを有効にするエンドポイントは使用できません。

  • この機能はリアルタイム推論でのみサポートされています。

  • この機能はリアルタイムマルチモデルエンドポイントをサポートしていません。

警告

Inference Recommender ジョブは、ライブトラフィックを処理するプロダクションエンドポイントでは実行しないことを強くお勧めします。ベンチマーク中の合成負荷はプロダクションエンドポイントに影響を及ぼし、スロットリングを引き起こしたり、ベンチマーク結果が不正確になったりする可能性があります。比較目的では、非本番環境または開発者向けエンドポイントを使用することをおすすめします。

以下のセクションでは、Amazon SageMaker Inference Recommender を使用して、 for Python (Boto3) と を使用して AWS SDK、モデルタイプに基づいて既存のエンドポイントの推論レコメンデーションを作成する方法を示します AWS CLI。

注記

推論レコメンデーションジョブを作成する前に、前提条件が満たされていることを確認してください。

前提条件

SageMaker 推論エンドポイントがまだない場合は、エンドポイントなしで推論レコメンデーションを取得するか、「エンドポイントを作成してモデルをデプロイする」の手順に従ってリアルタイム推論エンドポイントを作成できます。

既存のエンドポイントの推論レコメンデーションジョブを作成する

AWS SDK for Python (Boto3)、、または を使用して、推論レコメンデーションをプログラムで作成します AWS CLI。モデルをモデルレジストリに登録したときARNの推論レコメンデーションのジョブ名、 AWS IAM既存の SageMaker 推論エンドポイントの名前、ロールARN、入力設定、およびモデルパッケージを指定します。

AWS SDK for Python (Boto3)

を使用して推論レコメンデーションCreateInferenceRecommendationsJobAPIを取得します。推論レコメンデーションジョブの JobType フィールドを 'Default' に設定します。さらに、以下を指定します。

  • JobName フィールドに Inference Recommender レコメンデーションジョブの名前を入力します。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。

  • Inference Recommender がユーザーに代わってタスクを実行できるようにする IAMロールの Amazon リソースネーム (ARN)。これを RoleArn フィールドで定義します。

  • モデルレジストリにモデルを登録したときに作成したバージョン管理されたモデルパッケージARNの 。これを InputConfig フィールドの ModelPackageVersionArn で定義します。

  • InputConfig フィールドで SageMaker Inference Recommender でベンチマークする既存の推論エンドポイントの名前Endpointsを指定します。

AWS SDK for Python (Boto3) パッケージをインポートし、 SageMaker クライアントクラスを使用してクライアントオブジェクトを作成します。「前提条件」セクションのステップに従った場合、モデルパッケージグループは という名前の変数に保存ARNされましたmodel_package_arn

# Create a low-level SageMaker service client. import boto3 aws_region = '<region>' sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn = '<model-package-arn>' # Provide a unique job name for SageMaker Inference Recommender job job_name = '<job-name>' # Inference Recommender job type. Set to Default to get an initial recommendation job_type = 'Default' # Provide an IAM Role that gives SageMaker Inference Recommender permission to # access AWS services role_arn = '<arn:aws:iam::<account>:role/*>' # Provide endpoint name for your endpoint that want to benchmark in Inference Recommender endpoint_name = '<existing-endpoint-name>' sagemaker_client.create_inference_recommendations_job( JobName = job_name, JobType = job_type, RoleArn = role_arn, InputConfig = { 'ModelPackageVersionArn': model_package_arn, 'Endpoints': [{'EndpointName': endpoint_name}] } )

に渡すことができるオプション引数と必須引数の完全なリストについては、「Amazon SageMaker API リファレンスガイド」を参照してくださいCreateInferenceRecommendationsJob

AWS CLI

を使用して、インスタンスエンドポイントのレコメンデーションcreate-inference-recommendations-jobAPIを取得します。job-type フィールドを、インスタンスエンドポイントのレコメンデーションジョブの 'Default' に設定します。さらに、以下を指定します。

  • job-name フィールドに Inference Recommender レコメンデーションジョブの名前を入力します。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。

  • Amazon SageMaker Inference Recommender がユーザーに代わってタスクを実行できるようにする IAMロールの Amazon リソースネーム (ARN)。これを role-arn フィールドで定義します。

  • Model Registry にモデルを登録したときに作成したバージョン管理されたモデルパッケージARNの 。これを input-config フィールドの ModelPackageVersionArn で定義します。

  • フィールドで SageMaker Inference Recommender でベンチマークする既存の推論エンドポイントの名前Endpointsinput-configを指定します。

aws sagemaker create-inference-recommendations-job --region <region>\ --job-name <job_name>\ --job-type Default\ --role-arn arn:aws:iam::<account:role/*>\ --input-config "{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region:account:role/*>\", \"Endpoints\": [{\"EndpointName\": <endpoint_name>}] }"

推論レコメンデーションジョブの結果を取得する

推論レコメンデーションジョブの結果は、標準的な推論レコメンデーションジョブと同じ手順でプログラムを使用して収集できます。詳細については、「推論レコメンデーションジョブの結果を取得する」を参照してください。

既存のエンドポイントの推論レコメンデーションジョブの結果を取得すると、次のようなJSONレスポンスが表示されます。

{ "JobName": "job-name", "JobType": "Default", "JobArn": "arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id", "RoleArn": "iam-role-arn", "Status": "COMPLETED", "CreationTime": 1664922919.2, "LastModifiedTime": 1664924208.291, "InputConfig": { "ModelPackageVersionArn": "arn:aws:sagemaker:region:account-id:model-package/resource-id", "Endpoints": [ { "EndpointName": "endpoint-name" } ] }, "InferenceRecommendations": [ { "Metrics": { "CostPerHour": 0.7360000014305115, "CostPerInference": 7.456940238625975e-06, "MaxInvocations": 1645, "ModelLatency": 171 }, "EndpointConfiguration": { "EndpointName": "sm-endpoint-name", "VariantName": "variant-name", "InstanceType": "ml.g4dn.xlarge", "InitialInstanceCount": 1 }, "ModelConfiguration": { "EnvironmentParameters": [ { "Key": "TS_DEFAULT_WORKERS_PER_MODEL", "ValueType": "string", "Value": "4" } ] } } ], "EndpointPerformances": [ { "Metrics": { "MaxInvocations": 184, "ModelLatency": 1312 }, "EndpointConfiguration": { "EndpointName": "endpoint-name" } } ] }

最初の数行には、推論レコメンデーションジョブ自体に関する情報が示されています。これには、ジョブ名、ロール ARN、作成時刻と最新の変更時刻が含まれます。

InferenceRecommendations ディクショナリには、Inference Recommender 推論レコメンデーションのリストが含まれています。

EndpointConfiguration ネストされたディクショナリには、インスタンスタイプ (InstanceType) のレコメンデーションと、レコメンデーションジョブ中に使用されたエンドポイントとバリアント名 (デプロイされた AWS 機械学習モデル) が含まれます。

Metrics ネストされたディクショナリには、リアルタイムエンドポイントの 1 時間あたりの推定コスト (CostPerHour)、リアルタイムエンドポイントの推論あたりの推定コスト (CostPerInference)、エンドポイントに送信される 1 分あたりの予想最大InvokeEndpointリクエスト数 (MaxInvocations)、およびモデルModelLatencyが に応答するためにかかった間隔 (ミリ秒) に関する情報が含まれています SageMaker。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。

EndpointPerformances のネストされたディクショナリには、レコメンデーションジョブが実行された既存のエンドポイントの名前 (EndpointName) とエンドポイントのパフォーマンスメトリクス (MaxInvocationsModelLatency) が含まれています。

インスタンスエンドポイントのレコメンデーションを停止する

ジョブを誤って開始した場合や、ジョブを実行する必要がなくなった場合は、現在実行中のジョブを停止できます。Inference Recommender レコメンデーションジョブは、標準の推論レコメンデーションジョブと同じ手順でプログラムで停止できます。詳細については、「推論レコメンデーションを停止する」を参照してください。