View a markdown version of this page

Memanggil Endpoint Multi-Model - Amazon SageMaker AI

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

Memanggil Endpoint Multi-Model

Untuk memanggil titik akhir multi-model, gunakan invoke_endpoint dari SageMaker AI Runtime seperti Anda akan memanggil titik akhir model tunggal, dengan satu perubahan. Berikan TargetModel parameter baru yang menentukan model mana di titik akhir yang akan ditargetkan. Per SageMaker mintaan AI Runtime InvokeEndpoint mendukung X-Amzn-SageMaker-Target-Model sebagai header baru yang mengambil jalur relatif dari model yang ditentukan untuk pemanggilan. Sistem SageMaker AI membangun jalur absolut model dengan menggabungkan awalan yang disediakan sebagai bagian dari panggilan CreateModel API dengan jalur relatif model.

Prosedur berikut ini sama untuk CPU dan titik akhir GPU-backed multi-model.

AWS SDK for Python (Boto 3)

Contoh permintaan prediksi berikut menggunakan AWS SDK untuk Python (Boto 3) di notebook sampel.

response = runtime_sagemaker_client.invoke_endpoint( EndpointName = "<ENDPOINT_NAME>", ContentType = "text/csv", TargetModel = "<MODEL_FILENAME>.tar.gz", Body = body)
AWS CLI

Contoh berikut menunjukkan cara membuat permintaan CSV dengan dua baris menggunakan AWS Command Line Interface (AWS CLI):

aws sagemaker-runtime invoke-endpoint \ --endpoint-name "<ENDPOINT_NAME>" \ --body "1.0,2.0,5.0"$'\n'"2.0,3.0,4.0" \ --content-type "text/csv" \ --target-model "<MODEL_NAME>.tar.gz" output_file.txt

Sebuah output_file.txt dengan informasi tentang permintaan inferensi Anda dibuat jika inferensi berhasil. Untuk contoh lebih lanjut tentang cara membuat prediksi dengan AWS CLI, lihat Membuat prediksi dengan AWS CLI dalam dokumentasi SageMaker Python SDK.

Titik akhir multi-model secara dinamis memuat model target sesuai kebutuhan. Anda dapat mengamati ini saat menjalankan Notebook Sam pel MME karena mengulangi melalui pemanggilan acak terhadap beberapa model target yang dihosting di belakang satu titik akhir. Permintaan pertama terhadap model tertentu membutuhkan waktu lebih lama karena model harus diunduh dari Amazon Simple Storage Service (Amazon S3) dan dimuat ke dalam memori. Ini disebut cold start, dan diharapkan pada titik akhir multi-model untuk mengoptimalkan kinerja harga yang lebih baik bagi pelanggan. Panggilan berikutnya selesai lebih cepat karena tidak ada overhead tambahan setelah model dimuat.

catatan

Untuk instans yang didukung GPU, kode respons HTTP dengan 507 dari wadah GPU menunjukkan kurangnya memori atau sumber daya lainnya. Hal ini menyebabkan model yang tidak digunakan diturunkan dari wadah untuk memuat model yang lebih sering digunakan.

Permintaan Coba Ulang pada Kesalahan ModelNotReadyException

Saat pertama kali Anda memang invoke_endpoint gil model, model diunduh dari Amazon Simple Storage Service dan dimuat ke dalam wadah inferensi. Ini membuat panggilan pertama membutuhkan waktu lebih lama untuk kembali. Panggilan berikutnya ke model yang sama selesai lebih cepat, karena model sudah dimuat.

SageMaker AI mengembalikan respons untuk panggilan invoke_endpoint dalam waktu 60 detik. Beberapa model terlalu besar untuk diunduh dalam 60 detik. Jika model tidak selesai memuat sebelum batas waktu tunggu 60 detik, permintaan untuk invoke_endpoint kembali dengan kode kesalahanModelNotReadyException, dan model terus mengunduh dan memuat ke wadah inferensi hingga 360 detik. Jika Anda mendapatkan kode ModelNotReadyException kesalahan untuk invoke_endpoint permintaan, coba lagi permintaan tersebut. Secara default, AWS SDK untuk Python (Boto 3) (menggunakan mode coba ulang Legacy) dan invoke_endpoint permintaan coba ulang Java yang mengakibatkan kesalahan. ModelNotReadyException Anda dapat mengonfigurasi strategi coba lagi untuk terus mencoba kembali permintaan hingga 360 detik. Jika Anda mengharapkan model Anda membutuhkan waktu lebih dari 60 detik untuk diunduh dan dimuat ke dalam wadah, setel batas waktu soket SDK menjadi 70 detik. Untuk informasi selengkapnya tentang mengonfigurasi strategi coba ulang untuk AWS SDK for Python (Boto3), lihat Mengon figurasi mode coba lagi. Kode berikut menunjukkan contoh yang mengonfigurasi strategi coba ulang untuk mencoba kembali panggilan hingga invoke_endpoint 180 detik.

import boto3 from botocore.config import Config # This example retry strategy sets the retry attempts to 2. # With this setting, the request can attempt to download and/or load the model # for upto 180 seconds: 1 orginal request (60 seconds) + 2 retries (120 seconds) config = Config( read_timeout=70, retries={ 'max_attempts': 2 # This value can be adjusted to 5 to go up to the 360s max timeout } ) runtime_sagemaker_client = boto3.client('sagemaker-runtime', config=config)