Überprüfen Sie die Ergebnisse der Prognose - 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.

Überprüfen Sie die Ergebnisse der Prognose

Es gibt mehrere Möglichkeiten, die Ergebnisse der Prognose von Ihrem asynchronen Endpunkt aus zu überprüfen. Die Optionen sind:

  1. Amazon SNS-Themen.

  2. Suchen Sie in Ihrem Amazon-S3-Bucket nach Ausgaben.

Amazon SNS-Themen

Amazon SNS ist ein Benachrichtigungsservice für messaging-orientierte Anwendungen, bei dem mehrere Abonnenten „Push“ -Benachrichtigungen über zeitkritische Nachrichten über verschiedene Transportprotokolle, darunter HTTP, Amazon SQS und E-Mail, anfordern und empfangen. Amazon SageMaker Asynchronous Inference sendet Benachrichtigungen, wenn Sie einen Endpunkt mit erstellen CreateEndpointConfig und ein Amazon SNS-Thema angeben.

Anmerkung

Um Amazon SNS-Benachrichtigungen zu erhalten, muss Ihre IAM-Rolle über sns:Publish Berechtigungen verfügen. Informationen zu den Voraussetzungen, die Sie für die Verwendung der Asynchronen Inferenz erfüllen müssen, finden Sie im Abschnitt Voraussetzungen.

Um Amazon SNS zur Überprüfung der Prognoseergebnisse von Ihrem asynchronen Endpunkt zu verwenden, müssen Sie zunächst ein Thema erstellen, das Thema abonnieren, Ihr Abonnement für das Thema bestätigen und den Amazon-Ressourcennamen (ARN) dieses Themas notieren. Ausführliche Informationen zum Erstellen, Abonnieren und Auffinden des Amazon-ARN eines Amazon SNS-Themas finden Sie unter Amazon SNS konfigurieren.

Geben Sie das Amazon SNS-Thema ARN (s) in das AsyncInferenceConfig Feld ein, wenn Sie eine Endpunktkonfiguration mit CreateEndpointConfig erstellen. Sie können sowohl ein Amazon SNS ErrorTopic als auch ein SuccessTopic angeben.

import boto3 sagemaker_client = boto3.client('sagemaker', region_name=<aws_region>) sagemaker_client.create_endpoint_config( EndpointConfigName=<endpoint_config_name>, # You specify this name in a CreateEndpoint request. # List of ProductionVariant objects, one for each model that you want to host at this endpoint. ProductionVariants=[ { "VariantName": "variant1", # The name of the production variant. "ModelName": "model_name", "InstanceType": "ml.m5.xlarge", # Specify the compute instance type. "InitialInstanceCount": 1 # Number of instances to launch initially. } ], AsyncInferenceConfig={ "OutputConfig": { # Location to upload response outputs when no location is provided in the request. "S3OutputPath": "s3://<bucket>/<output_directory>" "NotificationConfig": { "SuccessTopic": "arn:aws:sns:aws-region:account-id:topic-name", "ErrorTopic": "arn:aws:sns:aws-region:account-id:topic-name", } } } )

Nachdem Sie Ihren Endpunkt erstellt und aufgerufen haben, erhalten Sie eine Benachrichtigung von Ihrem Amazon SNS-Thema. Wenn Sie beispielsweise E-Mail-Benachrichtigungen zu Ihrem Thema abonniert haben, erhalten Sie jedes Mal, wenn Sie Ihren Endpunkt aufrufen, eine E-Mail-Benachrichtigung. Im folgenden Beispiel wird der JSON-Code einer E-Mail-Benachrichtigung über einen erfolgreichen Aufruf gezeigt.

{ "awsRegion":"us-east-1", "eventTime":"2022-01-25T22:46:00.608Z", "receivedTime":"2022-01-25T22:46:00.455Z", "invocationStatus":"Completed", "requestParameters":{ "contentType":"text/csv", "endpointName":"<example-endpoint>", "inputLocation":"s3://<bucket>/<input-directory>/input-data.csv" }, "responseParameters":{ "contentType":"text/csv; charset=utf-8", "outputLocation":"s3://<bucket>/<output_directory>/prediction.out" }, "inferenceId":"11111111-2222-3333-4444-555555555555", "eventVersion":"1.0", "eventSource":"aws:sagemaker", "eventName":"InferenceResult" }

Überprüfen Sie Ihren S3-Bucket

Wenn Sie einen Endpunkt mit InvokeEndpointAsync aufrufen, wird ein Antwortobjekt zurückgegeben. Sie können das Antwortobjekt verwenden, um die Amazon S3-URI abzurufen, in der Ihre Ausgabe gespeichert ist. Mit dem Ausgabespeicherort können Sie eine SageMaker Python-SDK- SageMaker Sitzungsklasse verwenden, um programmgesteuert nach einer Ausgabe zu suchen.

Im Folgenden wird das Ausgabewörterbuch von InvokeEndpointAsync als Variable mit dem Namen response gespeichert. Mit der Antwortvariablen erhalten Sie dann den Amazon S3-Ausgabe-URI und speichern ihn als Zeichenkettenvariable namens output_location.

import uuid import boto3 sagemaker_runtime = boto3.client("sagemaker-runtime", region_name=<aws_region>) # Specify the S3 URI of the input. Here, a single SVM sample input_location = "s3://bucket-name/test_point_0.libsvm" response = sagemaker_runtime.invoke_endpoint_async( EndpointName='<endpoint-name>', InputLocation=input_location, InferenceId=str(uuid.uuid4()), ContentType="text/libsvm" #Specify the content type of your data ) output_location = response['OutputLocation'] print(f"OutputLocation: {output_location}")

Weitere Informationen zu unterstützten Instance-Typen finden Sie unter Allgemeine Datenformate für Inferenz.

Mit dem Amazon S3-Ausgabespeicherort können Sie dann eine SageMaker Python-SDK- SageMaker Sitzungsklasse verwenden, um Amazon S3-Dateien zu lesen. Das folgende Codebeispiel zeigt, wie eine Funktion (get_ouput) erstellt wird, die wiederholt versucht, eine Datei vom Amazon S3-Ausgabespeicherort zu lesen:

import sagemaker import urllib, time from botocore.exceptions import ClientError sagemaker_session = sagemaker.session.Session() def get_output(output_location): output_url = urllib.parse.urlparse(output_location) bucket = output_url.netloc key = output_url.path[1:] while True: try: return sagemaker_session.read_s3_file( bucket=output_url.netloc, key_prefix=output_url.path[1:]) except ClientError as e: if e.response['Error']['Code'] == 'NoSuchKey': print("waiting for output...") time.sleep(2) continue raise output = get_output(output_location) print(f"Output: {output}")