

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

# 推論レコメンデーションを作成する
<a name="instance-recommendation-create"></a>

 AWS SDK for Python (Boto3) または を使用してプログラムで推論レコメンデーションを作成するか AWS CLI、Studio Classic または SageMaker AI コンソールを使用してインタラクティブに推論レコメンデーションを作成します。モデルをモデルレジストリに登録するときに推論レコメンデーションのジョブ名、IAM AWS ロール ARN、入力設定、モデルパッケージ ARN、または**前提条件**セクションでモデルを作成したときのモデル名と`ContainerConfig`ディクショナリを指定します。

------
#### [ 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'` に設定します。さらに、以下を指定します。
+ Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを `RoleArn` フィールドで定義します。
+ モデルパッケージ ARN またはモデル名。Inference Recommender は、1 つのモデルパッケージ ARN またはモデル名を入力としてサポートします。次のいずれかを指定します。
  + モデルを SageMaker AI モデルレジストリに登録したときに作成したバージョン管理されたモデルパッケージの ARN。これを `InputConfig` フィールドの `ModelPackageVersionArn` で定義します。
  + 作成したモデルの名前。これを `InputConfig` フィールドの `ModelName` で定義します。モデル名で指定する必要がある必須フィールドを含む `ContainerConfig` ディクショナリも指定します。これを `InputConfig` フィールドの `ContainerConfig` で定義します。`ContainerConfig` では、オプションで `SupportedEndpointType` フィールドを `RealTime` または `Serverless` として指定することもできます。このフィールドを指定した場合は、Inference Recommender ではそのエンドポイントタイプについてのみ、レコメンデーションを返します。このフィールドを指定しない場合は、Inference Recommender では両方のエンドポイントタイプについて、レコメンデーションを返します。
+ `JobName` フィールドの Inference Recommender レコメンデーションジョブの名前。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。

 AWS SDK for Python (Boto3) パッケージをインポートし、 クライアントクラスを使用して SageMaker AI クライアントオブジェクトを作成します。「**前提条件**」セクションの手順に従った場合、次のうちの 1 つだけを指定してください。
+ オプション 1: モデルパッケージ ARN を使用して推論レコメンデーションジョブを作成する場合は、モデルパッケージグループ ARN を `model_package_arn` という名前の変数に保存します。
+ オプション 2: モデル名と `ContainerConfig` を使用して推論レコメンデーションジョブを作成し、モデル名を `model_name` という名前の変数に保存して、`ContainerConfig` ディクショナリを `container_config` という名前の変数に格納します。

```
# Create a low-level SageMaker service client.
import boto3
aws_region = '<INSERT>'
sagemaker_client = boto3.client('sagemaker', region_name=aws_region) 

# Provide only one of model package ARN or model name, not both.
# Provide your model package ARN that was created when you registered your 
# model with Model Registry 
model_package_arn = '<INSERT>'
## Uncomment if you would like to create an inference recommendations job with a
## model name instead of a model package ARN, and comment out model_package_arn above
## Provide your model name
# model_name = '<INSERT>'
## Provide your container config 
# container_config = '<INSERT>'

# Provide a unique job name for SageMaker Inference Recommender job
job_name = '<INSERT>'

# 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/*'

sagemaker_client.create_inference_recommendations_job(
    JobName = job_name,
    JobType = job_type,
    RoleArn = role_arn,
    # Provide only one of model package ARN or model name, not both. 
    # If you would like to create an inference recommendations job with a model name,
    # uncomment ModelName and ContainerConfig, and comment out ModelPackageVersionArn.
    InputConfig = {
        'ModelPackageVersionArn': model_package_arn
        # 'ModelName': model_name,
        # 'ContainerConfig': container_config
    }
)
```

