翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
推論パイプラインでリアルタイム予測を実行する
トレーニングされたモデルは、外部の事前処理なしに直接リアルタイム予測を行うための推論パイプラインで使用することができます。パイプラインを設定するときに、Amazon SageMaker AI で既に利用可能な組み込み機能トランスフォーマーを使用することを選択できます。または、数行の scikit-learn または Spark コードのみを使用して、独自の変換ロジックを実装できます。
機械学習パイプライン用のシリアル化形式および実行エンジンである MLeap
パイプラインのコンテナは、(8080 ではなく) SAGEMAKER_BIND_TO_PORT
環境変数で指定されたポートでリッスンします。推論パイプラインで を実行すると、SageMaker AI は自動的にこの環境変数をコンテナに提供します。この環境変数が存在しない場合、コンテナではデフォルトでポート 8080 が使用されます。コンテナがこの要件に準拠していることを示すには、次のコマンドを使用して Dockerfile にラベルを追加します。
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
コンテナが 2 番目のポートをリッスンする必要がある場合は、SAGEMAKER_SAFE_PORT_RANGE
環境変数で指定された範囲内のポートを選択してください。"XXXX-YYYY"
の形式の包含範囲として値を指定します。ここで、XXXX
と YYYY
は複数桁の整数です。マルチコンテナパイプラインでコンテナを実行すると、SageMaker AI はこの値を自動的に提供します。
注記
SageMaker AI 組み込みアルゴリズムを含むパイプラインでカスタム Docker イメージを使用するには、Amazon Elastic Container Registry (Amazon ECR) ポリシーが必要です。Amazon ECR リポジトリは、イメージをプルするアクセス許可を SageMaker AI に付与する必要があります。詳細については、「推論パイプラインの Amazon ECR アクセス許可のトラブルシューティングを行う」を参照してください。
推論パイプラインエンドポイントの作成とデプロイ
次のコードは、SageMaker AI 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 予測子を使用して、この例のノートブック