Periksa hasil prediksi - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Periksa hasil prediksi

Ada beberapa cara Anda dapat memeriksa hasil prediksi dari titik akhir asinkron Anda. Beberapa opsi adalah:

  1. Topik Amazon SNS.

  2. Periksa output di bucket Amazon S3 Anda.

Topik Amazon SNS

Amazon SNS adalah layanan notifikasi untuk aplikasi berorientasi pesan, dengan beberapa pelanggan meminta dan menerima pemberitahuan “push” dari pesan penting waktu melalui pilihan protokol transportasi, termasuk HTTP, Amazon SQS, dan email. Amazon SageMaker Asynchronous Inference memposting pemberitahuan saat Anda membuat titik akhir dengan CreateEndpointConfigdan menentukan topik Amazon SNS.

catatan

Untuk menerima notifikasi Amazon SNS, peran IAM Anda harus memiliki izin. sns:Publish Lihat informasi tentang persyaratan yang harus Anda penuhi untuk menggunakan Inferensi Asinkron. Lengkapi prasyarat

Untuk menggunakan Amazon SNS untuk memeriksa hasil prediksi dari titik akhir asinkron Anda, Anda harus terlebih dahulu membuat topik, berlangganan topik, mengonfirmasi langganan Anda ke topik, dan mencatat Nama Sumber Daya Amazon (ARN) dari topik tersebut. Untuk informasi terperinci tentang cara membuat, berlangganan, dan menemukan Amazon ARN dari topik Amazon SNS, lihat Mengonfigurasi Amazon SNS.

Berikan ARN topik Amazon SNS di AsyncInferenceConfig bidang saat Anda membuat konfigurasi titik akhir. CreateEndpointConfig Anda dapat menentukan Amazon SNS ErrorTopic dan file. SuccessTopic

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", } } } )

Setelah membuat titik akhir dan memanggilnya, Anda menerima pemberitahuan dari topik Amazon SNS Anda. Misalnya, jika Anda berlangganan untuk menerima pemberitahuan email dari topik Anda, Anda menerima pemberitahuan email setiap kali Anda memanggil titik akhir Anda. Contoh berikut menunjukkan konten JSON dari notifikasi email pemanggilan yang berhasil.

{ "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" }

Periksa Bucket S3 Anda

Ketika Anda memanggil endpoint denganInvokeEndpointAsync, ia mengembalikan objek respon. Anda dapat menggunakan objek respons untuk mendapatkan URI Amazon S3 tempat output Anda disimpan. Dengan lokasi keluaran, Anda dapat menggunakan kelas SageMaker sesi SDK SageMaker Python untuk memeriksa output secara terprogram.

Berikut ini menyimpan kamus keluaran InvokeEndpointAsync sebagai variabel bernama respon. Dengan variabel respons, Anda kemudian mendapatkan URI keluaran Amazon S3 dan menyimpannya sebagai variabel string yang disebut. 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}")

Untuk informasi tentang jenis konten yang didukung, lihatFormat data umum untuk inferensi.

Dengan lokasi keluaran Amazon S3, Anda kemudian dapat menggunakan Kelas SageMaker Sesi SDK SageMaker Python untuk membaca di file Amazon S3. Contoh kode berikut menunjukkan cara membuat function (get_ouput) yang berulang kali mencoba membaca file dari lokasi keluaran Amazon S3:

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