View a markdown version of this page

Führen Sie Real-time Prognosen mit einer Inferenz-Pipeline aus - Amazon SageMaker KI

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 Real-time Prognosen mit einer Inferenz-Pipeline aus

Sie können trainierte 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 die integrierten Funktionstransformatoren verwenden möchten, die bereits in Amazon SageMaker AI verfügbar sind. Sie können auch Ihre eigene Transformationslogik mit nur wenigen Zeilen von Scikit-learn- oder Spark-Code implementieren.

mLEAP, ein Serialisierungsformat und eine Ausführungsengine für Pipelines für maschinelles Lernen, unterstützt Spark, Scikit-Learn und für das Training von Pipelines und deren Export in eine TensorFlow serialisierte Pipeline, ein sogenanntes mLEAP-Bundle. 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 KI in einer Inferenz-Pipeline ausgeführt wird, stellt sie diese Umgebungsvariable automatisch Containern zur Verfügung. SageMaker 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 einen zweiten Port überwachen muss, wählen Sie einen Port im von der Umgebungsvariable SAGEMAKER_SAFE_PORT_RANGE angegebenen Bereich. Geben Sie den Wert als inklusiven Bereich im Format an"XXXX-YYYY", wobei XXXX und mehrstellige Ganzzahlen YYYY sind. SageMaker AI stellt diesen Wert automatisch bereit, wenn Sie den Container in einer Multicontainer-Pipeline ausführen.

Anmerkung

Um benutzerdefinierte Docker-Images in einer Pipeline zu verwenden, die integrierte SageMaker KI-Algorithmen enthält, benötigen Sie eine Amazon Elastic Container Registry (Amazon ECR) -Richtlinie. Ihr Amazon ECR-Repository muss der SageMaker KI die Erlaubnis erteilen, das Image abzurufen. Weitere Informationen finden Sie unter Beheben von Problemen mit Amazon ECR-Berechtigungen für Inferenz-Pipelines.

Erstellen und Bereitstellen eines Inferenz-Pipeline-Endpunkts

Mit dem folgenden Code wird mithilfe des AI SDK ein Echtzeit-Inferenz-Pipeline-Modell mit SparkML- und XGBoost-Modellen in Serie erstellt und bereitgestellt. SageMaker

from sagemaker.serve import ModelBuilder sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz') model_name = 'serial-inference-' + timestamp_prefix endpoint_name = 'serial-inference-ep-' + timestamp_prefix model_builder = ModelBuilder( s3_model_data_url=sparkml_data, role_arn=role, instance_type='ml.c4.xlarge', pipeline_models=[sparkml_data, xgb_model.s3_model_data_url], ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name )

Inferenz von einem Inferenz-Pipeline-Endpunkt anfordern Real-Time

Das folgende Beispiel zeigt, wie Echtzeit-Prognosen erstellt werden, indem ein Inferenz-Endpunkt aufgerufen und eine Anfragenutzlast im JSON-Format übergeben wird:

import json from sagemaker.core.resources import Endpoint 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" } } endpoint = Endpoint(endpoint_name=endpoint_name) response = endpoint.invoke(body=json.dumps(payload), content_type='application/json', accept='application/json') print(response)

Die Antwort, die Sie 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 Notizbuch und weitere Beispiele finden Sie im SageMaker GitHub Amazon-Beispiel-Repository.