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

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

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

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

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

パイプラインのコンテナは、(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許可のトラブルシューティング」を参照してください。

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

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

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 リポジトリ にあります。