翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
前提条件
注記
AWS SDK for Python (Boto3)、、または SageMaker コンソールを使用してモデルをコンパイルする場合は AWS CLI、このセクションの手順に従います。
SageMaker Neo コンパイルモデルを作成するには、以下が必要です。
-
Docker イメージ Amazon ECR URI。こちらのリストから、ニーズに合ったものを選択できます。
-
エントリポイントスクリプトファイル
-
PyTorch および MXNetモデルの場合:
を使用してモデルをトレーニングした場合 SageMaker、トレーニングスクリプトは以下で説明する関数を実装する必要があります。トレーニングスクリプトは推論時にエントリポイントスクリプトとして機能します。TrainingMNIST、Compilation、Deployment with MXNet Module および SageMaker Neo
に詳述されている例では、トレーニングスクリプト ( mnist.py
) は必要な関数を実装します。を使用してモデルをトレーニングしなかった場合 SageMakerは、推論時に使用できるエントリポイントスクリプト (
inference.py
) ファイルを指定する必要があります。フレームワーク、MXNetまたは に基づいて PyTorch、推論スクリプトの場所は、 の SageMaker Python SDKモデルディレクトリ構造または のモデルディレクトリ構造 PyTorchに準拠している必要があります。 MxNet Neo Inference Optimized Container イメージを PyTorch および GPUインスタンスタイプMXNetCPUで使用する場合、推論スクリプトは次の関数を実装する必要があります。
-
model_fn
: モデルをロードします。(オプション) -
input_fn
: 受信リクエストペイロードを numpy 配列に変換します。 -
predict_fn
: 予測を実行します。 -
output_fn
: 予測出力をレスポンスペイロードに変換します。 -
または、
transform_fn
を定義して、input_fn
、predict_fn
、output_fn
を結合します。
以下は、 および
code
(Gluon と Modulecode/inference.py
) の () という名前のディレクトリ内のinference.py
スクリプトの例です。 PyTorch MXNet この例では、まずモデルをロードし、次に の画像データでモデルを提供しますGPU。 -
-
inf1 インスタンスまたは ONNX、XGBoost、Keras のコンテナイメージの場合
その他のすべての Neo 推論最適化コンテナイメージ、または Inferentia インスタンスタイプの場合、エントリポイントスクリプトには次の Neo Deep Learning Runtime 用の関数を実装する必要があります。
-
neo_preprocess
: 受信リクエストペイロードを numpy 配列に変換します。 -
neo_postprocess
: Neo Deep Learning Runtime の予測出力をレスポンス本体に変換します。注記
上記の 2 つの関数は、MXNet、 PyTorch、または の機能を使用しません TensorFlow。
これらの関数の使用例については、「Neo モデルコンパイルサンプルノートブック」を参照してください。
-
-
TensorFlow モデルの場合
モデルにデータを送信する前にモデルに前処理および後処理のカスタムロジックが必要である場合は、推論時に使えるエントリポイントスクリプト (
inference.py
) ファイルを指定する必要があります。スクリプトにはinput_handler
関数とoutput_handler
関数のペア、または単一のハンドラ関数のどちらかを実装します。注記
ハンドラ関数が実装されている場合、
input_handler
とoutput_handler
は無視されます。以下の
inference.py
スクリプトのコード例は、コンパイルモデルと合わせて、イメージ分類モデルに対するカスタムの前処理および後処理を実行するものです。 SageMaker クライアントはイメージファイルをapplication/x-image
コンテンツタイプとしてinput_handler
関数に送信し、そこで に変換されますJSON。変換されたイメージファイルは、 を使用して Tensorflow Model Server (TFX)REST に送信されますAPI。 import json import numpy as np import json import io from PIL import Image def input_handler(data, context): """ Pre-process request input before it is sent to TensorFlow Serving REST API Args: data (obj): the request data, in format of dict or string context (Context): an object containing request and configuration details Returns: (dict): a JSON-serializable dict that contains request body and headers """ f = data.read() f = io.BytesIO(f) image = Image.open(f).convert('RGB') batch_size = 1 image = np.asarray(image.resize((512, 512))) image = np.concatenate([image[np.newaxis, :, :]] * batch_size) body = json.dumps({"signature_name": "serving_default", "instances": image.tolist()}) return body def output_handler(data, context): """Post-process TensorFlow Serving output before it is returned to the client. Args: data (obj): the TensorFlow serving response context (Context): an object containing request and configuration details Returns: (bytes, string): data to return to client, response content type """ if data.status_code != 200: raise ValueError(data.content.decode('utf-8')) response_content_type = context.accept_header prediction = data.content return prediction, response_content_type
カスタムの前処理または後処理がない場合、 SageMaker クライアントはファイルイメージを SageMaker エンドポイントに送信する前にJSON、同様の方法で に変換します。
詳細については、 SageMaker Python の TensorFlow 「サービスエンドポイントへのデプロイSDK
」を参照してください。
-
-
コンパイルされたモデルアーティファクトURIを含む Amazon S3 バケット。