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:
Topik Amazon SNS.
Periksa keluaran 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 CreateEndpointConfig dan menentukan topik Amazon SNS.
catatan
Untuk menerima pemberitahuan Amazon SNS, peran IAM Anda harus memiliki sns:Publish izin. Lihat Lengkapi prasyarat untuk informasi tentang persyaratan yang harus Anda penuhi untuk menggunakan Inferensi Asinkron.
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 Mengon figurasi Amazon SN S.
Berikan topik Amazon SNS ARN di AsyncInferenceConfig bidang saat Anda membuat konfigurasi titik akhir denganCreateEndpointConfig. Anda dapat menentukan Amazon SNS ErrorTopic dan. 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. Contoh berikut menunjukkan konten JSON dari pemberitahuan 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 titik akhir denganInvokeEndpointAsync, ia mengembalikan objek respons. Anda dapat menggunakan objek respons untuk mendapatkan URI Amazon S3 tempat output Anda disimpan. Dengan lokasi keluaran, Anda dapat menggunakan kelas sesi SageMaker Python SDK SageMaker AI untuk memeriksa output secara terprogram.
Berikut ini menyimpan kamus keluaran InvokeEndpointAsync sebagai variabel bernama respons. Dengan variabel respons, Anda kemudian mendapatkan URI keluaran Amazon S3 dan menyimpannya sebagai variabel string yang disebutoutput_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 Kel SageMaker as S SageMaker esi AI Python SDK get_ouput) yang berulang kali mencoba membaca file dari lokasi keluaran Amazon S3:
from sagemaker.core.helper.session_helper import Session import urllib, time from botocore.exceptions import ClientError 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}")