推論パイプラインでリアルタイム予測を実行する - Amazon SageMaker

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

推論パイプラインでリアルタイム予測を実行する

トレーニングされたモデルは、外部の事前処理なしに直接リアルタイム予測を行うための推論パイプラインで使用することができます。パイプラインを設定するときに、Amazon で既に利用可能な組み込みの機能トランスフォーマーを使用することを選択できます SageMaker。または、数行の scikit-learn または Spark コードのみを使用して、独自の変換ロジックを実装できます。

機械学習パイプラインのシリアル化形式および実行エンジンである MLeap は、パイプラインをトレーニングし、MLeap バンドルと呼ばれるシリアル化されたパイプラインにエクスポート TensorFlow するために、Spark、scikit-learn、および をサポートします。バンドルは、バッチモードスコアリングのために Spark に逆シリアル化したり、リアルタイム API サービスに使用するために MLeap ランタイムに逆シリアル化したりできます。

パイプラインのコンテナは、(8080 ではなく) SAGEMAKER_BIND_TO_PORT 環境変数で指定されたポートでリッスンします。推論パイプラインで を実行すると、 はこの環境変数 SageMaker を自動的にコンテナに提供します。この環境変数が存在しない場合、コンテナではデフォルトでポート 8080 が使用されます。コンテナがこの要件に準拠していることを示すには、次のコマンドを使用して Dockerfile にラベルを追加します。

LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true

コンテナが 2 番目のポートをリッスンする必要がある場合は、SAGEMAKER_SAFE_PORT_RANGE 環境変数で指定された範囲内のポートを選択してください。値を 形式で包括的範囲として指定します。ここで"XXXX-YYYY"XXXXYYYYは複数桁の整数です。 は、複数コンテナパイプラインでコンテナを実行するときにこの値を自動的に SageMaker 提供します。

注記

SageMaker 組み込みアルゴリズム を含むパイプラインでカスタム Docker イメージを使用するには、Amazon Elastic Container Registry (Amazon ECR) ポリシー が必要です。Amazon ECR リポジトリは、イメージをプルするアクセス許可を付与 SageMakerする必要があります。詳細については、「推論パイプラインの Amazon ECR アクセス許可のトラブルシューティングを行う」を参照してください。

推論パイプラインエンドポイントの作成とデプロイ

次のコードは、 SageMaker SDK を使用して、SparkML モデルと XGBoost モデルを使用してリアルタイム推論パイプラインモデルを連続して作成してデプロイします。

from sagemaker.model import Model from sagemaker.pipeline_model import PipelineModel from sagemaker.sparkml.model import SparkMLModel sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz') sparkml_model = SparkMLModel(model_data=sparkml_data) xgb_model = Model(model_data=xgb_model.model_data, image=training_image) model_name = 'serial-inference-' + timestamp_prefix endpoint_name = 'serial-inference-ep-' + timestamp_prefix sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model]) sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

推論パイプラインエンドポイントからのリアルタイムの推論リクエスト

次のコード例は、推論エンドポイントを呼び出して JSON 形式のリクエストペイロードを渡すことによって、リアルタイムの予測を行う方法を示しています。

import sagemaker from sagemaker.predictor import json_serializer, json_deserializer, Predictor payload = { "input": [ { "name": "Pclass", "type": "float", "val": "1.0" }, { "name": "Embarked", "type": "string", "val": "Q" }, { "name": "Age", "type": "double", "val": "48.0" }, { "name": "Fare", "type": "double", "val": "100.67" }, { "name": "SibSp", "type": "double", "val": "1.0" }, { "name": "Sex", "type": "string", "val": "male" } ], "output": { "name": "features", "type": "double", "struct": "vector" } } predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer, content_type='text/csv', accept='application/json' print(predictor.predict(payload))

predictor.predict(payload) から得るレスポンスは、モデルの推論結果です。

リアルタイム推論パイプラインの例

エンドポイントをデプロイし、推論リクエストを実行し、レスポンスを逆シリアル化する方法を示す SKLearn 予測子を使用して、この例のノートブックを実行できます。このノートブックとその他の例は、Amazon SageMaker サンプル GitHub リポジトリ にあります。