Runリアルタイム予測w推論パイプライン - Amazon SageMaker

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

Runリアルタイム予測w推論パイプライン

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

機械学習パイプライン用のシリアル化形式および実行エンジンである MLeap は、パイプラインのトレーニングと、MLeap Bundle と呼ばれるシリアル化されたパイプラインへのエクスポートのため、Spark、scikit-learn、および TensorFlow をサポートしています。バンドルは、バッチモードスコアリングのために 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"となる。ここで、XXXXおよびYYYYは複数桁の整数です。SageMaker は、マルチコンテナパイプラインでコンテナを実行するときに、この値を自動的に提供します。

注記

パイプラインでカスタム Docker イメージを使用するにはSageMaker 組み込みアルゴリズムを使用するには、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 リポジトリ例