[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'` に設定します。さらに、以下を指定します。
+ Amazon SageMaker Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを `role-arn` フィールドで定義します。
+ モデルパッケージ ARN またはモデル名。Inference Recommender は、1 つのモデルパッケージ ARN またはモデル名を入力としてサポートします。次のいずれかを指定します。
  + モデルをモデルレジストリに登録したときに作成したバージョン管理されたモデルパッケージの ARN。これを `input-config` フィールドの `ModelPackageVersionArn` で定義します。
  + 作成したモデルの名前。これを `input-config` フィールドの `ModelName` で定義します。モデル名で指定する必要がある必須フィールドを含む `ContainerConfig` ディクショナリも指定します。これを `input-config` フィールドの `ContainerConfig` で定義します。`ContainerConfig` では、オプションで `SupportedEndpointType` フィールドを `RealTime` または `Serverless` として指定することもできます。このフィールドを指定した場合は、Inference Recommender ではそのエンドポイントタイプについてのみ、レコメンデーションを返します。このフィールドを指定しない場合は、Inference Recommender では両方のエンドポイントタイプについて、レコメンデーションを返します。
+ `job-name` フィールドの Inference Recommender レコメンデーションジョブの名前。Inference Recommender ジョブ名は、 AWS リージョン内およびアカウント AWS 内で一意である必要があります。

モデルパッケージ ARN を使用して推論レコメンデーションジョブを作成するには、次の例を使用します。

```
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/*>\",
        }"
```

モデル名と `ContainerConfig` を使用して推論レコメンデーションジョブを作成するには、次の例を使用します。この例では、`SupportedEndpointType` フィールドを使用して、リアルタイムの推論レコメンデーションのみを返すように指定しています。

```
aws sagemaker create-inference-recommendations-job 
    --region <region>\
    --job-name <job_name>\
    --job-type Default\
    --role-arn arn:aws:iam::<account:role/*>\
    --input-config "{
        \"ModelName\": \"model-name\",
        \"ContainerConfig\" : {
                \"Domain\": \"COMPUTER_VISION\",
                \"Framework\": \"PYTORCH\",
                \"FrameworkVersion\": \"1.7.1\",
                \"NearestModelName\": \"resnet18\",
                \"PayloadConfig\": 
                    {
                        \"SamplePayloadUrl\": \"s3://{bucket}/{payload_s3_key}\", 
                        \"SupportedContentTypes\": [\"image/jpeg\"]
                    },
                \"SupportedEndpointType\": \"RealTime\",
                \"DataInputConfig\": \"[[1,3,256,256]]\",
                \"Task\": \"IMAGE_CLASSIFICATION\",
            },
        }"
```

------
#### [ Amazon SageMaker Studio Classic ]

Studio Classic で推論レコメンデーションジョブを作成します。

1. Studio Classic アプリケーションで、ホームアイコン (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/studio/icons/house.png)) を選択します。

1. Studio Classic の左側のサイドバーで **[モデル]** を選択します。

1. ドロップダウンリストから **[モデルレジストリ]** を選択し、モデルレジストリに登録したモデルを表示します。

   左側のパネルに、モデルグループのリストが表示されます。リストには、Studio Classic 以外で登録されたモデルを含む、アカウントのモデルレジストリに登録されているすべてのモデルグループが含まれます。

1. モデルグループの名前を選択します。モデルグループを選択すると、Studio Classic の右ペインに、**[バージョン]** や **[設定]** などの列見出しが表示されます。

   モデルグループ内に 1 つ以上のモデルパッケージがある場合は、それらのモデルパッケージのリストが **[バージョン]** 列に表示されます。

1. **[Inference Recommender]** 列を選択します。

1. Inference Recommender に AWS サービスへのアクセス許可を付与する IAM ロールを選択します。これを行うには、ロールを作成し、`AmazonSageMakerFullAccess` IAM マネージドポリシーをアタッチします。または、Studio Classic にロールを作成させることもできます。

1. **[レコメンデーションの取得]** を選択します。

   推論レコメンデーションには、最大 45 分かかることがあります。
**警告**  
このタブを閉じないでください。このタブを閉じると、インスタンスのレコメンデーションジョブがキャンセルされます。

------
#### [ SageMaker AI console ]

次の手順を実行して、SageMaker AI コンソールからインスタンスレコメンデーションジョブを作成します。

1. SageMaker AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) に移動します。

1. 左側のナビゲーションペインで、**[推論]** を選択し、次に **[推論レコメンダー]** を選択します。

1. **[推論レコメンダージョブ]** ページで **[ジョブを作成]** を選択します。

