翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
推論レコメンデーションジョブは、レコメンデーションインスタンスタイプおよび既存のエンドポイントに対して一連のロードテストを実行します。推論レコメンデーションジョブでは、モデルバージョンの登録時に指定したサンプルデータを使用したロードテストに基づくパフォーマンスメトリクスを使用します。
既存の SageMaker AI 推論エンドポイントの推論レコメンデーションをベンチマークして取得することで、エンドポイントのパフォーマンスを向上させることができます。既存の SageMaker AI 推論エンドポイントのレコメンデーションを取得する手順は、エンドポイントなしで推論レコメンデーションを取得する手順と似ています。既存のエンドポイントをベンチマークする際に注意すべき機能の除外事項がいくつかあります。
-
既存のエンドポイントは、Inference Recommender ジョブごとに 1 つしか使用できません。
-
エンドポイントで設定できるバリアントは 1 つだけです。
-
自動スケーリングを有効にするエンドポイントは使用できません。
-
この機能はリアルタイム推論でのみサポートされています。
-
この機能はリアルタイムマルチモデルエンドポイントをサポートしていません。
警告
Inference Recommender ジョブは、ライブトラフィックを処理するプロダクションエンドポイントでは実行しないことを強くお勧めします。ベンチマーク中の合成負荷はプロダクションエンドポイントに影響を及ぼし、スロットリングを引き起こしたり、ベンチマーク結果が不正確になったりする可能性があります。比較目的では、非本番環境または開発者向けエンドポイントを使用することをおすすめします。
以下のセクションでは、Amazon SageMaker Inference Recommender を使用して、 AWS SDK for Python (Boto3) と を使用してモデルタイプに基づいて既存のエンドポイントの推論レコメンデーションを作成する方法を示します AWS CLI。
注記
推論レコメンデーションジョブを作成する前に、Amazon SageMaker Inference Recommender を使用するための前提条件が満たされていることを確認してください。
前提条件
SageMaker AI 推論エンドポイントがない場合は、エンドポイントなしで推論レコメンデーションを取得するか、「エンドポイントを作成してモデルをデプロイする」の手順に従ってリアルタイム推論エンドポイントを作成できます。
既存のエンドポイントの推論レコメンデーションジョブを作成する
AWS SDK for Python (Boto3)または を使用して、プログラムで推論レコメンデーションを作成します AWS CLI。推論レコメンデーションのジョブ名、既存の SageMaker AI 推論エンドポイントの名前、IAM AWS ロール ARN、入力設定、モデルをモデルレジストリに登録したときのモデルパッケージ ARN を指定します。
CreateInferenceRecommendationsJob
API を使用して推論レコメンデーションジョブを取得します。推論レコメンデーションジョブの JobType
フィールドを 'Default'
に設定します。さらに、以下を指定します。
-
JobName
フィールドに Inference Recommender レコメンデーションジョブの名前を入力します。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。 -
Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを
RoleArn
フィールドで定義します。 -
モデルをモデルレジストリに登録したときに作成したバージョン管理されたモデルパッケージの ARN。これを
InputConfig
フィールドのModelPackageVersionArn
で定義します。 -
InputConfig
フィールドの Inference Recommender でベンチマークする既存の SageMaker AI 推論エンドポイントの名前Endpoints
を指定します。
AWS SDK for Python (Boto3) パッケージをインポートし、 クライアントクラスを使用して SageMaker AI クライアントオブジェクトを作成します。「前提条件」セクションのステップに従った場合、モデルパッケージグループ 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}]
}
)
CreateInferenceRecommendationsJob
に渡すことができるオプションの引数と必須の引数の完全なリストについては、Amazon SageMaker API リファレンスガイドを参照してください。
推論レコメンデーションジョブの結果を取得する
推論レコメンデーションジョブの結果は、標準的な推論レコメンデーションジョブと同じ手順でプログラムを使用して収集できます。詳細については、「推論レコメンデーションジョブの結果を取得する」を参照してください。
既存のエンドポイントの推論レコメンデーションジョブの結果を取得すると、次のような 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
ネストされたディクショナリには、レコメンデーションジョブ中に使用されたエンドポイントとバリアント名 (デプロイされた AWS 機械学習モデルInstanceType
) とともに、インスタンスタイプ () レコメンデーションが含まれます。
Metrics
ネストされたディクショナリには、リアルタイムエンドポイントの 1 時間あたりの推定コスト (CostPerHour
)、リアルタイムエンドポイントの推論あたりの推定コスト (CostPerInference
)、エンドポイントに送信される 1 分あたりの予想最大InvokeEndpoint
リクエスト数 (MaxInvocations
)、およびモデルが SageMaker AI に応答するのにかかった間隔 (ミリ秒単位ModelLatency
) であるモデルレイテンシー () に関する情報が含まれています。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。
EndpointPerformances
のネストされたディクショナリには、レコメンデーションジョブが実行された既存のエンドポイントの名前 (EndpointName
) とエンドポイントのパフォーマンスメトリクス (MaxInvocations
と ModelLatency
) が含まれています。