

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

# Neo でコンパイル済みのレコメンデーション
<a name="inference-recommender-neo-compilation"></a>

Inference Recommender では、Neo を使用してモデルをコンパイルし、コンパイルしたモデルのエンドポイントのレコメンデーションを取得できます。[SageMaker Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) は、ターゲットハードウェアプラットフォーム (つまり、特定のインスタンスタイプまたは環境) に合わせてモデルを最適化できるサービスです。Neo でモデルを最適化すると、ホストモデルのパフォーマンスが向上する場合があります。

NEO がサポートするフレームワークとコンテナの場合、Inference Recommender により NEO 最適化レコメンデーションが自動的に提案されます。Neo コンパイルを利用するには、入力が次の前提条件を満たす必要があります。
+ SageMaker AI が所有する [DLC](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html) または XGBoost コンテナを使用している。
+ Neo がサポートするフレームワークバージョンを使用している。Neo がサポートするフレームワークバージョンについては、SageMaker Neo ドキュメントの「[クラウドインスタンス](neo-supported-cloud.md#neo-supported-cloud-instances)」を参照してください。
+ Neo では、モデルに適した入力データ形状を指定する必要がある。このデータ形状は、モデルパッケージの作成時に `[InferenceSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-InferenceSpecification)` で `[DataInputConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelInput.html#sagemaker-Type-ModelInput-DataInputConfig)` として指定できます。各フレームワークに適したデータ形状については、SageMaker Neo ドキュメントの「[コンパイルに向けてモデルを準備する](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-compilation-preparing-model.html)」を参照してください。

  次の例は、`InferenceSpecification` で `DataInputConfig` フィールドを指定する方法を示しています。ここで、`data_input_configuration` はディクショナリ形式のデータ形状を含む変数 (例: `{'input':[1,1024,1024,3]}`) です。

  ```
  "InferenceSpecification": {
          "Containers": [
              {
                  "Image": dlc_uri,
                  "Framework": framework.upper(),
                  "FrameworkVersion": framework_version,
                  "NearestModelName": model_name,
                  "ModelInput": {"DataInputConfig": data_input_configuration},
              }
          ],
          "SupportedContentTypes": input_mime_types,  # required, must be non-null
          "SupportedResponseMIMETypes": [],
          "SupportedRealtimeInferenceInstanceTypes": supported_realtime_inference_types,  # optional
      }
  ```

リクエストでこれらの条件が満たされると、Inference Recommender によってモデルのコンパイル済みバージョンとコンパイルされていないバージョンの両方に対してシナリオが実行され、複数のレコメンデーションの組み合わせを選択できるようになります。同じ推論レコメンデーションのコンパイル済みバージョンとコンパイルされていないバージョンの構成を比較して、ユースケースに最適なバージョンを特定できます。レコメンデーションは、推論あたりのコストによってランク付けされています。

Neo コンパイルのレコメンデーションを取得するには、入力が上記の要件を満たしていることを確認するだけで、追加の設定を行う必要はありません。入力が要件を満たしている場合、Inference Recommender はモデルに対して Neo コンパイルを自動的に実行し、Neo のレコメンデーションを含むレスポンスを受け取ります。

Neo のコンパイル中にエラーが発生した場合は、「[Neo のコンパイルエラーをトラブルシューティングする](neo-troubleshooting-compilation.md)」を参照してください。

以下の表は、コンパイル済みモデルのレコメンデーションを含む Inference Recommender ジョブから返される可能性のあるレスポンスの例です。`InferenceSpecificationName` フィールドが `None` の場合、レコメンデーションはコンパイルされていないモデルです。**InferenceSpecificationName** フィールドの値が `neo-00011122-2333-4445-5566-677788899900` の場合、最後の行は Neo でコンパイルされたモデル用です。フィールドの値は、モデルのコンパイルと最適化に使用される Neo ジョブの名前です。


| EndpointName | InstanceType | InitialInstanceCount | EnvironmentParameters | CostPerHour | CostPerInference | MaxInvocations | ModelLatency | InferenceSpecificationName | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| sm-epc-example-000111222 | ml.c5.9xlarge | 1 | [] | 1.836 | 9.15E-07 | 33456 | 7 | なし | 
| sm-epc-example-111222333 | ml.c5.2xlarge | 1 | [] | 0.408 | 2.11E-07 | 32211 | 21 | なし | 
| sm-epc-example-222333444 | ml.c5.xlarge | 1 | [] | 0.204 | 1.86E-07 | 18276 | 92 | なし | 
| sm-epc-example-333444555 | ml.c5.xlarge | 1 | [] | 0.204 | 1.60E-07 | 21286 | 42 | neo-00011122-2333-4445-5566-677788899900 | 

## はじめに
<a name="inference-recommender-neo-compilation-get-started"></a>

NEO 最適化レコメンデーションを含む Inference Recommender ジョブを作成する一般的な手順は次のとおりです。
+ コンパイルに向けて機械学習モデルを準備します。詳細については、Neo ドキュメントの「[コンパイルに向けてモデルを準備する](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-compilation-preparing-model.html)」を参照してください。
+ モデルをモデルアーカイブ (`.tar.gz` ファイル) にパッケージ化します。
+ サンプルペイロードアーカイブを作成します。
+ モデルを SageMaker モデルレジストリに登録します。
+ Inference Recommender を作成します。
+ Inference Recommender ジョブの結果を表示し、構成を選択します。
+ コンパイルに失敗した場合は、デバッグします。詳細については、「[Neo のコンパイルエラーをトラブルシューティングする](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html)」を参照してください。

前述のワークフローと、XGBoost を使用して NEO 最適化レコメンデーションを取得する方法を示す例については、以下の[サンプルノートブック](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/xgboost/xgboost-inference-recommender.ipynb)を参照してください。TensorFlow を使用して NEO 最適化レコメンデーションを取得する方法を示す例については、以下の[サンプルノートブック](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/inference-recommender.ipynb)を参照してください。