1. **[ステップ 1: モデル設定]** で、以下の操作を行います。

   1. **[ジョブタイプ]** には、**[デフォルトのレコメンデーションジョブ]** を選択します。

   1. SageMaker AI モデルレジストリに登録されているモデルを使用する場合は、**[モデルレジストリからモデルを選択]** トグルをオンにして、以下の操作を行います。

      1. **[モデルグループ]** ドロップダウンリストから、モデルがある SageMaker AI モデルレジストリ内のモデルグループを選択します。

      1. **[モデルバージョン]** ドロップダウンリストから、目的のバージョンのモデルを選択します。

   1. SageMaker AI で作成したモデルを使用する場合は、**[モデルレジストリからモデルを選択]** トグルをオフにして、以下の操作を行います。

      1. **[モデル名]** フィールドには、SageMaker AI モデルの名前を入力します。

   1. **IAM ロール**ドロップダウンリストから、インスタンスレコメンデーションジョブを作成するために必要なアクセス許可を持つ既存の AWS IAM ロールを選択できます。または、既存のロールがない場合は、**[新しいロールの作成]** を選択してロール作成ポップアップを開くと、SageMaker AI によって作成した新しいロールに必要な権限が追加されます。

   1. **[ペイロードをベンチマークするための S3 バケット]** には、サンプルペイロードアーカイブへの Amazon S3 パスを入力します。これには、Inference Recommender がさまざまなインスタンスタイプでモデルをベンチマークするために使用するサンプルペイロードファイルが含まれている必要があります。

   1. **[ペイロードコンテンツタイプ]** には、サンプルペイロードデータの MIME タイプを入力します。

   1. (オプション) **[モデルレジストリからモデルを選択]** トグルをオフにし、SageMaker AI モデルを指定した場合は、**[コンテナの設定]** で以下の操作を行います。

      1. **[ドメイン]** ドロップダウンリストでは、コンピュータビジョン、自然言語処理、機械学習など、モデルの機械学習ドメインを選択します。

      1. **[フレームワーク]** ドロップダウンリストでは、TensorFlow や XGBoost など、コンテナのフレームワークを選択します。

      1. **[フレームワークバージョン]** には、コンテナイメージのフレームワークバージョンを入力します。

      1. **[最も近いモデル名]** ドロップダウンリストでは、自分のモデルと最もよく一致する事前トレーニング済みのモデルを選択します。

      1. **[タスク]** ドロップダウンリストでは、画像分類やリグレッションなど、モデルが実行する機械学習タスクを選択します。

   1. (オプション) **[SageMaker Neo を使用したモデルコンパイル]** では、SageMaker Neo を使用してコンパイルしたモデルのレコメンデーションジョブを設定できます。**[データ入力設定]** には、モデルに適した入力データ形状を `{'input':[1,1024,1024,3]}` のような形式で入力します。

   1. [**次へ**] を選択します。

1. **[ステップ 2: インスタンスと環境パラメータ]** では、以下の操作を行います。

   1. (オプション) **[ベンチマーキング用のインスタンスを選択]** では、ベンチマークするインスタンスタイプを最大 8 個選択できます。いずれのインスタンスも選択しない場合、Inference Recommender はすべてのインスタンスタイプを考慮します。

   1. [**次へ**] を選択します。

1. **[ステップ 3: ジョブパラメータ]** では、以下の操作を行います。

   1. (オプション) **[ジョブ名]** フィールドに、インスタンスレコメンデーションジョブの名前を入力します。ジョブを作成すると、SageMaker AI によってこの名前の末尾にタイムスタンプが追加されます。

   1. (オプション) **[ジョブの説明]** に、ジョブの説明を入力します。

   1. (オプション) **暗号化キー**ドロップダウンリストで、名前で AWS KMS キーを選択するか、ARN を入力してデータを暗号化します。

   1. (オプション) **[最大テスト時間]** には、各テストを実行する最大秒数を入力します。

   1. (オプション) **[1 分あたりの最大呼び出し数]** には、推奨ジョブを停止するまでにエンドポイントが到達できる 1 分あたりの最大リクエスト数を入力します。この制限に達すると、SageMaker AI はジョブを終了します。

   1. (オプション) **[P99 モデルレイテンシーのしきい値]** には、モデルレイテンシーのパーセンタイルをミリ秒単位で入力します。

   1. [**次へ**] を選択します。

1. **[ステップ 4: ジョブを確認]** では、設定を確認して **[送信]** を選択します。

------