Führen Sie Folgendes aus:Echtzeitvoraussagen with eine Inferenz-Pipeline - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Führen Sie Folgendes aus:Echtzeitvoraussagen with eine Inferenz-Pipeline

Sie können geschulte Modelle in einer Inferenz-Pipeline verwenden, um Echtzeit-Prognosen direkt ohne externe Vorverarbeitung durchzuführen. Wenn Sie die Pipeline konfigurieren, können Sie wählen, ob Sie dieintegrierte FunktionstransformatorenIn Amazon SageMaker bereits verfügbar. Sie können auch Ihre eigene Transformationslogik mit nur wenigen Zeilen von Scikit-learn- oder Spark-Code implementieren.

mLeapunterstützt Spark, scikit-learn und eine Ausführungs-Engine für ML-Pipelines, unterstützt Spark, scikit-learn und TensorFlow Für das Training von Pipelines sowie den Export der Pipelines in eine serialisierte Pipeline, die als MLeap Bundle bezeichnet wird. Bundles können für die Stapelmodusbewertung zurück in Spark oder für Echtzeit-API-Services in die MLeap-Laufzeit deserialisiert werden.

Die Container in einer Pipeline überwacht den in der Umgebungsvariable SAGEMAKER_BIND_TO_PORT angegebenen Port (anstelle von 8080). Wenn Sie in einer Inferenz-Pipeline laufen,SageMaker stellt diese Umgebungsvariable automatisch an Container bereit. Wenn diese Umgebungsvariable nicht vorhanden ist, verwenden Container standardmäßig Port 8080. Verwenden Sie den folgenden Befehl zum Hinzufügen einer Kennzeichnung zu Ihrem Dockerfile, um anzuzeigen, dass Ihr Container diese Anforderung erfüllt.

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

Wenn Ihr Container benötigtum an einem zweiten Port zu hören, Wählen Sie einen Port im Bereich aus, der durchSAGEMAKER_SAFE_PORT_RANGEUmgebungsvariable. Geben Sie den Wert als inklusiven Bereich im Format an"XXXX-YYYY", wobeiXXXXundYYYYsind mehrstellige Ganzzahlen. SageMaker gibt diesen Wert automatisch an, wenn Sie den Container in einer Multicontainer-Pipeline ausführen.

Anmerkung

So verwenden Sie benutzerdefinierte Docker-Abbilder in einer Pipeline mitSageMaker integrierte -Algorithmen, benötigen Sie eineAmazon Elastic Container Registry (Amazon ECR) -Richtlinieaus. Ihr Amazon ECR-Repository muss SageMaker die Berechtigung zum Abrufen des Abbilds erteilen. Weitere Informationen finden Sie unter Beheben von Problemen mit Amazon ECR-Berechtigungen für Inferenz-Pipelines .

Erstellen und Bereitstellen eines Inferenz-Pipeline-Endpunkts

Der folgende Code erstellt und implementiert ein Echtzeit-Inferenz-Pipeline-Modell mit SparkML- und XGBoost-Modellen in Serie mit der 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)

Aufruf von Echtzeit-Inferenz von einem Inferenz-Pipeline-Endpunkt

Das folgende Beispiel zeigt, wie Echtzeit-Prognosen erstellt werden, indem einInferenz-Endpunkt und Übergeben einer Anfragenutzlast im JSON-Format:

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))

Die Antwort, die Sie von predictor.predict(payload) erhalten, ist das Inferenzergebnis des Modells.

Beispiel für eine Echtzeit-Inferenz-Pipeline

Sie können dieses Beispiel-Notebook mit dem SKLearn-Predictor ausführen, der zeigt, wie Sie einen Endpunkt bereitstellen, eine Inferenzanforderung ausführen und die Antwort deserialisieren. Dieses Notebook und weitere Beispiele finden Sie in denAmazon SageMaker Beispiel GitHub Endlageraus.