

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
<a name="async-inference-check-predictions"></a>

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

1. Amazon SNS-Themen.

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

## Amazon SNS-Themen
<a name="async-inference-check-predictions-sns-topic"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) 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 [Erfüllen der Voraussetzungen](async-inference-create-endpoint-prerequisites.md).

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](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html).

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
<a name="async-inference-check-predictions-s3-bucket"></a>

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-AI-Sitzungsklasse des SageMaker AI Python SDK 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 [Gängige Datenformate für die Inferenz](cdf-inference.md).

Mit dem Amazon-S3-Ausgabespeicherort können Sie dann eine [SageMaker-AI-Sitzungsklasse des SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/api/utility/session.html?highlight=session) verwenden, um Amazon-S3-Dateien einzulesen. 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}")
```