

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
<a name="invoke-multi-model-endpoint"></a>

Untuk memanggil titik akhir multi-model, gunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint)dari SageMaker AI 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. `InvokeEndpoint`Permintaan SageMaker AI Runtime mendukung `X-Amzn-SageMaker-Target-Model` sebagai header baru yang mengambil jalur relatif 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 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)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html) 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](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#making-predictions-with-the-aws-cli) SageMaker Python.

------

Titik akhir multi-model secara dinamis memuat model target sesuai kebutuhan. Anda dapat mengamati ini saat menjalankan [MME Sample Notebook](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html) 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
<a name="invoke-multi-model-config-retry"></a>

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 AI 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 kesalahan`ModelNotReadyException`, 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 SDKs untuk Python (Boto 3) (menggunakan [mode coba lagi Legacy) dan permintaan coba lagi](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#legacy-retry-mode) Java yang menghasilkan kesalahan. `invoke_endpoint` `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 untuk Python (Boto3), lihat [Mengonfigurasi](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#configuring-a-retry-mode) 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)
```