

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

# 既存のエンドポイントの推論レコメンデーションを取得する
<a name="inference-recommender-existing-endpoint"></a>

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

既存の SageMaker AI Inference エンドポイントをベンチマークして推論レコメンデーションを取得し、エンドポイントのパフォーマンスを向上させるのに役立てることができます。既存の SageMaker AI Inference エンドポイントのレコメンデーションを取得する手順は、エンドポイントを作成せずに[推論レコメンデーションを取得する](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-instance-recommendation.html)手順と似ています。既存のエンドポイントをベンチマークする際に注意すべき機能の除外事項がいくつかあります。
+ 既存のエンドポイントは、Inference Recommender ジョブごとに 1 つしか使用できません。
+ エンドポイントで設定できるバリアントは 1 つだけです。
+ 自動スケーリングを有効にするエンドポイントは使用できません。
+ この機能は[リアルタイム推論](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html)でのみサポートされています。
+ この機能は[リアルタイムマルチモデルエンドポイント](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html)をサポートしていません。

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

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

**注記**  
推論レコメンデーションジョブを作成する前に、[Amazon SageMaker Inference Recommender を使用するための前提条件](inference-recommender-prerequisites.md)が満たされていることを確認してください。

## 前提条件
<a name="inference-recommender-existing-endpoint-prerequisites"></a>

SageMaker AI Inference エンドポイントをまだ作成していない場合は、エンドポイント作成せずに[推論レコメンデーションを取得](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-instance-recommendation.html)するか、「[エンドポイントを作成し、モデルをデプロイする](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html)」の手順に従ってリアルタイム推論エンドポイントを作成します。

## 既存のエンドポイントの推論レコメンデーションジョブを作成する
<a name="inference-recommender-existing-endpoint-create"></a>

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

------
#### [ AWS SDK for Python (Boto3) ]

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html) API を使用して推論レコメンデーションジョブを取得します。推論レコメンデーションジョブの `JobType` フィールドを `'Default'` に設定します。さらに、以下を指定します。
+ `JobName` フィールドに Inference Recommender レコメンデーションジョブの名前を入力します。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。
+ Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを `RoleArn` フィールドで定義します。
+ モデルをモデルレジストリに登録したときに作成したバージョン管理されたモデルパッケージの ARN。これを `InputConfig` フィールドの `ModelPackageVersionArn` で定義します。
+ `InputConfig` フィールドに Inference Recommender の `Endpoints` をベンチマークする既存の SageMaker AI 推論エンドポイントの名前を指定します。

 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}]
    }
)
```

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html) に渡すことができるオプションの引数と必須の引数の完全なリストについては、[Amazon SageMaker API リファレンスガイド](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html)を参照してください。

------
#### [ AWS CLI ]

`create-inference-recommendations-job` API を使用してインスタンスエンドポイントのレコメンデーションを取得します。`job-type` フィールドを、インスタンスエンドポイントのレコメンデーションジョブの `'Default'` に設定します。さらに、以下を指定します。
+ `job-name` フィールドに Inference Recommender レコメンデーションジョブの名前を入力します。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。
+ Amazon SageMaker Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを `role-arn` フィールドで定義します。
+ モデルをモデルレジストリに登録したときに作成したバージョン管理されたモデルパッケージの ARN。これを `input-config` フィールドの `ModelPackageVersionArn` で定義します。
+ `input-config` フィールドに Inference Recommender の `Endpoints` をベンチマークする既存の SageMaker AI 推論エンドポイントの名前を指定します。

```
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>}]
        }"
```

------

## 推論レコメンデーションジョブの結果を取得する
<a name="inference-recommender-existing-endpoint-results"></a>

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

既存のエンドポイントの推論レコメンデーションジョブの結果を取得すると、次のような 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`) (USD)、リアルタイムエンドポイントの推論あたりの推定コスト (`CostPerInference`) (USD)、エンドポイントに送信される `InvokeEndpoint` リクエストの 1 分あたりの最大数 (`MaxInvocations`)、モデルが SageMaker AI に応答するのにかかった時間間隔 (ミリ秒単位) である、モデルのレイテンシー (`ModelLatency`) に関する情報が含まれています。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。

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