Memanggil Titik Akhir Multi-Model - Amazon SageMaker

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

Memanggil Titik Akhir Multi-Model

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

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

AWS SDK for Python (Boto 3)

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

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

Informasi output_file.txt dengan tentang permintaan inferensi Anda dibuat jika inferensi berhasil. Untuk contoh selengkapnya tentang cara membuat prediksi dengan AWS CLI, lihat Membuat prediksi dengan dokumentasi AWS CLI SDK SageMaker Python.

Titik akhir multi-model secara dinamis memuat model target sesuai kebutuhan. Anda dapat mengamati ini saat menjalankan MME Sample Notebook saat iterasi 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 awal yang dingin, 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 instance yang didukung GPU, kode respons HTTP dengan 507 dari wadah GPU menunjukkan kurangnya memori atau sumber daya lainnya. Hal ini menyebabkan model yang tidak terpakai diturunkan dari wadah untuk memuat model yang lebih sering digunakan.

Coba lagi Permintaan pada Kesalahan ModelNotReadyException

Pertama kali Anda memanggil invoke_endpoint 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 selanjutnya ke model yang sama selesai lebih cepat, karena model sudah dimuat.

SageMaker mengembalikan respons untuk panggilan invoke_endpoint dalam waktu 60 detik. Beberapa model terlalu besar untuk diunduh dalam waktu 60 detik. Jika model tidak selesai memuat sebelum batas waktu 60 detik, permintaan untuk invoke_endpoint kembali dengan kode kesalahanModelNotReadyException, dan model terus mengunduh dan memuat ke dalam 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 lagi Legacy) dan permintaan percobaan invoke_endpoint ulang Java yang menghasilkan kesalahan. ModelNotReadyException Anda dapat mengonfigurasi strategi coba lagi untuk terus mencoba ulang permintaan hingga 360 detik. Jika Anda mengharapkan model Anda membutuhkan waktu lebih dari 60 detik untuk mengunduh dan memuat ke dalam wadah, atur batas waktu soket SDK menjadi 70 detik. Untuk informasi selengkapnya tentang mengonfigurasi strategi coba lagi AWS SDK for Python (Boto3), lihat Mengonfigurasi mode coba lagi. Kode berikut menunjukkan contoh yang mengonfigurasi strategi coba lagi untuk mencoba lagi 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)