

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

# Inferensi waktu nyata
<a name="realtime-endpoints"></a>

 Inferensi waktu nyata ideal untuk beban kerja inferensi di mana Anda memiliki persyaratan waktu nyata, interaktif, dan latensi rendah. Anda dapat menerapkan model Anda ke layanan hosting SageMaker AI dan mendapatkan titik akhir yang dapat digunakan untuk inferensi. Titik akhir ini dikelola sepenuhnya dan mendukung penskalaan otomatis (lihat). [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md) 

**Topics**
+ [Terapkan model untuk inferensi waktu nyata](realtime-endpoints-deploy-models.md)
+ [Memanggil model untuk inferensi waktu nyata](realtime-endpoints-test-endpoints.md)
+ [Titik akhir](realtime-endpoints-manage.md)
+ [Opsi hosting](realtime-endpoints-options.md)
+ [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md)
+ [Volume penyimpanan instans](host-instance-storage.md)
+ [Validasi model dalam produksi](model-validation.md)
+ [Penjelasan online dengan Clarify SageMaker](clarify-online-explainability.md)
+ [Sempurnakan model dengan komponen inferensi adaptor](realtime-endpoints-adapt.md)

# Terapkan model untuk inferensi waktu nyata
<a name="realtime-endpoints-deploy-models"></a>

**penting**  
Kebijakan IAM khusus yang memungkinkan Amazon SageMaker Studio atau Amazon SageMaker Studio Classic membuat SageMaker sumber daya Amazon juga harus memberikan izin untuk menambahkan tag ke sumber daya tersebut. Izin untuk menambahkan tag ke sumber daya diperlukan karena Studio dan Studio Classic secara otomatis menandai sumber daya apa pun yang mereka buat. Jika kebijakan IAM memungkinkan Studio dan Studio Classic membuat sumber daya tetapi tidak mengizinkan penandaan, kesalahan "AccessDenied" dapat terjadi saat mencoba membuat sumber daya. Untuk informasi selengkapnya, lihat [Berikan izin untuk menandai sumber daya AI SageMaker](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS kebijakan terkelola untuk Amazon SageMaker AI](security-iam-awsmanpol.md)yang memberikan izin untuk membuat SageMaker sumber daya sudah menyertakan izin untuk menambahkan tag saat membuat sumber daya tersebut.

Ada beberapa opsi untuk menerapkan model menggunakan layanan hosting SageMaker AI. Anda dapat menerapkan model secara interaktif dengan SageMaker Studio. Atau, Anda dapat menerapkan model secara terprogram menggunakan AWS SDK, seperti SDK Python atau SDK for SageMaker Python (Boto3). Anda juga dapat menerapkan dengan menggunakan. AWS CLI

## Sebelum Anda mulai
<a name="deploy-prereqs"></a>

Sebelum Anda menerapkan model SageMaker AI, cari dan catat hal-hal berikut:
+  Wilayah AWS Tempat bucket Amazon S3 Anda berada
+ Jalur URI Amazon S3 tempat artefak model disimpan
+ Peran IAM untuk AI SageMaker 
+ Jalur registri URI ECR Docker Amazon untuk gambar kustom yang berisi kode inferensi, atau kerangka kerja dan versi gambar Docker bawaan yang didukung dan oleh AWS

 Untuk daftar yang Layanan AWS tersedia di masing-masing Wilayah AWS, lihat [Peta Wilayah dan Jaringan Tepi](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Lihat [Membuat peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) untuk informasi tentang cara membuat peran IAM.

**penting**  
Bucket Amazon S3 tempat artefak model disimpan harus Wilayah AWS sama dengan model yang Anda buat.

## Pemanfaatan sumber daya bersama dengan beberapa model
<a name="deployed-shared-utilization"></a>

Anda dapat menerapkan satu atau beberapa model ke titik akhir dengan Amazon SageMaker AI. Ketika beberapa model berbagi titik akhir, mereka bersama-sama memanfaatkan sumber daya yang di-host di sana, seperti instance komputasi ML, dan akselerator. CPUs Cara paling fleksibel untuk menerapkan beberapa model ke titik akhir adalah dengan mendefinisikan setiap model sebagai komponen *inferensi*.

### Komponen inferensi
<a name="inference-components"></a>

Komponen inferensi adalah objek hosting SageMaker AI yang dapat Anda gunakan untuk menerapkan model ke titik akhir. Dalam pengaturan komponen inferensi, Anda menentukan model, titik akhir, dan bagaimana model memanfaatkan sumber daya yang dihosting titik akhir. Untuk menentukan model, Anda dapat menentukan objek Model SageMaker AI, atau Anda dapat langsung menentukan artefak model dan gambar.

Dalam pengaturan, Anda dapat mengoptimalkan pemanfaatan sumber daya dengan menyesuaikan bagaimana inti CPU, akselerator, dan memori yang diperlukan dialokasikan ke model. Anda dapat menerapkan beberapa komponen inferensi ke titik akhir, di mana setiap komponen inferensi berisi satu model dan kebutuhan pemanfaatan sumber daya untuk model itu. 

Setelah menerapkan komponen inferensi, Anda dapat langsung memanggil model terkait saat menggunakan InvokeEndpoint tindakan di API. SageMaker 

Komponen inferensi memberikan manfaat sebagai berikut:

**Fleksibilitas**  
Komponen inferensi memisahkan detail hosting model dari titik akhir itu sendiri. Ini memberikan lebih banyak fleksibilitas dan kontrol atas bagaimana model di-host dan disajikan dengan titik akhir. Anda dapat meng-host beberapa model pada infrastruktur yang sama, dan Anda dapat menambahkan atau menghapus model dari titik akhir sesuai kebutuhan. Anda dapat memperbarui setiap model secara independen.

**Skalabilitas**  
Anda dapat menentukan berapa banyak salinan dari setiap model untuk dihosting, dan Anda dapat mengatur jumlah minimum salinan untuk memastikan bahwa model memuat dalam jumlah yang Anda butuhkan untuk melayani permintaan. Anda dapat menskalakan salinan komponen inferensi apa pun ke nol, yang memberi ruang bagi salinan lain untuk ditingkatkan. 

SageMaker AI mengemas model Anda sebagai komponen inferensi saat Anda menerapkannya dengan menggunakan:
+ SageMaker Studio Klasik.
+ SDK SageMaker Python untuk menyebarkan objek Model (tempat Anda menyetel tipe titik akhir ke). `EndpointType.INFERENCE_COMPONENT_BASED`
+  AWS SDK untuk Python (Boto3) Untuk mendefinisikan `InferenceComponent` objek yang Anda terapkan ke titik akhir.

## Menyebarkan model dengan Studio SageMaker
<a name="deploy-models-studio"></a>

Selesaikan langkah-langkah berikut untuk membuat dan menerapkan model Anda secara interaktif melalui SageMaker Studio. Untuk informasi selengkapnya tentang Studio, lihat dokumentasi [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html). Untuk penelusuran lebih lanjut tentang berbagai skenario penerapan, lihat [Package blog dan terapkan model ML klasik dan LLMs dengan mudah menggunakan Amazon SageMaker ](https://aws.amazon.com/blogs/machine-learning/package-and-deploy-classical-ml-and-llms-easily-with-amazon-sagemaker-part-2-interactive-user-experiences-in-sagemaker-studio/) AI — Bagian 2.

### Siapkan artefak dan izin Anda
<a name="studio-prereqs"></a>

Lengkapi bagian ini sebelum membuat model di SageMaker Studio.

Anda memiliki dua opsi untuk membawa artefak Anda dan membuat model di Studio:

1. Anda dapat membawa `tar.gz` arsip pra-paket, yang harus menyertakan artefak model Anda, kode inferensi kustom apa pun, dan dependensi apa pun yang tercantum dalam file. `requirements.txt`

1. SageMaker AI dapat mengemas artefak Anda untuk Anda. Anda hanya perlu membawa artefak model mentah dan dependensi apa pun dalam sebuah `requirements.txt` file, dan SageMaker AI dapat memberikan kode inferensi default untuk Anda (atau Anda dapat mengganti kode default dengan kode inferensi kustom Anda sendiri). SageMaker AI mendukung opsi ini untuk kerangka kerja berikut: PyTorch, XGBoost.

Selain membawa model Anda, peran AWS Identity and Access Management (IAM) Anda, dan wadah Docker (atau kerangka kerja dan versi yang diinginkan yang SageMaker AI memiliki wadah pra-bangun), Anda juga harus memberikan izin untuk membuat dan menerapkan model melalui AI Studio. SageMaker 

Anda harus memiliki [AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)kebijakan yang melekat pada peran IAM Anda sehingga Anda dapat mengakses SageMaker AI dan layanan terkait lainnya. Untuk melihat harga jenis instans di Studio, Anda juga harus melampirkan [AWS PriceListServiceFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSPriceListServiceFullAccess.html)kebijakan (atau jika Anda tidak ingin melampirkan seluruh kebijakan, lebih khusus lagi, `pricing:GetProducts` tindakan).

Jika Anda memilih untuk mengunggah artefak model saat membuat model (atau mengunggah file payload sampel untuk rekomendasi inferensi), Anda harus membuat bucket Amazon S3. Nama bucket harus diawali dengan kata`SageMaker AI`. Kapitalisasi alternatif SageMaker AI juga dapat diterima: `Sagemaker` atau. `sagemaker`

Kami menyarankan Anda menggunakan konvensi penamaan ember`sagemaker-{Region}-{accountID}`. Bucket ini digunakan untuk menyimpan artefak yang Anda unggah.

Setelah membuat bucket, lampirkan kebijakan CORS (cross-origin resource sharing) berikut ke bucket:

```
[
    {
        "AllowedHeaders": ["*"],
        "ExposeHeaders": ["Etag"],
        "AllowedMethods": ["PUT", "POST"],
        "AllowedOrigins": ['https://*.sagemaker.aws'],
    }
]
```

Anda dapat melampirkan kebijakan CORS ke bucket Amazon S3 dengan menggunakan salah satu metode berikut:
+ Melalui halaman [Edit cross-origin resource sharing (CORS)](https://s3.console.aws.amazon.com/s3/bucket/bucket-name/property/cors/edit) di konsol Amazon S3
+ Menggunakan Amazon S3 API [PutBucketCors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
+ Menggunakan put-bucket-cors AWS CLI perintah:

  ```
  aws s3api put-bucket-cors --bucket="..." --cors-configuration="..."
  ```

### Buat model yang dapat diterapkan
<a name="studio-create-model"></a>

Pada langkah ini, Anda membuat versi model yang dapat diterapkan di SageMaker AI dengan menyediakan artefak Anda bersama dengan spesifikasi tambahan, seperti wadah dan kerangka kerja yang Anda inginkan, kode inferensi khusus apa pun, dan pengaturan jaringan.

Buat model deployable di SageMaker Studio dengan melakukan hal berikut:

1. Buka aplikasi SageMaker Studio.

1. Di panel navigasi kiri, pilih **Model**.

1. Pilih tab **Model Deployable**.

1. **Pada halaman **Model Deployable**, pilih Buat.**

1. Pada halaman **Buat model deployable**, untuk bidang **Nama model**, masukkan nama untuk model.

Ada beberapa bagian lagi untuk Anda isi di halaman **Create deployable model**.

Bagian **definisi Container** terlihat seperti tangkapan layar berikut:

![\[Screenshot dari bagian definisi Container untuk membuat model di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-container-definition.png)


**Untuk bagian **Container definition**, lakukan hal berikut:**

1. Untuk **jenis Kontainer**, pilih **Kontainer pra-bangun** jika Anda ingin menggunakan kontainer terkelola SageMaker AI, atau pilih **Bawa kontainer Anda sendiri** jika Anda memiliki kontainer sendiri.

1. Jika Anda memilih **Container Pre-built**, pilih **framework Container**, **versi Framework**, dan **jenis Hardware** yang ingin Anda gunakan.

1. Jika Anda memilih **Bawa penampung Anda sendiri**, masukkan jalur ECR Amazon untuk jalur **ECR ke image kontainer**.

Kemudian, isi bagian **Artefak**, yang terlihat seperti tangkapan layar berikut:

![\[Screenshot dari bagian Artefak untuk membuat model di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-artifacts-section.png)


**Untuk bagian **Artefak**, lakukan hal berikut:**

1. Jika Anda menggunakan salah satu kerangka kerja yang didukung SageMaker AI untuk artefak model kemasan (PyTorch atau XGBoost), maka untuk **Artefak, Anda dapat memilih opsi** **Unggah** artefak. Dengan opsi ini, Anda cukup menentukan artefak model mentah Anda, kode inferensi kustom apa pun yang Anda miliki, dan file requirements.txt Anda, dan SageMaker AI menangani pengemasan arsip untuk Anda. Lakukan hal-hal berikut:

   1. Untuk **Artefak**, pilih **Unggah artefak** untuk terus menyediakan file Anda. Jika tidak, jika Anda sudah memiliki `tar.gz` arsip yang berisi file model, kode inferensi, dan `requirements.txt` file, lalu pilih **Input S3 URI ke artefak pra-paket**.

   1. Jika Anda memilih untuk mengunggah artefak Anda, maka untuk **bucket S3**, masukkan jalur Amazon S3 ke ember tempat Anda SageMaker ingin AI menyimpan artefak Anda setelah mengemasnya untuk Anda. Kemudian, selesaikan langkah-langkah berikut.

   1. Untuk **Unggah artefak model**, unggah file model Anda.

   1. Untuk **kode Inferensi**, pilih **Gunakan kode inferensi default** jika Anda ingin menggunakan kode default yang disediakan SageMaker AI untuk menyajikan inferensi. Jika tidak, pilih **Unggah kode inferensi yang disesuaikan** untuk menggunakan kode inferensi Anda sendiri.

   1. Untuk **Upload requirements.txt**, unggah file teks yang mencantumkan dependensi apa pun yang ingin Anda instal saat runtime.

1. Jika Anda tidak menggunakan kerangka kerja yang didukung SageMaker AI untuk artefak model kemasan, maka Studio menunjukkan opsi artefak **Pra-paket, dan Anda harus menyediakan semua artefak yang sudah dikemas** sebagai arsip. `tar.gz` Lakukan hal-hal berikut:

   1. Untuk **artefak pra-paket**, pilih **Masukan URI S3 untuk artefak model pra-paket** jika arsip Anda sudah `tar.gz` diunggah ke Amazon S3. Pilih **Unggah artefak model pra-paket** jika Anda ingin langsung mengunggah arsip Anda ke AI. SageMaker 

   1. **Jika Anda memilih **URI Input S3 untuk artefak model pra-paket**, masukkan jalur Amazon S3 ke arsip Anda untuk URI S3.** Jika tidak, pilih dan unggah arsip dari mesin lokal Anda.

Bagian selanjutnya adalah **Keamanan**, yang terlihat seperti tangkapan layar berikut:

![\[Screenshot dari bagian Keamanan untuk membuat model di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-security-section.png)


**Untuk bagian **Keamanan**, lakukan hal berikut:**

1. Untuk **peran IAM**, masukkan ARN untuk peran IAM.

1. (Opsional) Untuk **Virtual Private Cloud (VPC)**, Anda dapat memilih Amazon VPC untuk menyimpan konfigurasi model dan artefak Anda.

1. (Opsional) Aktifkan sakelar **Isolasi jaringan** jika Anda ingin membatasi akses internet kontainer Anda.

Terakhir, Anda dapat secara opsional mengisi bagian **Opsi lanjutan**, yang terlihat seperti tangkapan layar berikut:

![\[Screenshot dari bagian Opsi lanjutan untuk membuat model di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-advanced-options.png)


**(Opsional) Untuk bagian **Opsi lanjutan**, lakukan hal berikut:**

1. Aktifkan toggle **Rekomendasi instans yang disesuaikan** jika Anda ingin menjalankan pekerjaan Amazon SageMaker Inference Recommender pada model Anda setelah pembuatannya. Inference Recommender adalah fitur yang memberi Anda jenis instans yang direkomendasikan untuk mengoptimalkan kinerja dan biaya inferensi. Anda dapat melihat rekomendasi instance ini saat mempersiapkan penerapan model Anda.

1. Untuk **Tambahkan variabel lingkungan**, masukkan variabel lingkungan untuk wadah Anda sebagai pasangan nilai kunci.

1. Untuk **Tag**, masukkan tag apa pun sebagai pasangan nilai kunci.

1. Setelah menyelesaikan konfigurasi model dan kontainer Anda, pilih **Create deployable** model.

Anda sekarang harus memiliki model di SageMaker Studio yang siap untuk penerapan.

### Terapkan model Anda
<a name="studio-deploy"></a>

Terakhir, Anda menerapkan model yang Anda konfigurasikan pada langkah sebelumnya ke titik akhir HTTPS. Anda dapat menerapkan satu model atau beberapa model ke titik akhir.

**Kompatibilitas model dan titik akhir**  
Sebelum Anda dapat menerapkan model ke titik akhir, model dan titik akhir harus kompatibel dengan memiliki nilai yang sama untuk pengaturan berikut:  
Peran IAM
Amazon VPC, termasuk subnet dan grup keamanannya
Isolasi jaringan (diaktifkan atau dinonaktifkan)
Studio mencegah Anda menerapkan model ke titik akhir yang tidak kompatibel dengan cara berikut:  
Jika Anda mencoba menerapkan model ke titik akhir baru, SageMaker AI mengonfigurasi titik akhir dengan pengaturan awal yang kompatibel. Jika Anda merusak kompatibilitas dengan mengubah pengaturan ini, Studio akan menampilkan peringatan dan mencegah penerapan Anda.
Jika Anda mencoba menerapkan ke titik akhir yang ada, dan titik akhir tersebut tidak kompatibel, Studio akan menampilkan peringatan dan mencegah penerapan Anda. 
Jika Anda mencoba menambahkan beberapa model ke penerapan, Studio mencegah Anda menerapkan model yang tidak kompatibel satu sama lain.
Saat Studio menampilkan peringatan tentang ketidakcocokan model dan titik akhir, Anda dapat memilih **Lihat detail** di peringatan untuk melihat pengaturan mana yang tidak kompatibel.

Salah satu cara untuk menerapkan model adalah dengan melakukan hal berikut di Studio:

1. Buka aplikasi SageMaker Studio.

1. Di panel navigasi kiri, pilih **Model**.

1. Pada halaman **Model**, pilih satu atau beberapa model dari daftar model SageMaker AI.

1. Pilih **Deploy**.

1. Untuk **nama Endpoint**, buka menu dropdown. Anda dapat memilih titik akhir yang ada atau Anda dapat membuat titik akhir baru yang Anda gunakan model.

1. Untuk **tipe Instance**, pilih jenis instance yang ingin Anda gunakan untuk titik akhir. **Jika sebelumnya Anda menjalankan tugas Inference Recommender untuk model tersebut, jenis instans yang Anda rekomendasikan akan muncul di daftar di bawah judul Recommended.** Jika tidak, Anda akan melihat beberapa **contoh Prospektif** yang mungkin cocok untuk model Anda.
**Kompatibilitas tipe instans untuk JumpStart**  
Jika Anda menerapkan JumpStart model, Studio hanya menampilkan tipe instance yang didukung model.

1. Untuk **jumlah instans awal**, masukkan jumlah awal instance yang ingin Anda berikan untuk titik akhir Anda.

1. Untuk **jumlah instans Maksimum**, tentukan jumlah maksimum instans yang dapat disediakan oleh titik akhir saat ditingkatkan untuk mengakomodasi peningkatan lalu lintas.

1. Jika model yang Anda terapkan adalah salah satu yang paling sering digunakan JumpStart LLMs dari hub model, maka opsi **Konfigurasi alternatif** muncul setelah bidang jenis instance dan jumlah instance.

   Untuk yang paling populer JumpStart LLMs, AWS memiliki jenis instans pra-benchmark untuk dioptimalkan baik untuk biaya maupun kinerja. Data ini dapat membantu Anda memutuskan jenis instans mana yang akan digunakan untuk menerapkan LLM Anda. Pilih **Konfigurasi alternatif** untuk membuka kotak dialog yang berisi data pra-benchmark. Panel terlihat seperti tangkapan layar berikut:  
![\[Screenshot dari kotak Konfigurasi alternatif\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-jumpstart-alternate-configurations.png)

   Di kotak **Konfigurasi alternatif**, lakukan hal berikut:

   1. Pilih jenis instance. Anda dapat memilih **Biaya per jam** atau **Kinerja terbaik** untuk melihat jenis instans yang mengoptimalkan biaya atau kinerja untuk model yang ditentukan. Anda juga dapat memilih **Instance lain yang didukung** untuk melihat daftar jenis instans lain yang kompatibel dengan JumpStart model. Perhatikan bahwa memilih jenis instance di sini menimpa pemilihan instance sebelumnya yang ditentukan dalam Langkah 6.

   1. (Opsional) Aktifkan sakelar **Sesuaikan konfigurasi yang dipilih** untuk menentukan **total token Maks** (jumlah maksimum token yang ingin Anda izinkan, yang merupakan jumlah token masukan Anda dan output yang dihasilkan model), **Panjang token masukan** maksimum (jumlah maksimum token yang ingin Anda izinkan untuk masukan setiap permintaan), dan **Permintaan bersamaan Max** (jumlah maksimum permintaan yang dapat diproses model sekaligus).

   1. Pilih **Pilih** untuk mengonfirmasi jenis instans dan pengaturan konfigurasi Anda.

1. Bidang **Model** seharusnya sudah diisi dengan nama model atau model yang Anda gunakan. Anda dapat memilih **Tambahkan model** untuk menambahkan lebih banyak model ke penerapan. Untuk setiap model yang Anda tambahkan, isi kolom berikut:

   1. Untuk **Jumlah inti CPU**, masukkan inti CPU yang ingin Anda dedikasikan untuk penggunaan model.

   1. Untuk **jumlah salinan Min**, masukkan jumlah minimum salinan model yang ingin Anda host di titik akhir pada waktu tertentu.

   1. Untuk **memori CPU Min (MB)**, masukkan jumlah minimum memori (dalam MB) yang dibutuhkan model.

   1. Untuk **memori CPU Max (MB)**, masukkan jumlah maksimum memori (dalam MB) yang ingin Anda izinkan model untuk digunakan.

1. (Opsional) Untuk **opsi Lanjutan**, lakukan hal berikut:

   1. Untuk **peran IAM**, gunakan peran eksekusi SageMaker AI IAM default, atau tentukan peran Anda sendiri yang memiliki izin yang Anda butuhkan. Perhatikan bahwa peran IAM ini harus sama dengan peran yang Anda tentukan saat membuat model deployable.

   1. Untuk **Virtual Private Cloud (VPC)**, Anda dapat menentukan VPC tempat Anda ingin meng-host endpoint Anda.

   1. Untuk **kunci Encryption KMS**, pilih AWS KMS kunci untuk mengenkripsi data pada volume penyimpanan yang dilampirkan ke instance komputasi ML yang menghosting titik akhir.

   1. Aktifkan sakelar **Aktifkan isolasi jaringan** untuk membatasi akses internet kontainer Anda.

   1. Untuk **konfigurasi Timeout**, masukkan nilai untuk kolom **batas waktu pengunduhan data Model (detik)** dan batas **waktu pemeriksaan kesehatan startup Container (detik**). Nilai-nilai ini menentukan jumlah waktu maksimum yang memungkinkan SageMaker AI untuk mengunduh model ke wadah dan memulai wadah, masing-masing.

   1. Untuk **Tag**, masukkan tag apa pun sebagai pasangan nilai kunci.
**catatan**  
SageMaker AI mengonfigurasi pengaturan peran IAM, VPC, dan isolasi jaringan dengan nilai awal yang kompatibel dengan model yang Anda gunakan. Jika Anda merusak kompatibilitas dengan mengubah pengaturan ini, Studio akan menampilkan peringatan dan mencegah penerapan Anda.

Setelah mengonfigurasi opsi Anda, halaman akan terlihat seperti tangkapan layar berikut.

![\[Screenshot dari halaman model Deploy di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-deploy-realtime-model-2.png)


Setelah mengonfigurasi penerapan Anda, pilih **Deploy** untuk membuat titik akhir dan menerapkan model Anda.

## Terapkan model dengan Python SDKs
<a name="deploy-models-python"></a>

Menggunakan SageMaker Python SDK, Anda dapat membangun model Anda dengan dua cara. Yang pertama adalah membuat objek model dari `ModelBuilder` kelas `Model` atau. Jika Anda menggunakan `Model` kelas untuk membuat `Model` objek, Anda perlu menentukan paket model atau kode inferensi (tergantung pada server model Anda), skrip untuk menangani serialisasi dan deserialisasi data antara klien dan server, dan dependensi apa pun yang akan diunggah ke Amazon S3 untuk konsumsi. Cara kedua untuk membangun model Anda adalah dengan menggunakan `ModelBuilder` artefak model atau kode inferensi yang Anda berikan. `ModelBuilder`secara otomatis menangkap dependensi Anda, menyimpulkan fungsi serialisasi dan deserialisasi yang diperlukan, dan mengemas dependensi Anda untuk membuat objek Anda. `Model` Untuk informasi selengkapnya tentang `ModelBuilder`, lihat [Buat model di Amazon SageMaker AI dengan ModelBuilder](how-it-works-modelbuilder-creation.md).

Bagian berikut menjelaskan kedua metode untuk membuat model Anda dan menyebarkan objek model Anda.

### Penyiapan
<a name="python-setup"></a>

Contoh-contoh berikut mempersiapkan proses penyebaran model. Mereka mengimpor perpustakaan yang diperlukan dan menentukan URL S3 yang menempatkan artefak model.

------
#### [ SageMaker Python SDK ]

**Example pernyataan impor**  
Contoh berikut mengimpor modul dari SageMaker Python SDK, SDK for Python (Boto3), dan Python Standard Library. Modul-modul ini menyediakan metode berguna yang membantu Anda menerapkan model, dan mereka digunakan oleh contoh lainnya yang mengikuti.  

```
import boto3
from datetime import datetime
from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements
from sagemaker.predictor import Predictor
from sagemaker.enums import EndpointType
from sagemaker.model import Model
from sagemaker.session import Session
```

------
#### [ boto3 inference components ]

**Example pernyataan impor**  
Contoh berikut mengimpor modul dari SDK for Python (Boto3) dan Python Standard Library. Modul-modul ini menyediakan metode berguna yang membantu Anda menerapkan model, dan mereka digunakan oleh contoh lainnya yang mengikuti.  

```
import boto3
import botocore
import sys
import time
```

------
#### [ boto3 models (without inference components) ]

**Example pernyataan impor**  
Contoh berikut mengimpor modul dari SDK for Python (Boto3) dan Python Standard Library. Modul-modul ini menyediakan metode berguna yang membantu Anda menerapkan model, dan mereka digunakan oleh contoh lainnya yang mengikuti.  

```
import boto3
import botocore
import datetime
from time import gmtime, strftime
```

------

**Example URL artefak model**  
Kode berikut membangun contoh URL Amazon S3. URL menempatkan artefak model untuk model yang telah dilatih sebelumnya di bucket Amazon S3.  

```
# Create a variable w/ the model S3 URL

# The name of your S3 bucket:
s3_bucket = "amzn-s3-demo-bucket"
# The directory within your S3 bucket your model is stored in:
bucket_prefix = "sagemaker/model/path"
# The file name of your model artifact:
model_filename = "my-model-artifact.tar.gz"
# Relative S3 path:
model_s3_key = f"{bucket_prefix}/"+model_filename
# Combine bucket name, model file name, and relate S3 path to create S3 model URL:
model_url = f"s3://{s3_bucket}/{model_s3_key}"
```
URL Amazon S3 lengkap disimpan dalam variabel`model_url`, yang digunakan dalam contoh berikut. 

### Ikhtisar
<a name="python-overview"></a>

Ada beberapa cara Anda dapat menerapkan model dengan SageMaker Python SDK atau SDK for Python (Boto3). Bagian berikut merangkum langkah-langkah yang Anda selesaikan untuk beberapa kemungkinan pendekatan. Langkah-langkah ini ditunjukkan oleh contoh-contoh berikut.

------
#### [ SageMaker Python SDK ]

Menggunakan SageMaker Python SDK, Anda dapat membangun model Anda dengan salah satu cara berikut:
+ **Buat objek model dari `Model` kelas** — Anda harus menentukan paket model atau kode inferensi (tergantung pada server model Anda), skrip untuk menangani serialisasi dan deserialisasi data antara klien dan server, dan dependensi apa pun yang akan diunggah ke Amazon S3 untuk konsumsi. 
+ **Buat objek model dari `ModelBuilder` kelas** — Anda menyediakan artefak model atau kode inferensi, dan `ModelBuilder` secara otomatis menangkap dependensi Anda, menyimpulkan fungsi serialisasi dan deserialisasi yang diperlukan, dan mengemas dependensi Anda untuk membuat objek Anda. `Model`

  Untuk informasi selengkapnya tentang `ModelBuilder`, lihat [Buat model di Amazon SageMaker AI dengan ModelBuilder](how-it-works-modelbuilder-creation.md). Anda juga dapat melihat [Package blog dan menerapkan model MLL klasik dan dengan LLMs mudah menggunakan SageMaker AI - Bagian 1](https://aws.amazon.com/blogs/machine-learning/package-and-deploy-classical-ml-and-llms-easily-with-amazon-sagemaker-part-1-pysdk-improvements/) untuk informasi lebih lanjut.

Contoh berikut menjelaskan kedua metode untuk membuat model Anda dan menyebarkan objek model Anda. Untuk menerapkan model dengan cara ini, Anda menyelesaikan langkah-langkah berikut:

1. Tentukan sumber daya endpoint untuk dialokasikan ke model dengan `ResourceRequirements` objek.

1. Buat objek model dari `ModelBuilder` kelas `Model` atau. `ResourceRequirements`Objek ditentukan dalam pengaturan model.

1. Menyebarkan model ke titik akhir dengan menggunakan `deploy` metode objek. `Model`

------
#### [ boto3 inference components ]

Contoh berikut menunjukkan cara menetapkan model ke komponen inferensi dan kemudian menyebarkan komponen inferensi ke titik akhir. Untuk menerapkan model dengan cara ini, Anda menyelesaikan langkah-langkah berikut:

1. (Opsional) Buat objek model SageMaker AI dengan menggunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_model.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_model.html)metode ini.

1. Tentukan pengaturan untuk titik akhir Anda dengan membuat objek konfigurasi titik akhir. Untuk membuatnya, Anda menggunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint_config.html#create-endpoint-config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint_config.html#create-endpoint-config)metode ini.

1. Buat titik akhir Anda dengan menggunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint.html)metode, dan dalam permintaan Anda, berikan konfigurasi titik akhir yang Anda buat.

1. Buat komponen inferensi dengan menggunakan `create_inference_component` metode. Dalam pengaturan, Anda menentukan model dengan melakukan salah satu dari berikut ini:
   + Menentukan objek model SageMaker AI
   + Menentukan URI gambar model dan URL S3

   Anda juga mengalokasikan sumber daya titik akhir ke model. Dengan membuat komponen inferensi, Anda menerapkan model ke titik akhir. Anda dapat menerapkan beberapa model ke titik akhir dengan membuat beberapa komponen inferensi — satu untuk setiap model.

------
#### [ boto3 models (without inference components) ]

Contoh berikut menunjukkan cara membuat objek model dan kemudian menyebarkan model ke titik akhir. Untuk menerapkan model dengan cara ini, Anda menyelesaikan langkah-langkah berikut:

1. Buat model SageMaker AI dengan menggunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_model.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_model.html)metode ini.

1. Tentukan pengaturan untuk titik akhir Anda dengan membuat objek konfigurasi titik akhir. Untuk membuatnya, Anda menggunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint_config.html#create-endpoint-config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint_config.html#create-endpoint-config)metode ini. Dalam konfigurasi endpoint, Anda menetapkan objek model ke varian produksi.

1. Buat titik akhir Anda dengan menggunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint.html)metode ini. Dalam permintaan Anda, berikan konfigurasi titik akhir yang Anda buat. 

   Saat Anda membuat titik akhir, SageMaker AI menyediakan sumber daya titik akhir, dan menyebarkan model ke titik akhir.

------

### Konfigurasi
<a name="python-configure"></a>

Contoh berikut mengonfigurasi sumber daya yang Anda perlukan untuk menerapkan model ke titik akhir.

------
#### [ SageMaker Python SDK ]

Contoh berikut menetapkan sumber daya endpoint untuk model dengan objek. `ResourceRequirements` Sumber daya ini termasuk inti CPU, akselerator, dan memori. Kemudian, contoh membuat objek model dari `Model` kelas. Atau Anda dapat membuat objek model dengan membuat instance [ModelBuilder](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-modelbuilder-creation.html)kelas dan menjalankan `build` —metode ini juga ditampilkan dalam contoh. `ModelBuilder`menyediakan antarmuka terpadu untuk kemasan model, dan dalam hal ini, menyiapkan model untuk penerapan model besar. Contoh ini digunakan `ModelBuilder` untuk membangun model Hugging Face. (Anda juga dapat melewati JumpStart model). Setelah Anda membangun model, Anda dapat menentukan persyaratan sumber daya dalam objek model. Pada langkah berikutnya, Anda menggunakan objek ini untuk menyebarkan model ke titik akhir. 

```
resources = ResourceRequirements(
    requests = {
        "num_cpus": 2,  # Number of CPU cores required:
        "num_accelerators": 1, # Number of accelerators required
        "memory": 8192,  # Minimum memory required in Mb (required)
        "copies": 1,
    },
    limits = {},
)

now = datetime.now()
dt_string = now.strftime("%d-%m-%Y-%H-%M-%S")
model_name = "my-sm-model"+dt_string

# build your model with Model class
model = Model(
    name = "model-name",
    image_uri = "image-uri",
    model_data = model_url,
    role = "arn:aws:iam::111122223333:role/service-role/role-name",
    resources = resources,
    predictor_cls = Predictor,
)
                        
# Alternate mechanism using ModelBuilder
# uncomment the following section to use ModelBuilder
/*
model_builder = ModelBuilder(
    model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf"
    schema_builder=SchemaBuilder(sample_input,sample_output),
    env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" }
)

# build your Model object
model = model_builder.build()

# create a unique name from string 'mb-inference-component'
model.model_name = unique_name_from_base("mb-inference-component")

# assign resources to your model
model.resources = resources
*/
```

------
#### [ boto3 inference components ]

Contoh berikut mengkonfigurasi titik akhir dengan metode. `create_endpoint_config` Anda menetapkan konfigurasi ini ke titik akhir saat Anda membuatnya. Dalam konfigurasi, Anda menentukan satu atau lebih varian produksi. Untuk setiap varian, Anda dapat memilih jenis instans yang ingin disediakan Amazon SageMaker AI, dan Anda dapat mengaktifkan penskalaan instans terkelola.

```
endpoint_config_name = "endpoint-config-name"
endpoint_name = "endpoint-name"
inference_component_name = "inference-component-name"
variant_name = "variant-name"

sagemaker_client.create_endpoint_config(
    EndpointConfigName = endpoint_config_name,
    ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name",
    ProductionVariants = [
        {
            "VariantName": variant_name,
            "InstanceType": "ml.p4d.24xlarge",
            "InitialInstanceCount": 1,
            "ManagedInstanceScaling": {
                "Status": "ENABLED",
                "MinInstanceCount": 1,
                "MaxInstanceCount": 2,
            },
        }
    ],
)
```

------
#### [ boto3 models (without inference components) ]

**Example definisi model**  
Contoh berikut mendefinisikan model SageMaker AI dengan `create_model` metode di. AWS SDK untuk Python (Boto3)  

```
model_name = "model-name"

create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name",
    PrimaryContainer = {
        "Image": "image-uri",
        "ModelDataUrl": model_url,
    }
)
```
Contoh ini menentukan yang berikut:  
+ `ModelName`: Nama untuk model Anda (dalam contoh ini disimpan sebagai variabel string yang disebut`model_name`).
+ `ExecutionRoleArn`: Nama Sumber Daya Amazon (ARN) dari peran IAM yang dapat diasumsikan Amazon SageMaker AI untuk mengakses artefak model dan gambar Docker untuk penerapan pada instance komputasi HTML atau untuk pekerjaan transformasi batch.
+ `PrimaryContainer`: Lokasi gambar Docker utama yang berisi kode inferensi, artefak terkait, dan peta lingkungan khusus yang digunakan kode inferensi saat model diterapkan untuk prediksi.

**Example konfigurasi titik akhir**  
Contoh berikut mengkonfigurasi titik akhir dengan metode. `create_endpoint_config` Amazon SageMaker AI menggunakan konfigurasi ini untuk menyebarkan model. Dalam konfigurasi, Anda mengidentifikasi satu atau beberapa model, yang dibuat dengan `create_model` metode ini, untuk menyebarkan sumber daya yang Anda inginkan untuk disediakan Amazon SageMaker AI.  

```
endpoint_config_response = sagemaker_client.create_endpoint_config(
    EndpointConfigName = "endpoint-config-name", 
    # List of ProductionVariant objects, one for each model that you want to host at this endpoint:
    ProductionVariants = [
        {
            "VariantName": "variant-name", # The name of the production variant.
            "ModelName": model_name, 
            "InstanceType": "ml.p4d.24xlarge",
            "InitialInstanceCount": 1 # Number of instances to launch initially.
        }
    ]
)
```
Contoh ini menentukan kunci berikut untuk `ProductionVariants` bidang:  
+ `VariantName`: Nama varian produksi.
+ `ModelName`: Nama model yang ingin Anda host. Ini adalah nama yang Anda tentukan saat membuat model.
+ `InstanceType`: Jenis contoh komputasi. Lihat `InstanceType` bidang di [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) dan [Harga SageMaker AI](https://aws.amazon.com/sagemaker/pricing/) untuk daftar jenis instans komputasi yang didukung dan harga untuk setiap jenis instans.

------

### Deploy
<a name="python-deploy"></a>

Contoh berikut menyebarkan model ke titik akhir.

------
#### [ SageMaker Python SDK ]

Contoh berikut menyebarkan model ke titik akhir HTTPS real-time dengan `deploy` metode objek model. Jika Anda menentukan nilai `resources` argumen untuk pembuatan dan penerapan model, sumber daya yang Anda tentukan untuk penerapan akan diutamakan.

```
predictor = model.deploy(
    initial_instance_count = 1,
    instance_type = "ml.p4d.24xlarge", 
    endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED,
    resources = resources,
)
```

Untuk `instance_type` bidang, contoh menentukan nama jenis instans Amazon EC2 untuk model. Untuk `initial_instance_count` bidang, ini menentukan jumlah awal instance untuk menjalankan endpoint pada.

Contoh kode berikut menunjukkan kasus lain di mana Anda menerapkan model ke titik akhir dan kemudian menerapkan model lain ke titik akhir yang sama. Dalam hal ini Anda harus memberikan nama titik akhir yang sama ke `deploy` metode kedua model.

```
# Deploy the model to inference-component-based endpoint
falcon_predictor = falcon_model.deploy(
    initial_instance_count = 1,
    instance_type = "ml.p4d.24xlarge", 
    endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED,
    endpoint_name = "<endpoint_name>"
    resources = resources,
)

# Deploy another model to the same inference-component-based endpoint
llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model
    endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED,
    endpoint_name = "<endpoint_name>"  # same endpoint name as for falcon model
)
```

------
#### [ boto3 inference components ]

Setelah Anda memiliki konfigurasi endpoint, gunakan metode [create\$1endpoint untuk membuat endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint.html) Anda. Nama endpoint harus unik Wilayah AWS dalam AWS akun Anda. 

Contoh berikut membuat endpoint menggunakan konfigurasi endpoint yang ditentukan dalam permintaan. Amazon SageMaker AI menggunakan titik akhir untuk menyediakan sumber daya.

```
sagemaker_client.create_endpoint(
    EndpointName = endpoint_name,
    EndpointConfigName = endpoint_config_name,
)
```

Setelah Anda membuat titik akhir, Anda dapat menerapkan satu atau model ke sana dengan membuat komponen inferensi. Contoh berikut membuat satu dengan `create_inference_component` metode.

```
sagemaker_client.create_inference_component(
    InferenceComponentName = inference_component_name,
    EndpointName = endpoint_name,
    VariantName = variant_name,
    Specification = {
        "Container": {
            "Image": "image-uri",
            "ArtifactUrl": model_url,
        },
        "ComputeResourceRequirements": {
            "NumberOfCpuCoresRequired": 1, 
            "MinMemoryRequiredInMb": 1024
        }
    },
    RuntimeConfig = {"CopyCount": 2}
)
```

------
#### [ boto3 models (without inference components) ]

**Example deployment**  

Berikan konfigurasi titik akhir ke SageMaker AI. Layanan meluncurkan instance komputasi ML dan menerapkan model atau model seperti yang ditentukan dalam konfigurasi.

Setelah Anda memiliki konfigurasi model dan titik akhir, gunakan metode [create\$1endpoint untuk membuat titik akhir](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_endpoint.html) Anda. Nama endpoint harus unik Wilayah AWS dalam AWS akun Anda. 

Contoh berikut membuat endpoint menggunakan konfigurasi endpoint yang ditentukan dalam permintaan. Amazon SageMaker AI menggunakan titik akhir untuk menyediakan sumber daya dan menerapkan model.

```
create_endpoint_response = sagemaker_client.create_endpoint(
    # The endpoint name must be unique within an AWS Region in your AWS account:
    EndpointName = "endpoint-name"
    # The name of the endpoint configuration associated with this endpoint:
    EndpointConfigName = "endpoint-config-name")
```

------

## Menyebarkan model dengan AWS CLI
<a name="deploy-models-cli"></a>

Anda dapat menerapkan model ke titik akhir dengan menggunakan. AWS CLI

### Ikhtisar
<a name="deploy-models-cli-overview"></a>

Saat Anda menerapkan model dengan AWS CLI, Anda dapat menerapkannya dengan atau tanpa menggunakan komponen inferensi. Bagian berikut merangkum perintah yang Anda jalankan untuk kedua pendekatan. Perintah-perintah ini ditunjukkan oleh contoh-contoh berikut.

------
#### [ With inference components ]

Untuk menerapkan model dengan komponen inferensi, lakukan hal berikut:

1. (Opsional) Buat model dengan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html)perintah.

1. Tentukan pengaturan untuk titik akhir Anda dengan membuat konfigurasi titik akhir. Untuk membuatnya, Anda menjalankan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint-config.html)perintah.

1. Buat titik akhir Anda dengan menggunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html)perintah. Di badan perintah, tentukan konfigurasi titik akhir yang Anda buat.

1. Buat komponen inferensi dengan menggunakan `create-inference-component` perintah. Dalam pengaturan, Anda menentukan model dengan melakukan salah satu dari berikut ini:
   + Menentukan objek model SageMaker AI
   + Menentukan URI gambar model dan URL S3

   Anda juga mengalokasikan sumber daya titik akhir ke model. Dengan membuat komponen inferensi, Anda menerapkan model ke titik akhir. Anda dapat menerapkan beberapa model ke titik akhir dengan membuat beberapa komponen inferensi — satu untuk setiap model.

------
#### [ Without inference components ]

Untuk menerapkan model tanpa menggunakan komponen inferensi, lakukan hal berikut:

1. Buat model SageMaker AI dengan menggunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html)perintah.

1. Tentukan pengaturan untuk titik akhir Anda dengan membuat objek konfigurasi titik akhir. Untuk membuatnya, Anda menggunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint-config.html)perintah. Dalam konfigurasi endpoint, Anda menetapkan objek model ke varian produksi.

1. Buat titik akhir Anda dengan menggunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html)perintah. Di badan perintah Anda, tentukan konfigurasi titik akhir yang Anda buat.

   Saat Anda membuat titik akhir, SageMaker AI menyediakan sumber daya titik akhir, dan menyebarkan model ke titik akhir.

------

### Konfigurasi
<a name="cli-configure-endpoint"></a>

Contoh berikut mengonfigurasi sumber daya yang Anda perlukan untuk menerapkan model ke titik akhir.

------
#### [ With inference components ]

**Example create-endpoint-config perintah**  
Contoh berikut membuat konfigurasi endpoint dengan [create-endpoint-config](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint-config.html)perintah.  

```
aws sagemaker create-endpoint-config \
--endpoint-config-name endpoint-config-name \
--execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\
--production-variants file://production-variants.json
```
Dalam contoh ini, file `production-variants.json` mendefinisikan varian produksi dengan JSON berikut:  

```
[
    {
        "VariantName": "variant-name",
        "ModelName": "model-name",
        "InstanceType": "ml.p4d.24xlarge",
        "InitialInstanceCount": 1
    }
]
```
Jika perintah berhasil, AWS CLI merespons dengan ARN untuk sumber daya yang Anda buat.  

```
{
    "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name"
}
```

------
#### [ Without inference components ]

**Example perintah buat-model**  
Contoh berikut membuat model dengan perintah [create-model](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html).  

```
aws sagemaker create-model \
--model-name model-name \
--execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \
--primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"
```
Jika perintah berhasil, AWS CLI merespons dengan ARN untuk sumber daya yang Anda buat.  

```
{
    "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name"
}
```

**Example create-endpoint-config perintah**  
Contoh berikut membuat konfigurasi endpoint dengan [create-endpoint-config](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint-config.html)perintah.  

```
aws sagemaker create-endpoint-config \
--endpoint-config-name endpoint-config-name \
--production-variants file://production-variants.json
```
Dalam contoh ini, file `production-variants.json` mendefinisikan varian produksi dengan JSON berikut:  

```
[
    {
        "VariantName": "variant-name",
        "ModelName": "model-name",
        "InstanceType": "ml.p4d.24xlarge",
        "InitialInstanceCount": 1
    }
]
```
Jika perintah berhasil, AWS CLI merespons dengan ARN untuk sumber daya yang Anda buat.  

```
{
    "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name"
}
```

------

### Deploy
<a name="cli-deploy"></a>

Contoh berikut menyebarkan model ke titik akhir.

------
#### [ With inference components ]

**Example perintah buat-titik akhir**  
Contoh berikut membuat endpoint dengan perintah [create-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html).  

```
aws sagemaker create-endpoint \
--endpoint-name endpoint-name \
--endpoint-config-name endpoint-config-name
```
Jika perintah berhasil, AWS CLI merespons dengan ARN untuk sumber daya yang Anda buat.  

```
{
    "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name"
}
```

**Example create-inference-component perintah**  
Contoh berikut membuat komponen inferensi dengan create-inference-component perintah.  

```
aws sagemaker create-inference-component \
--inference-component-name inference-component-name \
--endpoint-name endpoint-name \
--variant-name variant-name \
--specification file://specification.json \
--runtime-config "{\"CopyCount\": 2}"
```
Dalam contoh ini, file `specification.json` mendefinisikan wadah dan menghitung sumber daya dengan JSON berikut:  

```
{
    "Container": {
        "Image": "image-uri",
        "ArtifactUrl": "model-s3-url"
    },
    "ComputeResourceRequirements": {
        "NumberOfCpuCoresRequired": 1,
        "MinMemoryRequiredInMb": 1024
    }
}
```
Jika perintah berhasil, AWS CLI merespons dengan ARN untuk sumber daya yang Anda buat.  

```
{
    "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name"
}
```

------
#### [ Without inference components ]

**Example perintah buat-titik akhir**  
Contoh berikut membuat endpoint dengan perintah [create-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html).  

```
aws sagemaker create-endpoint \
--endpoint-name endpoint-name \
--endpoint-config-name endpoint-config-name
```
Jika perintah berhasil, AWS CLI merespons dengan ARN untuk sumber daya yang Anda buat.  

```
{
    "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name"
}
```

------

# Memanggil model untuk inferensi waktu nyata
<a name="realtime-endpoints-test-endpoints"></a>

Setelah menggunakan Amazon SageMaker AI untuk menerapkan model ke titik akhir, Anda dapat berinteraksi dengan model dengan mengirimkan permintaan inferensi ke model tersebut. Untuk mengirim permintaan inferensi ke model, Anda memanggil titik akhir yang menghostingnya. Anda dapat memanggil titik akhir Anda menggunakan Amazon SageMaker Studio, the AWS SDKs, atau. AWS CLI

## Panggil Model Anda Menggunakan Amazon Studio SageMaker
<a name="realtime-endpoints-test-endpoints-studio"></a>

Setelah menerapkan model ke titik akhir, Anda dapat melihat titik akhir melalui Amazon SageMaker Studio dan menguji titik akhir dengan mengirimkan permintaan inferensi tunggal.

**catatan**  
SageMaker AI hanya mendukung pengujian titik akhir di Studio untuk titik akhir waktu nyata.

**Untuk mengirim permintaan inferensi pengujian ke titik akhir Anda**

1. Luncurkan Amazon SageMaker Studio.

1. Di panel navigasi di sebelah kiri, pilih **Deployment**.

1. **Dari dropdown, pilih Endpoints.**

1. Temukan titik akhir Anda berdasarkan nama, dan pilih nama di tabel. Nama titik akhir yang tercantum di panel **Endpoints** ditentukan saat Anda menerapkan model. Ruang kerja Studio membuka halaman **Endpoint** di tab baru.

1. Pilih tab **Inferensi uji**.

1. Untuk **Opsi Pengujian**, pilih salah satu dari berikut ini:

   1. Pilih **Uji permintaan sampel** untuk segera mengirim permintaan ke titik akhir Anda. Gunakan **editor JSON** untuk menyediakan data sampel dalam format JSON, dan pilih **Kirim Permintaan untuk mengirimkan permintaan** ke titik akhir Anda. Setelah mengirimkan permintaan Anda, Studio menampilkan output inferensi dalam kartu di sebelah kanan editor JSON.

   1. Pilih **Gunakan kode contoh SDK Python** untuk melihat kode pengiriman permintaan ke titik akhir. Kemudian, salin contoh kode dari bagian **permintaan inferensi Contoh** dan jalankan kode dari lingkungan pengujian Anda.

Bagian atas kartu menunjukkan jenis permintaan yang dikirim ke titik akhir (hanya JSON yang diterima). Kartu menunjukkan bidang-bidang berikut:
+ **Status** - menampilkan salah satu jenis status berikut:
  + `Success`Permintaan itu berhasil.
  + `Failed`— Permintaan gagal. Respons muncul di bawah **Failure Reason**.
  + `Pending`— Saat permintaan inferensi tertunda, status menunjukkan ikon melingkar yang berputar.
+ **Panjang Eksekusi** - Berapa lama waktu pemanggilan (waktu akhir dikurangi waktu mulai) dalam milidetik.
+ **Waktu Permintaan** — Berapa menit telah berlalu sejak permintaan dikirim.
+ **Waktu Hasil** — Berapa menit telah berlalu sejak hasilnya dikembalikan.

## Panggil Model Anda dengan Menggunakan AWS SDK untuk Python (Boto3)
<a name="realtime-endpoints-test-endpoints-api"></a>

Jika Anda ingin memanggil titik akhir model dalam kode aplikasi Anda, Anda dapat menggunakan salah satunya AWS SDKs, termasuk. AWS SDK untuk Python (Boto3) Untuk memanggil endpoint Anda dengan SDK ini, Anda menggunakan salah satu metode Python berikut:
+ `invoke_endpoint`— Mengirim permintaan inferensi ke titik akhir model dan mengembalikan respons yang dihasilkan model. 

  Metode ini mengembalikan muatan inferensi sebagai satu respons setelah model selesai menghasilkannya. Untuk informasi selengkapnya, lihat [invoke\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime/client/invoke_endpoint.html) di Referensi API *AWS SDK for Python (Boto3*).
+ `invoke_endpoint_with_response_stream`— Mengirim permintaan inferensi ke titik akhir model dan mengalirkan respons secara bertahap saat model menghasilkannya. 

  Dengan metode ini, aplikasi Anda menerima bagian dari respons segera setelah suku cadang tersedia. Untuk informasi selengkapnya, lihat [invoke\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime/client/invoke_endpoint.html) di Referensi API *AWS SDK for Python (Boto3*).

  Gunakan metode ini hanya untuk memanggil model yang mendukung streaming inferensi.

Sebelum Anda dapat menggunakan metode ini dalam kode aplikasi Anda, Anda harus menginisialisasi klien SageMaker AI Runtime, dan Anda harus menentukan nama titik akhir Anda. Contoh berikut mengatur klien dan titik akhir untuk sisa contoh berikut:

```
import boto3

sagemaker_runtime = boto3.client(
    "sagemaker-runtime", region_name='aws_region')

endpoint_name='endpoint-name'
```

### Memohon untuk Mendapatkan Respons Inferensi
<a name="test-invoke-endpoint"></a>

Contoh berikut menggunakan `invoke_endpoint` metode untuk memanggil titik akhir dengan: AWS SDK untuk Python (Boto3)

```
# Gets inference from the model hosted at the specified endpoint:
response = sagemaker_runtime.invoke_endpoint(
    EndpointName=endpoint_name, 
    Body=bytes('{"features": ["This is great!"]}', 'utf-8')
    )

# Decodes and prints the response body:
print(response['Body'].read().decode('utf-8'))
```

Contoh ini memberikan data input di `Body` lapangan agar SageMaker AI dapat diteruskan ke model. Data ini harus dalam format yang sama dengan yang digunakan untuk pelatihan. Contoh memberikan respon terhadap `response` variabel.

`response`Variabel menyediakan akses ke status HTTP, nama model yang digunakan, dan bidang lainnya. Cuplikan berikut mencetak kode status HTTP:

```
print(response["HTTPStatusCode"])
```

### Memanggil untuk Streaming Respons Inferensi
<a name="test-invoke-endpoint-with-response-stream"></a>

Jika Anda menerapkan model yang mendukung streaming inferensi, Anda dapat memanggil model untuk menerima muatan inferensinya sebagai aliran suku cadang. Model memberikan bagian-bagian ini secara bertahap saat model menghasilkannya. Saat aplikasi menerima aliran inferensi, aplikasi tidak perlu menunggu model menghasilkan seluruh muatan respons. Sebagai gantinya, aplikasi segera menerima bagian dari respons saat tersedia. 

Dengan menggunakan aliran inferensi dalam aplikasi Anda, Anda dapat membuat interaksi di mana pengguna Anda menganggap inferensi menjadi cepat karena mereka mendapatkan bagian pertama dengan segera. Anda dapat menerapkan streaming untuk mendukung pengalaman interaktif yang cepat, seperti chatbots, asisten virtual, dan generator musik. Misalnya, Anda dapat membuat chatbot yang secara bertahap menampilkan teks yang dihasilkan oleh model bahasa besar (LLM).

Untuk mendapatkan aliran inferensi, Anda dapat menggunakan `invoke_endpoint_with_response_stream` metode ini. Dalam badan respons, SDK menyediakan `EventStream` objek, yang memberikan inferensi sebagai serangkaian `PayloadPart` objek.

**Example Aliran Inferensi**  
Contoh berikut adalah aliran `PayloadPart` objek:  

```
{'PayloadPart': {'Bytes': b'{"outputs": [" a"]}\n'}}
{'PayloadPart': {'Bytes': b'{"outputs": [" challenging"]}\n'}}
{'PayloadPart': {'Bytes': b'{"outputs": [" problem"]}\n'}}
. . .
```
Di setiap bagian muatan, `Bytes` bidang menyediakan sebagian dari respons inferensi dari model. Bagian ini dapat berupa jenis konten apa pun yang dihasilkan model, seperti teks, gambar, atau data audio. Dalam contoh ini, bagian-bagiannya adalah objek JSON yang berisi teks yang dihasilkan dari LLM.  
Biasanya, bagian payload berisi potongan data terpisah dari model. Dalam contoh ini, potongan diskrit adalah objek JSON utuh. Kadang-kadang, respons streaming membagi potongan menjadi beberapa bagian muatan, atau menggabungkan beberapa potongan menjadi satu bagian muatan. Contoh berikut menunjukkan potongan data dalam format JSON yang dibagi menjadi dua bagian payload:  

```
{'PayloadPart': {'Bytes': b'{"outputs": '}}
{'PayloadPart': {'Bytes': b'[" problem"]}\n'}}
```
Saat Anda menulis kode aplikasi yang memproses aliran inferensi, sertakan logika yang menangani pemisahan dan kombinasi data sesekali ini. Sebagai salah satu strategi, Anda dapat menulis kode yang menggabungkan konten `Bytes` saat aplikasi Anda menerima bagian payload. Dengan menggabungkan contoh data JSON di sini, Anda akan menggabungkan data menjadi badan JSON yang dibatasi baris baru. Kemudian, kode Anda dapat memproses aliran dengan mengurai seluruh objek JSON pada setiap baris.  
Contoh berikut menunjukkan JSON yang dibatasi baris baru yang akan Anda buat saat Anda menggabungkan isi contoh: `Bytes`  

```
{"outputs": [" a"]}
{"outputs": [" challenging"]}
{"outputs": [" problem"]}
. . .
```

**Example Kode untuk Memproses Aliran Inferensi**  

Contoh kelas Python berikut,`SmrInferenceStream`, menunjukkan bagaimana Anda dapat memproses aliran inferensi yang mengirimkan data teks dalam format JSON:

```
import io
import json

# Example class that processes an inference stream:
class SmrInferenceStream:
    
    def __init__(self, sagemaker_runtime, endpoint_name):
        self.sagemaker_runtime = sagemaker_runtime
        self.endpoint_name = endpoint_name
        # A buffered I/O stream to combine the payload parts:
        self.buff = io.BytesIO() 
        self.read_pos = 0
        
    def stream_inference(self, request_body):
        # Gets a streaming inference response 
        # from the specified model endpoint:
        response = self.sagemaker_runtime\
            .invoke_endpoint_with_response_stream(
                EndpointName=self.endpoint_name, 
                Body=json.dumps(request_body), 
                ContentType="application/json"
        )
        # Gets the EventStream object returned by the SDK:
        event_stream = response['Body']
        for event in event_stream:
            # Passes the contents of each payload part
            # to be concatenated:
            self._write(event['PayloadPart']['Bytes'])
            # Iterates over lines to parse whole JSON objects:
            for line in self._readlines():
                resp = json.loads(line)
                part = resp.get("outputs")[0]
                # Returns parts incrementally:
                yield part
    
    # Writes to the buffer to concatenate the contents of the parts:
    def _write(self, content):
        self.buff.seek(0, io.SEEK_END)
        self.buff.write(content)

    # The JSON objects in buffer end with '\n'.
    # This method reads lines to yield a series of JSON objects:
    def _readlines(self):
        self.buff.seek(self.read_pos)
        for line in self.buff.readlines():
            self.read_pos += len(line)
            yield line[:-1]
```

Contoh ini memproses aliran inferensi dengan melakukan hal berikut:
+ Menginisialisasi klien SageMaker AI Runtime dan menetapkan nama titik akhir model. Sebelum Anda bisa mendapatkan aliran inferensi, model yang dihosting endpoint harus mendukung streaming inferensi.
+ Dalam `stream_inference` metode contoh, menerima badan permintaan dan meneruskannya ke `invoke_endpoint_with_response_stream` metode SDK.
+ Iterasi atas setiap peristiwa dalam `EventStream` objek yang SDK kembalikan.
+ Dari setiap peristiwa, dapatkan isi `Bytes` objek dalam `PayloadPart` objek.
+ Dalam `_write` metode contoh, menulis ke buffer untuk menggabungkan isi objek. `Bytes` Konten gabungan membentuk badan JSON yang dibatasi baris baru.
+ Menggunakan `_readlines` metode contoh untuk mendapatkan serangkaian objek JSON yang dapat diulang.
+ Di setiap objek JSON, mendapat sepotong inferensi.
+ Dengan `yield` ekspresi, mengembalikan potongan secara bertahap.

Contoh berikut membuat dan menggunakan `SmrInferenceStream` objek:

```
request_body = {"inputs": ["Large model inference is"],
                "parameters": {"max_new_tokens": 100,
                               "enable_sampling": "true"}}
smr_inference_stream = SmrInferenceStream(
    sagemaker_runtime, endpoint_name)
stream = smr_inference_stream.stream_inference(request_body)
for part in stream:
    print(part, end='')
```

Contoh ini meneruskan badan permintaan ke `stream_inference` metode. Ini mengulangi respons untuk mencetak setiap bagian yang dikembalikan oleh aliran inferensi.

Contoh mengasumsikan bahwa model pada titik akhir yang ditentukan adalah LLM yang menghasilkan teks. Output dari contoh ini adalah kumpulan teks yang dihasilkan yang mencetak secara bertahap:

```
a challenging problem in machine learning. The goal is to . . .
```

## Panggil Model Anda dengan Menggunakan AWS CLI
<a name="realtime-endpoints-test-endpoints-cli"></a>

Anda dapat memanggil titik akhir model Anda dengan menjalankan perintah dengan AWS Command Line Interface ()AWS CLI. AWS CLI Mendukung permintaan inferensi standar dengan `invoke-endpoint` perintah, dan mendukung permintaan inferensi asinkron dengan perintah. `invoke-endpoint-async`

**catatan**  
 AWS CLI Itu tidak mendukung permintaan inferensi streaming.

Contoh berikut menggunakan `invoke-endpoint` perintah untuk mengirim permintaan inferensi ke titik akhir model:

```
aws sagemaker-runtime invoke-endpoint \
    --endpoint-name endpoint_name \
    --body fileb://$file_name \
    output_file.txt
```

Untuk `--endpoint-name` parameter, berikan nama titik akhir yang Anda tentukan saat Anda membuat titik akhir. Untuk `--body` parameter, berikan data input agar SageMaker AI dapat diteruskan ke model. Data harus dalam format yang sama dengan yang digunakan untuk pelatihan. Contoh ini menunjukkan cara mengirim data biner ke titik akhir Anda.

Untuk informasi selengkapnya tentang `fileb://` kapan harus menggunakan `file://` over saat meneruskan konten file ke parameter AWS CLI, lihat [Praktik Terbaik untuk Parameter File Lokal](https://aws.amazon.com/blogs/developer/best-practices-for-local-file-parameters/).

Untuk informasi selengkapnya, dan untuk melihat parameter tambahan yang dapat Anda lewati, lihat [https://docs.aws.amazon.com/cli/latest/reference/sagemaker-runtime/invoke-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-runtime/invoke-endpoint.html)di *AWS CLI Command Reference*.

Jika `invoke-endpoint` perintah berhasil mengembalikan respon seperti berikut:

```
{
    "ContentType": "<content_type>; charset=utf-8",
    "InvokedProductionVariant": "<Variant>"
}
```

Jika perintah tidak berhasil, periksa apakah muatan input dalam format yang benar.

Lihat output dari pemanggilan dengan memeriksa file output file (`output_file.txt`dalam contoh ini).

```
more output_file.txt
```

## Memanggil Model Anda dengan Menggunakan AWS SDK untuk Python
<a name="realtime-endpoints-test-endpoints-sdk"></a>

### Memanggil untuk Streaming Dua Arah Permintaan Inferensi dan Respons
<a name="realtime-endpoints-test-endpoints-sdk-overview"></a>

Jika Anda ingin menjalankan endpoint model dalam kode aplikasi Anda untuk mendukung streaming dua arah, Anda dapat menggunakan [SDK eksperimental baru untuk Python](https://github.com/awslabs/aws-sdk-python) yang mendukung kemampuan streaming dua arah dengan dukungan HTTP/2. SDK ini memungkinkan komunikasi dua arah real-time antara aplikasi klien Anda dan SageMaker titik akhir, memungkinkan Anda mengirim permintaan inferensi secara bertahap sambil secara bersamaan menerima respons streaming saat model menghasilkannya. Ini sangat berguna untuk aplikasi interaktif di mana klien dan server perlu bertukar data terus menerus melalui koneksi persisten.

**catatan**  
SDK eksperimental baru berbeda dari SDK Boto3 standar dan mendukung koneksi dua arah persisten untuk pertukaran data. Saat menggunakan SDK Python eksperimental, kami sangat menyarankan penyematan ketat ke versi SDK untuk kasus penggunaan non-eksperimental apa pun.

Untuk memanggil titik akhir Anda dengan streaming dua arah, gunakan metode ini. `invoke_endpoint_with_bidirectional_stream` Metode ini membuat koneksi persisten yang memungkinkan Anda mengalirkan beberapa potongan payload ke model Anda sambil menerima respons secara real-time saat model memproses data. Koneksi tetap terbuka sampai Anda secara eksplisit menutup aliran input atau titik akhir menutup koneksi, mendukung hingga 30 menit waktu koneksi.

### Prasyarat
<a name="realtime-endpoints-test-endpoints-sdk-prereq"></a>

Sebelum Anda dapat menggunakan streaming dua arah dalam kode aplikasi Anda, Anda harus:

1. Instal SageMaker Runtime HTTP/2 SDK eksperimental

1. Siapkan AWS kredensil untuk klien Runtime Anda SageMaker 

1. Menerapkan model yang mendukung streaming dua arah ke titik akhir SageMaker 

### Siapkan klien streaming dua arah
<a name="realtime-endpoints-test-endpoints-sdk-setup-client"></a>

Contoh berikut menunjukkan cara menginisialisasi komponen yang diperlukan untuk streaming dua arah:

```
from sagemaker_runtime_http2.client import SageMakerRuntimeHTTP2Client
from sagemaker_runtime_http2.config import Config, HTTPAuthSchemeResolver
from smithy_aws_core.identity import EnvironmentCredentialsResolver
from smithy_aws_core.auth.sigv4 import SigV4AuthScheme

# Configuration
AWS_REGION = "us-west-2"
BIDI_ENDPOINT = f"https://runtime.sagemaker.{AWS_REGION}.amazonaws.com:8443"
ENDPOINT_NAME = "your-endpoint-name"

# Initialize the client configuration
config = Config(
    endpoint_uri=BIDI_ENDPOINT,
    region=AWS_REGION,
    aws_credentials_identity_resolver=EnvironmentCredentialsResolver(),
    auth_scheme_resolver=HTTPAuthSchemeResolver(),
    auth_schemes={"aws.auth#sigv4": SigV4AuthScheme(service="sagemaker")}
)

# Create the SageMaker Runtime HTTP/2 client
client = SageMakerRuntimeHTTP2Client(config=config)
```

### Klien streaming dua arah lengkap
<a name="realtime-endpoints-test-endpoints-sdk-complete-client"></a>

Contoh berikut menunjukkan cara membuat klien streaming dua arah yang mengirimkan beberapa muatan teks ke SageMaker titik akhir dan memproses respons secara real-time:

```
import asyncio
import logging
from sagemaker_runtime_http2.client import SageMakerRuntimeHTTP2Client
from sagemaker_runtime_http2.config import Config, HTTPAuthSchemeResolver
from sagemaker_runtime_http2.models import (
    InvokeEndpointWithBidirectionalStreamInput, 
    RequestStreamEventPayloadPart, 
    RequestPayloadPart
)
from smithy_aws_core.identity import EnvironmentCredentialsResolver
from smithy_aws_core.auth.sigv4 import SigV4AuthScheme

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

class SageMakerBidirectionalClient:
    
    def __init__(self, endpoint_name, region="us-west-2"):
        self.endpoint_name = endpoint_name
        self.region = region
        self.client = None
        self.stream = None
        self.response_task = None
        self.is_active = False
        
    def _initialize_client(self):
        bidi_endpoint = f"runtime.sagemaker.{self.region}.amazonaws.com:8443"
        config = Config(
            endpoint_uri=bidi_endpoint,
            region=self.region,
            aws_credentials_identity_resolver=EnvironmentCredentialsResolver(),
            auth_scheme_resolver=HTTPAuthSchemeResolver(),
            auth_schemes={"aws.auth#sigv4": SigV4AuthScheme(service="sagemaker")}
        )
        self.client = SageMakerRuntimeHTTP2Client(config=config)
    
    async def start_session(self):
        """Establish a bidirectional streaming connection with the endpoint."""
        if not self.client:
            self._initialize_client()
            
        logger.info(f"Starting session with endpoint: {self.endpoint_name}")
        self.stream = await self.client.invoke_endpoint_with_bidirectional_stream(
            InvokeEndpointWithBidirectionalStreamInput(endpoint_name=self.endpoint_name)
        )
        self.is_active = True
        
        # Start processing responses concurrently
        self.response_task = asyncio.create_task(self._process_responses())
    
    async def send_message(self, message):
        """Send a single message to the endpoint."""
        if not self.is_active:
            raise RuntimeError("Session not active. Call start_session() first.")
            
        logger.info(f"Sending message: {message}")
        payload = RequestPayloadPart(bytes_=message.encode('utf-8'))
        event = RequestStreamEventPayloadPart(value=payload)
        await self.stream.input_stream.send(event)
    
    async def send_multiple_messages(self, messages, delay=1.0):
        """Send multiple messages with a delay between each."""
        for message in messages:
            await self.send_message(message)
            await asyncio.sleep(delay)
    
    async def end_session(self):
        """Close the bidirectional streaming connection."""
        if not self.is_active:
            return
            
        await self.stream.input_stream.close()
        self.is_active = False
        logger.info("Stream closed")
        
        # Cancel the response processing task
        if self.response_task and not self.response_task.done():
            self.response_task.cancel()
    
    async def _process_responses(self):
        """Process incoming responses from the endpoint."""
        try:
            output = await self.stream.await_output()
            output_stream = output[1]
            
            while self.is_active:
                result = await output_stream.receive()
                
                if result is None:
                    logger.info("No more responses")
                    break
                
                if result.value and result.value.bytes_:
                    response_data = result.value.bytes_.decode('utf-8')
                    logger.info(f"Received: {response_data}")
                    
        except Exception as e:
            logger.error(f"Error processing responses: {e}")

# Example usage
async def run_bidirectional_client():
    client = SageMakerBidirectionalClient(endpoint_name="your-endpoint-name")
    
    try:
        # Start the session
        await client.start_session()
        
        # Send multiple messages
        messages = [
            "I need help with", 
            "my account balance", 
            "I can help with that", 
            "and recent charges"
        ]
        await client.send_multiple_messages(messages)
        
        # Wait for responses to be processed
        await asyncio.sleep(2)
        
        # End the session
        await client.end_session()
        logger.info("Session ended successfully")
        
    except Exception as e:
        logger.error(f"Client error: {e}")
        await client.end_session()

if __name__ == "__main__":
    asyncio.run(run_bidirectional_client())
```

Klien menginisialisasi klien SageMaker Runtime HTTP/2 dengan URI endpoint regional pada port 8443, yang diperlukan untuk koneksi streaming dua arah. `session()`Metode start\$1 memanggil `invoke_endpoint_with_bidirectional_stream()` untuk membuat koneksi persisten dan membuat tugas asinkron untuk memproses respons yang masuk secara bersamaan.

`send_event()`Metode ini membungkus data payload dalam objek permintaan yang sesuai dan mengirimkannya melalui aliran input, sementara `_process_responses()` metode terus mendengarkan dan memproses respons dari titik akhir saat mereka tiba. Pendekatan dua arah ini memungkinkan interaksi real-time di mana baik mengirim permintaan dan menerima tanggapan terjadi secara bersamaan melalui koneksi yang sama.

# Titik akhir
<a name="realtime-endpoints-manage"></a>

Setelah menerapkan model Anda ke titik akhir, Anda mungkin ingin melihat dan mengelola titik akhir. Dengan SageMaker AI, Anda dapat melihat status dan detail titik akhir Anda, memeriksa metrik dan log untuk memantau kinerja titik akhir Anda, memperbarui model yang diterapkan ke titik akhir Anda, dan banyak lagi.

Bagian berikut menunjukkan bagaimana Anda dapat mengelola titik akhir dalam Amazon SageMaker Studio atau di dalam. Konsol Manajemen AWS

Halaman berikut menjelaskan cara melihat dan membuat perubahan secara interaktif pada titik akhir Anda menggunakan konsol Amazon SageMaker AI atau SageMaker Studio.

**Topics**
+ [Lihat detail titik akhir di Studio SageMaker](manage-endpoints-studio.md)
+ [Lihat detail titik akhir di konsol SageMaker AI](manage-endpoints-console.md)

# Lihat detail titik akhir di Studio SageMaker
<a name="manage-endpoints-studio"></a>

Di Amazon SageMaker Studio, Anda dapat melihat dan mengelola titik akhir SageMaker AI Hosting Anda. Untuk mempelajari lebih lanjut tentang Studio, lihat [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html).

Untuk menemukan daftar titik akhir Anda di SageMaker Studio lakukan hal berikut:

1. Buka aplikasi Studio.

1. Di panel navigasi kiri, pilih **Deployment**.

1. **Dari menu dropdown, pilih Endpoints.**

Halaman **Endpoints** terbuka, yang mencantumkan semua titik akhir SageMaker AI Hosting Anda. Dari halaman ini, Anda dapat melihat titik akhir dan **Statusnya**. Anda juga dapat membuat titik akhir baru, mengedit titik akhir yang ada, atau menghapus titik akhir.

Untuk melihat detail titik akhir tertentu, pilih titik akhir dari daftar. Pada halaman detail titik akhir, Anda mendapatkan ikhtisar seperti tangkapan layar berikut.

![\[Screenshot dari halaman utama endpoint yang menampilkan ringkasan detail endpoint di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-endpoint-details-page.png)


Setiap halaman detail endpoint berisi tab informasi berikut:

# Lihat Varian (atau Model)
<a name="manage-endpoints-studio-variants"></a>

Tab **Varians** (juga disebut tab **Model** jika titik akhir Anda memiliki beberapa model yang diterapkan) menunjukkan daftar [varian model atau model](https://docs.aws.amazon.com/sagemaker/latest/dg/model-ab-testing.html) yang saat ini diterapkan ke titik akhir Anda. Tangkapan layar berikut menunjukkan kepada Anda seperti apa ikhtisar dan bagian **Model** untuk titik akhir dengan beberapa model yang digunakan.

![\[Screenshot dari halaman utama endpoint yang menampilkan beberapa model yang digunakan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-goldfinch-multi-model-endpoint.png)


Anda dapat menambahkan atau mengedit pengaturan untuk setiap varian atau model. **Anda juga dapat memilih varian dan mengaktifkan kebijakan auto-scaling default, yang dapat Anda edit nanti di tab Penskalaan otomatis.**

# Lihat pengaturan
<a name="manage-endpoints-studio-settings"></a>

Pada tab **Pengaturan**, Anda dapat melihat peran AWS IAM terkait titik akhir, AWS KMS kunci yang digunakan untuk enkripsi (jika ada), nama VPC Anda, dan pengaturan isolasi jaringan.

# Inferensi uji
<a name="manage-endpoints-studio-test"></a>

Pada tab **Inferensi uji**, Anda dapat mengirim permintaan inferensi pengujian ke model yang diterapkan. Ini berguna jika Anda ingin memverifikasi bahwa titik akhir Anda merespons permintaan seperti yang diharapkan.

Untuk menguji inferensi, lakukan hal berikut:

1. Pada tab **Inferensi uji** model, pilih salah satu opsi berikut:

   1. Pilih **Masukkan isi permintaan** jika Anda ingin menguji titik akhir dan menerima respons melalui antarmuka Studio.

   1. Pilih **Salin kode contoh (Python)** jika Anda ingin menyalin AWS SDK untuk Python (Boto3) contoh yang dapat Anda gunakan untuk memanggil titik akhir Anda dari lingkungan lokal dan menerima respons secara terprogram.

1. Untuk **Model**, pilih model yang ingin Anda uji pada titik akhir.

1. Jika Anda memilih metode pengujian antarmuka Studio, Anda juga dapat memilih **jenis Konten** yang diinginkan untuk respons dari tarik-turun.

Setelah mengonfigurasi permintaan Anda, maka Anda dapat memilih **Kirim permintaan** (untuk menerima respons melalui antarmuka Studio) atau **Salin untuk menyalin** contoh Python.

Jika Anda menerima respons melalui antarmuka Studio, itu akan terlihat seperti tangkapan layar berikut.

![\[Screenshot dari permintaan pengujian inferensi yang berhasil pada titik akhir di Studio.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/endpoint-test-inference.png)


# Penskalaan otomatis
<a name="manage-endpoints-studio-autoscaling"></a>

Pada tab **Penskalaan otomatis**, Anda dapat melihat kebijakan auto-scaling yang dikonfigurasi untuk model yang dihosting di titik akhir Anda. Tangkapan layar berikut menunjukkan tab **Penskalaan otomatis**.

![\[Tangkapan layar tab Penskalaan otomatis, menampilkan satu kebijakan aktif.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference/studio-endpoint-autoscaling.png)


Anda dapat memilih **Edit auto-scaling** untuk mengubah kebijakan apa pun dan mengaktifkan atau menonaktifkan kebijakan auto-scaling default.

Untuk mempelajari lebih lanjut tentang auto-scaling untuk titik akhir real-time, lihat [Menskalakan Model AI Amazon Secara Otomatis](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html). SageMaker Jika Anda tidak yakin cara mengonfigurasi kebijakan auto-scaling untuk endpoint, Anda dapat menggunakan lowongan rekomendasi [penskalaan otomatis Inference Recommender untuk mendapatkan rekomendasi kebijakan auto-scaling](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-autoscaling.html).

# Lihat detail titik akhir di konsol SageMaker AI
<a name="manage-endpoints-console"></a>

Untuk melihat titik akhir Anda di konsol SageMaker AI, lakukan hal berikut:

1. Buka konsol SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Di panel navigasi kiri, pilih **Inferensi**.

1. **Dari daftar dropdown, pilih Endpoints.**

1. Pada halaman **Endpoints**, pilih endpoint Anda.

Halaman detail titik akhir harus terbuka, menampilkan ringkasan titik akhir dan metrik yang telah dikumpulkan untuk titik akhir Anda.

Bagian berikut menjelaskan tab pada halaman detail titik akhir.

# Pemantauan titik akhir
<a name="manage-endpoints-console-monitoring"></a>

Setelah membuat titik akhir SageMaker AI Hosting, Anda dapat memantau titik akhir Anda menggunakan Amazon CloudWatch, yang mengumpulkan data mentah dan memprosesnya menjadi metrik yang dapat dibaca, mendekati waktu nyata. Dengan menggunakan metrik ini, Anda dapat mengakses informasi historis dan mendapatkan perspektif yang lebih baik tentang kinerja titik akhir Anda. Untuk informasi selengkapnya, lihat *[Panduan CloudWatch Pengguna Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)*.

Dari tab **Monitoring** pada halaman detail titik akhir, Anda dapat melihat data CloudWatch metrik yang telah dikumpulkan dari titik akhir Anda.

Tab **Monitoring** mencakup bagian-bagian berikut:
+ **Metrik operasional**: Lihat metrik yang melacak pemanfaatan sumber daya titik akhir Anda, seperti Pemanfaatan CPU dan Pemanfaatan Memori.
+ **Metrik pemanggilan**: Lihat metrik yang melacak jumlah, kesehatan, dan status `InvokeEndpoint` permintaan yang masuk ke titik akhir Anda, seperti Kesalahan Model Pemanggilan dan Latensi Model.
+ **Metrik Kesehatan**: Lihat metrik yang melacak kesehatan keseluruhan titik akhir Anda, seperti Kegagalan Pemanggilan dan Kegagalan Pemberitahuan.

Untuk deskripsi rinci dari setiap metrik, lihat [Monitor SageMaker AI dengan CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html).

Tangkapan layar berikut menunjukkan bagian **Metrik operasional** untuk titik akhir tanpa server.

![\[Tangkapan layar grafik metrik di bagian metrik operasional halaman detail titik akhir.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/hosting-operational-metrics.png)




Anda dapat menyesuaikan **Periode** dan **Statistik** yang ingin Anda lacak untuk metrik di bagian tertentu, serta lamanya waktu yang Anda inginkan untuk melihat data metrik. Anda juga dapat menambahkan dan menghapus widget metrik dari tampilan untuk setiap bagian dengan memilih **Tambah widget**. Dalam kotak dialog **Add widget**, Anda dapat memilih dan membatalkan pilihan metrik yang ingin Anda lihat.

Metrik yang tersedia mungkin bergantung pada jenis titik akhir Anda. Misalnya, titik akhir tanpa server memiliki beberapa metrik yang tidak tersedia untuk titik akhir real-time. Untuk informasi metrik yang lebih spesifik menurut jenis titik akhir, lihat halaman berikut:
+ [Memantau titik akhir tanpa server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints-monitoring.html)
+ [Memantau titik akhir asinkron](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-monitor.html)
+ [Metrik CW untuk Penerapan Titik Akhir Multi-Model](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoint-cloudwatch-metrics.html)
+ [Log dan Metrik Pipa Inferensi](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html)

# Pengaturan
<a name="manage-endpoints-console-settings"></a>

Anda dapat memilih tab **Pengaturan** untuk melihat informasi tambahan tentang titik akhir Anda, seperti pengaturan pengambilan data, konfigurasi titik akhir, dan tag.

# Membuat dan melihat alarm
<a name="manage-endpoints-console-alarms"></a>

Dari tab **Alarm** di halaman detail titik akhir, Anda dapat melihat dan membuat alarm metrik ambang batas statis sederhana, tempat Anda menentukan nilai ambang batas untuk metrik. Jika metrik melanggar nilai ambang batas, alarm masuk ke `ALARM` negara bagian. Untuk informasi selengkapnya tentang CloudWatch alarm, lihat [Menggunakan CloudWatch alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

Di bagian **Ringkasan titik akhir**, Anda dapat melihat bidang **Alarm**, yang memberi tahu Anda berapa banyak alarm yang saat ini aktif di titik akhir Anda.

Untuk melihat alarm mana yang berada dalam `ALARM` status, pilih tab **Alarm**. Tab **Alarm menampilkan daftar lengkap alarm** endpoint Anda, bersama dengan detail tentang status dan kondisinya. Tangkapan layar berikut menunjukkan daftar alarm di bagian ini yang telah dikonfigurasi untuk titik akhir.

![\[Tangkapan layar tab alarm di halaman detail titik akhir yang menampilkan daftar CloudWatch alarm.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/hosting-alarms-tab.png)


Status alarm dapat berupa `In alarm``OK`, atau `Insufficient data` jika tidak ada cukup data metrik yang dikumpulkan.

Untuk membuat alarm baru untuk titik akhir Anda, lakukan hal berikut:

1. Di tab **Alarm**, pilih **Buat alarm**.

1. Halaman **Create alarm** terbuka. Untuk **Nama alarm**, masukkan nama untuk alarm.

1. (Opsional) Masukkan deskripsi untuk alarm.

1. Untuk **Metrik**, pilih CloudWatch metrik yang ingin dilacak alarm.

1. Untuk **nama Variant**, pilih varian model endpoint yang ingin Anda pantau.

1. Untuk **Statistik**, pilih salah satu statistik yang tersedia untuk metrik yang Anda pilih.

1. Untuk **Periode**, pilih periode waktu yang akan digunakan untuk menghitung setiap nilai statistik. Misalnya, jika Anda memilih statistik Rata-rata dan periode 5 menit, setiap titik data yang dipantau oleh alarm adalah rata-rata titik data metrik pada interval 5 menit.

1. Untuk **periode Evaluasi**, masukkan jumlah titik data yang Anda ingin alarm pertimbangkan saat mengevaluasi apakah akan memasuki status alarm atau tidak.

1. Untuk **Kondisi**, pilih kondisional yang ingin Anda gunakan untuk ambang alarm Anda.

1. Untuk **nilai Ambang**, masukkan nilai yang diinginkan untuk ambang batas Anda.

1. (Opsional) Untuk **Pemberitahuan**, Anda dapat memilih **Tambahkan pemberitahuan** untuk membuat atau menentukan topik Amazon SNS yang menerima pemberitahuan saat status alarm Anda berubah.

1. Pilih **Buat alarm**.

Setelah membuat alarm, Anda dapat kembali ke tab **Alarm** untuk melihat statusnya kapan saja. Dari bagian ini, Anda juga dapat memilih alarm dan **Edit** atau **Hapus**.

# Opsi hosting
<a name="realtime-endpoints-options"></a>

Topik berikut menjelaskan opsi hosting realtime SageMaker AI yang tersedia bersama dengan cara mengatur, memanggil, dan menghapus setiap opsi hosting.

**Topics**
+ [Titik akhir model tunggal](realtime-single-model.md)
+ [Titik akhir multi-model](multi-model-endpoints.md)
+ [Titik akhir multi-kontainer](multi-container-endpoints.md)
+ [Pipa inferensi di Amazon AI SageMaker](inference-pipelines.md)
+ [Hapus Titik Akhir dan Sumber Daya](realtime-endpoints-delete-resources.md)

# Titik akhir model tunggal
<a name="realtime-single-model"></a>

Anda dapat membuat, memperbarui, dan menghapus titik akhir inferensi real-time yang menghosting satu model dengan Amazon SageMaker Studio, SDK SageMaker Python AWS SDK untuk Python (Boto3), atau. AWS CLI Untuk prosedur dan contoh kode, lihat[Terapkan model untuk inferensi waktu nyata](realtime-endpoints-deploy-models.md).

# Titik akhir multi-model
<a name="multi-model-endpoints"></a>

Titik akhir multi-model memberikan solusi yang dapat diskalakan dan hemat biaya untuk menerapkan sejumlah besar model. Mereka menggunakan armada sumber daya yang sama dan wadah penyajian bersama untuk menampung semua model Anda. Ini mengurangi biaya hosting dengan meningkatkan pemanfaatan titik akhir dibandingkan dengan menggunakan titik akhir model tunggal. Ini juga mengurangi overhead penerapan karena Amazon SageMaker AI mengelola pemuatan model dalam memori dan menskalakannya berdasarkan pola lalu lintas ke titik akhir Anda.

Diagram berikut menunjukkan bagaimana titik akhir multi-model bekerja dibandingkan dengan titik akhir model tunggal.

![\[Diagram yang menunjukkan bagaimana multi-model versus bagaimana model titik akhir model tunggal menghosting model.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/multi-model-endpoints-diagram.png)


Titik akhir multi-model ideal untuk menghosting sejumlah besar model yang menggunakan kerangka kerja ML yang sama pada wadah penyajian bersama. Jika Anda memiliki campuran model yang sering dan jarang diakses, titik akhir multi-model dapat secara efisien melayani lalu lintas ini dengan sumber daya yang lebih sedikit dan penghematan biaya yang lebih tinggi. Aplikasi Anda harus toleran terhadap hukuman latensi terkait start dingin sesekali yang terjadi saat memanggil model yang jarang digunakan.

Titik akhir multi-model mendukung hosting model yang didukung CPU dan GPU. Dengan menggunakan model yang didukung GPU, Anda dapat menurunkan biaya penerapan model melalui peningkatan penggunaan titik akhir dan instans komputasi yang dipercepat yang mendasarinya.

Titik akhir multi-model juga memungkinkan pembagian waktu sumber daya memori di seluruh model Anda. Ini berfungsi paling baik ketika modelnya cukup mirip dalam ukuran dan latensi pemanggilan. Ketika ini terjadi, titik akhir multi-model dapat secara efektif menggunakan instance di semua model. Jika Anda memiliki model yang memiliki persyaratan transaksi per detik (TPS) atau latensi yang jauh lebih tinggi, kami sarankan untuk menghosting mereka di titik akhir khusus.

Anda dapat menggunakan endpoint multi-model dengan fitur-fitur berikut:
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)dan VPCs
+ [Penskalaan otomatis](multi-model-endpoints-autoscaling.md)
+ [Pipa inferensi serial](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) (tetapi hanya satu wadah berkemampuan multi-model yang dapat dimasukkan dalam pipa inferensi)
+ Pengujian A/B

Anda dapat menggunakan AWS SDK for Python (Boto) atau konsol SageMaker AI untuk membuat titik akhir multi-model. [Untuk titik akhir multi-model yang didukung CPU, Anda dapat membuat titik akhir dengan kontainer yang dibuat khusus dengan mengintegrasikan pustaka Server Multi Model.](https://github.com/awslabs/multi-model-server)

**Topics**
+ [Cara kerja titik akhir multi-model](#how-multi-model-endpoints-work)
+ [Contoh notebook untuk titik akhir multi-model](#multi-model-endpoint-sample-notebooks)
+ [Algoritma, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model](multi-model-support.md)
+ [Rekomendasi instans untuk penerapan titik akhir multi-model](multi-model-endpoint-instance.md)
+ [Membuat Endpoint Multi-Model](create-multi-model-endpoint.md)
+ [Memanggil Titik Akhir Multi-Model](invoke-multi-model-endpoint.md)
+ [Tambah atau Hapus Model](add-models-to-endpoint.md)
+ [Bangun Container Anda Sendiri untuk Titik SageMaker Akhir Multi-Model AI](build-multi-model-build-container.md)
+ [Keamanan Titik Akhir Multi-Model](multi-model-endpoint-security.md)
+ [CloudWatch Metrik untuk Penerapan Titik Akhir Multi-Model](multi-model-endpoint-cloudwatch-metrics.md)
+ [Setel SageMaker perilaku caching model titik akhir multi-model AI](multi-model-caching.md)
+ [Menetapkan Kebijakan Auto Scaling untuk Penerapan Titik Akhir Multi-Model](multi-model-endpoints-autoscaling.md)

## Cara kerja titik akhir multi-model
<a name="how-multi-model-endpoints-work"></a>

 SageMaker AI mengelola siklus hidup model yang dihosting pada titik akhir multi-model dalam memori kontainer. Alih-alih mengunduh semua model dari bucket Amazon S3 ke wadah saat Anda membuat titik akhir, SageMaker AI secara dinamis memuat dan menyimpannya di cache saat Anda memanggilnya. Ketika SageMaker AI menerima permintaan pemanggilan untuk model tertentu, AI melakukan hal berikut: 

1. Rutekan permintaan ke instance di belakang titik akhir.

1. Mengunduh model dari bucket S3 ke volume penyimpanan instans tersebut.

1. Memuat model ke memori kontainer (CPU atau GPU, tergantung pada apakah Anda memiliki instance yang didukung CPU atau GPU) pada instance komputasi yang dipercepat tersebut. Jika model sudah dimuat dalam memori kontainer, pemanggilan lebih cepat karena SageMaker AI tidak perlu mengunduh dan memuatnya.

SageMaker AI terus merutekan permintaan untuk model ke instance di mana model sudah dimuat. Namun, jika model menerima banyak permintaan pemanggilan, dan ada contoh tambahan untuk titik akhir multi-model, SageMaker AI merutekan beberapa permintaan ke instance lain untuk mengakomodasi lalu lintas. Jika model belum dimuat pada instance kedua, model diunduh ke volume penyimpanan instance itu dan dimuat ke dalam memori penampung.

Ketika pemanfaatan memori instans tinggi dan SageMaker AI perlu memuat model lain ke dalam memori, ia membongkar model yang tidak digunakan dari wadah instance itu untuk memastikan bahwa ada cukup memori untuk memuat model. Model yang dibongkar tetap pada volume penyimpanan instans dan dapat dimuat ke dalam memori kontainer nanti tanpa diunduh lagi dari bucket S3. Jika volume penyimpanan instans mencapai kapasitasnya, SageMaker AI menghapus model yang tidak digunakan dari volume penyimpanan.

Untuk menghapus model, hentikan pengiriman permintaan dan hapus dari bucket S3. SageMaker AI menyediakan kemampuan endpoint multi-model dalam wadah penyajian. Menambahkan model ke, dan menghapusnya dari, titik akhir multi-model tidak memerlukan pembaruan titik akhir itu sendiri. Untuk menambahkan model, Anda mengunggahnya ke bucket S3 dan memanggilnya. Anda tidak perlu perubahan kode untuk menggunakannya.

**catatan**  
Saat Anda memperbarui titik akhir multi-model, permintaan pemanggilan awal pada titik akhir mungkin mengalami latensi yang lebih tinggi karena Smart Routing di titik akhir multi-model beradaptasi dengan pola lalu lintas Anda. Namun, setelah mempelajari pola lalu lintas Anda, Anda dapat mengalami latensi rendah untuk model yang paling sering digunakan. Model yang jarang digunakan mungkin menimbulkan beberapa latensi start dingin karena model dimuat secara dinamis ke sebuah instance.

## Contoh notebook untuk titik akhir multi-model
<a name="multi-model-endpoint-sample-notebooks"></a>

Untuk mempelajari lebih lanjut tentang cara menggunakan titik akhir multi-model, Anda dapat mencoba contoh buku catatan berikut:
+ Contoh untuk titik akhir multi-model menggunakan instance yang didukung CPU:
  + [Notebook XGBoost Contoh Titik Akhir Multi-Model](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html) — Notebook ini menunjukkan cara menerapkan beberapa XGBoost model ke titik akhir.
  + [Notebook Sampel BYOC Multi-Model Endpoint](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_bring_your_own/multi_model_endpoint_bring_your_own.html) — Notebook ini menunjukkan cara menyiapkan dan menerapkan wadah pelanggan yang mendukung titik akhir multi-model di AI. SageMaker 
+ Contoh untuk titik akhir multi-model yang menggunakan instance yang didukung GPU:
  + [Jalankan beberapa model pembelajaran mendalam GPUs dengan Amazon SageMaker AI Multi-model endpoint (MME)](https://github.com/aws/amazon-sagemaker-examples/blob/main/multi-model-endpoints/mme-on-gpu/cv/resnet50_mme_with_gpu.ipynb) — Notebook ini menunjukkan cara menggunakan wadah NVIDIA Triton Inference untuk menerapkan ResNet model -50 ke titik akhir multi-model.

Untuk petunjuk tentang cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh sebelumnya di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah Anda membuat instance notebook dan membukanya, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua sampel SageMaker AI. Notebook endpoint multi-model terletak di bagian **ADVANCED** FUNCTIONALITY. Untuk membuka buku catatan, pilih tab **Use** dan pilih **Create copy**.

Untuk informasi selengkapnya tentang kasus penggunaan untuk titik akhir multi-model, lihat blog dan sumber daya berikut:
+ Video: [Hosting ribuan model di SageMaker AI](https://www.youtube.com/watch?v=XqCNTWmHsLc&t=751s)
+ Video: [SageMaker AI ML untuk SaaS](https://www.youtube.com/watch?v=BytpYlJ3vsQ)
+ Blog: [Cara menskalakan inferensi pembelajaran mesin untuk kasus penggunaan SaaS multi-penyewa](https://aws.amazon.com/blogs/machine-learning/how-to-scale-machine-learning-inference-for-multi-tenant-saas-use-cases/)
+ Studi kasus: Sistem [Veeva](https://aws.amazon.com/partners/success/advanced-clinical-veeva/)

# Algoritma, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model
<a name="multi-model-support"></a>

Untuk informasi tentang algoritme, kerangka kerja, dan jenis instance yang dapat Anda gunakan dengan titik akhir multi-model, lihat bagian berikut.

## Algoritme, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model menggunakan instance yang didukung CPU
<a name="multi-model-support-cpu"></a>

Wadah inferensi untuk algoritme dan kerangka kerja berikut mendukung titik akhir multi-model:
+ [XGBoost algoritma dengan Amazon SageMaker AI](xgboost.md)
+ [Algoritma K-Nearest Neighbors (k-NN)](k-nearest-neighbors.md)
+ [Algoritma Pembelajar Linear](linear-learner.md)
+ [Algoritma Random Cut Forest (RCF)](randomcutforest.md)
+ [Sumber daya untuk digunakan TensorFlow dengan Amazon SageMaker AI](tf.md)
+ [Sumber daya untuk menggunakan Scikit-Learn dengan Amazon AI SageMaker](sklearn.md)
+ [Sumber daya untuk menggunakan Apache MXNet dengan Amazon AI SageMaker](mxnet.md)
+ [Sumber daya untuk digunakan PyTorch dengan Amazon SageMaker AI](pytorch.md)

Untuk menggunakan kerangka kerja atau algoritme lain, gunakan toolkit inferensi SageMaker AI untuk membangun wadah yang mendukung titik akhir multi-model. Untuk informasi, lihat [Bangun Container Anda Sendiri untuk Titik SageMaker Akhir Multi-Model AI](build-multi-model-build-container.md).

Titik akhir multi-model mendukung semua jenis instans CPU.

## Algoritme, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model menggunakan instans yang didukung GPU
<a name="multi-model-support-gpu"></a>

Hosting beberapa model yang didukung GPU pada titik akhir multi-model didukung melalui server [SageMaker AI Triton Inference](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html). Ini mendukung semua kerangka inferensi utama seperti NVIDIA® TensorRT™,,, Python, ONNX,, scikit-learn PyTorch, MXNet, OpenVINO, kustom C\$1\$1 XGBoost, dan banyak lagi. RandomForest

Untuk menggunakan kerangka kerja atau algoritma lain, Anda dapat menggunakan backend Triton untuk Python atau C \$1\$1 untuk menulis logika model Anda dan melayani model kustom apa pun. Setelah server siap, Anda dapat mulai menerapkan 100-an model Deep Learning di belakang satu titik akhir.

Titik akhir multi-model mendukung jenis instans GPU berikut:


| Keluarga instans | Tipe instans | v CPUs | GiB memori per vCPU | GPUs | Memori GPU | 
| --- | --- | --- | --- | --- | --- | 
| p2 | ml.p2.xlarge | 4 | 15.25 | 1 | 12 | 
| p3 | ml.p3.2xlarge | 8 | 7.62 | 1 | 16 | 
| g5 | ml.g5.xlarge | 4 | 4 | 1 | 24 | 
| g5 | ml.g5.2xbesar | 8 | 4 | 1 | 24 | 
| g5 | ml.g5.4xbesar | 16 | 4 | 1 | 24 | 
| g5 | ml.g5.8xbesar | 32 | 4 | 1 | 24 | 
| g5 | ml.g5.16xbesar | 64 | 4 | 1 | 24 | 
| g4dn | ml.g4dn.xlarge | 4 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.2xbesar | 8 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.4xbesar | 16 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.8xlarge | 32 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.16xlarge | 64 | 4 | 1 | 16 | 

# Rekomendasi instans untuk penerapan titik akhir multi-model
<a name="multi-model-endpoint-instance"></a>

Ada beberapa item yang perlu dipertimbangkan saat memilih jenis instans SageMaker AI ML untuk titik akhir multi-model:
+ Menyediakan kapasitas [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) yang memadai untuk semua model yang perlu dilayani.
+ Menyeimbangkan kinerja (meminimalkan start dingin) dan biaya (jangan terlalu menyediakan kapasitas instans). Untuk informasi tentang ukuran volume penyimpanan yang dilampirkan SageMaker AI untuk setiap jenis instans untuk titik akhir dan titik akhir multi-model, lihat. [Volume penyimpanan instans](host-instance-storage.md)
+ Untuk wadah yang dikonfigurasi untuk berjalan dalam `MultiModel` mode, volume penyimpanan yang disediakan untuk instansnya lebih besar dari mode default. `SingleModel` Hal ini memungkinkan lebih banyak model untuk di-cache pada volume penyimpanan instance daripada dalam `SingleModel` mode.

Saat memilih jenis instans SageMaker AI ML, pertimbangkan hal berikut:
+ Titik akhir multi-model saat ini didukung untuk semua jenis instans CPU dan pada tipe instans GPU tunggal.
+ Untuk distribusi lalu lintas (pola akses) ke model yang ingin Anda host di belakang titik akhir multi-model, bersama dengan ukuran model (berapa banyak model yang dapat dimuat dalam memori pada instance), ingatlah informasi berikut:
  + Pikirkan jumlah memori pada instance sebagai ruang cache untuk model yang akan dimuat, dan pikirkan jumlah v CPUs sebagai batas konkurensi untuk melakukan inferensi pada model yang dimuat (dengan asumsi bahwa memanggil model terikat ke CPU).
  + Untuk instance yang didukung CPU, jumlah v CPUs memengaruhi pemanggilan bersamaan maksimum Anda per instance (dengan asumsi bahwa memanggil model terikat ke CPU). Jumlah v yang lebih tinggi CPUs memungkinkan Anda untuk memanggil model yang lebih unik secara bersamaan.
  + Untuk instans yang didukung GPU, jumlah instans dan memori GPU yang lebih tinggi memungkinkan Anda memuat lebih banyak model dan siap melayani permintaan inferensi.
  + Untuk instance yang didukung CPU dan GPU, sediakan beberapa memori “slack” sehingga model yang tidak digunakan dapat dibongkar, dan terutama untuk titik akhir multi-model dengan beberapa instance. Jika instance atau Availability Zone gagal, model pada instance tersebut akan dialihkan ke instance lain di belakang titik akhir.
+ Tentukan toleransi Anda terhadap loading/downloading waktu:
  + Keluarga tipe instance d (misalnya, m5d, c5d, atau r5d) dan g5s dilengkapi dengan SSD NVMe (non-volatile memory express), yang menawarkan I/O kinerja tinggi dan dapat mengurangi waktu yang diperlukan untuk mengunduh model ke volume penyimpanan dan untuk wadah untuk memuat model dari volume penyimpanan.
  + Karena tipe instans d dan g5 dilengkapi dengan penyimpanan NVMe SSD, SageMaker AI tidak melampirkan volume penyimpanan Amazon EBS ke instans komputasi ML yang menampung titik akhir multi-model. Penskalaan otomatis bekerja paling baik ketika model berukuran sama dan homogen, yaitu ketika mereka memiliki latensi inferensi dan persyaratan sumber daya yang serupa.

Anda juga dapat menggunakan panduan berikut untuk membantu Anda mengoptimalkan pemuatan model pada titik akhir multi-model Anda:

**Memilih jenis instance yang tidak dapat menampung semua model yang ditargetkan dalam memori**

Dalam beberapa kasus, Anda dapat memilih untuk mengurangi biaya dengan memilih jenis instans yang tidak dapat menyimpan semua model yang ditargetkan dalam memori sekaligus. SageMaker AI secara dinamis membongkar model ketika kehabisan memori untuk memberi ruang bagi model yang baru ditargetkan. Untuk model yang jarang diminta, Anda mengorbankan latensi beban dinamis. Dalam kasus dengan kebutuhan latensi yang lebih ketat, Anda dapat memilih jenis instans yang lebih besar atau lebih banyak instance. Menginvestasikan waktu di muka untuk pengujian dan analisis kinerja membantu Anda untuk memiliki penerapan produksi yang sukses.

**Mengevaluasi hits cache model Anda**

 CloudWatch Metrik Amazon dapat membantu Anda mengevaluasi model Anda. Untuk informasi selengkapnya tentang metrik yang dapat Anda gunakan dengan titik akhir multi-model, lihat. [CloudWatch Metrik untuk Penerapan Titik Akhir Multi-Model](multi-model-endpoint-cloudwatch-metrics.md)

 Anda dapat menggunakan `Average` statistik `ModelCacheHit` metrik untuk memantau rasio permintaan di mana model sudah dimuat. Anda dapat menggunakan `SampleCount` statistik untuk `ModelUnloadingTime` metrik untuk memantau jumlah permintaan pembongkaran yang dikirim ke kontainer selama periode waktu tertentu. Jika model dibongkar terlalu sering (indikator *thrashing*, di mana model sedang dibongkar dan dimuat lagi karena tidak ada ruang cache yang tidak mencukupi untuk set model yang berfungsi), pertimbangkan untuk menggunakan tipe instance yang lebih besar dengan lebih banyak memori atau meningkatkan jumlah instance di belakang titik akhir multi-model. Untuk titik akhir multi-model dengan beberapa instance, ketahuilah bahwa model mungkin dimuat pada lebih dari 1 instance.

# Membuat Endpoint Multi-Model
<a name="create-multi-model-endpoint"></a>

Anda dapat menggunakan konsol SageMaker AI atau AWS SDK for Python (Boto) untuk membuat titik akhir multi-model. Untuk membuat titik akhir yang didukung CPU atau GPU melalui konsol, lihat prosedur konsol di bagian berikut. Jika Anda ingin membuat endpoint multi-model dengan AWS SDK for Python (Boto), gunakan prosedur CPU atau GPU di bagian berikut. Alur kerja CPU dan GPU serupa tetapi memiliki beberapa perbedaan, seperti persyaratan wadah.

**Topics**
+ [Buat titik akhir multi-model (konsol)](#create-multi-model-endpoint-console)
+ [Buat titik akhir multi-model menggunakan dengan CPUs AWS SDK untuk Python (Boto3)](#create-multi-model-endpoint-sdk-cpu)
+ [Buat titik akhir multi-model menggunakan dengan GPUs AWS SDK untuk Python (Boto3)](#create-multi-model-endpoint-sdk-gpu)

## Buat titik akhir multi-model (konsol)
<a name="create-multi-model-endpoint-console"></a>

Anda dapat membuat titik akhir multi-model yang didukung CPU dan GPU melalui konsol. Gunakan prosedur berikut untuk membuat titik akhir multi-model melalui konsol SageMaker AI.

**Untuk membuat titik akhir multi-model (konsol)**

1. Buka konsol Amazon SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Pilih **Model**, dan kemudian dari grup **Inferensi**, pilih **Buat model**. 

1. Untuk **nama Model**, masukkan nama.

1. Untuk **peran IAM**, pilih atau buat peran IAM yang memiliki kebijakan `AmazonSageMakerFullAccess` IAM terlampir. 

1.  Di bagian **Definisi kontainer**, untuk **Menyediakan artefak model dan opsi gambar inferensi**, pilih **Gunakan beberapa** model.  
![\[Bagian halaman Buat model tempat Anda dapat memilih Gunakan beberapa model.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/mme-create-model-ux-2.PNG)

1. Untuk **gambar kontainer Inferensi**, masukkan jalur Amazon ECR untuk gambar kontainer yang Anda inginkan.

   Untuk model GPU, Anda harus menggunakan wadah yang didukung oleh NVIDIA Triton Inference Server. Untuk daftar gambar kontainer yang berfungsi dengan titik akhir yang didukung GPU, lihat [NVIDIA Triton Inference Containers (](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only)khusus dukungan SM). Untuk informasi selengkapnya tentang Server Inferensi Triton NVIDIA, lihat [Menggunakan Server Inferensi Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) dengan AI. SageMaker 

1. Pilih **Buat model**.

1. Terapkan titik akhir multi-model Anda seperti yang Anda lakukan pada titik akhir model tunggal. Untuk petunjuk, lihat [Menyebarkan Model ke Layanan Hosting SageMaker AI](ex1-model-deployment.md#ex1-deploy-model).

## Buat titik akhir multi-model menggunakan dengan CPUs AWS SDK untuk Python (Boto3)
<a name="create-multi-model-endpoint-sdk-cpu"></a>

Gunakan bagian berikut untuk membuat titik akhir multi-model yang didukung oleh instance CPU. Anda membuat titik akhir multi-model menggunakan Amazon SageMaker AI [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model), dan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) APIs sama seperti Anda membuat titik akhir model tunggal, tetapi dengan dua perubahan. Saat mendefinisikan wadah model, Anda harus melewatkan nilai `Mode` parameter baru,`MultiModel`. Anda juga harus melewati `ModelDataUrl` bidang yang menentukan awalan di Amazon S3 tempat artefak model berada, alih-alih jalur ke artefak model tunggal, seperti yang Anda lakukan saat menerapkan satu model.

Untuk contoh notebook yang menggunakan SageMaker AI untuk menerapkan beberapa XGBoost model ke titik akhir, lihat Notebook Contoh Titik Akhir [Multi-Model](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html). XGBoost 

Prosedur berikut menguraikan langkah-langkah kunci yang digunakan dalam sampel tersebut untuk membuat titik akhir multi-model yang didukung CPU.

**Untuk menyebarkan model (AWS SDK untuk Python (Boto 3))**

1. Dapatkan wadah dengan gambar yang mendukung penerapan titik akhir multi-model. Untuk daftar algoritme bawaan dan wadah kerangka kerja yang mendukung titik akhir multi-model, lihat. [Algoritma, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model](multi-model-support.md) Untuk contoh ini, kami menggunakan algoritma [Algoritma K-Nearest Neighbors (k-NN)](k-nearest-neighbors.md) bawaan. Kami memanggil fungsi utilitas [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) `image_uris.retrieve()` untuk mendapatkan alamat untuk image algoritma bawaan K-Nearest Neighbors.

   ```
   import sagemaker
   region = sagemaker_session.boto_region_name
   image = sagemaker.image_uris.retrieve("knn",region=region)
   container = { 
                 'Image':        image,
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel'
               }
   ```

1. Dapatkan klien AWS SDK untuk Python (Boto3) SageMaker AI dan buat model yang menggunakan wadah ini.

   ```
   import boto3
   sagemaker_client = boto3.client('sagemaker')
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container])
   ```

1. (Opsional) Jika Anda menggunakan pipeline inferensi serial, dapatkan wadah tambahan untuk disertakan dalam pipeline, dan sertakan dalam `Containers` argumen: `CreateModel`

   ```
   preprocessor_container = { 
                  'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>'
               }
   
   multi_model_container = { 
                 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>',
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel'
               }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [preprocessor_container, multi_model_container]
               )
   ```
**catatan**  
Anda hanya dapat menggunakan satu multi-model-enabled titik akhir dalam pipeline inferensi serial.

1. (Opsional) Jika kasus penggunaan Anda tidak mendapat manfaat dari caching model, tetapkan nilai `ModelCacheSetting` bidang `MultiModelConfig` parameter ke`Disabled`, dan sertakan dalam `Container` argumen panggilan ke`create_model`. Nilai `ModelCacheSetting` bidang adalah secara `Enabled` default.

   ```
   container = { 
                   'Image': image, 
                   'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                   'Mode': 'MultiModel' 
                   'MultiModelConfig': {
                           // Default value is 'Enabled'
                           'ModelCacheSetting': 'Disabled'
                   }
              }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container]
               )
   ```

1. Konfigurasikan titik akhir multi-model untuk model. Kami menyarankan untuk mengonfigurasi titik akhir Anda dengan setidaknya dua instance. Hal ini memungkinkan SageMaker AI untuk menyediakan serangkaian prediksi yang sangat tersedia di beberapa Availability Zone untuk model.

   ```
   response = sagemaker_client.create_endpoint_config(
                   EndpointConfigName = '<ENDPOINT_CONFIG_NAME>',
                   ProductionVariants=[
                        {
                           'InstanceType':        'ml.m4.xlarge',
                           'InitialInstanceCount': 2,
                           'InitialVariantWeight': 1,
                           'ModelName':            '<MODEL_NAME>',
                           'VariantName':          'AllTraffic'
                         }
                   ]
              )
   ```
**catatan**  
Anda hanya dapat menggunakan satu multi-model-enabled titik akhir dalam pipeline inferensi serial.

1. Buat titik akhir multi-model menggunakan parameter `EndpointName` dan`EndpointConfigName`.

   ```
   response = sagemaker_client.create_endpoint(
                 EndpointName       = '<ENDPOINT_NAME>',
                 EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')
   ```

## Buat titik akhir multi-model menggunakan dengan GPUs AWS SDK untuk Python (Boto3)
<a name="create-multi-model-endpoint-sdk-gpu"></a>

Gunakan bagian berikut untuk membuat titik akhir multi-model yang didukung GPU. Anda membuat titik akhir multi-model menggunakan Amazon SageMaker AI [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model), dan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) APIs serupa dengan membuat titik akhir model tunggal, tetapi ada beberapa perubahan. Saat mendefinisikan wadah model, Anda harus melewatkan nilai `Mode` parameter baru,`MultiModel`. Anda juga harus melewati `ModelDataUrl` bidang yang menentukan awalan di Amazon S3 tempat artefak model berada, alih-alih jalur ke artefak model tunggal, seperti yang Anda lakukan saat menerapkan satu model. Untuk titik akhir multi-model yang didukung GPU, Anda juga harus menggunakan wadah dengan NVIDIA Triton Inference Server yang dioptimalkan untuk berjalan pada instance GPU. Untuk daftar gambar kontainer yang berfungsi dengan titik akhir yang didukung GPU, lihat [NVIDIA Triton Inference Containers (](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only)khusus dukungan SM).

Untuk contoh notebook yang mendemonstrasikan cara membuat titik akhir multi-model yang didukung oleh GPUs, lihat [Menjalankan model pembelajaran mendalam mulitple dengan GPUs Amazon SageMaker AI Multi-model](https://github.com/aws/amazon-sagemaker-examples/blob/main/multi-model-endpoints/mme-on-gpu/cv/resnet50_mme_with_gpu.ipynb) endpoint (MME).

Prosedur berikut menguraikan langkah-langkah kunci untuk membuat titik akhir multi-model yang didukung GPU.

**Untuk menyebarkan model (AWS SDK untuk Python (Boto 3))**

1. Tentukan gambar kontainer. Untuk membuat endpoint multi-model dengan dukungan GPU untuk ResNet model, tentukan wadah untuk menggunakan image [NVIDIA Triton Server](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html). Wadah ini mendukung titik akhir multi-model dan dioptimalkan untuk berjalan pada instance GPU. Kami memanggil fungsi utilitas [SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) `image_uris.retrieve()` untuk mendapatkan alamat gambar. Contoh:

   ```
   import sagemaker
   region = sagemaker_session.boto_region_name
   
   // Find the sagemaker-tritonserver image at 
   // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb
   // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only
   
   image = "<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/sagemaker-tritonserver:<TAG>".format(
       account_id=account_id_map[region], region=region
   )
   
   container = { 
                 'Image':        image,
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel',
                 "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"},
               }
   ```

1. Dapatkan klien AWS SDK untuk Python (Boto3) SageMaker AI dan buat model yang menggunakan wadah ini.

   ```
   import boto3
   sagemaker_client = boto3.client('sagemaker')
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container])
   ```

1. (Opsional) Jika Anda menggunakan pipeline inferensi serial, dapatkan wadah tambahan untuk disertakan dalam pipeline, dan sertakan dalam `Containers` argumen: `CreateModel`

   ```
   preprocessor_container = { 
                  'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>'
               }
   
   multi_model_container = { 
                 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>',
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel'
               }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [preprocessor_container, multi_model_container]
               )
   ```
**catatan**  
Anda hanya dapat menggunakan satu multi-model-enabled titik akhir dalam pipeline inferensi serial.

1. (Opsional) Jika kasus penggunaan Anda tidak mendapat manfaat dari caching model, tetapkan nilai `ModelCacheSetting` bidang `MultiModelConfig` parameter ke`Disabled`, dan sertakan dalam `Container` argumen panggilan ke`create_model`. Nilai `ModelCacheSetting` bidang adalah secara `Enabled` default.

   ```
   container = { 
                   'Image': image, 
                   'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                   'Mode': 'MultiModel' 
                   'MultiModelConfig': {
                           // Default value is 'Enabled'
                           'ModelCacheSetting': 'Disabled'
                   }
              }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container]
               )
   ```

1. Konfigurasikan titik akhir multi-model dengan instans yang didukung GPU untuk model. Sebaiknya konfigurasi titik akhir Anda dengan lebih dari satu instance untuk memungkinkan ketersediaan tinggi dan klik cache yang lebih tinggi.

   ```
   response = sagemaker_client.create_endpoint_config(
                   EndpointConfigName = '<ENDPOINT_CONFIG_NAME>',
                   ProductionVariants=[
                        {
                           'InstanceType':        'ml.g4dn.4xlarge',
                           'InitialInstanceCount': 2,
                           'InitialVariantWeight': 1,
                           'ModelName':            '<MODEL_NAME>',
                           'VariantName':          'AllTraffic'
                         }
                   ]
              )
   ```

1. Buat titik akhir multi-model menggunakan parameter `EndpointName` dan`EndpointConfigName`.

   ```
   response = sagemaker_client.create_endpoint(
                 EndpointName       = '<ENDPOINT_NAME>',
                 EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')
   ```

# 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)
```

# Tambah atau Hapus Model
<a name="add-models-to-endpoint"></a>

Anda dapat menerapkan model tambahan ke titik akhir multi-model dan segera memanggilnya melalui titik akhir tersebut. Saat menambahkan model baru, Anda tidak perlu memperbarui atau menurunkan titik akhir, sehingga Anda menghindari biaya pembuatan dan menjalankan titik akhir terpisah untuk setiap model baru. Proses untuk menambahkan dan menghapus model sama untuk CPU dan titik akhir multi-model yang didukung GPU.

 SageMaker AI membongkar model yang tidak digunakan dari wadah saat instance mencapai kapasitas memori dan lebih banyak model perlu diunduh ke dalam wadah. SageMaker AI juga menghapus artefak model yang tidak digunakan dari volume penyimpanan instans ketika volume mencapai kapasitas dan model baru perlu diunduh. Pemanggilan pertama ke model yang baru ditambahkan membutuhkan waktu lebih lama karena titik akhir membutuhkan waktu untuk mengunduh model dari S3 ke memori container saat menghosting titik akhir

Dengan titik akhir yang sudah berjalan, salin satu set artefak model baru ke lokasi Amazon S3 di sana Anda menyimpan model Anda.

```
# Add an AdditionalModel to the endpoint and exercise it
aws s3 cp AdditionalModel.tar.gz s3://amzn-s3-demo-bucket/path/to/artifacts/
```

**penting**  
Untuk memperbarui model, lanjutkan seperti yang Anda lakukan saat menambahkan model baru. Gunakan nama baru dan unik. Jangan menimpa artefak model di Amazon S3 karena versi lama model mungkin masih dimuat dalam wadah atau pada volume penyimpanan instance di titik akhir. Pemanggilan ke model baru kemudian dapat memanggil versi lama model. 

Aplikasi klien dapat meminta prediksi dari model target tambahan segera setelah disimpan di S3.

```
response = runtime_sagemaker_client.invoke_endpoint(
                        EndpointName='<ENDPOINT_NAME>',
                        ContentType='text/csv',
                        TargetModel='AdditionalModel.tar.gz',
                        Body=body)
```

Untuk menghapus model dari titik akhir multi-model, berhenti memanggil model dari klien dan menghapusnya dari lokasi S3 tempat artefak model disimpan.

# Bangun Container Anda Sendiri untuk Titik SageMaker Akhir Multi-Model AI
<a name="build-multi-model-build-container"></a>

Lihat bagian berikut untuk membawa wadah dan dependensi Anda sendiri ke titik akhir multi-model.

**Topics**
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instance yang didukung CPU](#build-multi-model-container-cpu)
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung GPU](#build-multi-model-container-gpu)
+ [Gunakan SageMaker Toolkit Inferensi AI](#multi-model-inference-toolkit)
+ [Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model](mms-container-apis.md)

## Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instance yang didukung CPU
<a name="build-multi-model-container-cpu"></a>

Jika tidak ada gambar kontainer yang dibuat sebelumnya yang memenuhi kebutuhan Anda, Anda dapat membuat wadah Anda sendiri untuk digunakan dengan titik akhir multi-model yang didukung CPU.

Gambar Custom Amazon Elastic Container Registry (Amazon ECR) yang digunakan di SageMaker Amazon AI diharapkan mematuhi kontrak dasar yang dijelaskan [Kode Inferensi Kustom dengan Layanan Hosting](your-algorithms-inference-code.md) dalam yang mengatur SageMaker bagaimana AI berinteraksi dengan wadah Docker yang menjalankan kode inferensi Anda sendiri. Agar wadah dapat memuat dan melayani beberapa model secara bersamaan, ada tambahan APIs dan perilaku yang harus diikuti. Kontrak tambahan ini mencakup model baru APIs untuk memuat, mencantumkan, mendapatkan, dan membongkar, dan API yang berbeda untuk memanggil model. Ada juga perilaku berbeda untuk skenario kesalahan yang APIs perlu dipatuhi. Untuk menunjukkan bahwa kontainer memenuhi persyaratan tambahan, Anda dapat menambahkan perintah berikut ke file Docker Anda:

```
LABEL com.amazonaws.sagemaker.capabilities.multi-models=true
```

SageMaker AI juga menyuntikkan variabel lingkungan ke dalam wadah

```
SAGEMAKER_MULTI_MODEL=true
```

Jika Anda membuat titik akhir multi-model untuk pipline inferensi serial, file Docker Anda harus memiliki label yang diperlukan untuk pipeline inferensi multi-model dan serial. Untuk informasi selengkapnya tentang jalur informasi serial, lihat[Jalankan Prediksi Real-time dengan Pipeline Inferensi](inference-pipeline-real-time.md).

Untuk membantu Anda menerapkan persyaratan ini untuk wadah kustom, tersedia dua pustaka:
+ [Multi Model Server](https://github.com/awslabs/multi-model-server) adalah kerangka kerja open source untuk melayani model pembelajaran mesin yang dapat diinstal dalam wadah untuk menyediakan ujung depan yang memenuhi persyaratan untuk wadah endpoint multi-model baru. APIs Ini menyediakan ujung depan HTTP dan kemampuan manajemen model yang diperlukan oleh titik akhir multi-model untuk meng-host beberapa model dalam satu wadah, memuat model ke dalam dan membongkar model keluar dari wadah secara dinamis, dan melakukan inferensi pada model dimuat yang ditentukan. Ini juga menyediakan backend pluggable yang mendukung handler backend kustom pluggable di mana Anda dapat mengimplementasikan algoritme Anda sendiri.
+ [SageMaker AI Inference Toolkit](https://github.com/aws/sagemaker-inference-toolkit) adalah perpustakaan yang mem-bootstrap Multi Model Server dengan konfigurasi dan pengaturan yang membuatnya kompatibel dengan SageMaker titik akhir multi-model AI. Ini juga memungkinkan Anda untuk mengubah parameter kinerja penting, seperti jumlah pekerja per model, tergantung pada kebutuhan skenario Anda. 

## Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung GPU
<a name="build-multi-model-container-gpu"></a>

Kemampuan bring your own container (BYOC) pada titik akhir multi-model dengan instans yang didukung GPU saat ini tidak didukung oleh pustaka Multi Model Server dan AI Inference Toolkit. SageMaker 

[Untuk membuat titik akhir multi-model dengan instans yang didukung GPU, Anda dapat menggunakan NVIDIA Triton [Inference Server yang didukung SageMaker AI. dengan NVIDIA Triton Inference Containers](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html).](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only) Untuk membawa dependensi Anda sendiri, Anda dapat membangun wadah Anda sendiri dengan [NVIDIA Triton Inference Server](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) yang didukung SageMaker AI sebagai gambar dasar ke file Docker Anda:

```
FROM 301217895009.dkr.ecr.us-west-2.amazonaws.com/sagemaker-tritonserver:22.07-py3
```

**penting**  
Container dengan Triton Inference Server adalah satu-satunya kontainer yang didukung yang dapat Anda gunakan untuk titik akhir multi-model yang didukung GPU.

## Gunakan SageMaker Toolkit Inferensi AI
<a name="multi-model-inference-toolkit"></a>

**catatan**  
 SageMaker AI Inference Toolkit hanya didukung untuk titik akhir multi-model yang didukung CPU. SageMaker AI Inference Toolkit saat ini tidak didukung untuk titik akhir multi-model yang didukung GPU.

Kontainer pra-bangun yang mendukung titik akhir multi-model tercantum dalam. [Algoritma, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model](multi-model-support.md) Jika Anda ingin menggunakan kerangka kerja atau algoritme lain, Anda perlu membangun wadah. Cara termudah untuk melakukannya adalah dengan menggunakan [SageMaker AI Inference Toolkit](https://github.com/aws/sagemaker-inference-toolkit) untuk memperluas wadah pra-bangun yang ada. Toolkit inferensi SageMaker AI adalah implementasi untuk server multi-model (MMS) yang menciptakan titik akhir yang dapat digunakan di AI. SageMaker Untuk contoh notebook yang menunjukkan cara menyiapkan dan menerapkan container khusus yang mendukung titik akhir multi-model di SageMaker AI, lihat Notebook Sampel BYOC [Multi-Model Endpoint](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_bring_your_own).

**catatan**  
Toolkit inferensi SageMaker AI hanya mendukung penangan model Python. Jika Anda ingin mengimplementasikan handler Anda dalam bahasa lain, Anda harus membangun container Anda sendiri yang mengimplementasikan endpoint multi-model tambahan. APIs Untuk informasi, lihat [Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model](mms-container-apis.md).

**Untuk memperluas wadah dengan menggunakan toolkit inferensi SageMaker AI**

1. Buat handler model. MMS mengharapkan handler model, yang merupakan file Python yang mengimplementasikan fungsi untuk pra-proses, mendapatkan predisi dari model, dan memproses output dalam handler model. Untuk contoh handler model, lihat [model\$1handler.py](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/model_handler.py) dari notebook contoh.

1. Impor toolkit inferensi dan gunakan `model_server.start_model_server` fungsinya untuk memulai MMS. Contoh berikut adalah dari `dockerd-entrypoint.py` file dari notebook sampel. Perhatikan bahwa panggilan untuk `model_server.start_model_server` melewati handler model yang dijelaskan pada langkah sebelumnya:

   ```
   import subprocess
   import sys
   import shlex
   import os
   from retrying import retry
   from subprocess import CalledProcessError
   from sagemaker_inference import model_server
   
   def _retry_if_error(exception):
       return isinstance(exception, CalledProcessError or OSError)
   
   @retry(stop_max_delay=1000 * 50,
          retry_on_exception=_retry_if_error)
   def _start_mms():
       # by default the number of workers per model is 1, but we can configure it through the
       # environment variable below if desired.
       # os.environ['SAGEMAKER_MODEL_SERVER_WORKERS'] = '2'
       model_server.start_model_server(handler_service='/home/model-server/model_handler.py:handle')
   
   def main():
       if sys.argv[1] == 'serve':
           _start_mms()
       else:
           subprocess.check_call(shlex.split(' '.join(sys.argv[1:])))
   
       # prevent docker exit
       subprocess.call(['tail', '-f', '/dev/null'])
       
   main()
   ```

1. Dalam Anda`Dockerfile`, salin handler model dari langkah pertama dan tentukan file Python dari langkah sebelumnya sebagai titik masuk dalam file Anda. `Dockerfile` Baris berikut berasal dari [Dockerfile](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/Dockerfile) yang digunakan dalam contoh notebook:

   ```
   # Copy the default custom service file to handle incoming data and inference requests
   COPY model_handler.py /home/model-server/model_handler.py
   
   # Define an entrypoint script for the docker image
   ENTRYPOINT ["python", "/usr/local/bin/dockerd-entrypoint.py"]
   ```

1. Bangun dan daftarkan wadah Anda. Skrip shell berikut dari notebook contoh membangun wadah dan mengunggahnya ke repositori Amazon Elastic Container Registry di akun Anda: AWS 

   ```
   %%sh
   
   # The name of our algorithm
   algorithm_name=demo-sagemaker-multimodel
   
   cd container
   
   account=$(aws sts get-caller-identity --query Account --output text)
   
   # Get the region defined in the current configuration (default to us-west-2 if none defined)
   region=$(aws configure get region)
   region=${region:-us-west-2}
   
   fullname="${account}.dkr.ecr.${region}.amazonaws.com/${algorithm_name}:latest"
   
   # If the repository doesn't exist in ECR, create it.
   aws ecr describe-repositories --repository-names "${algorithm_name}" > /dev/null 2>&1
   
   if [ $? -ne 0 ]
   then
       aws ecr create-repository --repository-name "${algorithm_name}" > /dev/null
   fi
   
   # Get the login command from ECR and execute it directly
   $(aws ecr get-login --region ${region} --no-include-email)
   
   # Build the docker image locally with the image name and then push it to ECR
   # with the full name.
   
   docker build -q -t ${algorithm_name} .
   docker tag ${algorithm_name} ${fullname}
   
   docker push ${fullname}
   ```

Anda sekarang dapat menggunakan wadah ini untuk menerapkan titik akhir multi-model di AI. SageMaker 

**Topics**
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instance yang didukung CPU](#build-multi-model-container-cpu)
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung GPU](#build-multi-model-container-gpu)
+ [Gunakan SageMaker Toolkit Inferensi AI](#multi-model-inference-toolkit)
+ [Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model](mms-container-apis.md)

# Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model
<a name="mms-container-apis"></a>

Untuk menangani beberapa model, container Anda harus mendukung satu set APIs yang memungkinkan Amazon SageMaker AI berkomunikasi dengan container untuk memuat, mencantumkan, mendapatkan, dan membongkar model sesuai kebutuhan. `model_name`Ini digunakan dalam set baru APIs sebagai parameter input kunci. Kontainer pelanggan diharapkan untuk melacak model yang dimuat menggunakan `model_name` sebagai kunci pemetaan. Juga, `model_name` ini adalah pengidentifikasi buram dan belum tentu nilai `TargetModel` parameter yang diteruskan ke API. `InvokeEndpoint` `TargetModel`Nilai asli dalam `InvokeEndpoint` permintaan diteruskan ke container di APIs as a `X-Amzn-SageMaker-Target-Model` header yang dapat digunakan untuk tujuan logging.

**catatan**  
Titik akhir multi-model untuk instans yang didukung GPU saat ini hanya didukung dengan wadah Server Inferensi [NVIDIA Triton SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) AI. Wadah ini sudah mengimplementasikan kontrak yang didefinisikan di bawah ini. Pelanggan dapat langsung menggunakan wadah ini dengan titik akhir GPU multi-model mereka, tanpa pekerjaan tambahan apa pun.

Anda dapat mengonfigurasi hal berikut APIs pada kontainer Anda untuk titik akhir multi-model yang didukung CPU.

**Topics**
+ [Muat Model API](#multi-model-api-load-model)
+ [Daftar Model API](#multi-model-api-list-model)
+ [Dapatkan Model API](#multi-model-api-get-model)
+ [Bongkar Model API](#multi-model-api-unload-model)
+ [Memanggil Model API](#multi-model-api-invoke-model)

## Muat Model API
<a name="multi-model-api-load-model"></a>

Menginstruksikan wadah untuk memuat model tertentu yang ada di `url` bidang tubuh ke dalam memori wadah pelanggan dan untuk melacaknya dengan yang ditugaskan`model_name`. Setelah model dimuat, wadah harus siap untuk melayani permintaan inferensi menggunakan ini`model_name`.

```
POST /models HTTP/1.1
Content-Type: application/json
Accept: application/json

{
     "model_name" : "{model_name}",
     "url" : "/opt/ml/models/{model_name}/model",
}
```

**catatan**  
Jika `model_name` sudah dimuat, API ini harus mengembalikan 409. Setiap kali model tidak dapat dimuat karena kurangnya memori atau sumber daya lain, API ini harus mengembalikan kode status HTTP 507 ke SageMaker AI, yang kemudian memulai pembongkaran model yang tidak digunakan untuk mengklaim kembali.

## Daftar Model API
<a name="multi-model-api-list-model"></a>

Mengembalikan daftar model dimuat ke dalam memori wadah pelanggan.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

API ini juga mendukung pagination.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

SageMaker AI awalnya dapat memanggil List Models API tanpa memberikan nilai untuk`next_page_token`. Jika `nextPageToken` bidang dikembalikan sebagai bagian dari respons, itu akan diberikan sebagai nilai untuk `next_page_token` dalam panggilan Model Daftar berikutnya. Jika a `nextPageToken` tidak dikembalikan, itu berarti tidak ada lagi model untuk dikembalikan.

## Dapatkan Model API
<a name="multi-model-api-get-model"></a>

Ini adalah API baca sederhana pada `model_name` entitas.

```
GET /models/{model_name} HTTP/1.1
Accept: application/json

{
     "modelName" : "{model_name}",
     "modelUrl" : "/opt/ml/models/{model_name}/model",
}
```

**catatan**  
Jika `model_name` tidak dimuat, API ini harus mengembalikan 404.

## Bongkar Model API
<a name="multi-model-api-unload-model"></a>

Menginstruksikan platform SageMaker AI untuk menginstruksikan wadah pelanggan untuk membongkar model dari memori. Ini memulai penggusuran model kandidat sebagaimana ditentukan oleh platform saat memulai proses pemuatan model baru. Sumber daya yang disediakan `model_name` harus direklamasi oleh container saat API ini mengembalikan respons.

```
DELETE /models/{model_name}
```

**catatan**  
Jika `model_name` tidak dimuat, API ini harus mengembalikan 404.

## Memanggil Model API
<a name="multi-model-api-invoke-model"></a>

Membuat permintaan prediksi dari yang `model_name` disediakan tertentu. `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.

```
POST /models/{model_name}/invoke HTTP/1.1
Content-Type: ContentType
Accept: Accept
X-Amzn-SageMaker-Custom-Attributes: CustomAttributes
X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
```

**catatan**  
Jika `model_name` tidak dimuat, API ini harus mengembalikan 404.

Selain itu, pada instance GPU, jika `InvokeEndpoint` gagal karena kurangnya memori atau sumber daya lainnya, API ini harus mengembalikan kode status HTTP 507 ke SageMaker AI, yang kemudian memulai pembongkaran model yang tidak digunakan untuk mengklaim kembali.

# Keamanan Titik Akhir Multi-Model
<a name="multi-model-endpoint-security"></a>

Model dan data dalam titik akhir multi-model ditempatkan bersama pada volume penyimpanan instance dan dalam memori kontainer. Semua instance untuk titik akhir Amazon SageMaker AI berjalan pada satu wadah penyewa yang Anda miliki. Hanya model Anda yang dapat berjalan di titik akhir multi-model Anda. Anda bertanggung jawab untuk mengelola pemetaan permintaan ke model dan menyediakan akses bagi pengguna ke model target yang benar. SageMaker AI menggunakan [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) untuk memberikan kebijakan berbasis identitas IAM yang Anda gunakan untuk menentukan tindakan dan sumber daya yang diizinkan atau ditolak serta kondisi di mana tindakan diizinkan atau ditolak.

Secara default, prinsipal IAM dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)izin pada titik akhir multi-model dapat memanggil model apa pun di alamat awalan S3 yang ditentukan dalam [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)operasi, asalkan Peran Eksekusi IAM yang ditentukan dalam operasi memiliki izin untuk mengunduh model. Jika Anda perlu membatasi [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)akses ke serangkaian model terbatas di S3, Anda dapat melakukan salah satu hal berikut:
+ Batasi `InvokeEndpont` panggilan ke model tertentu yang dihosting di titik akhir dengan menggunakan kunci kondisi `sagemaker:TargetModel` IAM. Misalnya, kebijakan berikut hanya mengizinkan `InvokeEndpont` permintaan jika nilai `TargetModel` bidang cocok dengan salah satu ekspresi reguler yang ditentukan:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Action": [
                  "sagemaker:InvokeEndpoint"
              ],
              "Effect": "Allow",
              "Resource":
              "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
              "Condition": {
                  "StringLike": {
                      "sagemaker:TargetModel": ["company_a/*", "common/*"]
                  }
              }
          }
      ]
  }
  ```

------

  Untuk informasi tentang kunci kondisi SageMaker AI, lihat [Kunci Kondisi untuk Amazon SageMaker AI](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsagemaker.html#amazonsagemaker-policy-keys) di *Panduan AWS Identity and Access Management Pengguna*.
+ Buat titik akhir multi-model dengan awalan S3 yang lebih ketat. 

Untuk informasi selengkapnya tentang cara SageMaker AI menggunakan peran untuk mengelola akses ke titik akhir dan melakukan operasi atas nama Anda, lihat[Cara menggunakan peran eksekusi SageMaker AI](sagemaker-roles.md). Pelanggan Anda mungkin juga memiliki persyaratan isolasi data tertentu yang ditentukan oleh persyaratan kepatuhan mereka sendiri yang dapat dipenuhi menggunakan identitas IAM.

# CloudWatch Metrik untuk Penerapan Titik Akhir Multi-Model
<a name="multi-model-endpoint-cloudwatch-metrics"></a>

Amazon SageMaker AI menyediakan metrik untuk titik akhir sehingga Anda dapat memantau tingkat hit cache, jumlah model yang dimuat, dan waktu tunggu model untuk memuat, mengunduh, dan mengunggah pada titik akhir multi-model. Beberapa metrik berbeda untuk titik akhir multi-model yang didukung CPU dan GPU, jadi bagian berikut menjelaskan CloudWatch metrik Amazon yang dapat Anda gunakan untuk setiap jenis titik akhir multi-model.

Untuk informasi selengkapnya tentang metrik, lihat Metrik **Pemuatan Model Titik Akhir Multi-Model dan Metrik** Instance Model Titik **Akhir Multi-Model** di. [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md) Metrik per model tidak didukung. 

## CloudWatch metrik untuk titik akhir multi-model yang didukung CPU
<a name="multi-model-endpoint-cloudwatch-metrics-cpu"></a>

Anda dapat memantau metrik berikut pada titik akhir multi-model yang didukung CPU.

`AWS/SageMaker`Namespace menyertakan metrik pemuatan model berikut dari panggilan ke. [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Metrik tersedia pada frekuensi 1 menit.

Untuk informasi tentang berapa lama CloudWatch metrik dipertahankan, lihat [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)di Referensi *Amazon CloudWatch API*.

**Metrik Pemuatan Model Titik Akhir Multi-Model**


| Metrik | Deskripsi | 
| --- | --- | 
| ModelLoadingWaitTime  |  Interval waktu permintaan pemanggilan telah menunggu model target diunduh, atau dimuat, atau keduanya untuk melakukan inferensi.  Unit: Mikrodetik  Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelUnloadingTime  |  Interval waktu yang diperlukan untuk membongkar model melalui panggilan `UnloadModel` API container.  Unit: Mikrodetik  Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelDownloadingTime |  Interval waktu yang dibutuhkan untuk mengunduh model dari Amazon Simple Storage Service (Amazon S3). Unit: Mikrodetik Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelLoadingTime  |  Interval waktu yang diperlukan untuk memuat model melalui panggilan `LoadModel` API container. Unit: Mikrodetik  Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelCacheHit  |  Jumlah `InvokeEndpoint` permintaan yang dikirim ke titik akhir multi-model yang modelnya sudah dimuat. Statistik rata-rata menunjukkan rasio permintaan yang modelnya sudah dimuat. Satuan: Tidak ada Statistik yang valid: Rata-rata, Jumlah, Jumlah Sampel  | 

**Dimensi untuk Metrik Pemuatan Model Titik Akhir Multi-Model**


| Dimensi | Deskripsi | 
| --- | --- | 
| EndpointName, VariantName |  Memfilter metrik pemanggilan titik akhir untuk titik akhir dan `ProductionVariant` varian yang ditentukan.  | 

`/aws/sagemaker/Endpoints`Ruang nama menyertakan metrik instance berikut dari panggilan ke. [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Metrik tersedia pada frekuensi 1 menit.

Untuk informasi tentang berapa lama CloudWatch metrik dipertahankan, lihat [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)di Referensi *Amazon CloudWatch API*.

**Metrik Instans Model Titik Akhir Multi-Model**


| Metrik | Deskripsi | 
| --- | --- | 
| LoadedModelCount  |  Jumlah model yang dimuat dalam wadah titik akhir multi-model. Metrik ini dipancarkan per instance. Statistik rata-rata dengan periode 1 menit memberi tahu Anda jumlah rata-rata model yang dimuat per instance. Statistik Jumlah memberi tahu Anda jumlah total model yang dimuat di semua instance di titik akhir. Model yang dilacak metrik ini belum tentu unik karena model mungkin dimuat dalam beberapa wadah di titik akhir. Satuan: Tidak ada Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel  | 
| CPUUtilization  |  Jumlah dari setiap pemanfaatan inti CPU individu. Pemanfaatan CPU dari setiap rentang inti adalah 0-100. Misalnya, jika ada empat CPUs, `CPUUtilization` kisarannya adalah 0% - 400%. Untuk varian endpoint, nilainya adalah jumlah dari pemanfaatan CPU dari wadah primer dan tambahan pada instance. Unit: Persen  | 
| MemoryUtilization |  Persentase memori yang digunakan oleh kontainer pada sebuah instance. Kisaran nilai ini adalah 0% - 100%. Untuk varian titik akhir, nilainya adalah jumlah dari pemanfaatan memori wadah primer dan tambahan pada instance. Unit: Persen  | 
| DiskUtilization |  Persentase ruang disk yang digunakan oleh kontainer pada sebuah instance. Kisaran nilai ini adalah 0% - 100%. Untuk varian endpoint, nilainya adalah jumlah dari pemanfaatan ruang disk dari wadah primer dan tambahan pada instance. Unit: Persen  | 

## CloudWatch metrik untuk penerapan titik akhir multi-model GPU
<a name="multi-model-endpoint-cloudwatch-metrics-gpu"></a>

Anda dapat memantau metrik berikut pada titik akhir multi-model yang didukung GPU.

`AWS/SageMaker`Namespace menyertakan metrik pemuatan model berikut dari panggilan ke. [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Metrik tersedia pada frekuensi 1 menit.

Untuk informasi tentang berapa lama CloudWatch metrik dipertahankan, lihat [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)di Referensi *Amazon CloudWatch API*.

**Metrik Pemuatan Model Titik Akhir Multi-Model**


| Metrik | Deskripsi | 
| --- | --- | 
| ModelLoadingWaitTime  |  Interval waktu permintaan pemanggilan telah menunggu model target diunduh, atau dimuat, atau keduanya untuk melakukan inferensi.  Unit: Mikrodetik  Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelUnloadingTime  |  Interval waktu yang diperlukan untuk membongkar model melalui panggilan `UnloadModel` API container.  Unit: Mikrodetik  Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelDownloadingTime |  Interval waktu yang dibutuhkan untuk mengunduh model dari Amazon Simple Storage Service (Amazon S3). Unit: Mikrodetik Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelLoadingTime  |  Interval waktu yang diperlukan untuk memuat model melalui panggilan `LoadModel` API container. Unit: Mikrodetik  Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel   | 
| ModelCacheHit  |  Jumlah `InvokeEndpoint` permintaan yang dikirim ke titik akhir multi-model yang modelnya sudah dimuat. Statistik rata-rata menunjukkan rasio permintaan yang modelnya sudah dimuat. Satuan: Tidak ada Statistik yang valid: Rata-rata, Jumlah, Jumlah Sampel  | 

**Dimensi untuk Metrik Pemuatan Model Titik Akhir Multi-Model**


| Dimensi | Deskripsi | 
| --- | --- | 
| EndpointName, VariantName |  Memfilter metrik pemanggilan titik akhir untuk titik akhir dan `ProductionVariant` varian yang ditentukan.  | 

`/aws/sagemaker/Endpoints`Ruang nama menyertakan metrik instance berikut dari panggilan ke. [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Metrik tersedia pada frekuensi 1 menit.

Untuk informasi tentang berapa lama CloudWatch metrik dipertahankan, lihat [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)di Referensi *Amazon CloudWatch API*.

**Metrik Instans Model Titik Akhir Multi-Model**


| Metrik | Deskripsi | 
| --- | --- | 
| LoadedModelCount  |  Jumlah model yang dimuat dalam wadah titik akhir multi-model. Metrik ini dipancarkan per instance. Statistik rata-rata dengan periode 1 menit memberi tahu Anda jumlah rata-rata model yang dimuat per instance. Statistik Jumlah memberi tahu Anda jumlah total model yang dimuat di semua instance di titik akhir. Model yang dilacak metrik ini belum tentu unik karena model mungkin dimuat dalam beberapa wadah di titik akhir. Satuan: Tidak ada Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel  | 
| CPUUtilization  |  Jumlah dari setiap pemanfaatan inti CPU individu. Pemanfaatan CPU dari setiap rentang inti adalah 0-100. Misalnya, jika ada empat CPUs, `CPUUtilization` kisarannya adalah 0% - 400%. Untuk varian endpoint, nilainya adalah jumlah dari pemanfaatan CPU dari wadah primer dan tambahan pada instance. Unit: Persen  | 
| MemoryUtilization |  Persentase memori yang digunakan oleh kontainer pada sebuah instance. Rentang nilai ini adalah 0% ‐ 100%. Untuk varian titik akhir, nilainya adalah jumlah dari pemanfaatan memori wadah primer dan tambahan pada instance. Unit: Persen  | 
| GPUUtilization |  Persentase unit GPU yang digunakan oleh kontainer pada sebuah instance. Nilai dapat berkisar antara rentang adalah 0-100 dan dikalikan dengan jumlah. GPUs Misalnya, jika ada empat GPUs, `GPUUtilization` kisarannya adalah 0% - 400%. Untuk varian endpoint, nilainya adalah jumlah dari pemanfaatan GPU dari wadah primer dan tambahan pada instance. Unit: Persen  | 
| GPUMemoryUtilization |  Persentase memori GPU yang digunakan oleh kontainer pada sebuah instance. Rentang nilai adalah 0-100 dan dikalikan dengan jumlah. GPUs Misalnya, jika ada empat GPUs, `GPUMemoryUtilization` kisarannya adalah 0% ‐ 400%. Untuk varian titik akhir, nilainya adalah jumlah dari pemanfaatan memori GPU dari wadah primer dan tambahan pada instance. Unit: Persen  | 
| DiskUtilization |  Persentase ruang disk yang digunakan oleh kontainer pada sebuah instance. Kisaran nilai ini adalah 0% - 100%. Untuk varian endpoint, nilainya adalah jumlah dari pemanfaatan ruang disk dari wadah primer dan tambahan pada instance. Unit: Persen  | 

# Setel SageMaker perilaku caching model titik akhir multi-model AI
<a name="multi-model-caching"></a>

Secara default, multi-model endpoint cache sering menggunakan model dalam memori (CPU atau GPU, tergantung pada apakah Anda memiliki instance yang didukung CPU atau GPU) dan pada disk untuk memberikan inferensi latensi rendah. Model cache dibongkar and/or dihapus dari disk hanya ketika wadah kehabisan memori atau ruang disk untuk mengakomodasi model yang baru ditargetkan.

[Anda dapat mengubah perilaku caching dari titik akhir multi-model dan secara eksplisit mengaktifkan atau menonaktifkan caching model dengan menyetel parameter saat Anda memanggil create\$1model. `ModelCacheSetting`](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model)

Kami merekomendasikan pengaturan nilai `ModelCacheSetting` parameter `Disabled` untuk kasus penggunaan yang tidak mendapat manfaat dari caching model. Misalnya, ketika sejumlah besar model perlu dilayani dari titik akhir tetapi setiap model dipanggil hanya sekali (atau sangat jarang). Untuk kasus penggunaan seperti itu, mengatur nilai `ModelCacheSetting` parameter untuk `Disabled` memungkinkan transaksi per detik (TPS) yang lebih tinggi untuk `invoke_endpoint` permintaan dibandingkan dengan mode caching default. TPS yang lebih tinggi dalam kasus penggunaan ini karena SageMaker AI melakukan hal berikut setelah `invoke_endpoint` permintaan:
+ Secara asinkron menurunkan model dari memori dan menghapusnya dari disk segera setelah dipanggil.
+ Memberikan konkurensi yang lebih tinggi untuk mengunduh dan memuat model dalam wadah inferensi. Untuk titik akhir yang didukung CPU dan GPU, konkurensi adalah faktor dari jumlah v CPUs dari instance container.

Untuk panduan tentang memilih jenis instans SageMaker AI ML untuk titik akhir multi-model, lihat. [Rekomendasi instans untuk penerapan titik akhir multi-model](multi-model-endpoint-instance.md)

# Menetapkan Kebijakan Auto Scaling untuk Penerapan Titik Akhir Multi-Model
<a name="multi-model-endpoints-autoscaling"></a>

SageMaker Titik akhir multi-model AI sepenuhnya mendukung penskalaan otomatis, yang mengelola replika model untuk memastikan skala model berdasarkan pola lalu lintas. Sebaiknya Anda mengonfigurasi titik akhir multi-model dan ukuran instans berdasarkan [Rekomendasi instans untuk penerapan titik akhir multi-model](multi-model-endpoint-instance.md) dan juga menyiapkan penskalaan otomatis berbasis instans untuk titik akhir Anda. Tingkat pemanggilan yang digunakan untuk memicu peristiwa skala otomatis didasarkan pada kumpulan prediksi agregat di seluruh set lengkap model yang dilayani oleh titik akhir. Untuk detail tambahan tentang menyiapkan penskalaan otomatis titik akhir, lihat Menskalakan Model [ SageMaker AI Amazon Secara Otomatis](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html).

Anda dapat menyiapkan kebijakan penskalaan otomatis dengan metrik yang telah ditentukan dan kustom pada titik akhir multi-model yang didukung CPU dan GPU.

**catatan**  
SageMaker Metrik titik akhir multi-model AI tersedia dengan perincian satu menit.

## Menentukan kebijakan penskalaan
<a name="multi-model-endpoints-autoscaling-define"></a>

Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda dapat mengonfigurasi kebijakan penskalaan pelacakan target. Anda dapat menggunakan metrik yang telah ditentukan sebelumnya atau metrik khusus.

Konfigurasi kebijakan penskalaan diwakili oleh blok JSON. Anda menyimpan konfigurasi kebijakan penskalaan Anda sebagai blok JSON dalam file teks. Anda menggunakan file teks tersebut saat menjalankan AWS CLI atau Application Auto Scaling API. Untuk informasi selengkapnya tentang sintaksis konfigurasi kebijakan, lihat `[TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)` dalam *Referensi API Application Auto Scaling*.

Opsi berikut tersedia untuk menetapkan konfigurasi kebijakan penskalaan pelacakan target.

### Gunakan metrik yang telah ditentukan
<a name="multi-model-endpoints-autoscaling-predefined"></a>

Untuk menentukan kebijakan penskalaan pelacakan target untuk varian dengan cepat, gunakan metrik yang telah ditentukan sebelumnya. `SageMakerVariantInvocationsPerInstance` `SageMakerVariantInvocationsPerInstance`adalah jumlah rata-rata kali per menit bahwa setiap instance untuk varian dipanggil. Kami sangat menyarankan menggunakan metrik ini.

Untuk menggunakan metrik yang telah ditentukan dalam kebijakan penskalaan, buat konfigurasi pelacakan target untuk kebijakan Anda. Dalam konfigurasi pelacakan target, sertakan `PredefinedMetricSpecification` untuk metrik yang telah ditentukan dan a `TargetValue` untuk nilai target metrik tersebut.

Contoh berikut adalah konfigurasi kebijakan tipikal untuk penskalaan pelacakan target untuk varian. Dalam konfigurasi ini, kami menggunakan metrik yang `SageMakerVariantInvocationsPerInstance` telah ditentukan untuk menyesuaikan jumlah instance varian sehingga setiap instance memiliki `InvocationsPerInstance` metrik. `70`

```
{"TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "InvocationsPerInstance"
    }
}
```

**catatan**  
Kami menyarankan Anda menggunakan `InvocationsPerInstance` saat menggunakan titik akhir multi-model. Metrik ini tergantung pada persyaratan latensi aplikasi Anda. `TargetValue` Kami juga menyarankan Anda memuat pengujian titik akhir untuk menyiapkan nilai parameter penskalaan yang sesuai. Untuk mempelajari lebih lanjut tentang pengujian beban dan menyiapkan penskalaan otomatis untuk titik akhir Anda, lihat blog [Mengonfigurasi titik akhir inferensi penskalaan](https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/) otomatis di Amazon AI. SageMaker 

### Gunakan metrik khusus
<a name="multi-model-endpoints-autoscaling-custom"></a>

Jika Anda perlu menentukan kebijakan penskalaan pelacakan target yang memenuhi persyaratan kustom Anda, tentukan metrik kustom. Anda dapat menentukan metrik kustom berdasarkan metrik varian produksi apa pun yang berubah sebanding dengan penskalaan.

Tidak semua metrik SageMaker AI berfungsi untuk pelacakan target. Metrik harus merupakan metrik pemanfaatan yang valid, dan harus menggambarkan seberapa sibuk sebuah instance. Nilai metrik harus meningkat atau menurun dalam proporsi terbalik dengan jumlah contoh varian. Artinya, nilai metrik harus berkurang ketika jumlah instance meningkat.

**penting**  
Sebelum menerapkan penskalaan otomatis dalam produksi, Anda harus menguji penskalaan otomatis dengan metrik khusus Anda.

#### Contoh metrik kustom untuk titik akhir multi-model yang didukung CPU
<a name="multi-model-endpoints-autoscaling-custom-cpu"></a>

Contoh berikut adalah konfigurasi pelacakan target untuk kebijakan penskalaan. Dalam konfigurasi ini, untuk model bernama`my-model`, metrik kustom `CPUUtilization` menyesuaikan jumlah instance pada titik akhir berdasarkan pemanfaatan CPU rata-rata 50% di semua instance.

```
{"TargetValue": 50,
    "CustomizedMetricSpecification":
    {"MetricName": "CPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "ModelName","Value": "my-model"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

#### Contoh metrik kustom untuk titik akhir multi-model yang didukung GPU
<a name="multi-model-endpoints-autoscaling-custom-gpu"></a>

Contoh berikut adalah konfigurasi pelacakan target untuk kebijakan penskalaan. Dalam konfigurasi ini, untuk model bernama`my-model`, metrik kustom `GPUUtilization` menyesuaikan jumlah instance pada titik akhir berdasarkan pemanfaatan GPU rata-rata 50% di semua instance.

```
{"TargetValue": 50,
    "CustomizedMetricSpecification":
    {"MetricName": "GPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "ModelName","Value": "my-model"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

## Tambahkan periode cooldown
<a name="multi-model-endpoints-autoscaling-cooldown"></a>

Untuk menambahkan periode cooldown untuk menskalakan titik akhir Anda, tentukan nilai, dalam detik, untuk. `ScaleOutCooldown` Demikian pula, untuk menambahkan periode cooldown untuk penskalaan dalam model Anda, tambahkan nilai, dalam detik, untuk. `ScaleInCooldown` Untuk informasi selengkapnya tentang `ScaleInCooldown` dan `ScaleOutCooldown`, lihat `[TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)` dalam *Referensi API Application Auto Scaling*.

Berikut ini adalah contoh konfigurasi pelacakan target untuk kebijakan penskalaan. Dalam konfigurasi ini, metrik yang `SageMakerVariantInvocationsPerInstance` telah ditentukan digunakan untuk menyesuaikan penskalaan berdasarkan rata-rata `70` di semua instance varian tersebut. Konfigurasi ini menyediakan periode pendinginan penskalaan ke dalam selama 10 menit dan periode pendinginan penskalaan ke luar selama 5 menit.

```
{"TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```

# Titik akhir multi-kontainer
<a name="multi-container-endpoints"></a>

SageMaker Titik akhir multi-kontainer AI memungkinkan pelanggan untuk menerapkan beberapa kontainer, yang menggunakan model atau kerangka kerja yang berbeda, pada satu titik akhir AI. SageMaker Kontainer dapat dijalankan secara berurutan sebagai pipa inferensi, atau setiap kontainer dapat diakses secara individual dengan menggunakan pemanggilan langsung untuk meningkatkan pemanfaatan titik akhir dan mengoptimalkan biaya.

Untuk informasi tentang menjalankan kontainer di titik akhir multi-kontainer secara berurutan, lihat. [Pipa inferensi di Amazon AI SageMaker](inference-pipelines.md)

Untuk informasi tentang menjalankan kontainer tertentu di titik akhir multi-kontainer, lihat [Memanggil titik akhir multi-kontainer dengan pemanggilan langsung](multi-container-direct.md)

**Topics**
+ [Buat titik akhir multi-kontainer (Boto 3)](multi-container-create.md)
+ [Memperbarui titik akhir multi-kontainer](multi-container-update.md)
+ [Memanggil titik akhir multi-kontainer dengan pemanggilan langsung](multi-container-direct.md)
+ [Keamanan dengan titik akhir multi-kontainer dengan pemanggilan langsung](multi-container-security.md)
+ [Metrik untuk titik akhir multi-kontainer dengan pemanggilan langsung](multi-container-metrics.md)
+ [Titik akhir multi-kontainer skala otomatis](multi-container-auto-scaling.md)
+ [Memecahkan masalah titik akhir multi-kontainer](multi-container-troubleshooting.md)

# Buat titik akhir multi-kontainer (Boto 3)
<a name="multi-container-create"></a>

Buat titik akhir Multi-kontainer dengan memanggil [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html), dan [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) APIs seperti yang Anda lakukan untuk membuat titik akhir lainnya. Anda dapat menjalankan kontainer ini secara berurutan sebagai pipeline inferensi, atau menjalankan setiap kontainer individu dengan menggunakan pemanggilan langsung. Titik akhir multi-kontainer memiliki persyaratan berikut saat Anda menelepon: `create_model`
+ Gunakan `Containers` parameter alih-alih`PrimaryContainer`, dan sertakan lebih dari satu wadah dalam `Containers` parameter.
+ `ContainerHostname`Parameter diperlukan untuk setiap kontainer di titik akhir multi-kontainer dengan pemanggilan langsung.
+ Atur `Mode` parameter `InferenceExecutionConfig` bidang `Direct` untuk pemanggilan langsung dari setiap kontainer, atau `Serial` gunakan kontainer sebagai pipa inferensi. Mode default adalah`Serial`. 

**catatan**  
Saat ini ada batas hingga 15 kontainer yang didukung pada titik akhir multi-kontainer.

Contoh berikut membuat model multi-container untuk pemanggilan langsung.

1. Buat elemen wadah dan `InferenceExecutionConfig` dengan pemanggilan langsung.

   ```
   container1 = {
                    'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage1:mytag',
                    'ContainerHostname': 'firstContainer'
                }
   
   container2 = {
                    'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage2:mytag',
                    'ContainerHostname': 'secondContainer'
                }
   inferenceExecutionConfig = {'Mode': 'Direct'}
   ```

1. Buat model dengan elemen wadah dan atur `InferenceExecutionConfig` bidang.

   ```
   import boto3
   sm_client = boto3.Session().client('sagemaker')
   
   response = sm_client.create_model(
                  ModelName = 'my-direct-mode-model-name',
                  InferenceExecutionConfig = inferenceExecutionConfig,
                  ExecutionRoleArn = role,
                  Containers = [container1, container2]
              )
   ```

Untuk membuat endoint, Anda kemudian akan memanggil [create\$1endpoint\$1config dan [create\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config) seperti yang Anda lakukan untuk membuat titik akhir lainnya.

# Memperbarui titik akhir multi-kontainer
<a name="multi-container-update"></a>

Untuk memperbarui titik akhir multi-container Amazon SageMaker AI, selesaikan langkah-langkah berikut.

1.  Panggil [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model) untuk membuat model baru dengan nilai baru untuk `Mode` parameter di bidang. `InferenceExecutionConfig`

1.  Panggil [create\$1endpoint\$1config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config) untuk membuat konfigurasi titik akhir baru dengan nama yang berbeda dengan menggunakan model baru yang Anda buat pada langkah sebelumnya.

1.  Panggil [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.update_endpoint) untuk memperbarui titik akhir dengan konfigurasi titik akhir baru yang Anda buat di langkah sebelumnya. 

# Memanggil titik akhir multi-kontainer dengan pemanggilan langsung
<a name="multi-container-direct"></a>

SageMaker Titik akhir multi-kontainer AI memungkinkan pelanggan untuk menerapkan beberapa kontainer untuk menerapkan model yang berbeda pada titik akhir AI. SageMaker Anda dapat meng-host hingga 15 kontainer inferensi yang berbeda pada satu titik akhir. Dengan menggunakan pemanggilan langsung, Anda dapat mengirim permintaan ke wadah inferensi tertentu yang dihosting pada titik akhir multi-kontainer.

 Untuk memanggil titik akhir multi-kontainer dengan pemanggilan langsung, panggil [invoke\$1endpoint karena Anda akan memanggil titik akhir](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint) lainnya, dan tentukan wadah mana yang ingin Anda panggil dengan menggunakan parameter. `TargetContainerHostname`

 

 Contoh berikut secara langsung memanggil titik akhir multi-kontainer untuk mendapatkan prediksi. `secondContainer`

```
import boto3
runtime_sm_client = boto3.Session().client('sagemaker-runtime')

response = runtime_sm_client.invoke_endpoint(
   EndpointName ='my-endpoint',
   ContentType = 'text/csv',
   TargetContainerHostname='secondContainer', 
   Body = body)
```

 Untuk setiap permintaan pemanggilan langsung ke titik akhir multi-kontainer, hanya wadah yang `TargetContainerHostname` memproses permintaan pemanggilan. Anda akan mendapatkan kesalahan validasi jika Anda melakukan salah satu dari berikut:
+ Tentukan `TargetContainerHostname` yang tidak ada di titik akhir
+ Jangan tentukan nilai untuk `TargetContainerHostname` permintaan ke titik akhir yang dikonfigurasi untuk pemanggilan langsung
+ Tentukan nilai untuk `TargetContainerHostname` permintaan ke titik akhir yang tidak dikonfigurasi untuk pemanggilan langsung.

# Keamanan dengan titik akhir multi-kontainer dengan pemanggilan langsung
<a name="multi-container-security"></a>

 Untuk titik akhir multi-kontainer dengan pemanggilan langsung, ada beberapa kontainer yang dihosting dalam satu instance dengan berbagi memori dan volume penyimpanan. Anda bertanggung jawab untuk menggunakan kontainer yang aman, memelihara pemetaan permintaan yang benar untuk menargetkan kontainer, dan memberi pengguna akses yang benar ke kontainer target. SageMaker AI menggunakan peran IAM untuk memberikan kebijakan berbasis identitas IAM yang Anda gunakan untuk menentukan apakah akses ke sumber daya diizinkan atau ditolak untuk peran itu, dan dalam kondisi apa. Untuk informasi tentang peran IAM, lihat [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) di *AWS Identity and Access Management Panduan Pengguna*. Untuk informasi tentang kebijakan berbasis identitas, lihat Kebijakan berbasis [identitas dan kebijakan berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

Secara default, prinsipal IAM dengan `InvokeEndpoint` izin pada titik akhir multi-kontainer dengan pemanggilan langsung dapat memanggil penampung apa pun di dalam titik akhir dengan nama titik akhir yang Anda tentukan saat Anda memanggil. `invoke_endpoint` Jika Anda perlu membatasi `invoke_endpoint` akses ke kumpulan kontainer terbatas di dalam titik akhir multi-kontainer, gunakan kunci kondisi `sagemaker:TargetContainerHostname` IAM. Kebijakan berikut menunjukkan cara membatasi panggilan ke container tertentu dalam titik akhir.

Kebijakan berikut hanya mengizinkan `invoke_endpoint` permintaan jika nilai `TargetContainerHostname` bidang cocok dengan salah satu ekspresi reguler yang ditentukan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetModel": [
                        "customIps*",
                        "common*"
                    ]
                }
            }
        }
    ]
}
```

------

Kebijakan berikut menolak `invoke_endpoint` permintaan jika nilai `TargetContainerHostname` bidang cocok dengan salah satu ekspresi reguler yang ditentukan dalam `Deny` pernyataan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetModel": [
                        "model_name*"
                    ]
                }
            }
        },
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Deny",
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetModel": [
                        "special-model_name*"
                    ]
                }
            }
        }
    ]
}
```

------

 Untuk informasi tentang kunci kondisi SageMaker AI, lihat [Kunci Kondisi untuk SageMaker AI](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsagemaker.html#amazonsagemaker-policy-keys) di *Panduan AWS Identity and Access Management Pengguna*.

# Metrik untuk titik akhir multi-kontainer dengan pemanggilan langsung
<a name="multi-container-metrics"></a>

Selain metrik titik akhir yang tercantum[Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md), SageMaker AI juga menyediakan metrik per kontainer.

Metrik per kontainer untuk titik akhir multi-kontainer dengan pemanggilan langsung ditempatkan dan dikategorikan ke dalam dua ruang nama: CloudWatch dan. `AWS/SageMaker` `aws/sagemaker/Endpoints` `AWS/SageMaker`Namespace mencakup metrik terkait pemanggilan, dan `aws/sagemaker/Endpoints` namespace mencakup metrik pemanfaatan memori dan CPU.

Tabel berikut mencantumkan metrik per kontainer untuk titik akhir multi-kontainer dengan pemanggilan langsung. Semua metrik menggunakan dimensi [`EndpointName, VariantName, ContainerName`], yang memfilter metrik pada titik akhir tertentu, untuk varian tertentu dan sesuai dengan wadah tertentu. Metrik ini memiliki nama metrik yang sama seperti pada pipeline inferensi, tetapi pada tingkat per kontainer []. `EndpointName, VariantName, ContainerName`

 


|  |  |  |  | 
| --- |--- |--- |--- |
|  Nama Metrik  |  Deskripsi  |  Dimensi  |  NameSpace  | 
|  Invocations  |  Jumlah InvokeEndpoint permintaan yang dikirim ke kontainer di dalam titik akhir. Untuk mendapatkan jumlah total permintaan yang dikirim ke wadah itu, gunakan Sum statistik. Unit: Tidak Ada Statistik yang valid:Sum, Sample Count |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  Invocation4XX Errors  |  Jumlah InvokeEndpoint permintaan bahwa model mengembalikan kode respons 4xx HTTP untuk pada wadah tertentu. Untuk setiap 4xx respons, SageMaker AI mengirimkan file1. Unit: Tidak Ada Statistik yang valid:Average, Sum  |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  Invocation5XX Errors  |  Jumlah InvokeEndpoint permintaan bahwa model mengembalikan kode respons 5xx HTTP untuk pada wadah tertentu. Untuk setiap 5xx respons, SageMaker AI mengirimkan file1. Unit: Tidak Ada Statistik yang valid:Average, Sum  |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  ContainerLatency  |  Waktu yang dibutuhkan wadah target untuk merespons seperti yang dilihat dari SageMaker AI. ContainerLatencytermasuk waktu yang dibutuhkan untuk mengirim permintaan, untuk mengambil respons dari wadah model, dan untuk menyelesaikan inferensi dalam wadah. Unit: Mikrodetik Statistik yang valid:Average,,Sum,Min, Max Sample Count |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  OverheadLatency  |  Waktu ditambahkan ke waktu yang dibutuhkan untuk menanggapi permintaan klien oleh SageMaker AI untuk overhead. OverheadLatencydiukur dari saat SageMaker AI menerima permintaan hingga mengembalikan respons ke klien, dikurangiModelLatency. Latensi overhead dapat bervariasi tergantung pada ukuran payload permintaan dan respons, frekuensi permintaan, dan otentikasi atau otorisasi permintaan, di antara faktor-faktor lainnya. Unit: Mikrodetik Statistik yang valid:Average,, Sum MinMax, `Jumlah Sampel `  |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  CPUUtilization  | Persentase unit CPU yang digunakan oleh setiap kontainer yang berjalan pada sebuah instance. Nilai berkisar dari 0% hingga 100%, dan dikalikan dengan jumlah. CPUs Misalnya, jika ada empat CPUs, CPUUtilization dapat berkisar dari 0% hingga 400%. Untuk titik akhir dengan pemanggilan langsung, jumlah CPUUtilization metrik sama dengan jumlah kontainer di titik akhir tersebut. Unit: Persen  |  EndpointName, VariantName, ContainerName  | aws/sagemaker/Endpoints | 
|  MemoryUtilizaton  |  Persentase memori yang digunakan oleh setiap kontainer yang berjalan pada sebuah instance. Nilai ini berkisar dari 0% hingga 100%. Mirip seperti CPUUtilization, di titik akhir dengan pemanggilan langsung, jumlah MemoryUtilization metrik sama dengan jumlah kontainer di titik akhir tersebut. Unit: Persen  |  EndpointName, VariantName, ContainerName  | aws/sagemaker/Endpoints | 

Semua metrik di tabel sebelumnya khusus untuk titik akhir multi-kontainer dengan pemanggilan langsung. Selain metrik per-kontainer khusus ini, ada juga metrik pada tingkat varian dengan dimensi `[EndpointName, VariantName]` untuk semua metrik dalam tabel yang diharapkan. `ContainerLatency`

# Titik akhir multi-kontainer skala otomatis
<a name="multi-container-auto-scaling"></a>

Jika Anda ingin mengonfigurasi penskalaan otomatis untuk titik akhir multi-kontainer menggunakan `InvocationsPerInstance` metrik, kami menyarankan agar model di setiap kontainer menunjukkan pemanfaatan dan latensi CPU yang serupa pada setiap permintaan inferensi. Ini direkomendasikan karena jika lalu lintas ke titik akhir multi-kontainer bergeser dari model pemanfaatan CPU rendah ke model pemanfaatan CPU yang tinggi, tetapi volume panggilan keseluruhan tetap sama, titik akhir tidak skala dan mungkin tidak ada cukup contoh untuk menangani semua permintaan ke model pemanfaatan CPU tinggi. Untuk informasi tentang penskalaan titik akhir secara otomatis, lihat. [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md)

# Memecahkan masalah titik akhir multi-kontainer
<a name="multi-container-troubleshooting"></a>

Bagian berikut dapat membantu Anda memecahkan masalah kesalahan dengan titik akhir multi-kontainer.

## Kesalahan Pemeriksaan Kesehatan Ping
<a name="multi-container-ping-errors"></a>

 Dengan beberapa kontainer, memori endpoint dan CPU berada di bawah tekanan yang lebih tinggi selama pembuatan endpoint. Secara khusus, `CPUUtilization` metrik `MemoryUtilization` dan lebih tinggi daripada titik akhir kontainer tunggal, karena tekanan pemanfaatan sebanding dengan jumlah kontainer. Karena itu, kami menyarankan Anda memilih jenis instance dengan memori dan CPU yang cukup untuk memastikan bahwa ada cukup memori pada instance agar semua model dimuat (panduan yang sama berlaku untuk menerapkan pipeline inferensi). Jika tidak, pembuatan titik akhir Anda mungkin gagal dengan kesalahan seperti`XXX did not pass the ping health check`.

## Hilang accept-bind-to-port =true label Docker
<a name="multi-container-missing-accept"></a>

Kontainer dalam titik akhir multi-kontainer mendengarkan pada port yang ditentukan dalam variabel `SAGEMAKER_BIND_TO_PORT` lingkungan, bukan port 8080. Saat kontainer berjalan di titik akhir multi-kontainer, SageMaker AI secara otomatis menyediakan variabel lingkungan ini ke wadah. Jika variabel lingkungan ini tidak ada, kontainer default menggunakan port 8080. Untuk menunjukkan bahwa kontainer Anda mematuhi persyaratan ini, gunakan perintah berikut untuk menambahkan label ke Dockerfile Anda: 

```
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
```

 Jika tidak, Anda akan melihat pesan kesalahan seperti `Your Ecr Image XXX does not contain required com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true Docker label(s).`

 Jika kontainer Anda perlu mendengarkan pada port kedua, pilih port dalam rentang yang ditentukan oleh variabel `SAGEMAKER_SAFE_PORT_RANGE` lingkungan. Tentukan nilai sebagai rentang inklusif dalam format *XXXX* -*YYYY*, di mana XXXX dan YYYY adalah bilangan bulat multi-digit. SageMaker AI memberikan nilai ini secara otomatis saat Anda menjalankan penampung di titik akhir multi-kontainer. 

# Pipa inferensi di Amazon AI SageMaker
<a name="inference-pipelines"></a>

*Pipa inferensi* adalah model SageMaker AI Amazon yang terdiri dari urutan linier dua hingga lima belas kontainer yang memproses permintaan inferensi pada data. Anda menggunakan pipeline inferensi untuk menentukan dan menerapkan kombinasi algoritme bawaan SageMaker AI yang telah dilatih sebelumnya dan algoritme kustom Anda sendiri yang dikemas dalam wadah Docker. Anda dapat menggunakan pipa inferensi untuk menggabungkan tugas ilmu data pra-pemrosesan, prediksi, dan pasca-pemrosesan. Pipa inferensi dikelola sepenuhnya.

Anda dapat menambahkan SageMaker AI Spark MLServing dan wadah scikit-learn yang menggunakan kembali transformator data yang dikembangkan untuk model pelatihan. Seluruh pipa inferensi yang dirakit dapat dianggap sebagai model SageMaker AI yang dapat Anda gunakan untuk membuat prediksi waktu nyata atau untuk memproses transformasi batch secara langsung tanpa pra-pemrosesan eksternal. 

Dalam model pipeline inferensi, SageMaker AI menangani pemanggilan sebagai urutan permintaan HTTP. Wadah pertama dalam pipa menangani permintaan awal, kemudian respons perantara dikirim sebagai permintaan ke wadah kedua, dan seterusnya, untuk setiap kontainer dalam pipa. SageMaker AI mengembalikan respons akhir kepada klien. 

Saat Anda menerapkan model pipeline, SageMaker AI menginstal dan menjalankan semua container di setiap instans Amazon Elastic Compute Cloud (Amazon EC2) di titik akhir atau tugas transformasi. Pemrosesan fitur dan inferensi berjalan dengan latensi rendah karena kontainer ditempatkan bersama pada instans EC2 yang sama. Anda menentukan kontainer untuk model pipa menggunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)operasi atau dari konsol. Alih-alih menyetelnya`PrimaryContainer`, Anda menggunakan `Containers` parameter untuk mengatur wadah yang membentuk pipa. Anda juga menentukan urutan di mana kontainer dijalankan. 

Model pipeline tidak dapat diubah, tetapi Anda dapat memperbarui pipeline inferensi dengan menerapkan yang baru menggunakan operasi. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) Modularitas ini mendukung fleksibilitas yang lebih besar selama eksperimen. 

Untuk informasi tentang cara membuat pipeline inferensi dengan SageMaker Model Registry, lihat[Penerapan Pendaftaran Model dengan Model Registry](model-registry.md).

Tidak ada biaya tambahan untuk menggunakan fitur ini. Anda hanya membayar untuk instance yang berjalan pada titik akhir.

**Topics**
+ [Contoh Notebook untuk Pipa Inferensi](#inference-pipeline-sample-notebooks)
+ [Pemrosesan Fitur dengan Spark ML dan Scikit-learn](inference-pipeline-mleap-scikit-learn-containers.md)
+ [Buat Model Pipeline](inference-pipeline-create-console.md)
+ [Jalankan Prediksi Real-time dengan Pipeline Inferensi](inference-pipeline-real-time.md)
+ [Batch berubah dengan pipa inferensi](inference-pipeline-batch.md)
+ [Log dan Metrik Pipa Inferensi](inference-pipeline-logs-metrics.md)
+ [Memecahkan Masalah Pipa Inferensi](inference-pipeline-troubleshoot.md)

## Contoh Notebook untuk Pipa Inferensi
<a name="inference-pipeline-sample-notebooks"></a>

Untuk contoh yang menunjukkan cara membuat dan menerapkan pipeline inferensi, lihat contoh notebook Inference Pipeline [with Scikit-learn dan Linear](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/scikit_learn_inference_pipeline) Learner. Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) 

Untuk melihat daftar semua sampel SageMaker AI, setelah membuat dan membuka instance notebook, pilih tab **Contoh SageMaker AI**. Ada tiga notebook pipa inferensi. Dua notebook pipa inferensi pertama yang baru saja dijelaskan terletak di `advanced_functionality` folder dan notebook ketiga ada di folder`sagemaker-python-sdk`. Untuk membuka buku catatan, pilih tab **Use**, lalu pilih **Buat salinan**.

# Pemrosesan Fitur dengan Spark ML dan Scikit-learn
<a name="inference-pipeline-mleap-scikit-learn-containers"></a>

Sebelum melatih model dengan algoritme bawaan Amazon SageMaker AI atau algoritme khusus, Anda dapat menggunakan praprosesor Spark dan scikit-learn untuk mengubah data dan fitur insinyur Anda. 

## Pemrosesan Fitur dengan Spark Ml
<a name="feature-processing-spark"></a>

Anda dapat menjalankan pekerjaan Spark ML dengan [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html), layanan ETL (ekstrak, transformasi, muat) tanpa server, dari notebook AI Anda. SageMaker [Anda juga dapat terhubung ke kluster EMR yang ada untuk menjalankan pekerjaan Spark ML dengan Amazon EMR.](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) Untuk melakukan ini, Anda memerlukan peran AWS Identity and Access Management (IAM) yang memberikan izin untuk melakukan panggilan dari notebook SageMaker AI Anda. AWS Glue

**catatan**  
Untuk melihat versi Python dan Spark mana yang AWS Glue mendukung, lihat [AWS Glue](/glue/latest/dg/release-notes.html) Release Notes.

Setelah fitur rekayasa, Anda mengemas dan membuat serial pekerjaan Spark ML MLeap ke dalam MLeap wadah yang dapat Anda tambahkan ke pipeline inferensi. Anda tidak perlu menggunakan cluster Spark yang dikelola secara eksternal. Dengan pendekatan ini, Anda dapat menskalakan dengan mulus dari sampel baris ke terabyte data. Transformator yang sama bekerja untuk pelatihan dan inferensi, jadi Anda tidak perlu menduplikasi preprocessing dan fitur logika rekayasa atau mengembangkan solusi satu kali untuk membuat model bertahan. Dengan pipeline inferensi, Anda tidak perlu memelihara infrastruktur luar, dan Anda dapat membuat prediksi langsung dari input data.

Saat Anda menjalankan pekerjaan Spark ML AWS Glue, pipeline Spark ML diserialisasikan ke dalam format. [MLeap](https://github.com/combust/mleap) Kemudian, Anda dapat menggunakan pekerjaan dengan [SparkMl Model Serving](https://github.com/aws/sagemaker-sparkml-serving-container) Container di AI Inference SageMaker Pipeline. *MLeap*adalah format serialisasi dan mesin eksekusi untuk pipa pembelajaran mesin. Ini mendukung Spark, Scikit-learn, dan TensorFlow untuk melatih jaringan pipa dan mengekspornya ke pipa serial yang disebut Bundel. MLeap Anda dapat melakukan deserialisasi Bundle kembali ke Spark untuk penilaian mode batch atau ke runtime untuk mengaktifkan layanan API waktu nyata. MLeap 

Untuk contoh yang menunjukkan cara menampilkan proses dengan Spark ML, lihat [Melatih Model ML menggunakan Apache Spark di Amazon EMR dan terapkan](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/sparkml_serving_emr_mleap_abalone) di notebook sampel AI. SageMaker 

## Pemrosesan Fitur dengan Scikit-Learn
<a name="feature-processing-with-scikit"></a>

Anda dapat menjalankan dan mengemas pekerjaan scikit-learn ke dalam wadah langsung di Amazon AI. SageMaker [Untuk contoh kode Python untuk membangun model featurizer scikit-learn yang melatih [kumpulan data bunga Iris Fisher](http://archive.ics.uci.edu/ml/datasets/Iris) dan memprediksi spesies Iris berdasarkan pengukuran morfologi, lihat Pelatihan dan Prediksi IRIS dengan Sagemaker Scikit-learn.](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris) 

# Buat Model Pipeline
<a name="inference-pipeline-create-console"></a>

Untuk membuat model pipeline yang dapat diterapkan ke titik akhir atau digunakan untuk pekerjaan transformasi batch, gunakan konsol Amazon SageMaker AI atau operasinya. `CreateModel` 

**Untuk membuat pipeline inferensi (konsol)**

1. Buka konsol Amazon SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Pilih **Model**, lalu pilih **Buat model** dari grup **Inferensi**. 

1. Pada halaman **Buat model**, berikan nama model, pilih peran IAM, dan, jika Anda ingin menggunakan VPC pribadi, tentukan nilai VPC.   
![\[Halaman untuk membuat model untuk Inference Pipeline.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/create-pipeline-model.png)

1. Untuk menambahkan informasi tentang kontainer di pipeline inferensi, pilih **Tambah wadah**, lalu pilih **Berikutnya**.

1. Lengkapi bidang untuk setiap kontainer dalam urutan yang ingin Anda jalankan, hingga maksimum lima belas. Lengkapi **opsi input Container**,, **Lokasi gambar kode inferensi**, dan, secara opsional, **Lokasi artefak model**, **nama host kontainer**, dan bidang **variabel Lingkungan**.  
![\[Membuat model pipa dengan kontainer.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/create-pipeline-model-containers.png)

   **MyInferencePipelineModel**Halaman merangkum pengaturan untuk wadah yang memberikan masukan untuk model. Jika Anda menyediakan variabel lingkungan dalam definisi kontainer yang sesuai, SageMaker AI menunjukkannya di bidang **variabel Lingkungan**.  
![\[Ringkasan pengaturan kontainer untuk model pipa.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/pipeline-MyInferencePipelinesModel-recap.png)

# Jalankan Prediksi Real-time dengan Pipeline Inferensi
<a name="inference-pipeline-real-time"></a>

Anda dapat menggunakan model terlatih dalam pipeline inferensi untuk membuat prediksi real-time secara langsung tanpa melakukan preprocessing eksternal. Saat mengonfigurasi pipeline, Anda dapat memilih untuk menggunakan transformator fitur bawaan yang sudah tersedia di Amazon SageMaker AI. Atau, Anda dapat menerapkan logika transformasi Anda sendiri hanya dengan menggunakan beberapa baris kode scikit-learn atau Spark. 

[MLeap](https://combust.github.io/mleap-docs/), format serialisasi dan mesin eksekusi untuk pipeline pembelajaran mesin, mendukung Spark, scikit-learn, dan TensorFlow untuk melatih pipeline dan mengekspornya ke pipeline serial yang disebut Bundle. MLeap Anda dapat melakukan deserialisasi Bundle kembali ke Spark untuk penilaian mode batch atau ke runtime untuk mengaktifkan layanan API waktu nyata. MLeap 

Kontainer dalam pipa mendengarkan pada port yang ditentukan dalam variabel `SAGEMAKER_BIND_TO_PORT` lingkungan (bukan 8080). Saat berjalan di pipeline inferensi, SageMaker AI secara otomatis menyediakan variabel lingkungan ini ke kontainer. Jika variabel lingkungan ini tidak ada, kontainer default menggunakan port 8080. Untuk menunjukkan bahwa kontainer Anda mematuhi persyaratan ini, gunakan perintah berikut untuk menambahkan label ke Dockerfile Anda:

```
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
```

Jika kontainer Anda perlu mendengarkan pada port kedua, pilih port dalam rentang yang ditentukan oleh variabel `SAGEMAKER_SAFE_PORT_RANGE` lingkungan. Tentukan nilai sebagai rentang inklusif dalam format**"XXXX-YYYY"**, di mana `XXXX` dan `YYYY` merupakan bilangan bulat multi-digit. SageMaker AI memberikan nilai ini secara otomatis saat Anda menjalankan container dalam pipeline multicontainer.

**catatan**  
Untuk menggunakan image Docker khusus dalam pipeline yang menyertakan [algoritme bawaan SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), Anda memerlukan kebijakan [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Repositori Amazon ECR Anda harus memberikan izin SageMaker AI untuk menarik gambar. Untuk informasi selengkapnya, lihat [Memecahkan Masalah Izin Amazon ECR untuk Pipa Inferensi](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions).

## Membuat dan Menerapkan Titik Akhir Pipa Inferensi
<a name="inference-pipeline-real-time-sdk"></a>

Kode berikut membuat dan menerapkan model pipeline inferensi real-time dengan SparkMl dan XGBoost model secara seri menggunakan AI SDK. SageMaker 

```
from sagemaker.model import Model
from sagemaker.pipeline_model import PipelineModel
from sagemaker.sparkml.model import SparkMLModel

sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
sparkml_model = SparkMLModel(model_data=sparkml_data)
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])
sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
```

## Minta Inferensi Waktu Nyata dari Titik Akhir Pipa Inferensi
<a name="inference-pipeline-endpoint-request"></a>

Contoh berikut menunjukkan cara membuat prediksi real-time dengan memanggil titik akhir inferensi dan meneruskan payload permintaan dalam format JSON:

```
import sagemaker
from sagemaker.predictor import json_serializer, json_deserializer, Predictor

payload = {
        "input": [
            {
                "name": "Pclass",
                "type": "float",
                "val": "1.0"
            },
            {
                "name": "Embarked",
                "type": "string",
                "val": "Q"
            },
            {
                "name": "Age",
                "type": "double",
                "val": "48.0"
            },
            {
                "name": "Fare",
                "type": "double",
                "val": "100.67"
            },
            {
                "name": "SibSp",
                "type": "double",
                "val": "1.0"
            },
            {
                "name": "Sex",
                "type": "string",
                "val": "male"
            }
        ],
        "output": {
            "name": "features",
            "type": "double",
            "struct": "vector"
        }
    }

predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer,
                                content_type='text/csv', accept='application/json')

print(predictor.predict(payload))
```

Respons yang Anda dapatkan `predictor.predict(payload)` adalah hasil inferensi model.

## Contoh pipa inferensi waktu nyata
<a name="inference-pipeline-example"></a>

Anda dapat menjalankan [contoh buku catatan ini menggunakan SKLearn prediktor](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb) yang menunjukkan cara menerapkan titik akhir, menjalankan permintaan inferensi, lalu deserialisasi respons. Temukan buku catatan ini dan lebih banyak contoh di [ GitHub repositori SageMaker contoh Amazon](https://github.com/awslabs/amazon-sagemaker-examples).

# Batch berubah dengan pipa inferensi
<a name="inference-pipeline-batch"></a>

Untuk mendapatkan kesimpulan pada seluruh kumpulan data, Anda menjalankan transformasi batch pada model terlatih. Untuk menjalankan inferensi pada kumpulan data lengkap, Anda dapat menggunakan model pipeline inferensi yang sama yang dibuat dan diterapkan ke titik akhir untuk pemrosesan waktu nyata dalam pekerjaan transformasi batch. Untuk menjalankan tugas transformasi batch dalam pipeline, Anda mengunduh data input dari Amazon S3 dan mengirimkannya dalam satu atau beberapa permintaan HTTP ke model pipeline inferensi. Untuk contoh yang menunjukkan cara menyiapkan data untuk transformasi batch, lihat “Bagian 2 - Memproses data rumahan mentah menggunakan Scikit Learn” dari [Titik Akhir SageMaker Multi-Model Amazon](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_linear_learner_home_value) menggunakan buku catatan sampel Linear Learner. Untuk informasi tentang transformasi batch Amazon SageMaker AI, lihat[Transformasi Batch untuk inferensi dengan Amazon AI SageMaker](batch-transform.md). 

**catatan**  
Untuk menggunakan gambar Docker khusus dalam pipeline yang menyertakan [algoritme bawaan Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), Anda memerlukan kebijakan [Amazon Elastic Container Registry (ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)). Repositori Amazon ECR Anda harus memberikan izin SageMaker AI untuk menarik gambar. Untuk informasi selengkapnya, lihat [Memecahkan Masalah Izin Amazon ECR untuk Pipa Inferensi](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions).

Contoh berikut menunjukkan cara menjalankan tugas transformasi menggunakan [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) SDK. Dalam contoh ini, `model_name` adalah pipa inferensi yang menggabungkan SparkMl XGBoost dan model (dibuat dalam contoh sebelumnya). Lokasi Amazon S3 yang ditentukan oleh `input_data_path` berisi data input, dalam format CSV, untuk diunduh dan dikirim ke model Spark ML. Setelah tugas transformasi selesai, lokasi Amazon S3 yang ditentukan oleh `output_data_path` berisi data keluaran yang dikembalikan oleh XGBoost model dalam format CSV.

```
import sagemaker
input_data_path = 's3://{}/{}/{}'.format(default_bucket, 'key', 'file_name')
output_data_path = 's3://{}/{}'.format(default_bucket, 'key')
transform_job = sagemaker.transformer.Transformer(
    model_name = model_name,
    instance_count = 1,
    instance_type = 'ml.m4.xlarge',
    strategy = 'SingleRecord',
    assemble_with = 'Line',
    output_path = output_data_path,
    base_transform_job_name='inference-pipelines-batch',
    sagemaker_session=sagemaker.Session(),
    accept = CONTENT_TYPE_CSV)
transform_job.transform(data = input_data_path, 
                        content_type = CONTENT_TYPE_CSV, 
                        split_type = 'Line')
```

# Log dan Metrik Pipa Inferensi
<a name="inference-pipeline-logs-metrics"></a>

Pemantauan penting untuk menjaga keandalan, ketersediaan, dan kinerja sumber daya Amazon SageMaker AI. Untuk memantau dan memecahkan masalah performa pipeline inferensi, gunakan CloudWatch log Amazon dan pesan kesalahan. Untuk informasi tentang alat pemantauan yang disediakan SageMaker AI, lihat[Memantau AWS sumber daya di Amazon SageMaker AI](monitoring-overview.md).

## Gunakan Metrik untuk Memantau Model Multi-kontainer
<a name="inference-pipeline-metrics"></a>

Untuk memantau model multi-kontainer di Inference Pipelines, gunakan Amazon. CloudWatch CloudWatchmengumpulkan data mentah dan memprosesnya menjadi metrik yang dapat dibaca, mendekati waktu nyata. SageMaker Pekerjaan pelatihan AI dan titik akhir menulis CloudWatch metrik dan log di namespace. `AWS/SageMaker` 

Tabel berikut mencantumkan metrik dan dimensi untuk hal-hal berikut:
+ Pemanggilan titik akhir
+ Pekerjaan pelatihan, pekerjaan transformasi batch, dan instance titik akhir

*Dimensi* adalah name/value pasangan yang secara unik mengidentifikasi metrik. Anda dapat menetapkan hingga 10 dimensi ke metrik. Untuk informasi lebih lanjut tentang pemantauan dengan CloudWatch, lihat[Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md). 

**Metrik Pemanggilan Titik Akhir**

`AWS/SageMaker`Namespace menyertakan metrik permintaan berikut dari panggilan ke. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Metrik dilaporkan pada interval 1 menit.


| Metrik | Deskripsi | 
| --- | --- | 
| Invocation4XXErrors |  Jumlah `InvokeEndpoint` permintaan yang model mengembalikan kode respons `4xx` HTTP untuk. Untuk setiap `4xx` respons, SageMaker AI mengirimkan file`1`. Satuan: Tidak ada Statistik yang valid: `Average`, `Sum`  | 
| Invocation5XXErrors |  Jumlah `InvokeEndpoint` permintaan yang model mengembalikan kode respons `5xx` HTTP untuk. Untuk setiap `5xx` respons, SageMaker AI mengirimkan file`1`. Satuan: Tidak ada Statistik yang valid: `Average`, `Sum`  | 
| Invocations |  `number of InvokeEndpoint`Permintaan dikirim ke titik akhir model.  Untuk mendapatkan jumlah total permintaan yang dikirim ke titik akhir model, gunakan `Sum` statistik. Satuan: Tidak ada Statistik yang valid: `Sum`, `Sample Count`  | 
| InvocationsPerInstance |  Jumlah pemanggilan titik akhir yang dikirim ke model, dinormalisasi oleh masing-masing. `InstanceCount` `ProductionVariant` SageMaker AI mengirimkan `numberOfInstances` 1/sebagai nilai untuk setiap permintaan, di mana `numberOfInstances` jumlah instans aktif untuk titik akhir ProductionVariant pada saat permintaan. Satuan: Tidak ada Statistik valid: `Sum`  | 
| ModelLatency | Waktu yang dibutuhkan model atau model untuk merespons. Ini termasuk waktu yang dibutuhkan untuk mengirim permintaan, untuk mengambil respons dari wadah model, dan untuk menyelesaikan inferensi dalam wadah. ModelLatencyadalah total waktu yang dibutuhkan oleh semua kontainer dalam pipa inferensi.Unit: MikrodetikStatistik yang valid:`Average`,`Sum`,`Min`,`Max`, Jumlah Sampel | 
| OverheadLatency |  Waktu ditambahkan ke waktu yang dibutuhkan untuk menanggapi permintaan klien oleh SageMaker AI untuk overhead. `OverheadLatency`diukur dari saat SageMaker AI menerima permintaan hingga mengembalikan respons ke klien, dikurangi`ModelLatency`. Latensi overhead dapat bervariasi tergantung pada ukuran payload permintaan dan respons, frekuensi permintaan, dan otentikasi atau otorisasi permintaan, di antara faktor-faktor lainnya. Unit: Mikrodetik Statistik yang valid:`Average`,`Sum`,`Min`,`Max`, `Sample Count`  | 
| ContainerLatency | Waktu yang dibutuhkan wadah Inference Pipelines untuk merespons seperti yang dilihat dari SageMaker AI. ContainerLatencytermasuk waktu yang dibutuhkan untuk mengirim permintaan, untuk mengambil respons dari wadah model, dan untuk menyelesaikan inferensi dalam wadah.Unit: MikrodetikStatistik yang valid:`Average`,`Sum`,`Min`,`Max`, `Sample Count` | 

**Dimensi untuk Metrik Pemanggilan Titik Akhir**


| Dimensi | Deskripsi | 
| --- | --- | 
| EndpointName, VariantName, ContainerName |  Memfilter metrik pemanggilan titik akhir untuk a `ProductionVariant` pada titik akhir yang ditentukan dan untuk varian yang ditentukan.  | 

**Untuk titik akhir pipeline inferensi, cantumkan metrik CloudWatch latensi per kontainer di akun Anda sebagai Metrik **Kontainer Titik Akhir dan Metrik **Varian Titik Akhir**** di namespace AI, sebagai berikut. SageMaker ** `ContainerLatency`Metrik hanya muncul untuk pipa inferensi.

![\[CloudWatch Dasbor untuk pipa inferensi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/pipeline-endpoint-metrics.png)


Untuk setiap titik akhir dan setiap kontainer, metrik latensi menampilkan nama untuk penampung, titik akhir, varian, dan metrik.

![\[Metrik latensi untuk titik akhir.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/pipeline-endpoint-metrics-details.png)


**Training Job, Batch Transform Job, dan Metrik Instance Endpoint**

Ruang nama`/aws/sagemaker/TrainingJobs`,`/aws/sagemaker/TransformJobs`, dan `/aws/sagemaker/Endpoints` menyertakan metrik berikut untuk pekerjaan pelatihan dan instance titik akhir.

Metrik dilaporkan pada interval 1 menit.


| Metrik | Deskripsi | 
| --- | --- | 
| CPUUtilization |  Persentase unit CPU yang digunakan oleh kontainer yang berjalan pada sebuah instance. Nilainya berkisar dari 0% hingga 100%, dan dikalikan dengan jumlah. CPUs Misalnya, jika ada empat CPUs, `CPUUtilization` dapat berkisar dari 0% hingga 400%. Untuk pekerjaan pelatihan, `CPUUtilization` adalah pemanfaatan CPU dari wadah algoritma yang berjalan pada instance. Untuk pekerjaan transformasi batch, `CPUUtilization` adalah pemanfaatan CPU dari wadah transformasi yang berjalan pada instance. Untuk model multi-kontainer, `CPUUtilization` adalah jumlah pemanfaatan CPU oleh semua kontainer yang berjalan pada instance. Untuk varian endpoint, `CPUUtilization` adalah jumlah pemanfaatan CPU oleh semua kontainer yang berjalan pada instance. Unit: Persen  | 
| MemoryUtilization | Persentase memori yang digunakan oleh kontainer yang berjalan pada sebuah instance. Nilai ini berkisar dari 0% hingga 100%.Untuk pekerjaan pelatihan, `MemoryUtilization` adalah memori yang digunakan oleh wadah algoritma yang berjalan pada instance.Untuk pekerjaan transformasi batch, `MemoryUtilization` adalah memori yang digunakan oleh wadah transformasi yang berjalan pada instance.Untuk model multi-kontainer, MemoryUtilization adalah jumlah memori yang digunakan oleh semua kontainer yang berjalan pada instance.Untuk varian endpoint, `MemoryUtilization` adalah jumlah memori yang digunakan oleh semua container yang berjalan pada instance.Unit: Persen | 
| GPUUtilization |  Persentase unit GPU yang digunakan oleh kontainer yang berjalan pada sebuah instance. `GPUUtilization`berkisar dari 0% hingga 100% dan dikalikan dengan jumlah. GPUs Misalnya, jika ada empat GPUs, `GPUUtilization` dapat berkisar dari 0% hingga 400%. Untuk pekerjaan pelatihan, `GPUUtilization` adalah GPU yang digunakan oleh wadah algoritma yang berjalan pada instance. Untuk pekerjaan transformasi batch, `GPUUtilization` adalah GPU yang digunakan oleh wadah transformasi yang berjalan pada instance. Untuk model multi-kontainer, `GPUUtilization` adalah jumlah GPU yang digunakan oleh semua kontainer yang berjalan pada instance. Untuk varian endpoint, `GPUUtilization` adalah jumlah GPU yang digunakan oleh semua container yang berjalan pada instance. Unit: Persen  | 
| GPUMemoryUtilization |  Persentase memori GPU yang digunakan oleh kontainer yang berjalan pada sebuah instance. GPUMemoryPemanfaatan berkisar dari 0% hingga 100% dan dikalikan dengan jumlah. GPUs Misalnya, jika ada empat GPUs, `GPUMemoryUtilization` dapat berkisar dari 0% hingga 400%. Untuk pekerjaan pelatihan, `GPUMemoryUtilization` adalah memori GPU yang digunakan oleh wadah algoritma yang berjalan pada instance. Untuk pekerjaan transformasi batch, `GPUMemoryUtilization` adalah memori GPU yang digunakan oleh wadah transformasi yang berjalan pada instance. Untuk model multi-kontainer, `GPUMemoryUtilization` adalah jumlah GPU yang digunakan oleh semua kontainer yang berjalan pada instance. Untuk varian endpoint, `GPUMemoryUtilization` adalah jumlah memori GPU yang digunakan oleh semua container yang berjalan pada instance. Unit: Persen  | 
| DiskUtilization |  Persentase ruang disk yang digunakan oleh kontainer yang berjalan pada sebuah instance. DiskUtilization berkisar dari 0% hingga 100%. Metrik ini tidak didukung untuk pekerjaan transformasi batch. Untuk pekerjaan pelatihan, `DiskUtilization` adalah ruang disk yang digunakan oleh wadah algoritma yang berjalan pada instance. Untuk varian endpoint, `DiskUtilization` adalah jumlah ruang disk yang digunakan oleh semua kontainer yang disediakan yang berjalan pada instance. Unit: Persen  | 

**Dimensi untuk Training Job, Batch Transform Job, dan Endpoint Instance Metrics**


| Dimensi | Deskripsi | 
| --- | --- | 
| Host |  Untuk pekerjaan pelatihan, `Host` memiliki format`[training-job-name]/algo-[instance-number-in-cluster]`. Gunakan dimensi ini untuk memfilter metrik instance untuk pekerjaan dan instance pelatihan yang ditentukan. Format dimensi ini hanya ada di `/aws/sagemaker/TrainingJobs` namespace. Untuk pekerjaan transformasi batch, `Host` memiliki format`[transform-job-name]/[instance-id]`. Gunakan dimensi ini untuk memfilter metrik instance untuk pekerjaan dan instance transformasi batch yang ditentukan. Format dimensi ini hanya ada di `/aws/sagemaker/TransformJobs` namespace. Untuk titik akhir, `Host` memiliki format`[endpoint-name]/[ production-variant-name ]/[instance-id]`. Gunakan dimensi ini untuk memfilter metrik instance untuk titik akhir, varian, dan instance yang ditentukan. Format dimensi ini hanya ada di `/aws/sagemaker/Endpoints` namespace.  | 

Untuk membantu Anda men-debug pekerjaan pelatihan, titik akhir, dan konfigurasi siklus hidup instance notebook, SageMaker AI juga mengirimkan apa pun yang dikirim oleh container algoritme, wadah model, atau konfigurasi siklus hidup instance notebook ke atau ke Amazon Logs. `stdout` `stderr` CloudWatch Anda dapat menggunakan informasi ini untuk debugging dan untuk menganalisis kemajuan.

## Gunakan Log untuk Memantau Pipa Inferensi
<a name="inference-pipeline-logs"></a>

Tabel berikut mencantumkan grup log dan aliran log SageMaker AI. kirim ke Amazon CloudWatch 

*Pengaliran log* adalah urutan log acara yang berbagi sumber yang sama. Setiap sumber log yang CloudWatch terpisah menjadi aliran log terpisah. *Grup log* adalah grup log stream yang berbagi pengaturan retensi, pemantauan, dan kontrol akses yang sama.

**Log**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/inference-pipeline-logs-metrics.html)

**catatan**  
SageMaker AI membuat grup `/aws/sagemaker/NotebookInstances` log saat Anda membuat instance notebook dengan konfigurasi siklus hidup. Untuk informasi selengkapnya, lihat [Kustomisasi instance SageMaker notebook menggunakan skrip LCC](notebook-lifecycle-config.md).

Untuk informasi selengkapnya tentang pencatatan SageMaker AI, lihat[CloudWatch Log untuk Amazon SageMaker AI](logging-cloudwatch.md). 

# Memecahkan Masalah Pipa Inferensi
<a name="inference-pipeline-troubleshoot"></a>

Untuk memecahkan masalah pipeline inferensi, gunakan CloudWatch log dan pesan kesalahan. Jika Anda menggunakan gambar Docker khusus dalam pipeline yang menyertakan algoritme bawaan Amazon SageMaker AI, Anda mungkin juga mengalami masalah izin. Untuk memberikan izin yang diperlukan, buat kebijakan Amazon Elastic Container Registry (Amazon ECR).

**Topics**
+ [Memecahkan Masalah Izin Amazon ECR untuk Pipa Inferensi](#inference-pipeline-troubleshoot-permissions)
+ [Gunakan CloudWatch Log untuk Memecahkan Masalah Pipa Inferensi SageMaker AI](#inference-pipeline-troubleshoot-logs)
+ [Menggunakan Pesan Kesalahan untuk Memecahkan Masalah Saluran Inferensi](#inference-pipeline-troubleshoot-errors)

## Memecahkan Masalah Izin Amazon ECR untuk Pipa Inferensi
<a name="inference-pipeline-troubleshoot-permissions"></a>

Saat Anda menggunakan gambar Docker khusus dalam pipeline yang menyertakan [algoritme bawaan SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), Anda memerlukan kebijakan [ECR Amazon](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Kebijakan ini memungkinkan repositori Amazon ECR Anda memberikan izin kepada SageMaker AI untuk menarik gambar. Kebijakan harus menambahkan izin berikut:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "allowSageMakerToPull",
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Gunakan CloudWatch Log untuk Memecahkan Masalah Pipa Inferensi SageMaker AI
<a name="inference-pipeline-troubleshoot-logs"></a>

SageMaker AI menerbitkan log kontainer untuk titik akhir yang menerapkan pipeline inferensi ke Amazon CloudWatch di jalur berikut untuk setiap kontainer.

```
/aws/sagemaker/Endpoints/{EndpointName}/{Variant}/{InstanceId}/{ContainerHostname}
```

Misalnya, log untuk titik akhir ini dipublikasikan ke grup dan aliran log berikut:

```
EndpointName: MyInferencePipelinesEndpoint
Variant: MyInferencePipelinesVariant
InstanceId: i-0179208609ff7e488
ContainerHostname: MyContainerName1 and MyContainerName2
```

```
logGroup: /aws/sagemaker/Endpoints/MyInferencePipelinesEndpoint
logStream: MyInferencePipelinesVariant/i-0179208609ff7e488/MyContainerName1
logStream: MyInferencePipelinesVariant/i-0179208609ff7e488/MyContainerName2
```

*Pengaliran log* adalah urutan log acara yang berbagi sumber yang sama. Setiap sumber log yang CloudWatch terpisah menjadi aliran log terpisah. *Grup log* adalah grup log stream yang berbagi pengaturan retensi, pemantauan, dan kontrol akses yang sama.

**Untuk melihat grup log dan aliran**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di halaman navigasi, pilih **Log**.

1. Di **Grup Log**. filter pada**MyInferencePipelinesEndpoint**:   
![\[Grup CloudWatch log difilter untuk titik akhir pipa inferensi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/pipeline-log-group-filter.png)

1. Untuk melihat aliran log, pada halaman **Grup CloudWatch Log**, pilih**MyInferencePipelinesEndpoint**, lalu **Cari Grup Log**.  
![\[Aliran CloudWatch log untuk pipa inferensi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/pipeline-log-streams-2.png)

Untuk daftar log yang diterbitkan SageMaker AI, lihat[Log dan Metrik Pipa Inferensi](inference-pipeline-logs-metrics.md).

## Menggunakan Pesan Kesalahan untuk Memecahkan Masalah Saluran Inferensi
<a name="inference-pipeline-troubleshoot-errors"></a>

Pesan kesalahan saluran inferensi menunjukkan kontainer mana yang gagal. 

Jika terjadi kesalahan saat SageMaker AI memanggil titik akhir, layanan mengembalikan `ModelError` (kode kesalahan 424), yang menunjukkan wadah mana yang gagal. Jika payload permintaan (respons dari penampung sebelumnya) melebihi batas 5 MB, SageMaker AI memberikan pesan kesalahan terperinci, seperti: 

Menerima tanggapan dari MyContainerName 1 dengan kode status 200. Namun, payload permintaan dari MyContainerName 1 hingga MyContainerName 2 adalah 6000000 byte, yang telah melampaui batas maksimum 5 MB.

``

Jika sebuah wadah gagal dalam pemeriksaan kesehatan ping saat SageMaker AI membuat titik akhir, ia mengembalikan `ClientError` dan menunjukkan semua wadah yang gagal pemeriksaan ping di pemeriksaan kesehatan terakhir.

# Hapus Titik Akhir dan Sumber Daya
<a name="realtime-endpoints-delete-resources"></a>

Hapus titik akhir untuk menghentikan biaya yang dikenakan.

## Hapus Endpoint
<a name="realtime-endpoints-delete-endpoint"></a>

Hapus titik akhir Anda secara terprogram menggunakan AWS SDK untuk Python (Boto3), dengan AWS CLI, atau secara interaktif menggunakan konsol AI. SageMaker 

SageMaker AI membebaskan semua sumber daya yang digunakan saat titik akhir dibuat. Menghapus titik akhir tidak akan menghapus konfigurasi titik akhir atau model AI. SageMaker Lihat [Hapus Konfigurasi Titik Akhir](#realtime-endpoints-delete-endpoint-config) dan [Hapus Model](#realtime-endpoints-delete-model) untuk informasi tentang cara menghapus konfigurasi titik akhir dan model SageMaker AI Anda.

------
#### [ AWS SDK untuk Python (Boto3) ]

Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html)API untuk menghapus titik akhir Anda. Tentukan nama titik akhir Anda untuk `EndpointName` bidang tersebut.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Specify the name of your endpoint
endpoint_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Delete endpoint
sagemaker_client.delete_endpoint(EndpointName=endpoint_name)
```

------
#### [ AWS CLI ]

Gunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint.html)perintah untuk menghapus titik akhir Anda. Tentukan nama titik akhir Anda untuk `endpoint-name` bendera.

```
aws sagemaker delete-endpoint --endpoint-name <endpoint-name>
```

------
#### [ SageMaker AI Console ]

Hapus titik akhir Anda secara interaktif dengan konsol SageMaker AI.

1. Di konsol SageMaker AI di menu [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)navigasi, pilih **Inferensi**.

1. Pilih **Endpoints** dari menu drop-down. Daftar titik akhir yang dibuat di AWS akun Anda akan muncul berdasarkan nama, Nama Sumber Daya Amazon (ARN), waktu pembuatan, status, dan cap waktu kapan titik akhir terakhir diperbarui.

1. Pilih titik akhir yang ingin Anda hapus.

1. Pilih tombol dropdown **Actions** di pojok kanan atas.

1. Pilih **Hapus**.

------

## Hapus Konfigurasi Titik Akhir
<a name="realtime-endpoints-delete-endpoint-config"></a>

Hapus konfigurasi titik akhir Anda secara terprogram menggunakan AWS SDK untuk Python (Boto3), dengan AWS CLI, atau secara interaktif menggunakan konsol AI. SageMaker Menghapus konfigurasi titik akhir tidak menghapus titik akhir yang dibuat menggunakan konfigurasi ini. Lihat [Hapus Endpoint](#realtime-endpoints-delete-endpoint) untuk informasi tentang cara menghapus titik akhir Anda.

Jangan menghapus konfigurasi titik akhir yang digunakan oleh titik akhir yang aktif atau saat titik akhir sedang diperbarui atau dibuat. Anda mungkin kehilangan visibilitas ke jenis instans yang digunakan titik akhir jika Anda menghapus konfigurasi titik akhir dari titik akhir yang aktif atau sedang dibuat atau diperbarui.

------
#### [ AWS SDK untuk Python (Boto3) ]

Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpointConfig.html)API untuk menghapus titik akhir Anda. Tentukan nama konfigurasi titik akhir Anda untuk `EndpointConfigName` bidang tersebut.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Specify the name of your endpoint configuration
endpoint_config_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Delete endpoint configuration
sagemaker_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
```

Anda dapat menggunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)API secara opsional untuk menampilkan informasi tentang nama model yang Anda gunakan (varian produksi) seperti nama model Anda dan nama konfigurasi titik akhir yang terkait dengan model yang diterapkan tersebut. Berikan nama titik akhir Anda untuk `EndpointConfigName` bidang tersebut. 

```
# Specify the name of your endpoint
endpoint_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Store DescribeEndpointConfig response into a variable that we can index in the next step.
response = sagemaker_client.describe_endpoint_config(EndpointConfigName=endpoint_name)

# Delete endpoint
endpoint_config_name = response['ProductionVariants'][0]['EndpointConfigName']
                        
# Delete endpoint configuration
sagemaker_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
```

Untuk informasi selengkapnya tentang elemen respons lain yang ditampilkan oleh`DescribeEndpointConfig`, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)di [panduan Referensi SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Operations_Amazon_SageMaker_Service.html).

------
#### [ AWS CLI ]

Gunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint-config.html)perintah untuk menghapus konfigurasi titik akhir Anda. Tentukan nama konfigurasi titik akhir Anda untuk `endpoint-config-name` bendera.

```
aws sagemaker delete-endpoint-config \
                        --endpoint-config-name <endpoint-config-name>
```

Anda dapat menggunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html)perintah secara opsional untuk mengembalikan informasi tentang nama model yang Anda gunakan (varian produksi) seperti nama model Anda dan nama konfigurasi titik akhir yang terkait dengan model yang diterapkan tersebut. Berikan nama titik akhir Anda untuk `endpoint-config-name` bendera.

```
aws sagemaker describe-endpoint-config --endpoint-config-name <endpoint-config-name>
```

Ini akan mengembalikan respons JSON. Anda dapat menyalin dan menempel, menggunakan parser JSON, atau menggunakan alat yang dibuat untuk penguraian JSON untuk mendapatkan nama konfigurasi titik akhir yang terkait dengan titik akhir tersebut.

------
#### [ SageMaker AI Console ]

Hapus konfigurasi titik akhir Anda secara interaktif dengan konsol SageMaker AI.

1. Di konsol SageMaker AI di menu [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)navigasi, pilih **Inferensi**.

1. Pilih **konfigurasi Endpoint** dari menu dropdown. Daftar konfigurasi titik akhir yang dibuat di AWS akun Anda akan muncul berdasarkan nama, Nama Sumber Daya Amazon (ARN), dan waktu pembuatan.

1. Pilih konfigurasi titik akhir yang ingin Anda hapus.

1. Pilih tombol dropdown **Actions** di pojok kanan atas.

1. Pilih **Hapus**.

------

## Hapus Model
<a name="realtime-endpoints-delete-model"></a>

Hapus model SageMaker AI Anda secara terprogram menggunakan AWS SDK untuk Python (Boto3), dengan AWS CLI, atau secara interaktif menggunakan konsol AI. SageMaker Menghapus model SageMaker AI hanya menghapus entri model yang dibuat di SageMaker AI. Menghapus model tidak menghapus artefak model, kode inferensi, atau peran IAM yang Anda tentukan saat membuat model.

------
#### [ AWS SDK untuk Python (Boto3) ]

Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html)API untuk menghapus model SageMaker AI Anda. Tentukan nama model Anda untuk `ModelName` bidang tersebut.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Specify the name of your endpoint configuration
model_name='<model_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Delete model
sagemaker_client.delete_model(ModelName=model_name)
```

Anda dapat menggunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)API secara opsional untuk menampilkan informasi tentang nama model yang Anda gunakan (varian produksi) seperti nama model Anda dan nama konfigurasi titik akhir yang terkait dengan model yang diterapkan tersebut. Berikan nama titik akhir Anda untuk `EndpointConfigName` bidang tersebut. 

```
# Specify the name of your endpoint
endpoint_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Store DescribeEndpointConfig response into a variable that we can index in the next step.
response = sagemaker_client.describe_endpoint_config(EndpointConfigName=endpoint_name)

# Delete endpoint
model_name = response['ProductionVariants'][0]['ModelName']
sagemaker_client.delete_model(ModelName=model_name)
```

Untuk informasi selengkapnya tentang elemen respons lain yang ditampilkan oleh`DescribeEndpointConfig`, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)di [panduan Referensi SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Operations_Amazon_SageMaker_Service.html).

------
#### [ AWS CLI ]

Gunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-model.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-model.html)perintah untuk menghapus model SageMaker AI Anda. Tentukan nama model Anda untuk `model-name` bendera.

```
aws sagemaker delete-model \
                        --model-name <model-name>
```

Anda dapat menggunakan [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html)perintah secara opsional untuk mengembalikan informasi tentang nama model yang Anda gunakan (varian produksi) seperti nama model Anda dan nama konfigurasi titik akhir yang terkait dengan model yang diterapkan tersebut. Berikan nama titik akhir Anda untuk `endpoint-config-name` bendera.

```
aws sagemaker describe-endpoint-config --endpoint-config-name <endpoint-config-name>
```

Ini akan mengembalikan respons JSON. Anda dapat menyalin dan menempel, menggunakan parser JSON, atau menggunakan alat yang dibuat untuk penguraian JSON untuk mendapatkan nama model yang terkait dengan titik akhir tersebut.

------
#### [ SageMaker AI Console ]

Hapus model SageMaker AI Anda secara interaktif dengan konsol SageMaker AI.

1. Di konsol SageMaker AI di menu [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)navigasi, pilih **Inferensi**.

1. Pilih **Model** dari menu tarik-turun. Daftar model yang dibuat di AWS akun Anda akan muncul berdasarkan nama, Nama Sumber Daya Amazon (ARN), dan waktu pembuatan.

1. Pilih model yang ingin Anda hapus.

1. Pilih tombol dropdown **Actions** di pojok kanan atas.

1. Pilih **Hapus**.

------

# Penskalaan otomatis model Amazon SageMaker AI
<a name="endpoint-auto-scaling"></a>

Amazon SageMaker AI mendukung penskalaan otomatis (penskalaan otomatis) untuk model yang Anda hosting. *Penskalaan otomatis* secara dinamis menyesuaikan jumlah instance yang disediakan untuk model sebagai respons terhadap perubahan beban kerja Anda. Saat beban kerja meningkat, penskalaan otomatis menghadirkan lebih banyak instance online. Ketika beban kerja berkurang, penskalaan otomatis akan menghapus instans yang tidak perlu sehingga Anda tidak membayar instans yang disediakan yang tidak Anda gunakan.

**Topics**
+ [Ikhtisar kebijakan penskalaan otomatis](endpoint-auto-scaling-policy.md)
+ [Prasyarat penskalaan otomatis](endpoint-auto-scaling-prerequisites.md)
+ [Konfigurasikan penskalaan otomatis model dengan konsol](endpoint-auto-scaling-add-console.md)
+ [Daftarkan model](endpoint-auto-scaling-add-policy.md)
+ [Menentukan kebijakan penskalaan](endpoint-auto-scaling-add-code-define.md)
+ [Menerapkan kebijakan penskalaan](endpoint-auto-scaling-add-code-apply.md)
+ [Petunjuk untuk mengedit kebijakan penskalaan](endpoint-auto-scaling-edit.md)
+ [Matikan sementara kebijakan penskalaan](endpoint-auto-scaling-suspend-scaling-activities.md)
+ [Menghapus kebijakan penskalaan](endpoint-auto-scaling-delete.md)
+ [Memeriksa status aktivitas penskalaan dengan menjelaskan aktivitas penskalaan](endpoint-scaling-query-history.md)
+ [Menskalakan titik akhir ke nol instance](endpoint-auto-scaling-zero-instances.md)
+ [Uji beban konfigurasi penskalaan otomatis Anda](endpoint-scaling-loadtest.md)
+ [Gunakan CloudFormation untuk membuat kebijakan penskalaan](endpoint-scaling-cloudformation.md)
+ [Perbarui titik akhir yang menggunakan penskalaan otomatis](endpoint-scaling-update.md)
+ [Hapus titik akhir yang dikonfigurasi untuk penskalaan otomatis](endpoint-delete-with-scaling.md)

# Ikhtisar kebijakan penskalaan otomatis
<a name="endpoint-auto-scaling-policy"></a>

Untuk menggunakan penskalaan otomatis, Anda menentukan kebijakan penskalaan yang menambahkan dan menghapus jumlah instance untuk varian produksi Anda sebagai respons terhadap beban kerja aktual.

Untuk menskalakan secara otomatis saat terjadi perubahan beban kerja, Anda memiliki dua opsi: kebijakan pelacakan target dan penskalaan langkah. 

Dalam kebanyakan kasus, sebaiknya gunakan kebijakan penskalaan pelacakan target. Dengan pelacakan target, Anda memilih CloudWatch metrik Amazon dan nilai target. Penskalaan otomatis membuat dan mengelola CloudWatch alarm untuk kebijakan penskalaan dan menghitung penyesuaian penskalaan berdasarkan metrik dan nilai target. Kebijakan menambahkan dan menghapus jumlah instance yang diperlukan untuk menjaga metrik pada, atau mendekati, nilai target yang ditentukan. Misalnya, kebijakan penskalaan yang menggunakan `InvocationsPerInstance` metrik yang telah ditentukan dengan nilai target 70 dapat dipertahankan`InvocationsPerInstance`, atau mendekati 70. Untuk informasi selengkapnya, lihat [Kebijakan penskalaan pelacakan target](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) di Panduan Pengguna *Application Auto Scaling.*

Anda dapat menggunakan penskalaan langkah saat memerlukan konfigurasi lanjutan, seperti menentukan berapa banyak instance yang akan diterapkan dalam kondisi apa. Misalnya, Anda harus menggunakan penskalaan langkah jika Anda ingin mengaktifkan titik akhir untuk menskalakan dari nol instance aktif. Untuk gambaran umum tentang kebijakan penskalaan langkah dan cara kerjanya, lihat Kebijakan [penskalaan langkah di Panduan Pengguna *Application Auto Scaling*](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html).

Untuk membuat kebijakan penskalaan pelacakan target, Anda menentukan hal berikut:
+ **Metrik** — CloudWatch Metrik untuk dilacak, seperti jumlah rata-rata pemanggilan per instance. 
+ **Nilai target — Nilai** target untuk metrik, seperti 70 pemanggilan per instance per menit.

Anda dapat membuat kebijakan penskalaan pelacakan target dengan metrik yang telah ditentukan sebelumnya atau metrik khusus. Metrik yang telah ditentukan sebelumnya didefinisikan dalam enumerasi sehingga Anda dapat menentukannya berdasarkan nama dalam kode atau menggunakannya di konsol AI. SageMaker Atau, Anda dapat menggunakan Application Auto Scaling API AWS CLI atau Application Auto Scaling untuk menerapkan kebijakan penskalaan pelacakan target berdasarkan metrik yang telah ditentukan atau kustom.

Perhatikan bahwa aktivitas penskalaan dilakukan dengan periode cooldown di antara mereka untuk mencegah fluktuasi kapasitas yang cepat. Anda dapat secara opsional mengonfigurasi periode cooldown untuk kebijakan penskalaan Anda. 

Untuk informasi selengkapnya tentang konsep kunci penskalaan otomatis, lihat bagian berikut.

## Penskalaan berbasis jadwal
<a name="scheduled-scaling"></a>

Anda juga dapat membuat tindakan terjadwal untuk melakukan aktivitas penskalaan pada waktu tertentu. Anda dapat membuat tindakan terjadwal yang menskalakan satu kali saja atau menskalakan berdasarkan jadwal berulang. Setelah tindakan terjadwal berjalan, kebijakan penskalaan Anda dapat terus membuat keputusan tentang apakah akan menskalakan secara dinamis saat terjadi perubahan beban kerja. Penskalaan terjadwal hanya dapat dikelola dari Application Auto Scaling AWS CLI API atau Application Auto Scaling. Untuk informasi lebih lanjut, lihat [Penskalaan terjadwal](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) dalam *Panduan Pengguna Application Auto Scaling*.

## Batas penskalaan minimum dan maksimum
<a name="endpoint-auto-scaling-target-capacity"></a>

Saat mengonfigurasi penskalaan otomatis, Anda harus menentukan batas penskalaan sebelum membuat kebijakan penskalaan. Anda menetapkan batas secara terpisah untuk nilai minimum dan maksimum.

Nilai minimum harus minimal 1, dan sama dengan atau kurang dari nilai yang ditentukan untuk nilai maksimum.

Nilai maksimum harus sama dengan atau lebih besar dari nilai yang ditentukan untuk nilai minimum. SageMaker Penskalaan otomatis AI tidak memberlakukan batasan untuk nilai ini.

Untuk menentukan batas penskalaan yang Anda perlukan untuk lalu lintas biasa, uji konfigurasi penskalaan otomatis Anda dengan laju lalu lintas yang diharapkan ke model Anda.

Jika lalu lintas varian menjadi nol, SageMaker AI secara otomatis menskalakan ke jumlah minimum instance yang ditentukan. Dalam hal ini, SageMaker AI memancarkan metrik dengan nilai nol.

Ada tiga opsi untuk menentukan kapasitas minimum dan maksimum:

1. Gunakan konsol untuk memperbarui **jumlah instans Minimum** dan pengaturan **hitungan instans maksimum**.

1. Gunakan AWS CLI dan sertakan `--max-capacity` opsi `--min-capacity` dan saat menjalankan [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)perintah.

1. Panggil [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)API dan tentukan `MaxCapacity` parameter `MinCapacity` dan.

**Tip**  
Anda dapat menskalakan secara manual dengan meningkatkan nilai minimum, atau menskalakan secara manual dengan mengurangi nilai maksimum.

## Periode pendinginan
<a name="endpoint-auto-scaling-target-cooldown"></a>

*Periode cooldown* digunakan untuk melindungi dari penskalaan berlebih saat model Anda melakukan penskalaan (mengurangi kapasitas) atau penskalaan (meningkatkan kapasitas). Ini dilakukan dengan memperlambat aktivitas penskalaan berikutnya sampai periode berakhir. Secara khusus, ini memblokir penghapusan instance untuk permintaan scale-in, dan membatasi pembuatan instance untuk permintaan scale-out. Untuk informasi selengkapnya, lihat [Menentukan periode cooldown](https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown) di Panduan Pengguna *Application Auto Scaling.* 

Anda mengonfigurasi periode cooldown dalam kebijakan penskalaan Anda. 

Jika Anda tidak menentukan periode cooldown scale-in atau scale-out, kebijakan penskalaan Anda menggunakan default, yaitu masing-masing 300 detik.

Jika instance ditambahkan atau dihapus terlalu cepat saat Anda menguji konfigurasi penskalaan, pertimbangkan untuk meningkatkan nilai ini. Anda mungkin melihat perilaku ini jika lalu lintas ke model Anda memiliki banyak lonjakan, atau jika Anda memiliki beberapa kebijakan penskalaan yang ditentukan untuk varian.

Jika instance tidak ditambahkan cukup cepat untuk mengatasi peningkatan lalu lintas, pertimbangkan untuk mengurangi nilai ini.

## Sumber daya terkait
<a name="auto-scaling-related-resources"></a>

Untuk informasi selengkapnya tentang mengonfigurasi penskalaan otomatis, lihat sumber daya berikut:
+ Bagian [application-autoscaling](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling) dari *Referensi Perintah AWS CLI *
+ [Referensi API Penskalaan Otomatis Aplikasi](https://docs.aws.amazon.com/autoscaling/application/APIReference/)
+ [Panduan Pengguna Penskalaan Otomatis Aplikasi](https://docs.aws.amazon.com/autoscaling/application/userguide/)

**catatan**  
SageMaker AI baru-baru ini memperkenalkan kemampuan inferensi baru yang dibangun di atas titik akhir inferensi waktu nyata. Anda membuat titik akhir SageMaker AI dengan konfigurasi titik akhir yang menentukan jenis instans dan jumlah instans awal untuk titik akhir. Kemudian, buat komponen inferensi, yang merupakan objek hosting SageMaker AI yang dapat Anda gunakan untuk menerapkan model ke titik akhir. Untuk informasi tentang penskalaan komponen inferensi, lihat [SageMaker AI menambahkan kemampuan inferensi baru untuk membantu mengurangi biaya penerapan model pondasi dan latensi](https://aws.amazon.com/blogs/aws/amazon-sagemaker-adds-new-inference-capabilities-to-help-reduce-foundation-model-deployment-costs-and-latency/) dan [Mengurangi biaya penerapan model rata-rata sebesar 50% menggunakan fitur terbaru AI di](https://aws.amazon.com/blogs/machine-learning/reduce-model-deployment-costs-by-50-on-average-using-sagemakers-latest-features/) Blog. SageMaker AWS 

# Prasyarat penskalaan otomatis
<a name="endpoint-auto-scaling-prerequisites"></a>

Sebelum Anda dapat menggunakan penskalaan otomatis, Anda harus sudah membuat titik akhir model Amazon SageMaker AI. Anda dapat memiliki beberapa versi model untuk titik akhir yang sama. Setiap model disebut sebagai [varian produksi (model)](model-ab-testing.md). Untuk informasi selengkapnya tentang penerapan titik akhir model, lihat. [Menyebarkan Model ke Layanan Hosting SageMaker AI](ex1-model-deployment.md#ex1-deploy-model)

Untuk mengaktifkan penskalaan otomatis untuk model, Anda dapat menggunakan konsol SageMaker AI, AWS Command Line Interface (AWS CLI), atau AWS SDK melalui Application Auto Scaling API. 
+ Jika ini adalah pertama kalinya Anda mengonfigurasi penskalaan untuk model, kami sarankan Anda. [Konfigurasikan penskalaan otomatis model dengan konsol](endpoint-auto-scaling-add-console.md) 
+ Saat menggunakan AWS CLI atau Application Auto Scaling API, alurnya adalah mendaftarkan model sebagai target yang dapat diskalakan, menentukan kebijakan penskalaan, dan kemudian menerapkannya. **Di konsol SageMaker AI, di bawah **Inferensi** di panel navigasi, pilih Titik Akhir.** Temukan nama titik akhir model Anda dan kemudian pilih untuk menemukan nama varian. Anda harus menentukan nama titik akhir dan nama varian untuk mengaktifkan penskalaan otomatis untuk model.

Penskalaan otomatis dimungkinkan oleh kombinasi Amazon SageMaker AI, Amazon CloudWatch, dan Application Auto APIs Scaling. Untuk informasi tentang izin minimum yang diperlukan, lihat contoh [kebijakan berbasis identitas Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/security_iam_id-based-policy-examples.html) di Panduan Pengguna Application Auto *Scaling*.

Kebijakan `SagemakerFullAccessPolicy` IAM memiliki semua izin IAM yang diperlukan untuk melakukan penskalaan otomatis. Untuk informasi selengkapnya tentang izin SageMaker AI IAM, lihat. [Cara menggunakan peran eksekusi SageMaker AI](sagemaker-roles.md)

Jika Anda mengelola kebijakan izin Anda sendiri, Anda harus menyertakan izin berikut:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:DescribeEndpoint",
        "sagemaker:DescribeEndpointConfig",
        "sagemaker:UpdateEndpointWeightsAndCapacities"
      ],
      "Resource": "*"
    },
    {    
        "Effect": "Allow",
        "Action": [
            "application-autoscaling:*"
        ],
        "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint",
      "Condition": {
        "StringLike": { "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com"	}
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:DeleteAlarms"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Peran tertaut layanan
<a name="endpoint-auto-scaling-slr"></a>

Penskalaan otomatis menggunakan peran `AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint` terkait layanan. Peran terkait layanan ini memberikan izin Application Auto Scaling untuk menjelaskan alarm kebijakan Anda, memantau tingkat kapasitas saat ini, dan untuk menskalakan sumber daya target. Peran ini dibuat untuk Anda secara otomatis. Agar pembuatan peran otomatis berhasil, Anda harus memiliki izin untuk `iam:CreateServiceLinkedRole` tindakan tersebut. Untuk informasi selengkapnya, lihat [Peran terkait layanan di Panduan](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) Pengguna *Application Auto Scaling*.

# Konfigurasikan penskalaan otomatis model dengan konsol
<a name="endpoint-auto-scaling-add-console"></a>

**Untuk mengonfigurasi penskalaan otomatis untuk model (konsol)**

1. Buka konsol Amazon SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. **Pada panel navigasi, pilih **Inferensi**, lalu pilih Endpoints.** 

1. Pilih endpoint Anda, dan kemudian untuk **pengaturan runtime Endpoint**, pilih variannya.

1. Pilih **Konfigurasi penskalaan otomatis**.

1. Pada halaman **Configure variant automatic scaling**, untuk **Variant automatic scaling**, lakukan hal berikut:

   1. Untuk **jumlah instans Minimum**, ketikkan jumlah instans minimum yang ingin dipertahankan oleh kebijakan penskalaan. Setidaknya 1 instance diperlukan.

   1. Untuk **jumlah instans Maksimum**, ketikkan jumlah instans maksimum yang ingin dipertahankan oleh kebijakan penskalaan.

1. Untuk **kebijakan penskalaan bawaan**, lakukan hal berikut:

   1. Untuk **metrik Target**, `SageMakerVariantInvocationsPerInstance` secara otomatis dipilih untuk metrik dan tidak dapat diubah.

   1. Untuk **nilai Target**, ketikkan jumlah rata-rata pemanggilan per instance per menit untuk model. Untuk menentukan nilai ini, ikuti pedoman di[Pengujian beban](endpoint-scaling-loadtest.md).

   1. (Opsional) Untuk **pendinginan Scale-in (detik)** dan **pendinginan Scale-out (detik)**, masukkan jumlah waktu, dalam detik, untuk setiap periode pendinginan.

   1. (Opsional) Pilih **Nonaktifkan skala** jika Anda tidak ingin penskalaan otomatis menghentikan instance saat lalu lintas menurun.

1. Pilih **Simpan**.

Prosedur ini mendaftarkan model sebagai target yang dapat diskalakan dengan Application Auto Scaling. Saat Anda mendaftarkan model, Application Auto Scaling melakukan pemeriksaan validasi untuk memastikan hal-hal berikut:
+ Modelnya ada
+ Izin sudah cukup
+ Anda tidak mendaftarkan varian dengan instance yang merupakan instance kinerja yang dapat dibobol seperti T2
**catatan**  
SageMaker AI tidak mendukung penskalaan otomatis untuk instans burstable seperti T2, karena mereka sudah memungkinkan peningkatan kapasitas di bawah peningkatan beban kerja. Untuk informasi tentang instans performa burstable, lihat jenis instans [Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

# Daftarkan model
<a name="endpoint-auto-scaling-add-policy"></a>

Sebelum menambahkan kebijakan penskalaan ke model, pertama-tama Anda harus mendaftarkan model Anda untuk penskalaan otomatis dan menentukan batas penskalaan untuk model tersebut.

Prosedur berikut mencakup cara mendaftarkan model (varian produksi) untuk penskalaan otomatis menggunakan AWS Command Line Interface (AWS CLI) atau Application Auto Scaling API.

**Topics**
+ [Daftarkan model (AWS CLI)](#endpoint-auto-scaling-add-cli)
+ [Daftarkan model (Application Auto Scaling API)](#endpoint-auto-scaling-add-api)

## Daftarkan model (AWS CLI)
<a name="endpoint-auto-scaling-add-cli"></a>

Untuk mendaftarkan varian produksi Anda, gunakan [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)perintah dengan parameter berikut:
+ `--service-namespace`—Tetapkan nilai ini ke`sagemaker`.
+ `--resource-id`—Pengidentifikasi sumber daya untuk model (khususnya, varian produksi). Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian produksi. Misalnya, `endpoint/my-endpoint/variant/my-variant`.
+ `--scalable-dimension`—Tetapkan nilai ini ke`sagemaker:variant:DesiredInstanceCount`.
+ `--min-capacity`Jumlah minimum instans. Nilai ini harus diatur ke minimal 1 dan harus sama dengan atau kurang dari nilai yang ditentukan untuk`max-capacity`.
+ `--max-capacity`—Jumlah maksimum instance. Nilai ini harus diatur ke minimal 1 dan harus sama dengan atau lebih besar dari nilai yang ditentukan untuk`min-capacity`.

**Example**  
Contoh berikut menunjukkan cara mendaftarkan varian bernama`my-variant`, berjalan pada `my-endpoint` titik akhir, yang dapat diskalakan secara dinamis untuk memiliki satu hingga delapan instance.  

```
aws application-autoscaling register-scalable-target \
  --service-namespace sagemaker \
  --resource-id endpoint/my-endpoint/variant/my-variant \
  --scalable-dimension sagemaker:variant:DesiredInstanceCount \
  --min-capacity 1 \
  --max-capacity 8
```

## Daftarkan model (Application Auto Scaling API)
<a name="endpoint-auto-scaling-add-api"></a>

Untuk mendaftarkan model Anda dengan Application Auto Scaling, gunakan aksi [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)Application Auto Scaling API dengan parameter berikut:
+ `ServiceNamespace`—Tetapkan nilai ini ke`sagemaker`.
+ `ResourceID`—Pengidentifikasi sumber daya untuk varian produksi. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/my-endpoint/variant/my-variant`.
+ `ScalableDimension`—Tetapkan nilai ini ke`sagemaker:variant:DesiredInstanceCount`.
+ `MinCapacity`Jumlah minimum instans. Nilai ini harus diatur ke minimal 1 dan harus sama dengan atau kurang dari nilai yang ditentukan untuk`MaxCapacity`.
+ `MaxCapacity`—Jumlah maksimum instance. Nilai ini harus diatur ke minimal 1 dan harus sama dengan atau lebih besar dari nilai yang ditentukan untuk`MinCapacity`.

**Example**  
Contoh berikut menunjukkan cara mendaftarkan varian bernama`my-variant`, berjalan pada `my-endpoint` titik akhir, yang dapat diskalakan secara dinamis untuk menggunakan satu hingga delapan instance.  

```
POST / HTTP/1.1
Host: application-autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20230506T182145Z
User-Agent: aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "MinCapacity": 1,
    "MaxCapacity": 8
}
```

# Menentukan kebijakan penskalaan
<a name="endpoint-auto-scaling-add-code-define"></a>

Sebelum menambahkan kebijakan penskalaan ke model, simpan konfigurasi kebijakan Anda sebagai blok JSON dalam file teks. Anda menggunakan file teks tersebut saat menjalankan AWS Command Line Interface (AWS CLI) atau Application Auto Scaling API. Anda dapat mengoptimalkan penskalaan dengan memilih CloudWatch metrik yang sesuai. Namun, sebelum menggunakan metrik khusus dalam produksi, Anda harus menguji penskalaan otomatis dengan metrik khusus Anda.

**Topics**
+ [Tentukan metrik yang telah ditentukan (CloudWatch metrik: InvocationsPerInstance)](#endpoint-auto-scaling-add-code-predefined)
+ [Tentukan metrik standar resolusi tinggi (CloudWatch metrik: dan) ConcurrentRequestsPerModel ConcurrentRequestsPerCopy](#endpoint-auto-scaling-add-code-high-res)
+ [Tentukan metrik khusus (CloudWatch metrik: CPUUtilization)](#endpoint-auto-scaling-add-code-custom)
+ [Tentukan metrik khusus (CloudWatch metrik: ExplanationsPerInstance)](#endpoint-auto-scaling-online-explainability)
+ [Tentukan periode cooldown](#endpoint-auto-scaling-add-code-cooldown)

Bagian ini menunjukkan contoh konfigurasi kebijakan untuk kebijakan penskalaan pelacakan target.

## Tentukan metrik yang telah ditentukan (CloudWatch metrik: InvocationsPerInstance)
<a name="endpoint-auto-scaling-add-code-predefined"></a>

**Example**  
Berikut ini adalah contoh konfigurasi kebijakan pelacakan target untuk varian yang menjaga pemanggilan rata-rata per instance pada 70. Simpan konfigurasi ini dalam file bernama `config.json`.  

```
{
    "TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    }
}
```
Untuk informasi lebih lanjut, lihat [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) dalam *Referensi API Application Auto Scaling*.

## Tentukan metrik standar resolusi tinggi (CloudWatch metrik: dan) ConcurrentRequestsPerModel ConcurrentRequestsPerCopy
<a name="endpoint-auto-scaling-add-code-high-res"></a>

Dengan CloudWatch metrik resolusi tinggi berikut, Anda dapat menyetel kebijakan penskalaan untuk volume permintaan bersamaan yang diterima model Anda:

**ConcurrentRequestsPerModel**  
Jumlah permintaan bersamaan yang diterima oleh wadah model.

**ConcurrentRequestsPerCopy**  
Jumlah permintaan bersamaan yang diterima oleh komponen inferensi.

Metrik ini melacak jumlah permintaan simultan yang ditangani oleh container model Anda, termasuk permintaan yang diantrian di dalam container. Untuk model yang mengirimkan respons inferensi mereka sebagai aliran token, metrik ini melacak setiap permintaan hingga model mengirimkan token terakhir untuk permintaan tersebut.

Sebagai metrik resolusi tinggi, mereka memancarkan data lebih sering daripada metrik standar. CloudWatch Metrik standar, seperti `InvocationsPerInstance` metrik, memancarkan data setiap menit sekali. Namun, metrik resolusi tinggi ini memancarkan data setiap 10 detik. Oleh karena itu, ketika lalu lintas bersamaan ke model Anda meningkat, kebijakan Anda bereaksi dengan menskalakan jauh lebih cepat daripada metrik standar. Namun, karena lalu lintas ke model Anda berkurang, kebijakan Anda menskalakan dengan kecepatan yang sama seperti untuk metrik standar.

Berikut ini adalah contoh konfigurasi kebijakan pelacakan target yang menambahkan instance jika jumlah permintaan bersamaan per model melebihi 5. Simpan konfigurasi ini dalam file bernama `config.json`.

```
{
    "TargetValue": 5.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution"
    }
}
```

Jika Anda menggunakan komponen inferensi untuk menerapkan beberapa model ke titik akhir yang sama, Anda dapat membuat kebijakan yang setara. Dalam hal ini, atur `PredefinedMetricType` ke`SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution`.

Untuk informasi lebih lanjut, lihat [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) dalam *Referensi API Application Auto Scaling*.

## Tentukan metrik khusus (CloudWatch metrik: CPUUtilization)
<a name="endpoint-auto-scaling-add-code-custom"></a>

Untuk membuat kebijakan penskalaan pelacakan target dengan metrik kustom, tentukan nama metrik, namespace, unit, statistik, dan dimensi nol atau lebih. Dimensi terdiri dari nama dimensi dan nilai dimensi. Anda dapat menggunakan metrik varian produksi apa pun yang berubah sebanding dengan kapasitas. 

**Example**  
Contoh konfigurasi berikut menunjukkan kebijakan penskalaan pelacakan target dengan metrik kustom. Kebijakan ini menskalakan varian berdasarkan pemanfaatan CPU rata-rata 50 persen di semua kasus. Simpan konfigurasi ini dalam file bernama `config.json`.  

```
{
    "TargetValue": 50.0,
    "CustomizedMetricSpecification":
    {
        "MetricName": "CPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "VariantName","Value": "my-variant"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```
Untuk informasi lebih lanjut, lihat [CustomizedMetricSpecification](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html) dalam *Referensi API Application Auto Scaling*. 

## Tentukan metrik khusus (CloudWatch metrik: ExplanationsPerInstance)
<a name="endpoint-auto-scaling-online-explainability"></a>

Ketika titik akhir mengaktifkan penjelasan online, ia memancarkan `ExplanationsPerInstance` metrik yang menghasilkan jumlah rata-rata catatan yang dijelaskan per menit, per contoh, untuk varian. Pemanfaatan sumber daya untuk menjelaskan catatan bisa lebih berbeda dari pada catatan prediksi. Kami sangat menyarankan menggunakan metrik ini untuk penskalaan pelacakan target titik akhir dengan kemampuan penjelasan online diaktifkan.

Anda dapat membuat beberapa kebijakan pelacakan target untuk target yang dapat diskalakan. Pertimbangkan untuk menambahkan `InvocationsPerInstance` kebijakan dari [Tentukan metrik yang telah ditentukan (CloudWatch metrik: InvocationsPerInstance)](#endpoint-auto-scaling-add-code-predefined) bagian (selain `ExplanationsPerInstance` kebijakan). Jika sebagian besar pemanggilan tidak menampilkan penjelasan karena nilai ambang batas yang ditetapkan dalam `EnableExplanations` parameter, maka titik akhir dapat memilih kebijakan. `InvocationsPerInstance` Jika ada banyak penjelasan, titik akhir dapat menggunakan kebijakan. `ExplanationsPerInstance` 

**Example**  
Contoh konfigurasi berikut menunjukkan kebijakan penskalaan pelacakan target dengan metrik kustom. Skala kebijakan menyesuaikan jumlah instance varian sehingga setiap instance memiliki `ExplanationsPerInstance` metrik 20. Simpan konfigurasi ini dalam file bernama `config.json`.  

```
{
    "TargetValue": 20.0,
    "CustomizedMetricSpecification":
    {
        "MetricName": "ExplanationsPerInstance",
        "Namespace": "AWS/SageMaker",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "VariantName","Value": "my-variant"}
        ],
        "Statistic": "Sum"
    }
}
```

Untuk informasi lebih lanjut, lihat [CustomizedMetricSpecification](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html) dalam *Referensi API Application Auto Scaling*. 

## Tentukan periode cooldown
<a name="endpoint-auto-scaling-add-code-cooldown"></a>

Anda dapat secara opsional menentukan periode cooldown dalam kebijakan penskalaan pelacakan target Anda dengan menentukan dan parameter. `ScaleOutCooldown` `ScaleInCooldown` 

**Example**  
Berikut ini adalah contoh konfigurasi kebijakan pelacakan target untuk varian yang menjaga pemanggilan rata-rata per instance pada 70. Konfigurasi kebijakan menyediakan periode cooldown scale-in 10 menit (600 detik) dan periode cooldown scale-out 5 menit (300 detik). Simpan konfigurasi ini dalam file bernama `config.json`.   

```
{
    "TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```
Untuk informasi lebih lanjut, lihat [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) dalam *Referensi API Application Auto Scaling*. 

# Menerapkan kebijakan penskalaan
<a name="endpoint-auto-scaling-add-code-apply"></a>

Setelah Anda mendaftarkan model dan menentukan kebijakan penskalaan, terapkan kebijakan penskalaan ke model terdaftar. Bagian ini menunjukkan cara menerapkan kebijakan penskalaan menggunakan AWS Command Line Interface (AWS CLI) atau Application Auto Scaling API. 

**Topics**
+ [Menerapkan kebijakan penskalaan pelacakan target ()AWS CLI](#endpoint-auto-scaling-add-code-apply-cli)
+ [Menerapkan kebijakan penskalaan (Application Auto Scaling API)](#endpoint-auto-scaling-add-code-apply-api)

## Menerapkan kebijakan penskalaan pelacakan target ()AWS CLI
<a name="endpoint-auto-scaling-add-code-apply-cli"></a>

Untuk menerapkan kebijakan penskalaan pada model Anda, gunakan [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) AWS CLI perintah dengan parameter berikut:
+ `--policy-name`—Nama kebijakan penskalaan.
+ `--policy-type`—Tetapkan nilai ini ke`TargetTrackingScaling`.
+ `--resource-id`—Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Misalnya, `endpoint/my-endpoint/variant/my-variant`.
+ `--service-namespace`—Tetapkan nilai ini ke`sagemaker`.
+ `--scalable-dimension`—Tetapkan nilai ini ke`sagemaker:variant:DesiredInstanceCount`.
+ `--target-tracking-scaling-policy-configuration`—Konfigurasi kebijakan penskalaan pelacakan target yang akan digunakan untuk model.

**Example**  
Contoh berikut menerapkan kebijakan penskalaan pelacakan target yang diberi nama `my-scaling-policy` ke varian bernama`my-variant`, berjalan di titik `my-endpoint` akhir. Untuk `--target-tracking-scaling-policy-configuration` opsi, tentukan `config.json` file yang Anda buat sebelumnya.   

```
aws application-autoscaling put-scaling-policy \
  --policy-name my-scaling-policy \
  --policy-type TargetTrackingScaling \
  --resource-id endpoint/my-endpoint/variant/my-variant \
  --service-namespace sagemaker \
  --scalable-dimension sagemaker:variant:DesiredInstanceCount \
  --target-tracking-scaling-policy-configuration file://config.json
```

## Menerapkan kebijakan penskalaan (Application Auto Scaling API)
<a name="endpoint-auto-scaling-add-code-apply-api"></a>

Untuk menerapkan kebijakan penskalaan ke varian dengan Application Auto Scaling API, gunakan [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)aksi Application Auto Scaling API dengan parameter berikut:
+ `PolicyName`—Nama kebijakan penskalaan.
+ `ServiceNamespace`—Tetapkan nilai ini ke`sagemaker`.
+ `ResourceID`—Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Misalnya, `endpoint/my-endpoint/variant/my-variant`.
+ `ScalableDimension`—Tetapkan nilai ini ke`sagemaker:variant:DesiredInstanceCount`.
+ `PolicyType`—Tetapkan nilai ini ke`TargetTrackingScaling`.
+ `TargetTrackingScalingPolicyConfiguration`—Konfigurasi kebijakan penskalaan pelacakan target yang akan digunakan untuk varian.

**Example**  
Contoh berikut menerapkan kebijakan penskalaan pelacakan target yang diberi nama `my-scaling-policy` ke varian bernama`my-variant`, berjalan di titik `my-endpoint` akhir. Konfigurasi kebijakan menjaga pemanggilan rata-rata per instance pada 70.  

```
POST / HTTP/1.1
Host: application-autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.
X-Amz-Date: 20230506T182145Z
User-Agent: aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "my-scaling-policy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 70.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
        }
    }
}
```

# Petunjuk untuk mengedit kebijakan penskalaan
<a name="endpoint-auto-scaling-edit"></a>

Setelah membuat kebijakan penskalaan, Anda dapat mengedit pengaturannya kecuali namanya.

 Untuk mengedit kebijakan penskalaan pelacakan target dengan Konsol Manajemen AWS, gunakan prosedur yang sama dengan yang Anda gunakan. [Konfigurasikan penskalaan otomatis model dengan konsol](endpoint-auto-scaling-add-console.md)

Anda dapat menggunakan Application Auto Scaling API AWS CLI atau Application Auto Scaling untuk mengedit kebijakan penskalaan dengan cara yang sama seperti Anda membuat kebijakan penskalaan baru. Untuk informasi selengkapnya, lihat [Menerapkan kebijakan penskalaan](endpoint-auto-scaling-add-code-apply.md).

# Matikan sementara kebijakan penskalaan
<a name="endpoint-auto-scaling-suspend-scaling-activities"></a>

Setelah mengonfigurasi penskalaan otomatis, Anda memiliki opsi berikut jika perlu menyelidiki masalah tanpa gangguan dari kebijakan penskalaan (penskalaan dinamis):
+ Menangguhkan sementara dan kemudian melanjutkan aktivitas penskalaan dengan memanggil perintah [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)CLI atau tindakan [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)API, menentukan nilai Boolean untuk keduanya dan. `DynamicScalingInSuspended` `DynamicScalingOutSuspended`   
**Example**  

  Contoh berikut menunjukkan cara menangguhkan kebijakan penskalaan untuk varian bernama`my-variant`, berjalan di titik akhir`my-endpoint`.

  ```
  aws application-autoscaling register-scalable-target \
    --service-namespace sagemaker \
    --resource-id endpoint/my-endpoint/variant/my-variant \
    --scalable-dimension sagemaker:variant:DesiredInstanceCount \
    --suspended-state '{"DynamicScalingInSuspended":true,"DynamicScalingOutSuspended":true}'
  ```
+ Cegah kebijakan penskalaan pelacakan target tertentu dari penskalaan dalam varian Anda dengan menonaktifkan bagian penskalaan kebijakan. Metode ini mencegah kebijakan penskalaan menghapus instance, sambil tetap mengizinkannya membuatnya sesuai kebutuhan.

  Nonaktifkan sementara dan kemudian aktifkan aktivitas penskalaan dengan mengedit kebijakan menggunakan perintah [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)CLI atau tindakan [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)API, yang menentukan nilai Boolean untuk. `DisableScaleIn`  
**Example**  

  Berikut ini adalah contoh konfigurasi pelacakan target untuk kebijakan penskalaan yang akan menskalakan tetapi tidak menskalakan. 

  ```
  {
      "TargetValue": 70.0,
      "PredefinedMetricSpecification":
      {
          "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
      },
      "DisableScaleIn": true
  }
  ```

# Menghapus kebijakan penskalaan
<a name="endpoint-auto-scaling-delete"></a>

Jika Anda tidak lagi memerlukan kebijakan penskalaan, Anda dapat menghapusnya kapan saja.

**Topics**
+ [Hapus semua kebijakan penskalaan dan deregister model (konsol)](#endpoint-auto-scaling-delete-console)
+ [Menghapus kebijakan penskalaan (AWS CLI atau Application Auto Scaling API)](#endpoint-auto-scaling-delete-code)

## Hapus semua kebijakan penskalaan dan deregister model (konsol)
<a name="endpoint-auto-scaling-delete-console"></a>

**Untuk menghapus semua kebijakan penskalaan dan membatalkan pendaftaran varian sebagai target yang dapat diskalakan**

1. Buka konsol Amazon SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Pada panel navigasi, pilih **Endpoints**.

1. Pilih endpoint Anda, dan kemudian untuk **pengaturan runtime Endpoint**, pilih variannya.

1. Pilih **Konfigurasi penskalaan otomatis**.

1. Pilih **Deregister auto scaling**.

## Menghapus kebijakan penskalaan (AWS CLI atau Application Auto Scaling API)
<a name="endpoint-auto-scaling-delete-code"></a>

Anda dapat menggunakan Application Auto Scaling API AWS CLI atau Application Auto Scaling untuk menghapus kebijakan penskalaan dari varian.

### Menghapus kebijakan penskalaan ()AWS CLI
<a name="endpoint-auto-scaling-delete-code-cli"></a>

Untuk menghapus kebijakan penskalaan dari varian, gunakan [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html)perintah dengan parameter berikut:
+ `--policy-name`—Nama kebijakan penskalaan.
+ `--resource-id`—Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Misalnya, `endpoint/my-endpoint/variant/my-variant`.
+ `--service-namespace`—Tetapkan nilai ini ke`sagemaker`.
+ `--scalable-dimension`—Tetapkan nilai ini ke`sagemaker:variant:DesiredInstanceCount`.

**Example**  
Contoh berikut menghapus kebijakan penskalaan pelacakan target yang dinamai `my-scaling-policy` dari varian bernama`my-variant`, berjalan di titik akhir`my-endpoint`.  

```
aws application-autoscaling delete-scaling-policy \
  --policy-name my-scaling-policy \
  --resource-id endpoint/my-endpoint/variant/my-variant \
  --service-namespace sagemaker \
  --scalable-dimension sagemaker:variant:DesiredInstanceCount
```

### Menghapus kebijakan penskalaan (Application Auto Scaling API)
<a name="endpoint-auto-scaling-delete-code-api"></a>

Untuk menghapus kebijakan penskalaan dari varian Anda, gunakan tindakan [DeleteScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeleteScalingPolicy.html)Application Auto Scaling API dengan parameter berikut:
+ `PolicyName`—Nama kebijakan penskalaan.
+ `ServiceNamespace`—Tetapkan nilai ini ke`sagemaker`.
+ `ResourceID`—Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Misalnya, `endpoint/my-endpoint/variant/my-variant`.
+ `ScalableDimension`—Tetapkan nilai ini ke`sagemaker:variant:DesiredInstanceCount`.

**Example**  
Contoh berikut menghapus kebijakan penskalaan pelacakan target yang dinamai `my-scaling-policy` dari varian bernama`my-variant`, berjalan di titik akhir`my-endpoint`.  

```
POST / HTTP/1.1
Host: application-autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20230506T182145Z
User-Agent: aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "my-scaling-policy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount"
}
```

# Memeriksa status aktivitas penskalaan dengan menjelaskan aktivitas penskalaan
<a name="endpoint-scaling-query-history"></a>

Anda dapat memeriksa status aktivitas penskalaan untuk titik akhir yang diskalakan otomatis dengan menjelaskan aktivitas penskalaan. Application Auto Scaling memberikan informasi deskriptif tentang aktivitas penskalaan di namespace yang ditentukan dari enam minggu sebelumnya. Untuk informasi selengkapnya, lihat [Aktivitas penskalaan untuk Application Auto](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scaling-activities.html) Scaling di Panduan Pengguna *Application Auto Scaling*.

Untuk memeriksa status aktivitas penskalaan, gunakan [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html)perintah. Anda tidak dapat memeriksa status aktivitas penskalaan menggunakan konsol.

**Topics**
+ [Jelaskan aktivitas penskalaan ()AWS CLI](#endpoint-how-to)
+ [Identifikasi aktivitas penskalaan yang diblokir dari kuota instance ()AWS CLI](#endpoint-identify-blocked-autoscaling)

## Jelaskan aktivitas penskalaan ()AWS CLI
<a name="endpoint-how-to"></a>

Untuk menjelaskan aktivitas penskalaan untuk semua sumber daya SageMaker AI yang terdaftar dengan Application Auto Scaling, gunakan perintah, [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html)yang `sagemaker` menentukan opsi tersebut. `--service-namespace`

```
aws application-autoscaling describe-scaling-activities \
  --service-namespace sagemaker
```

Untuk menggambarkan aktivitas penskalaan untuk sumber daya tertentu, sertakan `--resource-id` opsi. 

```
aws application-autoscaling describe-scaling-activities \
  --service-namespace sagemaker \
  --resource-id endpoint/my-endpoint/variant/my-variant
```

Contoh berikut menunjukkan output yang dihasilkan ketika Anda menjalankan perintah ini.

```
{
    "ActivityId": "activity-id",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "Description": "string",
    "Cause": "string",
    "StartTime": timestamp,
    "EndTime": timestamp,
    "StatusCode": "string",
    "StatusMessage": "string"
}
```

## Identifikasi aktivitas penskalaan yang diblokir dari kuota instance ()AWS CLI
<a name="endpoint-identify-blocked-autoscaling"></a>

Saat Anda memperkecil skala (menambahkan lebih banyak instance), Anda mungkin mencapai kuota instans tingkat akun Anda. Anda dapat menggunakan [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html)perintah untuk memeriksa apakah Anda telah mencapai kuota instans Anda. Ketika Anda melebihi kuota Anda, penskalaan otomatis diblokir. 

Untuk memeriksa apakah Anda telah mencapai kuota instans Anda, gunakan [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html)perintah dan tentukan ID sumber daya untuk `--resource-id` opsi tersebut. 

```
aws application-autoscaling describe-scaling-activities \
    --service-namespace sagemaker \
    --resource-id endpoint/my-endpoint/variant/my-variant
```

Dalam sintaks pengembalian, periksa [StatusMessage](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_ScalingActivity.html#autoscaling-Type-ScalingActivity-StatusMessage)kunci [StatusCode](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_ScalingActivity.html#autoscaling-Type-ScalingActivity-StatusCode)dan dan nilai terkaitnya. `StatusCode`kembali`Failed`. Di dalamnya `StatusMessage` ada pesan yang menunjukkan bahwa kuota layanan tingkat akun telah tercapai. Berikut ini adalah contoh dari apa pesan itu mungkin terlihat seperti: 

```
{
    "ActivityId": "activity-id",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "Description": "string",
    "Cause": "minimum capacity was set to 110",
    "StartTime": timestamp,
    "EndTime": timestamp,
    "StatusCode": "Failed",
    "StatusMessage": "Failed to set desired instance count to 110. Reason: The 
    account-level service limit 'ml.xx.xxxxxx for endpoint usage' is 1000 
    Instances, with current utilization of 997 Instances and a request delta 
    of 20 Instances. Please contact AWS support to request an increase for this 
    limit. (Service: AmazonSageMaker; Status Code: 400; 
    Error Code: ResourceLimitExceeded; Request ID: request-id)."
}
```

# Menskalakan titik akhir ke nol instance
<a name="endpoint-auto-scaling-zero-instances"></a>

Saat menyiapkan penskalaan otomatis untuk titik akhir, Anda dapat mengizinkan proses penskalaan untuk mengurangi jumlah instans dalam layanan menjadi nol. Dengan demikian, Anda menghemat biaya selama periode ketika titik akhir Anda tidak melayani permintaan inferensi dan oleh karena itu tidak memerlukan instance aktif apa pun. 

Namun, setelah menskalakan ke nol instans, titik akhir Anda tidak dapat menanggapi permintaan inferensi yang masuk hingga menyediakan setidaknya satu instance. Untuk mengotomatiskan proses penyediaan, Anda membuat kebijakan penskalaan langkah dengan Application Auto Scaling. Kemudian, Anda menetapkan kebijakan ke CloudWatch alarm Amazon.

Setelah menyiapkan kebijakan penskalaan langkah dan alarm, titik akhir Anda akan secara otomatis menyediakan instance segera setelah menerima permintaan inferensi yang tidak dapat ditanggapi. Ketahuilah bahwa proses penyediaan memakan waktu beberapa menit. Selama waktu itu, setiap upaya untuk memanggil titik akhir akan menghasilkan kesalahan.

Prosedur berikut menjelaskan cara mengatur penskalaan otomatis untuk titik akhir sehingga skalanya masuk ke, dan keluar dari, nol instance. Prosedur menggunakan perintah dengan AWS CLI.

**Sebelum Anda mulai**

Sebelum titik akhir Anda dapat menskalakan ke, dan keluar dari, nol instans, titik akhir harus memenuhi persyaratan berikut:
+ Itu dalam pelayanan.
+ Ini menampung satu atau lebih komponen inferensi. Titik akhir dapat menskalakan ke dan dari nol instance hanya jika ia menampung komponen inferensi.

  Untuk informasi tentang komponen inferensi hosting di titik akhir SageMaker AI, lihat. [Terapkan model untuk inferensi waktu nyata](realtime-endpoints-deploy-models.md)
+ Dalam konfigurasi endpoint, untuk `ManagedInstanceScaling` objek varian produksi, Anda telah mengatur `MinInstanceCount` parameternya. `0`

  Untuk informasi referensi tentang parameter ini, lihat [ProductionVariantManagedInstanceScaling](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantManagedInstanceScaling.html).

**Untuk mengaktifkan titik akhir untuk menskalakan ke nol instance ()AWS CLI**

Untuk setiap komponen inferensi yang dihosting endpoint, lakukan hal berikut:

1. Daftarkan komponen inferensi sebagai target yang dapat diskalakan. Saat Anda mendaftarkannya, atur kapasitas minimum ke`0`, seperti yang ditunjukkan oleh perintah berikut:

   ```
   aws application-autoscaling register-scalable-target \
     --service-namespace sagemaker \
     --resource-id inference-component/inference-component-name \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --min-capacity 0 \
     --max-capacity n
   ```

   Dalam contoh ini, ganti *inference-component-name* dengan nama komponen inferensi Anda. Ganti *n* dengan jumlah maksimum salinan komponen inferensi untuk penyediaan saat penskalaan.

   Untuk informasi lebih lanjut tentang perintah ini dan masing-masing parameternya, lihat [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)di *Referensi AWS CLI Perintah*.

1. Menerapkan kebijakan pelacakan target ke komponen inferensi, seperti yang ditunjukkan oleh perintah berikut:

   ```
   aws application-autoscaling put-scaling-policy \
     --policy-name my-scaling-policy \
     --policy-type TargetTrackingScaling \
     --resource-id inference-component/inference-component-name \
     --service-namespace sagemaker \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --target-tracking-scaling-policy-configuration file://config.json
   ```

   Dalam contoh ini, ganti *inference-component-name* dengan nama komponen inferensi Anda.

   Dalam contoh, `config.json` file berisi konfigurasi kebijakan pelacakan target, seperti berikut ini:

   ```
   {
     "PredefinedMetricSpecification": {
         "PredefinedMetricType": "SageMakerInferenceComponentInvocationsPerCopy"
     },
     "TargetValue": 1,
     "ScaleInCooldown": 300,
     "ScaleOutCooldown": 300
   }
   ```

   Untuk contoh lainnya melacak konfigurasi kebijakan, lihat[Menentukan kebijakan penskalaan](endpoint-auto-scaling-add-code-define.md).

   Untuk informasi lebih lanjut tentang perintah ini dan masing-masing parameternya, lihat [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)di *Referensi AWS CLI Perintah*.

**Untuk mengaktifkan titik akhir untuk skala keluar dari nol instance ()AWS CLI**

Untuk setiap komponen inferensi yang dihosting endpoint, lakukan hal berikut:

1. Terapkan kebijakan penskalaan langkah ke komponen inferensi, seperti yang ditunjukkan oleh perintah berikut:

   ```
   aws application-autoscaling put-scaling-policy \
     --policy-name my-scaling-policy \
     --policy-type StepScaling \
     --resource-id inference-component/inference-component-name \
     --service-namespace sagemaker \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --step-scaling-policy-configuration file://config.json
   ```

   Dalam contoh ini, ganti *my-scaling-policy* dengan nama unik untuk kebijakan Anda. Ganti *inference-component-name* dengan nama komponen inferensi Anda.

   Dalam contoh, `config.json` file berisi konfigurasi kebijakan penskalaan langkah, seperti berikut ini:

   ```
   {
       "AdjustmentType": "ChangeInCapacity",
       "MetricAggregationType": "Maximum",
       "Cooldown": 60,
       "StepAdjustments":
         [
            {
              "MetricIntervalLowerBound": 0,
              "ScalingAdjustment": 1
            }
         ]
   }
   ```

   Ketika kebijakan penskalaan langkah ini dipicu, SageMaker AI menyediakan instance yang diperlukan untuk mendukung salinan komponen inferensi.

   Setelah Anda membuat kebijakan penskalaan langkah, perhatikan Nama Sumber Daya Amazon (ARN). Anda memerlukan ARN untuk CloudWatch alarm di langkah berikutnya.

   Untuk informasi selengkapnya tentang kebijakan penskalaan langkah, lihat [Kebijakan penskalaan langkah di Panduan](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) Pengguna *Application Auto Scaling*.

1. Buat CloudWatch alarm dan tetapkan kebijakan penskalaan langkah ke dalamnya, seperti yang ditunjukkan oleh contoh berikut:

   ```
   aws cloudwatch put-metric-alarm \
   --alarm-actions step-scaling-policy-arn \
   --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \
   --alarm-name ic-step-scaling-alarm \
   --comparison-operator GreaterThanThreshold  \
   --datapoints-to-alarm 1 \
   --dimensions "Name=InferenceComponentName,Value=inference-component-name" \
   --evaluation-periods 1 \
   --metric-name NoCapacityInvocationFailures \
   --namespace AWS/SageMaker \
   --period 60 \
   --statistic Sum \
   --threshold 1
   ```

   Dalam contoh ini, ganti *step-scaling-policy-arn* dengan ARN kebijakan penskalaan langkah Anda. Ganti *ic-step-scaling-alarm* dengan nama pilihan Anda. Ganti *inference-component-name* dengan nama komponen inferensi Anda. 

   Contoh ini menetapkan `--metric-name` parameter ke`NoCapacityInvocationFailures`. SageMaker AI memancarkan metrik ini ketika titik akhir menerima permintaan inferensi, tetapi titik akhir tidak memiliki instance aktif untuk melayani permintaan. Ketika peristiwa itu terjadi, alarm memulai kebijakan penskalaan langkah di langkah sebelumnya.

   Untuk informasi lebih lanjut tentang perintah ini dan masing-masing parameternya, lihat [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)di *Referensi AWS CLI Perintah*.

# Uji beban konfigurasi penskalaan otomatis Anda
<a name="endpoint-scaling-loadtest"></a>

Lakukan tes beban untuk memilih konfigurasi penskalaan yang berfungsi seperti yang Anda inginkan.

Pedoman pengujian beban berikut mengasumsikan Anda menggunakan kebijakan penskalaan yang menggunakan metrik target yang telah ditentukan sebelumnya. `SageMakerVariantInvocationsPerInstance`

**Topics**
+ [Tentukan karakteristik kinerja](#endpoint-scaling-loadtest-variant)
+ [Hitung beban target](#endpoint-scaling-loadtest-calc)

## Tentukan karakteristik kinerja
<a name="endpoint-scaling-loadtest-variant"></a>

Lakukan pengujian beban untuk menemukan puncak `InvocationsPerInstance` yang dapat ditangani oleh varian produksi model Anda, dan latensi permintaan, saat konkurensi meningkat.

Nilai ini bergantung pada jenis instans yang dipilih, muatan yang biasanya dikirim oleh klien model Anda, dan kinerja dependensi eksternal apa pun yang dimiliki model Anda.

**Untuk menemukan puncak requests-per-second (RPS) varian produksi model Anda dapat menangani dan latensi permintaan**

1. Siapkan titik akhir dengan model Anda menggunakan satu instance. Untuk informasi tentang cara menyiapkan titik akhir, lihat[Menyebarkan Model ke Layanan Hosting SageMaker AI](ex1-model-deployment.md#ex1-deploy-model).

1. Gunakan alat pengujian beban untuk menghasilkan peningkatan jumlah permintaan paralel, dan pantau RPS dan latensi model di out put dari alat pengujian beban. 
**catatan**  
Anda juga dapat memantau requests-per-minute alih-alih RPS. Dalam hal ini jangan kalikan dengan 60 dalam persamaan untuk menghitung yang `SageMakerVariantInvocationsPerInstance` ditunjukkan di bawah ini.

   Ketika latensi model meningkat atau proporsi transaksi yang berhasil menurun, ini adalah RPS puncak yang dapat ditangani model Anda.

## Hitung beban target
<a name="endpoint-scaling-loadtest-calc"></a>

Setelah Anda menemukan karakteristik kinerja varian, Anda dapat menentukan RPS maksimum yang harus kami izinkan untuk dikirim ke sebuah instance. Ambang batas yang digunakan untuk penskalaan harus kurang dari nilai maksimum ini. Gunakan persamaan berikut dalam kombinasi dengan pengujian beban untuk menentukan nilai yang benar untuk metrik `SageMakerVariantInvocationsPerInstance` target dalam konfigurasi penskalaan Anda.

```
SageMakerVariantInvocationsPerInstance = (MAX_RPS * SAFETY_FACTOR) * 60
```

Di `MAX_RPS` mana RPS maksimum yang Anda tentukan sebelumnya, dan `SAFETY_FACTOR` merupakan faktor keamanan yang Anda pilih untuk memastikan bahwa klien Anda tidak melebihi RPS maksimum. Kalikan dengan 60 untuk mengonversi dari RPS invocations-per-minute agar sesuai dengan CloudWatch metrik per menit yang digunakan SageMaker AI untuk menerapkan penskalaan otomatis (Anda tidak perlu melakukan ini jika Anda mengukur requests-per-minute sebagai gantinya). requests-per-second

**catatan**  
SageMaker AI merekomendasikan agar Anda mulai menguji dengan `SAFETY_FACTOR` 0,5. Uji konfigurasi penskalaan Anda untuk memastikannya beroperasi seperti yang Anda harapkan dengan model Anda untuk meningkatkan dan mengurangi lalu lintas pelanggan di titik akhir Anda.

# Gunakan CloudFormation untuk membuat kebijakan penskalaan
<a name="endpoint-scaling-cloudformation"></a>

Contoh berikut menunjukkan cara mengonfigurasi penskalaan otomatis model pada titik akhir menggunakan. CloudFormation

```
  Endpoint:
    Type: "AWS::SageMaker::Endpoint"
    Properties:
      EndpointName: yourEndpointName
      EndpointConfigName: yourEndpointConfigName

  ScalingTarget:
    Type: "AWS::ApplicationAutoScaling::ScalableTarget"
    Properties:
      MaxCapacity: 10
      MinCapacity: 2
      ResourceId: endpoint/my-endpoint/variant/my-variant
      RoleARN: arn
      ScalableDimension: sagemaker:variant:DesiredInstanceCount
      ServiceNamespace: sagemaker

  ScalingPolicy:
    Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
    Properties:
      PolicyName: my-scaling-policy
      PolicyType: TargetTrackingScaling
      ScalingTargetId:
        Ref: ScalingTarget
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 70.0
        ScaleInCooldown: 600
        ScaleOutCooldown: 30
        PredefinedMetricSpecification:
          PredefinedMetricType: SageMakerVariantInvocationsPerInstance
```

Untuk informasi selengkapnya, lihat [Membuat sumber daya Application Auto Scaling dengan AWS CloudFormation di Panduan](https://docs.aws.amazon.com/autoscaling/application/userguide/creating-resources-with-cloudformation.html) Pengguna *Application Auto Scaling*.

# Perbarui titik akhir yang menggunakan penskalaan otomatis
<a name="endpoint-scaling-update"></a>

Saat Anda memperbarui titik akhir, Application Auto Scaling memeriksa untuk melihat apakah salah satu model pada titik akhir tersebut adalah target untuk penskalaan otomatis. Jika pembaruan akan mengubah jenis instance untuk model apa pun yang menjadi target penskalaan otomatis, pembaruan gagal. 

Di Konsol Manajemen AWS, Anda melihat peringatan bahwa Anda harus membatalkan pendaftaran model dari penskalaan otomatis sebelum Anda dapat memperbaruinya. Jika Anda mencoba memperbarui titik akhir dengan memanggil [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API, panggilan gagal. Sebelum memperbarui titik akhir, hapus kebijakan penskalaan apa pun yang dikonfigurasi untuknya dan deregister varian sebagai target yang dapat diskalakan dengan memanggil tindakan Application Auto [DeregisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html)Scaling API. Setelah memperbarui titik akhir, Anda dapat mendaftarkan varian yang diperbarui sebagai target yang dapat diskalakan dan melampirkan kebijakan penskalaan.

Ada satu pengecualian. Jika Anda mengubah model untuk varian yang dikonfigurasi untuk penskalaan otomatis, penskalaan otomatis Amazon SageMaker AI memungkinkan pembaruan. Ini karena mengubah model biasanya tidak cukup memengaruhi kinerja untuk mengubah perilaku penskalaan. Jika Anda memperbarui model untuk varian yang dikonfigurasi untuk penskalaan otomatis, pastikan bahwa perubahan pada model tidak memengaruhi kinerja dan perilaku penskalaan secara signifikan.

Saat Anda memperbarui titik akhir SageMaker AI yang menerapkan penskalaan otomatis, selesaikan langkah-langkah berikut:

**Untuk memperbarui titik akhir yang menerapkan penskalaan otomatis**

1. Deregister endpoint sebagai target yang dapat diskalakan dengan menelepon. [DeregisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html)

1. Karena penskalaan otomatis diblokir saat operasi pembaruan sedang berlangsung (atau jika Anda mematikan penskalaan otomatis pada langkah sebelumnya), Anda mungkin ingin mengambil tindakan pencegahan tambahan untuk meningkatkan jumlah instance untuk titik akhir Anda selama pembaruan. Untuk melakukan ini, perbarui jumlah instance untuk varian produksi yang dihosting di titik akhir dengan memanggil. [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)

1. Panggil [ DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)berulang kali sampai nilai `EndpointStatus` bidang responsnya`InService`.

1. Panggil [ DescribeEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)untuk mendapatkan nilai konfigurasi titik akhir saat ini.

1. Buat konfigurasi titik akhir baru dengan menelepon. [ CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) Untuk varian produksi tempat Anda ingin menyimpan jumlah atau bobot instans yang ada, gunakan nama varian yang sama dari respons dari panggilan ke [ DescribeEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)langkah sebelumnya. Untuk semua nilai lainnya, gunakan nilai yang Anda dapatkan sebagai respons saat Anda menelepon [ DescribeEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)di langkah sebelumnya.

1. Perbarui titik akhir dengan menelepon [ UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html). Tentukan konfigurasi titik akhir yang Anda buat di langkah sebelumnya sebagai bidang. `EndpointConfig` Jika Anda ingin mempertahankan properti varian seperti hitungan instance atau bobot, tetapkan nilai `RetainAllVariantProperties` parameter ke`True`. Ini menentukan bahwa varian produksi dengan nama yang sama akan diperbarui dengan yang terbaru `DesiredInstanceCount` dari respons dari panggilan ke`DescribeEndpoint`, terlepas dari nilai `InitialInstanceCount` bidang di yang baru`EndpointConfig`.

1. (Opsional) Aktifkan kembali penskalaan otomatis dengan menelepon [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)dan. [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)

**catatan**  
Langkah 1 dan 7 hanya diperlukan jika Anda memperbarui titik akhir dengan perubahan berikut:  
Mengubah jenis instans untuk varian produksi yang memiliki penskalaan otomatis yang dikonfigurasi
Menghapus varian produksi yang memiliki penskalaan otomatis yang dikonfigurasi.

# Hapus titik akhir yang dikonfigurasi untuk penskalaan otomatis
<a name="endpoint-delete-with-scaling"></a>

Jika Anda menghapus titik akhir, Application Auto Scaling akan memeriksa apakah salah satu model pada titik akhir tersebut adalah target untuk penskalaan otomatis. Jika ada dan Anda memiliki izin untuk membatalkan pendaftaran model, Application Auto Scaling membatalkan pendaftaran model tersebut sebagai target yang dapat diskalakan tanpa memberi tahu Anda. Jika Anda menggunakan kebijakan izin khusus yang tidak memberikan izin untuk [DeregisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html)tindakan tersebut, Anda harus meminta akses ke tindakan ini sebelum menghapus titik akhir.

**catatan**  
Sebagai pengguna IAM, Anda mungkin tidak memiliki izin yang cukup untuk menghapus titik akhir jika pengguna lain mengonfigurasi penskalaan otomatis untuk varian pada titik akhir tersebut.

# Volume penyimpanan instans
<a name="host-instance-storage"></a>

Saat Anda membuat titik akhir, Amazon SageMaker AI melampirkan volume penyimpanan Amazon Elastic Block Store (Amazon EBS) ke EC2 instans Amazon yang menampung titik akhir. Ukuran volume penyimpanan dapat diskalakan, dan opsi penyimpanan dibagi menjadi dua kategori: penyimpanan yang didukung SSD dan penyimpanan yang didukung HDD. 

Untuk informasi selengkapnya tentang penyimpanan dan fitur Amazon EBS, lihat halaman berikut.
+ [Fitur Amazon EBS](https://aws.amazon.com/ebs/features/)
+ [Panduan Pengguna Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)

Untuk daftar lengkap volume penyimpanan instans host, lihat [Tabel Volume Penyimpanan Instans Host](https://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/) 

**catatan**  
Amazon SageMaker AI melampirkan volume penyimpanan Amazon Elastic Block Store (Amazon EBS) ke EC2 instans Amazon hanya saat Anda membuat atau jenis titik akhir. [Inferensi asinkron](async-inference.md) [Inferensi waktu nyata](realtime-endpoints.md) Untuk informasi selengkapnya tentang menyesuaikan volume penyimpanan Amazon EBS, lihat. [SageMaker Parameter titik akhir AI untuk inferensi model besar](large-model-inference-hosting.md)

# Validasi model dalam produksi
<a name="model-validation"></a>

 Dengan SageMaker AI, Anda dapat menguji beberapa model atau versi model di belakang titik akhir yang sama menggunakan varian. Varian terdiri dari instance ML dan komponen penyajian yang ditentukan dalam model SageMaker AI. Anda dapat memiliki beberapa varian di belakang titik akhir. Setiap varian dapat memiliki jenis instans yang berbeda atau model SageMaker AI yang dapat diskalakan otomatis secara independen dari yang lain. Model dalam varian dapat dilatih menggunakan kumpulan data yang berbeda, algoritme yang berbeda, kerangka kerja ML yang berbeda, atau kombinasi dari semua ini. Semua varian di balik titik akhir berbagi kode inferensi yang sama. SageMaker AI mendukung dua jenis varian, varian produksi dan varian bayangan. 

 Jika Anda memiliki beberapa varian produksi di belakang titik akhir, maka Anda dapat mengalokasikan sebagian permintaan inferensi Anda ke setiap varian. Setiap permintaan dialihkan ke hanya satu varian produksi. Varian produksi tempat permintaan diarahkan memberikan respons kepada penelepon. Anda dapat membandingkan bagaimana varian produksi bekerja relatif satu sama lain. 

 Anda juga dapat memiliki varian bayangan yang sesuai dengan varian produksi di belakang titik akhir. Sebagian dari permintaan inferensi yang masuk ke varian produksi direplikasi ke varian bayangan. Respons varian bayangan dicatat untuk perbandingan dan tidak dikembalikan ke pemanggil. Ini memungkinkan Anda menguji kinerja varian bayangan tanpa mengekspos pemanggil ke respons yang dihasilkan oleh varian bayangan. 

**Topics**
+ [Menguji model dengan varian produksi](model-ab-testing.md)
+ [Menguji model dengan varian bayangan](model-shadow-deployment.md)

# Menguji model dengan varian produksi
<a name="model-ab-testing"></a>

 Dalam alur kerja produksi, ilmuwan dan insinyur data sering mencoba meningkatkan kinerja menggunakan berbagai metode, seperti, pelatihan tentang data tambahan atau yang lebih baru[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md), meningkatkan pemilihan fitur, menggunakan instance yang diperbarui dengan lebih baik, dan wadah penyajian. Anda dapat menggunakan varian produksi untuk membandingkan model, instans, dan kontainer Anda, dan memilih kandidat berkinerja terbaik untuk menanggapi permintaan inferensi. 

 Dengan titik akhir multi-varian SageMaker AI, Anda dapat mendistribusikan permintaan pemanggilan titik akhir di beberapa varian produksi dengan menyediakan distribusi lalu lintas untuk setiap varian, atau Anda dapat memanggil varian tertentu secara langsung untuk setiap permintaan. Dalam topik ini, kita melihat kedua metode untuk menguji model ML. 

**Topics**
+ [Uji model dengan menentukan distribusi lalu lintas](#model-testing-traffic-distribution)
+ [Uji model dengan menggunakan varian tertentu](#model-testing-target-variant)
+ [Contoh A/B uji model](#model-ab-test-example)

## Uji model dengan menentukan distribusi lalu lintas
<a name="model-testing-traffic-distribution"></a>

 Untuk menguji beberapa model dengan mendistribusikan lalu lintas di antara mereka, tentukan persentase lalu lintas yang diarahkan ke setiap model dengan menentukan bobot untuk setiap varian produksi dalam konfigurasi titik akhir. Untuk informasi, lihat [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html). Diagram berikut menunjukkan cara kerjanya secara lebih rinci. 

![\[Contoh yang menunjukkan bagaimana mendistribusikan lalu lintas antar model yang menggunakan InvokeEndpoint bekerja di SageMaker AI.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-traffic-distribution.png)


## Uji model dengan menggunakan varian tertentu
<a name="model-testing-target-variant"></a>

 Untuk menguji beberapa model dengan menjalankan model tertentu untuk setiap permintaan, tentukan versi spesifik model yang ingin Anda panggil dengan memberikan nilai untuk `TargetVariant` parameter saat Anda memanggil. [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) SageMaker AI memastikan bahwa permintaan diproses oleh varian produksi yang Anda tentukan. Jika Anda telah menyediakan distribusi lalu lintas dan menentukan nilai untuk `TargetVariant` parameter, perutean yang ditargetkan akan mengesampingkan distribusi lalu lintas acak. Diagram berikut menunjukkan cara kerjanya secara lebih rinci. 

![\[Contoh yang menunjukkan cara menjalankan model tertentu untuk setiap permintaan yang digunakan InvokeEndpoint bekerja di SageMaker AI.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-target-variant.png)


## Contoh A/B uji model
<a name="model-ab-test-example"></a>

 Melakukan A/B pengujian antara model baru dan model lama dengan lalu lintas produksi dapat menjadi langkah terakhir yang efektif dalam proses validasi untuk model baru. Dalam A/B pengujian, Anda menguji berbagai varian model Anda dan membandingkan kinerja masing-masing varian. Jika versi model yang lebih baru memberikan kinerja yang lebih baik daripada versi yang ada sebelumnya, ganti versi lama model dengan versi baru dalam produksi. 

 Contoh berikut menunjukkan bagaimana melakukan pengujian A/B model. Untuk contoh buku catatan yang mengimplementasikan contoh ini, lihat [“A/B Menguji model ML dalam produksi](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_endpoints/a_b_testing/a_b_testing.html). 

### Langkah 1: Buat dan terapkan model
<a name="model-ab-test-step1"></a>

 Pertama, kami menentukan di mana model kami berada di Amazon S3. Lokasi-lokasi ini digunakan saat kami menerapkan model kami dalam langkah-langkah selanjutnya: 

```
model_url = f"s3://{path_to_model_1}"
model_url2 = f"s3://{path_to_model_2}"
```

 Selanjutnya, kita membuat objek model dengan data gambar dan model. Objek model ini digunakan untuk menyebarkan varian produksi pada titik akhir. Model dikembangkan dengan melatih model ML pada kumpulan data yang berbeda, algoritme atau kerangka kerja ML yang berbeda, dan hiperparameter yang berbeda: 

```
from sagemaker.amazon.amazon_estimator import get_image_uri

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"
image_uri = get_image_uri(boto3.Session().region_name, 'xgboost', '0.90-1')
image_uri2 = get_image_uri(boto3.Session().region_name, 'xgboost', '0.90-2')

sm_session.create_model(
    name=model_name,
    role=role,
    container_defs={
        'Image': image_uri,
        'ModelDataUrl': model_url
    }
)

sm_session.create_model(
    name=model_name2,
    role=role,
    container_defs={
        'Image': image_uri2,
        'ModelDataUrl': model_url2
    }
)
```

 Kami sekarang membuat dua varian produksi, masing-masing dengan model dan persyaratan sumber daya yang berbeda (jenis dan jumlah instance). Ini memungkinkan Anda untuk juga menguji model pada jenis instans yang berbeda. 

 Kami menetapkan initial\$1weight 1 untuk kedua varian. Ini berarti bahwa 50% dari permintaan pergi ke`Variant1`, dan 50% sisanya dari permintaan ke`Variant2`. Jumlah bobot di kedua varian adalah 2 dan setiap varian memiliki penetapan bobot 1. Ini berarti bahwa setiap varian menerima 1/2, atau 50%, dari total lalu lintas. 

```
from sagemaker.session import production_variant

variant1 = production_variant(
               model_name=model_name,
               instance_type="ml.m5.xlarge",
               initial_instance_count=1,
               variant_name='Variant1',
               initial_weight=1,
           )

variant2 = production_variant(
               model_name=model_name2,
               instance_type="ml.m5.xlarge",
               initial_instance_count=1,
               variant_name='Variant2',
               initial_weight=1,
           )
```

 Akhirnya kami siap untuk menerapkan varian produksi ini pada titik akhir SageMaker AI. 

```
endpoint_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
print(f"EndpointName={endpoint_name}")

sm_session.endpoint_from_production_variants(
    name=endpoint_name,
    production_variants=[variant1, variant2]
)
```

### Langkah 2: Panggil model yang digunakan
<a name="model-ab-test-step2"></a>

 Sekarang kami mengirim permintaan ke titik akhir ini untuk mendapatkan kesimpulan secara real time. Kami menggunakan distribusi lalu lintas dan penargetan langsung. 

 Pertama, kami menggunakan distribusi lalu lintas yang kami konfigurasikan pada langkah sebelumnya. Setiap respons inferensi berisi nama varian produksi yang memproses permintaan, sehingga kita dapat melihat bahwa lalu lintas ke dua varian produksi kira-kira sama. 

```
# get a subset of test data for a quick test
!tail -120 test_data/test-dataset-input-cols.csv > test_data/test_sample_tail_input_cols.csv
print(f"Sending test traffic to the endpoint {endpoint_name}. \nPlease wait...")

with open('test_data/test_sample_tail_input_cols.csv', 'r') as f:
    for row in f:
        print(".", end="", flush=True)
        payload = row.rstrip('\n')
        sm_runtime.invoke_endpoint(
            EndpointName=endpoint_name,
            ContentType="text/csv",
            Body=payload
        )
        time.sleep(0.5)

print("Done!")
```

 SageMaker AI memancarkan metrik seperti `Latency` dan `Invocations` untuk setiap varian di Amazon. CloudWatch Untuk daftar lengkap metrik yang dipancarkan SageMaker AI, lihat. [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md) Mari kueri CloudWatch untuk mendapatkan jumlah pemanggilan per varian, untuk menunjukkan bagaimana pemanggilan dibagi di seluruh varian secara default: 

![\[Contoh CloudWatch jumlah pemanggilan per varian.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-variant-invocations.png)


 Sekarang mari kita memanggil versi tertentu dari model dengan menentukan `Variant1` sebagai `TargetVariant` dalam panggilan ke. `invoke_endpoint` 

```
print(f"Sending test traffic to the endpoint {endpoint_name}. \nPlease wait...")
with open('test_data/test_sample_tail_input_cols.csv', 'r') as f:
    for row in f:
        print(".", end="", flush=True)
        payload = row.rstrip('\n')
        sm_runtime.invoke_endpoint(
            EndpointName=endpoint_name,
            ContentType="text/csv",
            Body=payload,
            TargetVariant="Variant1"
        ) 
        time.sleep(0.5)
```

 Untuk mengonfirmasi bahwa semua pemanggilan baru diproses oleh`Variant1`, kita dapat CloudWatch melakukan kueri untuk mendapatkan jumlah pemanggilan per varian. Kami melihat bahwa untuk pemanggilan terbaru (stempel waktu terbaru), semua permintaan diproses oleh`Variant1`, seperti yang telah kami tentukan. Tidak ada doa yang dibuat untuk. `Variant2` 

![\[Contoh CloudWatch jumlah pemanggilan untuk setiap varian.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-invocations-target1.png)


### Langkah 3: Evaluasi kinerja model
<a name="model-ab-test-step3"></a>

 Untuk melihat versi model mana yang berkinerja lebih baik, mari kita evaluasi akurasi, presisi, penarikan, skor F1, dan Penerima yang beroperasi charactersistic/Area di bawah kurva untuk setiap varian. Pertama, mari kita lihat metrik ini untuk`Variant1`: 

![\[Contoh kurva karakteristik operasi penerima untukVariant1.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-curve.png)


Sekarang mari kita lihat metrik untuk`Variant2`:

![\[Contoh kurva karakteristik operasi penerima untukVariant2.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model2-curve.png)


 Untuk sebagian besar metrik yang kami tentukan, `Variant2` berkinerja lebih baik, jadi inilah yang ingin kami gunakan dalam produksi. 

### Langkah 4: Tingkatkan lalu lintas ke model terbaik
<a name="model-ab-test-step4"></a>

 Sekarang kami telah menentukan bahwa `Variant2` kinerjanya lebih baik daripada`Variant1`, kami mengalihkan lebih banyak lalu lintas ke sana. Kami dapat terus menggunakan `TargetVariant` untuk memanggil varian model tertentu, tetapi pendekatan yang lebih sederhana adalah memperbarui bobot yang ditetapkan untuk setiap varian dengan memanggil. [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html) Ini mengubah distribusi lalu lintas ke varian produksi Anda tanpa memerlukan pembaruan ke titik akhir Anda. Ingat dari bagian pengaturan bahwa kami menetapkan bobot varian untuk membagi lalu lintas 50/50. CloudWatch Metrik untuk total pemanggilan untuk setiap varian di bawah ini menunjukkan kepada kita pola pemanggilan untuk setiap varian: 

![\[Contoh CloudWatch metrik untuk total pemanggilan untuk setiap varian.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-invocations-even-dist.png)


 Sekarang kita menggeser 75% dari lalu lintas ke `Variant2` dengan menetapkan bobot baru untuk setiap varian menggunakan. `UpdateEndpointWeightsAndCapacities` SageMaker AI sekarang mengirimkan 75% dari permintaan inferensi ke `Variant2` dan sisanya 25% dari permintaan ke`Variant1`. 

```
sm.update_endpoint_weights_and_capacities(
    EndpointName=endpoint_name,
    DesiredWeightsAndCapacities=[
        {
            "DesiredWeight": 25,
            "VariantName": variant1["VariantName"]
        },
        {
            "DesiredWeight": 75,
            "VariantName": variant2["VariantName"]
        }
    ]
)
```

 CloudWatch Metrik untuk pemanggilan total untuk setiap varian menunjukkan kepada kita pemanggilan yang lebih tinggi daripada untuk: `Variant2` `Variant1` 

![\[Contoh CloudWatch metrik untuk pemanggilan total untuk setiap varian.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-invocations-75-25.png)


 Kami dapat terus memantau metrik kami, dan ketika kami puas dengan kinerja varian, kami dapat merutekan 100% lalu lintas ke varian itu. Kami gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)untuk memperbarui tugas lalu lintas untuk varian. Berat untuk `Variant1` diatur ke 0 dan berat untuk `Variant2` diatur ke 1. SageMaker AI sekarang mengirimkan 100% dari semua permintaan inferensi ke`Variant2`. 

```
sm.update_endpoint_weights_and_capacities(
    EndpointName=endpoint_name,
    DesiredWeightsAndCapacities=[
        {
            "DesiredWeight": 0,
            "VariantName": variant1["VariantName"]
        },
        {
            "DesiredWeight": 1,
            "VariantName": variant2["VariantName"]
        }
    ]
)
```

 CloudWatch Metrik untuk total pemanggilan untuk setiap varian menunjukkan bahwa semua permintaan inferensi sedang diproses oleh `Variant2` dan tidak ada permintaan inferensi yang diproses oleh. `Variant1` 

![\[Contoh CloudWatch metrik untuk total pemanggilan untuk setiap varian.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-invocations-best-model.png)


 Anda sekarang dapat memperbarui titik akhir dengan aman dan menghapus `Variant1` dari titik akhir Anda. Anda juga dapat terus menguji model baru dalam produksi dengan menambahkan varian baru ke titik akhir Anda dan mengikuti langkah 2 - 4. 

# Menguji model dengan varian bayangan
<a name="model-shadow-deployment"></a>

 Anda dapat menggunakan SageMaker AI Model Shadow Deployment untuk membuat varian bayangan yang berjalan lama untuk memvalidasi komponen kandidat baru dari tumpukan penyajian model Anda sebelum mempromosikannya ke produksi. Diagram berikut menunjukkan bagaimana varian bayangan bekerja secara lebih rinci. 

![\[Detail varian bayangan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/juxtaposer/shadow-variant.png)


## Menyebarkan varian bayangan
<a name="model-shadow-deployment-deploy"></a>

 Contoh kode berikut menunjukkan bagaimana Anda dapat menerapkan varian bayangan secara terprogram. Ganti contoh *user placeholder text* dalam dengan informasi Anda sendiri. 

1.  Buat dua model SageMaker AI: satu untuk varian produksi Anda, dan satu untuk varian bayangan Anda. 

   ```
   import boto3
   from sagemaker import get_execution_role, Session
                   
   aws_region = "aws-region"
   
   boto_session = boto3.Session(region_name=aws_region)
   sagemaker_client = boto_session.client("sagemaker")
   
   role = get_execution_role()
   
   bucket = Session(boto_session).default_bucket()
   
   model_name1 = "name-of-your-first-model"
   model_name2 = "name-of-your-second-model"
   
   sagemaker_client.create_model(
       ModelName = model_name1,
       ExecutionRoleArn = role,
       Containers=[
           {
               "Image": "ecr-image-uri-for-first-model",
               "ModelDataUrl": "s3-location-of-trained-first-model" 
           }
       ]
   )
   
   sagemaker_client.create_model(
       ModelName = model_name2,
       ExecutionRoleArn = role,
       Containers=[
           {
               "Image": "ecr-image-uri-for-second-model",
               "ModelDataUrl": "s3-location-of-trained-second-model" 
           }
       ]
   )
   ```

1.  Buat konfigurasi titik akhir. Tentukan varian produksi dan bayangan Anda dalam konfigurasi. 

   ```
   endpoint_config_name = name-of-your-endpoint-config
   
   create_endpoint_config_response = sagemaker_client.create_endpoint_config(
       EndpointConfigName=endpoint_config_name,
       ProductionVariants=[
           {
               "VariantName": name-of-your-production-variant,
               "ModelName": model_name1,
               "InstanceType": "ml.m5.xlarge",
               "InitialInstanceCount": 1,
               "InitialVariantWeight": 1,
           }
       ],
       ShadowProductionVariants=[
           {
               "VariantName": name-of-your-shadow-variant,
               "ModelName": model_name2,
               "InstanceType": "ml.m5.xlarge",
               "InitialInstanceCount": 1,
               "InitialVariantWeight": 1,
           }
      ]
   )
   ```

1. Buat titik akhir.

   ```
   create_endpoint_response = sm.create_endpoint(
       EndpointName=name-of-your-endpoint,
       EndpointConfigName=endpoint_config_name,
   )
   ```

# Penjelasan online dengan Clarify SageMaker
<a name="clarify-online-explainability"></a>

Panduan ini menunjukkan cara mengonfigurasi penjelasan online dengan SageMaker Clarify. Dengan titik akhir [inferensi real-time SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) AI, Anda dapat menganalisis penjelasan secara real time, terus menerus. Fungsi penjelasan online cocok dengan bagian **Deploy to production** dari alur kerja [Amazon AI Machine SageMaker Learning](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-mlconcepts.html).

## Bagaimana Klarifikasi Penjelasan Online Bekerja
<a name="clarify-online-explainability-how-it-works"></a>

Grafik berikut menggambarkan arsitektur SageMaker AI untuk menghosting titik akhir yang melayani permintaan penjelasan. Ini menggambarkan interaksi antara titik akhir, wadah model, dan SageMaker penjelasan Clarify.

![\[SageMaker Arsitektur AI menunjukkan hosting titik akhir yang melayani permintaan penjelasan sesuai permintaan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/clarify/DeveloperGuideArchitecture.png)


Inilah cara kerja Clarify online explainability. Aplikasi mengirimkan `InvokeEndpoint` permintaan gaya REST ke SageMaker AI Runtime Service. Layanan merutekan permintaan ini ke titik akhir SageMaker AI untuk mendapatkan prediksi dan penjelasan. Kemudian, layanan menerima respons dari titik akhir. Terakhir, layanan mengirimkan respons kembali ke aplikasi.

Untuk meningkatkan ketersediaan titik akhir, SageMaker AI secara otomatis mencoba mendistribusikan instance titik akhir di beberapa Availability Zone, sesuai dengan jumlah instans dalam konfigurasi titik akhir. Pada instance titik akhir, atas permintaan penjelasan baru, penjelasan SageMaker Clarify memanggil wadah model untuk prediksi. Kemudian menghitung dan mengembalikan atribusi fitur.

Berikut adalah empat langkah untuk membuat endpoint yang menggunakan SageMaker Clarify online explainability:

1. [Periksa apakah model SageMaker AI pra-terlatih Anda kompatibel dengan penjelasan online dengan mengikuti langkah-langkah pra-pemeriksaan.](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-precheck.html)

1. [Buat konfigurasi endpoint dengan konfigurasi](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) SageMaker Clarify explainer menggunakan API. `CreateEndpointConfig`

1. [Buat titik akhir](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) dan berikan konfigurasi titik akhir ke SageMaker AI menggunakan API. `CreateEndpoint` Layanan meluncurkan instance komputasi ML dan menerapkan model seperti yang ditentukan dalam konfigurasi.

1. [Panggil titik akhir: Setelah titik](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) akhir dalam layanan, panggil SageMaker AI Runtime API `InvokeEndpoint` untuk mengirim permintaan ke titik akhir. Titik akhir kemudian mengembalikan penjelasan dan prediksi.

# Pra-periksa wadah model
<a name="clarify-online-explainability-precheck"></a>

Bagian ini menunjukkan cara memeriksa terlebih dahulu input dan output wadah model untuk kompatibilitas sebelum mengonfigurasi titik akhir. SageMaker Penjelasan Clarify adalah **model agnostik**, tetapi memiliki persyaratan untuk input dan output wadah model.

**catatan**  
Anda dapat meningkatkan efisiensi dengan mengonfigurasi penampung Anda untuk mendukung permintaan batch, yang mendukung dua atau lebih catatan dalam satu permintaan. Misalnya, catatan tunggal adalah satu baris data CSV, atau satu baris data JSON Lines. SageMaker Clarify akan mencoba mengirim kumpulan catatan mini ke wadah model terlebih dahulu sebelum kembali ke permintaan rekaman tunggal.

## Masukan wadah model
<a name="clarify-online-explainability-input"></a>

------
#### [ CSV ]

Wadah model mendukung input dalam CSV dengan tipe MIME:. `text/csv` Tabel berikut menunjukkan contoh input yang mendukung SageMaker Clarify.


| Masukan wadah model (representasi string) | Komentar | 
| --- | --- | 
|  '1,2,3,4'  |  Rekaman tunggal yang menggunakan empat fitur numerik.  | 
|  '1,2,3,4\$1n5,6,7,8'  |  Dua catatan, dipisahkan oleh jeda baris '\$1n'.  | 
|  “Ini adalah produk yang bagus”, 5'  |  Rekaman tunggal yang berisi fitur teks dan fitur numerik.  | 
|  '"Ini adalah produk yang bagus” ,5\$1n“Pengalaman belanja yang buruk”, 1 '  |  Dua catatan.  | 

------
#### [ JSON Lines ]

SageMaker AI juga mendukung input dalam [format padat JSON Lines](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-jsonlines) dengan tipe MIME:`application/jsonlines`, seperti yang ditunjukkan pada tabel berikut.


| Masukan wadah model | Komentar | 
| --- | --- | 
|  '\$1"data”: \$1"features”: [1,2,3,4]\$1\$1'  |  Rekaman tunggal; daftar fitur dapat diekstraksi dengan JMESPath ekspresi`data.features`.  | 
|  '\$1"data”: \$1"features”: [1,2,3,4]\$1\$1\$1n\$1"data”: \$1"features”: [5,6,7,8]\$1\$1'  |  Dua catatan.  | 
|  '\$1"features”: ["Ini adalah produk yang bagus” ,5]\$1'  |  Rekaman tunggal; daftar fitur dapat diekstraksi dengan JMESPath ekspresi`features`.  | 
|  '\$1"features”: ["Ini adalah produk yang bagus” ,5]\$1\$1n\$1"features”: ["Pengalaman belanja yang buruk” ,1]\$1'  |  Dua catatan.  | 

------

## Output wadah model
<a name="clarify-online-explainability-output"></a>

Output wadah model Anda juga harus dalam format padat CSV, atau JSON Lines. Selain itu wadah model harus menyertakan probabilitas catatan input, yang digunakan SageMaker Clarify untuk menghitung atribusi fitur.

Contoh data berikut adalah untuk output wadah model dalam **format CSV**.

------
#### [ Probability only ]

Untuk masalah regresi dan klasifikasi biner, wadah model mengeluarkan nilai probabilitas tunggal (skor) dari label yang diprediksi. Probabilitas ini dapat diekstraksi menggunakan indeks kolom 0. Untuk masalah multi-kelas, wadah model mengeluarkan daftar probabilitas (skor). Untuk masalah multi-kelas, jika tidak ada indeks yang disediakan, semua nilai diekstraksi.


| Masukan wadah model | Output wadah model (representasi string) | 
| --- | --- | 
|  Rekaman tunggal  |  '0,6'  | 
|  Dua catatan (hasil dalam satu baris)  |  '0,6,0,3'  | 
|  Dua catatan (menghasilkan dua baris)  |  '0,6\$1n0,3'  | 
|  Rekaman tunggal model multi-kelas (tiga kelas)  |  '0.1,0.6,0.3'  | 
|  Dua catatan model multi-kelas (tiga kelas)  |  '0.1,0.6,0.3\$1n0.2,0.5,0.3'  | 

------
#### [ Predicted label and probabilities ]

Wadah model mengeluarkan label yang diprediksi diikuti oleh probabilitasnya dalam **format CSV**. Probabilitas dapat diekstraksi menggunakan indeks. `1`


| Masukan wadah model | Output wadah model | 
| --- | --- | 
|  Rekaman tunggal  |  '1,0.6'  | 
|  Dua catatan  |  '1,0.6\$1n0,0.3'  | 

------
#### [ Predicted labels header and probabilities ]

**Wadah model multi-kelas yang dilatih oleh Autopilot dapat dikonfigurasi untuk menampilkan **representasi string** dari daftar label dan probabilitas yang diprediksi dalam format CSV.** Dalam contoh berikut, probabilitas dapat diekstraksi dengan indeks. `1` Header label dapat diekstraksi dengan indeks`1`, dan header label dapat diekstraksi menggunakan indeks. `0`


| Masukan wadah model | Output wadah model | 
| --- | --- | 
|  Rekaman tunggal  |  '"[\$1 'cat\$1',\$1 'dog\$1 ',\$1 'ikan\$1']”, "[0.1,0.6,0.3]" '  | 
|  Dua catatan  |  '"[\$1 'cat\$1',\$1 'dog\$1 ',\$1 'ikan\$1']”, "[0.1,0.6,0.3]”\$1n“[\$1 'cat\$1 ',\$1 'dog\$1',\$1 'ikan\$1 ']”, "[0.2,0.5,0.3]"'  | 

------

Contoh data berikut adalah untuk output wadah model dalam format **JSON Lines**.

------
#### [ Probability only ]

Dalam contoh ini, wadah model mengeluarkan probabilitas yang dapat diekstraksi dengan [https://jmespath.org/](https://jmespath.org/)ekspresi `score` dalam format **JSON** Lines.


| Masukan wadah model | Output wadah model | 
| --- | --- | 
|  Rekaman tunggal  |  '\$1"skor” :0.6\$1'  | 
|  Dua catatan  |  '\$1"score” :0.6\$1\$1n\$1"skor” :0.3\$1'  | 

------
#### [ Predicted label and probabilities ]

**Dalam contoh ini, wadah model multi-kelas mengeluarkan daftar header label bersama dengan daftar probabilitas dalam format JSON Lines.** Probabilitas dapat diekstraksi dengan `JMESPath` ekspresi`probability`, dan header label dapat diekstraksi dengan ekspresi. `JMESPath` `predicted labels`


| Masukan wadah model | Output wadah model | 
| --- | --- | 
|  Rekaman tunggal  |  '\$1"predicted\$1labels”: ["cat”, "dog”, "fish "], "probabilities”: [0.1,0.6,0.3]\$1'  | 
|  Dua catatan  |  '\$1"predicted\$1labels”: ["cat”, "dog”, "fish "], "probabilities”: [0.1,0.6,0.3]\$1\$1n\$1"predicted\$1labels”: ["cat”, "dog”, "fish "], "probabilities”: [0.2,0.5,0.3]\$1'  | 

------
#### [ Predicted labels header and probabilities ]

**Dalam contoh ini, wadah model multi-kelas mengeluarkan daftar header label dan probabilitas dalam format JSON Lines.** Probabilitas dapat diekstraksi dengan `JMESPath` ekspresi`probability`, dan header label dapat diekstraksi dengan ekspresi. `JMESPath` `predicted labels`


| Masukan wadah model | Output wadah model | 
| --- | --- | 
|  Rekaman tunggal  |  '\$1"predicted\$1labels”: ["cat”, "dog”, "fish "], "probabilities”: [0.1,0.6,0.3]\$1'  | 
|  Dua catatan  |  '\$1"predicted\$1labels”: ["cat”, "dog”, "fish "], "probabilities”: [0.1,0.6,0.3]\$1\$1n\$1"predicted\$1labels”: ["cat”, "dog”, "fish "], "probabilities”: [0.2,0.5,0.3]\$1'  | 

------

## Validasi wadah model
<a name="clarify-online-explainability-container-validation"></a>

Kami menyarankan Anda menerapkan model Anda ke titik akhir inferensi real-time SageMaker AI, dan mengirim permintaan ke titik akhir. Periksa permintaan (input kontainer model) dan respons (keluaran wadah model) secara manual untuk memastikan bahwa keduanya sesuai dengan persyaratan di bagian Input **Penampung Model dan bagian Output** **Penampung Model**. Jika wadah model Anda mendukung permintaan batch, Anda dapat memulai dengan satu permintaan rekaman, lalu mencoba dua atau lebih catatan.

Perintah berikut menunjukkan cara meminta respons menggunakan AWS CLI. AWS CLI Ini sudah diinstal sebelumnya di SageMaker Studio Classic, dan instance SageMaker Notebook. Jika Anda perlu menginstal AWS CLI, ikuti [panduan instalasi](https://aws.amazon.com/cli/) ini.

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

Parameter didefinisikan, sebagai berikut:
+ `$ENDPOINT NAME`: Nama titik akhir.
+ `$CONTENT_TYPE`: Jenis permintaan MIME (input wadah model).
+ `$ACCEPT_TYPE`: Jenis respons MIME (keluaran wadah model).
+ `$REQUEST_DATA`: String payload yang diminta.
+ `$CLI_BINARY_FORMAT`: Format parameter antarmuka baris perintah (CLI). Untuk AWS CLI v1, parameter ini harus tetap kosong. Untuk v2, parameter ini harus diatur ke`--cli-binary-format raw-in-base64-out`.

**catatan**  
AWS CLI [v2 melewati parameter biner sebagai string yang dikodekan base64 default.](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam)

Contoh berikut menggunakan AWS CLI v1:

------
#### [ Request and response in CSV format ]
+ Permintaan terdiri dari satu catatan dan responsnya adalah nilai probabilitasnya.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-sagemaker-xgboost-model \
    --content-type text/csv \
    --accept text/csv \
    --body '1,2,3,4' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `0.6`
+ Permintaan terdiri dari dua catatan, dan responsnya mencakup probabilitasnya, dan model memisahkan probabilitas dengan koma. `$'content'`Ekspresi dalam `--body` memberitahu perintah untuk menafsirkan `\n` dalam konten sebagai jeda baris.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-sagemaker-xgboost-model \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `0.6,0.3`
+ Permintaan terdiri dari dua catatan, respons mencakup probabilitasnya, dan model memisahkan probabilitas dengan jeda baris.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-1 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `0.6`

  `0.3`
+ Permintaan terdiri dari satu catatan, dan responsnya adalah nilai probabilitas (model multi-kelas, tiga kelas).

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-1 \
    --content-type text/csv \
    --accept text/csv \
    --body '1,2,3,4' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `0.1,0.6,0.3`
+ Permintaan terdiri dari dua catatan, dan responsnya mencakup nilai probabilitasnya (model multi-kelas, tiga kelas).

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-1 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `0.1,0.6,0.3`

  `0.2,0.5,0.3`
+ Permintaan terdiri dari dua catatan, dan responsnya mencakup label dan probabilitas yang diprediksi.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-2 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `1,0.6`

  `0,0.3`
+ Permintaan terdiri dari dua catatan dan responsnya mencakup header label dan probabilitas.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-3 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `"['cat','dog','fish']","[0.1,0.6,0.3]"`

  `"['cat','dog','fish']","[0.2,0.5,0.3]"`

------
#### [ Request and response in JSON Lines format ]
+ Permintaan terdiri dari satu catatan dan responsnya adalah nilai probabilitasnya.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines \
    --content-type application/jsonlines \
    --accept application/jsonlines \
    --body '{"features":["This is a good product",5]}' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `{"score":0.6}`
+ Permintaan berisi dua catatan, dan responsnya mencakup label dan probabilitas yang diprediksi.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines-2 \
    --content-type application/jsonlines \
    --accept application/jsonlines \
    --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `{"predicted_label":1,"probability":0.6}`

  `{"predicted_label":0,"probability":0.3}`
+ Permintaan berisi dua catatan dan responsnya mencakup header label dan probabilitas.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines-3 \
    --content-type application/jsonlines \
    --accept application/jsonlines \
    --body $'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}`

  `{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}`

------
#### [ Request and response in different formats ]
+ Permintaan dalam format CSV dan responsnya dalam format JSON Lines:

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-in-jsonlines-out \
    --content-type text/csv \
    --accept application/jsonlines \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `{"probability":0.6}`

  `{"probability":0.3}`
+ Permintaan dalam format JSON Lines dan responsnya dalam format CSV:

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines-in-csv-out \
    --content-type application/jsonlines \
    --accept text/csv \
    --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
    /dev/stderr 1>/dev/null
  ```

  Output:

  `0.6`

  `0.3`

------

Setelah validasi selesai, [hapus titik akhir](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-delete-resources.html) pengujian.

# Konfigurasikan dan buat titik akhir
<a name="clarify-online-explainability-create-endpoint"></a>

Buat konfigurasi titik akhir baru agar sesuai dengan model Anda, dan gunakan konfigurasi ini untuk membuat titik akhir. Anda dapat menggunakan wadah model yang divalidasi pada [langkah pra-pemeriksaan](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-precheck.html) untuk membuat titik akhir dan mengaktifkan fitur SageMaker Clarify online explainability.

Gunakan `sagemaker_client` objek untuk membuat titik akhir menggunakan [CreateEndpointConfig](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API. Atur anggota `ClarifyExplainerConfig` di dalam `ExplainerConfig` parameter sebagai berikut:

```
sagemaker_client.create_endpoint_config(
    EndpointConfigName='name-of-your-endpoint-config',
    ExplainerConfig={
        'ClarifyExplainerConfig': {
            'EnableExplanations': '`true`',
            'InferenceConfig': {
                ...
            },
            'ShapConfig': {
                ...
            }
        },
    },
    ProductionVariants=[{
        'VariantName': 'AllTraffic',
        'ModelName': 'name-of-your-model',
        'InitialInstanceCount': 1,
        'InstanceType': 'ml.m5.xlarge',
    }]
     ...
)
sagemaker_client.create_endpoint(
    EndpointName='name-of-your-endpoint',
    EndpointConfigName='name-of-your-endpoint-config'
)
```

Panggilan pertama ke `sagemaker_client` objek membuat konfigurasi titik akhir baru dengan fitur penjelasan diaktifkan. Panggilan kedua menggunakan konfigurasi titik akhir untuk meluncurkan titik akhir.

**catatan**  
Anda juga dapat meng-host beberapa model dalam satu wadah di belakang [titik akhir multi-model inferensi real-time SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) dan mengonfigurasi penjelasan online dengan Clarify. SageMaker 

# `EnableExplanations`Ekspresi
<a name="clarify-online-explainability-create-endpoint-enable"></a>

`EnableExplanations`Parameternya adalah string ekspresi [https://jmespath.org/](https://jmespath.org/)Boolean. Ini dievaluasi untuk **setiap catatan** dalam permintaan penjelasan. Jika parameter ini dievaluasi menjadi **benar**, maka catatan akan dijelaskan. Jika parameter ini dievaluasi **salah**, maka penjelasan tidak akan dihasilkan.

SageMaker Klarifikasi deserialisasi output wadah model untuk setiap catatan ke dalam struktur data yang kompatibel dengan JSON, dan kemudian menggunakan `EnableExplanations` parameter untuk mengevaluasi data.

**Catatan**  
Ada dua opsi untuk catatan tergantung pada format output wadah model.  
Jika keluaran wadah model dalam format CSV, maka catatan dimuat sebagai array JSON.
Jika keluaran wadah model dalam format JSON Lines, maka catatan dimuat sebagai objek JSON.

`EnableExplanations`Parameter adalah JMESPath ekspresi yang dapat diteruskan baik selama `InvokeEndpoint` atau `CreateEndpointConfig` operasi. Jika JMESPath ekspresi yang Anda berikan tidak valid, pembuatan endpoint akan gagal. Jika ekspresi valid, tetapi hasil evaluasi ekspresi tidak terduga, maka titik akhir akan berhasil dibuat, tetapi kesalahan akan dihasilkan ketika titik akhir dipanggil. Uji `EnableExplanations` ekspresi Anda dengan menggunakan `InvokeEndpoint` API, lalu terapkan ke konfigurasi titik akhir.

Berikut ini adalah beberapa contoh `EnableExplanations` ekspresi yang valid. Dalam contoh, JMESPath ekspresi melampirkan literal menggunakan karakter backtick. Misalnya, ``true`` berarti benar.


| Ekspresi (representasi string) | Output wadah model (representasi string) | Hasil evaluasi (Boolean) | Arti | 
| --- | --- | --- | --- | 
|  '`benar`'  |  (N/A)  |  True  |  Aktifkan penjelasan online tanpa syarat.  | 
|  '`salah`'  |  (N/A)  |  False  |  Nonaktifkan penjelasan online tanpa syarat.  | 
|  '[1] >`0.5`'  |  '1,0.6'  |  True  |  Untuk setiap catatan, wadah model mengeluarkan label dan probabilitas yang diprediksi. Menjelaskan catatan jika probabilitasnya (pada indeks 1) lebih besar dari 0,5.  | 
|  'probabilitas>`0,5 `'  |  '\$1"predicted\$1label” :1, "probabilitas” :0.6\$1'  |  True  |  Untuk setiap catatan, wadah model mengeluarkan data JSON. Jelaskan catatan jika probabilitasnya lebih besar dari 0,5.  | 
|  '\$1 berisi (probabilitas [:-1], maks (probabilitas)) '  |  '\$1"probabilities”: [0.4, 0.1, 0.4], “labels”: ["cat”, "dog”, "fish "]\$1'  |  False  |  Untuk model multi-kelas: Menjelaskan catatan jika label yang diprediksi (kelas yang memiliki nilai probabilitas maks) adalah kelas terakhir. Secara harfiah, ekspresi berarti bahwa nilai probabilitas maks tidak ada dalam daftar probabilitas tidak termasuk yang terakhir.  | 

# Dataset sintetis
<a name="clarify-online-explainability-create-endpoint-synthetic"></a>

SageMaker Clarify menggunakan algoritma Kernel SHAP. Diberikan catatan (juga disebut sampel atau instance) dan konfigurasi SHAP, penjelasan pertama-tama menghasilkan kumpulan data sintetis. SageMaker Klarifikasi kemudian kueri wadah model untuk prediksi kumpulan data, lalu hitung dan kembalikan atribusi fitur. Ukuran kumpulan data sintetis memengaruhi runtime untuk penjelasan Clarify. Kumpulan data sintetis yang lebih besar membutuhkan lebih banyak waktu untuk mendapatkan prediksi model daripada yang lebih kecil.

 Ukuran dataset sintetis ditentukan oleh rumus berikut:

```
Synthetic dataset size = SHAP baseline size * n_samples
```

Ukuran dasar SHAP adalah jumlah catatan dalam data dasar SHAP. Informasi ini diambil dari`ShapBaselineConfig`.

Ukuran `n_samples` diatur oleh parameter `NumberOfSamples` dalam konfigurasi explainer dan jumlah fitur. Jika jumlah fitur adalah`n_features`, maka `n_samples` adalah sebagai berikut: 

```
n_samples = MIN(NumberOfSamples, 2^n_features - 2)
```

Berikut ini menunjukkan `n_samples` jika `NumberOfSamples` tidak disediakan.

```
n_samples = MIN(2*n_features + 2^11, 2^n_features - 2)
```

Misalnya, catatan tabular dengan 10 fitur memiliki ukuran dasar SHAP 1. Jika tidak `NumberOfSamples` disediakan, dataset sintetis berisi 1022 catatan. Jika catatan memiliki 20 fitur, dataset sintetis berisi 2088 catatan.

Untuk masalah NLP, `n_features` sama dengan jumlah fitur non-teks ditambah jumlah unit teks.

**catatan**  
`InvokeEndpoint`API memiliki batas waktu tunggu permintaan. Jika kumpulan data sintetis terlalu besar, penjelasan mungkin tidak dapat menyelesaikan perhitungan dalam batas ini. Jika perlu, gunakan informasi sebelumnya untuk memahami dan mengurangi ukuran dasar SHAP dan. `NumberOfSamples` Jika wadah model Anda diatur untuk menangani permintaan batch, maka Anda juga dapat menyesuaikan nilai`MaxRecordCount`.

# Memanggil titik akhir
<a name="clarify-online-explainability-invoke-endpoint"></a>

Setelah titik akhir berjalan, gunakan SageMaker AI Runtime [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)API di layanan SageMaker AI Runtime untuk mengirim permintaan ke, atau memanggil titik akhir. Sebagai tanggapan, permintaan ditangani sebagai permintaan penjelasan oleh Clarify explainer. SageMaker 

**catatan**  
Untuk memanggil titik akhir, pilih salah satu opsi berikut:  
Untuk petunjuk menggunakan Boto3 atau AWS CLI untuk memanggil titik akhir, lihat. [Memanggil model untuk inferensi waktu nyata](realtime-endpoints-test-endpoints.md)
[Untuk menggunakan SageMaker SDK for Python untuk menjalankan endpoint, lihat Predictor API.](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html)

## Permintaan
<a name="clarify-online-explainability-request"></a>

`InvokeEndpoint`API memiliki parameter opsional`EnableExplanations`, yang dipetakan ke header `X-Amzn-SageMaker-Enable-Explanations` HTTP. Jika parameter ini disediakan, itu mengesampingkan `EnableExplanations` parameter. `ClarifyExplainerConfig`

**catatan**  
`Accept`Parameter `ContentType` dan `InvokeEndpoint` API diperlukan. Format yang didukung termasuk tipe MIME `text/csv` dan`application/jsonlines`.

Gunakan `sagemaker_runtime_client` untuk mengirim permintaan ke titik akhir, sebagai berikut:

```
response = sagemaker_runtime_client.invoke_endpoint(
    EndpointName='name-of-your-endpoint',
    EnableExplanations='`true`',
    ContentType='text/csv',
    Accept='text/csv',
    Body='1,2,3,4',  # single record (of four numerical features)
)
```

Untuk titik akhir multi-model, berikan `TargetModel` parameter tambahan dalam permintaan contoh sebelumnya untuk menentukan model mana yang akan ditargetkan pada titik akhir. Titik akhir multi-model secara dinamis memuat model target sesuai kebutuhan. Untuk informasi selengkapnya tentang titik akhir multi-model, lihat. [Titik akhir multi-model](multi-model-endpoints.md) Lihat [SageMaker Clarify Online Explainability on Multi-Model Endpoint Sample Notebook](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/online_explainability/tabular_multi_model_endpoint/multi_model_xgboost_with_online_explainability.ipynb) untuk contoh cara menyiapkan dan memanggil beberapa model target dari satu titik akhir.

## Respons
<a name="clarify-online-explainability-response"></a>

Jika titik akhir dibuat dengan`ExplainerConfig`, maka skema respons baru digunakan, Skema baru ini berbeda dari, dan tidak kompatibel dengan, titik akhir yang tidak memiliki parameter yang disediakan. `ExplainerConfig`

Jenis respons MIME adalah`application/json`, dan payload respons dapat diterjemahkan dari UTF-8 byte ke objek JSON. Berikut ini menunjukkan anggota objek JSON ini adalah sebagai berikut:
+ `version`: Versi skema respons dalam format string. Misalnya, `1.0`.
+ `predictions`: Prediksi yang dibuat permintaan memiliki yang berikut:
  + `content_type`: Jenis prediksi MIME, mengacu pada respons `ContentType` wadah model.
  + `data`: String data prediksi dikirimkan sebagai muatan respons wadah model untuk permintaan tersebut.
+ `label_headers`: Header label dari `LabelHeaders` parameter. Ini disediakan baik dalam konfigurasi explainer atau output wadah model.
+ `explanations`: Penjelasan yang diberikan dalam payload permintaan. Jika tidak ada catatan yang dijelaskan, maka anggota ini mengembalikan objek kosong`{}`.
+ 
  + `kernel_shap`: Kunci yang mengacu pada array penjelasan Kernel SHAP untuk setiap catatan dalam permintaan. Jika catatan tidak dijelaskan, penjelasan yang sesuai adalah`null`.

`kernel_shap`Elemen memiliki anggota berikut:
+ `feature_header`: Nama header dari fitur yang disediakan oleh `FeatureHeaders` parameter dalam konfigurasi `ExplainerConfig` explainer.
+ `feature_type`: Jenis fitur yang disimpulkan oleh penjelasan atau disediakan dalam `FeatureTypes` parameter di. `ExplainerConfig` Elemen ini hanya tersedia untuk masalah penjelasan NLP.
+ `attributions`: Sebuah array objek atribusi. Fitur teks dapat memiliki beberapa objek atribusi, masing-masing untuk satu unit. Objek atribusi memiliki anggota berikut:
  + `attribution`: Daftar nilai probabilitas, diberikan untuk setiap kelas.
  + `description`: Deskripsi unit teks, hanya tersedia untuk masalah penjelasan NLP.
    + `partial_text`: Bagian teks yang dijelaskan oleh penjelas.
    + `start_idx`: Indeks berbasis nol untuk mengidentifikasi lokasi array dari awal fragmen teks sebagian.

# Contoh kode: SDK untuk Python
<a name="clarify-online-explainability-examples"></a>

Bagian ini menyediakan contoh kode untuk membuat dan memanggil titik akhir yang menggunakan SageMaker Clarify online explainability. Contoh kode ini menggunakan [AWS SDK untuk Python](https://aws.amazon.com/sdk-for-python/).

## Data tabular
<a name="clarigy-online-explainability-examples-tabular"></a>

Contoh berikut menggunakan data tabular dan model SageMaker AI yang disebut`model_name`. Dalam contoh ini, wadah model menerima data dalam format CSV, dan setiap catatan memiliki empat fitur numerik. Dalam konfigurasi minimal ini, **hanya untuk tujuan demonstrasi**, data dasar SHAP diatur ke nol. Lihat [Garis Dasar SHAP untuk Penjelasan](clarify-feature-attribute-shap-baselines.md) untuk mempelajari cara memilih nilai yang lebih sesuai untuk`ShapBaseline`.

Konfigurasikan titik akhir, sebagai berikut:

```
endpoint_config_name = 'tabular_explainer_endpoint_config'
response = sagemaker_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[{
        'VariantName': 'AllTraffic',
        'ModelName': model_name,
        'InitialInstanceCount': 1,
        'InstanceType': 'ml.m5.xlarge',
    }],
    ExplainerConfig={
        'ClarifyExplainerConfig': {
            'ShapConfig': {
                'ShapBaselineConfig': {
                    'ShapBaseline': '0,0,0,0',
                },
            },
        },
    },
)
```

Gunakan konfigurasi endpoint untuk membuat endpoint, sebagai berikut:

```
endpoint_name = 'tabular_explainer_endpoint'
response = sagemaker_client.create_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=endpoint_config_name,
)
```

Gunakan `DescribeEndpoint` API untuk memeriksa kemajuan pembuatan titik akhir, sebagai berikut:

```
response = sagemaker_client.describe_endpoint(
    EndpointName=endpoint_name,
)
response['EndpointStatus']
```

Setelah status endpoint adalah "InService“, panggil titik akhir dengan catatan pengujian, sebagai berikut:

```
response = sagemaker_runtime_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType='text/csv',
    Accept='text/csv',
    Body='1,2,3,4',
)
```

**catatan**  
Dalam contoh kode sebelumnya, untuk titik akhir multi-model, berikan `TargetModel` parameter tambahan dalam permintaan untuk menentukan model mana yang akan ditargetkan pada titik akhir.

Asumsikan bahwa respons memiliki kode status 200 (tidak ada kesalahan), dan muat badan respons, sebagai berikut:

```
import codecs
import json
json.load(codecs.getreader('utf-8')(response['Body']))
```

Tindakan default untuk titik akhir adalah menjelaskan catatan. Berikut ini menunjukkan contoh output dalam objek JSON dikembalikan.

```
{
    "version": "1.0",
    "predictions": {
        "content_type": "text/csv; charset=utf-8",
        "data": "0.0006380207487381"
    },
    "explanations": {
        "kernel_shap": [
            [
                {
                    "attributions": [
                        {
                            "attribution": [-0.00433456]
                        }
                    ]
                },
                {
                    "attributions": [
                        {
                            "attribution": [-0.005369821]
                        }
                    ]
                },
                {
                    "attributions": [
                        {
                            "attribution": [0.007917749]
                        }
                    ]
                },
                {
                    "attributions": [
                        {
                            "attribution": [-0.00261214]
                        }
                    ]
                }
            ]
        ]
    }
}
```

Gunakan `EnableExplanations` parameter untuk mengaktifkan penjelasan sesuai permintaan, sebagai berikut:

```
response = sagemaker_runtime_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType='text/csv',
    Accept='text/csv',
    Body='1,2,3,4',
    EnableExplanations='[0]>`0.8`',
)
```

**catatan**  
Dalam contoh kode sebelumnya, untuk titik akhir multi-model, berikan `TargetModel` parameter tambahan dalam permintaan untuk menentukan model mana yang akan ditargetkan pada titik akhir.

Dalam contoh ini, nilai prediksi kurang dari nilai ambang batas`0.8`, sehingga catatan tidak dijelaskan:

```
{
    "version": "1.0",
    "predictions": {
        "content_type": "text/csv; charset=utf-8",
        "data": "0.6380207487381995"
    },
    "explanations": {}
}
```

Gunakan alat visualisasi untuk membantu menafsirkan penjelasan yang dikembalikan. Gambar berikut menunjukkan bagaimana plot SHAP dapat digunakan untuk memahami bagaimana setiap fitur berkontribusi pada prediksi. Nilai dasar pada diagram, juga disebut nilai yang diharapkan, adalah prediksi rata-rata dari kumpulan data pelatihan. Fitur yang mendorong nilai yang diharapkan lebih tinggi berwarna merah, dan fitur yang mendorong nilai yang diharapkan lebih rendah berwarna biru. Lihat [tata letak gaya aditif SHAP](https://shap.readthedocs.io/en/latest/generated/shap.plots.force.html) untuk informasi tambahan.

![\[Contoh plot SHAP, yang dapat digunakan untuk memahami bagaimana setiap fitur berkontribusi pada prediksi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/clarify/force-plot.png)


Lihat [contoh buku catatan lengkap untuk data tabular](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/online_explainability/tabular/tabular_online_explainability_with_sagemaker_clarify.ipynb). 

## Data teks
<a name="clarigy-online-explainability-examples-text"></a>

Bagian ini memberikan contoh kode untuk membuat dan memanggil titik akhir penjelasan online untuk data teks. Contoh kode menggunakan SDK untuk Python.

Contoh berikut menggunakan data teks dan model SageMaker AI yang disebut`model_name`. Dalam contoh ini, wadah model menerima data dalam format CSV, dan setiap catatan adalah string tunggal.

```
endpoint_config_name = 'text_explainer_endpoint_config'
response = sagemaker_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[{
        'VariantName': 'AllTraffic',
        'ModelName': model_name,
        'InitialInstanceCount': 1,
        'InstanceType': 'ml.m5.xlarge',
    }],
    ExplainerConfig={
        'ClarifyExplainerConfig': {
            'InferenceConfig': {
                'FeatureTypes': ['text'],
                'MaxRecordCount': 100,
            },
            'ShapConfig': {
                'ShapBaselineConfig': {
                    'ShapBaseline': '"<MASK>"',
                },
                'TextConfig': {
                    'Granularity': 'token',
                    'Language': 'en',
                },
                'NumberOfSamples': 100,
            },
        },
    },
)
```
+ `ShapBaseline`: Token khusus yang disediakan untuk pemrosesan bahasa alami (NLP).
+ `FeatureTypes`: Mengidentifikasi fitur sebagai teks. Jika parameter ini tidak disediakan, penjelasan akan mencoba menyimpulkan jenis fitur.
+ `TextConfig`: Menentukan unit granularitas dan bahasa untuk analisis fitur teks. Dalam contoh ini, bahasanya adalah bahasa Inggris, dan granularitas `token` berarti kata dalam teks bahasa Inggris.
+ `NumberOfSamples`: Batas untuk mengatur batas atas ukuran dataset sintetis.
+ `MaxRecordCount`: Jumlah maksimum catatan dalam permintaan yang dapat ditangani oleh wadah model. Parameter ini diatur untuk menstabilkan kinerja.

Gunakan konfigurasi endpoint untuk membuat endpoint, sebagai berikut:

```
endpoint_name = 'text_explainer_endpoint'
response = sagemaker_client.create_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=endpoint_config_name,
)
```

Setelah status titik akhir menjadi`InService`, panggil titik akhir. Contoh kode berikut menggunakan catatan uji sebagai berikut:

```
response = sagemaker_runtime_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType='text/csv',
    Accept='text/csv',
    Body='"This is a good product"',
)
```

Jika permintaan berhasil diselesaikan, badan respons akan mengembalikan objek JSON yang valid yang mirip dengan yang berikut ini:

```
{
    "version": "1.0",
    "predictions": {
        "content_type": "text/csv",
        "data": "0.9766594\n"
    },
    "explanations": {
        "kernel_shap": [
            [
                {
                    "attributions": [
                        {
                            "attribution": [
                                -0.007270948666666712
                            ],
                            "description": {
                                "partial_text": "This",
                                "start_idx": 0
                            }
                        },
                        {
                            "attribution": [
                                -0.018199033666666628
                            ],
                            "description": {
                                "partial_text": "is",
                                "start_idx": 5
                            }
                        },
                        {
                            "attribution": [
                                0.01970993241666666
                            ],
                            "description": {
                                "partial_text": "a",
                                "start_idx": 8
                            }
                        },
                        {
                            "attribution": [
                                0.1253469515833334
                            ],
                            "description": {
                                "partial_text": "good",
                                "start_idx": 10
                            }
                        },
                        {
                            "attribution": [
                                0.03291143366666657
                            ],
                            "description": {
                                "partial_text": "product",
                                "start_idx": 15
                            }
                        }
                    ],
                    "feature_type": "text"
                }
            ]
        ]
    }
}
```

Gunakan alat visualisasi untuk membantu menafsirkan atribusi teks yang dikembalikan. Gambar berikut menunjukkan bagaimana utilitas visualisasi captum dapat digunakan untuk memahami bagaimana setiap kata berkontribusi pada prediksi. Semakin tinggi saturasi warna, semakin tinggi pentingnya kata tersebut. Dalam contoh ini, warna merah cerah yang sangat jenuh menunjukkan kontribusi negatif yang kuat. Warna hijau yang sangat jenuh menunjukkan kontribusi positif yang kuat. Warna putih menunjukkan bahwa kata tersebut memiliki kontribusi netral. Lihat perpustakaan [captum](https://github.com/pytorch/captum) untuk informasi tambahan tentang penguraian dan rendering atribusi.

![\[Utilitas visualisasi Captum digunakan untuk memahami bagaimana setiap kata berkontribusi pada prediksi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/clarify/word-importance.png)


Lihat [contoh buku catatan lengkap untuk data teks](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/online_explainability/natural_language_processing/nlp_online_explainability_with_sagemaker_clarify.ipynb). 

# Panduan pemecahan masalah
<a name="clarify-online-explainability-troubleshooting"></a>

Jika Anda menemukan kesalahan menggunakan SageMaker Clarify online explainability, lihat topik di bagian ini.

**`InvokeEndpoint`API gagal dengan kesalahan “: Baca ReadTimeoutError batas waktu di titik akhir...”** 

Kesalahan ini berarti bahwa permintaan tidak dapat diselesaikan dalam batas waktu 60 detik yang ditetapkan oleh batas [waktu permintaan](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html).

Untuk mengurangi latensi permintaan, coba yang berikut ini:
+ Sesuaikan kinerja model selama inferensi. Misalnya, SageMaker AI [Neo](https://aws.amazon.com/sagemaker/neo/) dapat mengoptimalkan model untuk inferensi.
+ Izinkan wadah model untuk menangani permintaan batch.
+ Gunakan yang lebih besar `MaxRecordCount` untuk mengurangi jumlah panggilan dari penjelasan ke wadah model. Ini akan mengurangi latensi jaringan dan overhead.
+ Gunakan jenis instance yang memiliki lebih banyak sumber daya yang dialokasikan untuk itu. Sebagai alternatif, tetapkan lebih banyak instance ke titik akhir untuk membantu menyeimbangkan beban.
+ Kurangi jumlah catatan dalam satu `InvokeEndpoint` permintaan.
+ Kurangi jumlah catatan dalam data dasar.
+ Gunakan `NumberOfSamples` nilai yang lebih kecil untuk mengurangi ukuran kumpulan data sintetis. Untuk informasi selengkapnya tentang bagaimana jumlah sampel memengaruhi kumpulan data sintetis Anda, lihat[Dataset sintetis](clarify-online-explainability-create-endpoint-synthetic.md).

# Sempurnakan model dengan komponen inferensi adaptor
<a name="realtime-endpoints-adapt"></a>

Dengan Amazon SageMaker AI, Anda dapat meng-host model fondasi pra-terlatih tanpa perlu membuat model Anda sendiri dari awal. Namun, untuk menyesuaikan model pondasi tujuan umum untuk kebutuhan unik bisnis Anda, Anda harus membuat versi yang disetel dengan baik. Salah satu teknik fine-tuning yang hemat biaya adalah Adaptasi Peringkat Rendah (LoRa). Prinsip di balik LoRa adalah bahwa hanya sebagian kecil dari model fondasi besar yang perlu diperbarui untuk menyesuaikannya dengan tugas atau domain baru. Adaptor LoRa menambah inferensi dari model pondasi dasar hanya dengan beberapa lapisan adaptor tambahan.

*Jika Anda meng-host model pondasi dasar Anda dengan menggunakan komponen inferensi SageMaker AI, Anda dapat menyempurnakan model dasar itu dengan adaptor LoRa dengan membuat komponen inferensi adaptor.* Saat Anda membuat komponen inferensi adaptor, Anda menentukan yang berikut:
+ *Komponen inferensi dasar yang berisi komponen* inferensi adaptor. Komponen inferensi dasar berisi model pondasi yang ingin Anda adaptasi. Komponen inferensi adaptor menggunakan sumber daya komputasi yang Anda tetapkan ke komponen inferensi dasar.
+ Lokasi tempat Anda menyimpan adaptor LoRa di Amazon S3.

Setelah Anda membuat komponen inferensi adaptor, Anda dapat memanggilnya secara langsung. Ketika Anda melakukannya, SageMaker AI menggabungkan adaptor dengan model dasar untuk menambah respons yang dihasilkan.

**Sebelum Anda mulai**

Sebelum Anda dapat membuat komponen inferensi adaptor, Anda harus memenuhi persyaratan berikut: 
+ Anda memiliki komponen inferensi dasar yang berisi model pondasi untuk beradaptasi. Anda telah menerapkan komponen inferensi ini ke titik akhir SageMaker AI. 

  Untuk informasi selengkapnya tentang penerapan komponen inferensi ke titik akhir, lihat. [Terapkan model untuk inferensi waktu nyata](realtime-endpoints-deploy-models.md)
+ Anda memiliki model adaptor LoRa, dan Anda telah menyimpan artefak model sebagai `tar.gz` file di Amazon S3. Anda menentukan URI S3 artefak saat Anda membuat komponen inferensi adaptor.

Contoh berikut menggunakan SDK for Python (Boto3) untuk membuat dan memanggil komponen inferensi adaptor.

**Example `create_inference_component`panggilan untuk membuat komponen inferensi adaptor**  
Contoh berikut membuat komponen inferensi adaptor dan menetapkannya ke komponen inferensi dasar:  

```
sm_client.create_inference_component(
    InferenceComponentName = adapter_ic_name,
    EndpointName = endpoint_name,
    Specification={
        "BaseInferenceComponentName": base_inference_component_name,
        "Container": {
            "ArtifactUrl": adapter_s3_uri
        },
    },
)
```
Bila Anda menggunakan contoh ini dalam kode Anda sendiri, ganti nilai placeholder sebagai berikut:  
+ *adapter\$1ic\$1name*- Nama unik untuk komponen inferensi adaptor Anda.
+ *endpoint\$1name*— Nama titik akhir yang menampung komponen inferensi dasar.
+ *base\$1inference\$1component\$1name*— Nama komponen inferensi dasar yang berisi model pondasi untuk beradaptasi.
+ *adapter\$1s3\$1uri*— URI S3 yang menempatkan `tar.gz` file dengan artefak adaptor LoRa Anda.
Anda membuat komponen inferensi adaptor dengan kode yang mirip dengan kode untuk komponen inferensi normal. Satu perbedaan adalah bahwa, untuk `Specification` parameter, Anda menghilangkan `ComputeResourceRequirements` kuncinya. Saat Anda memanggil komponen inferensi adaptor, komponen tersebut dimuat oleh komponen inferensi dasar. Komponen inferensi adaptor menggunakan sumber daya komputasi dari komponen inferensi dasar.  
Untuk informasi selengkapnya tentang membuat dan menerapkan komponen inferensi dengan SDK for Python (Boto3), lihat. [Terapkan model dengan Python SDKs](realtime-endpoints-deploy-models.md#deploy-models-python)

Setelah Anda membuat komponen inferensi adaptor, Anda memanggilnya dengan menentukan namanya dalam permintaan. `invoke_endpoint`

**Example `invoke_endpoint`panggilan untuk memanggil komponen inferensi adaptor**  
Contoh berikut memanggil komponen inferensi adaptor:  

```
response = sm_rt_client.invoke_endpoint(
    EndpointName = endpoint_name,
    InferenceComponentName = adapter_ic_name,
    Body = json.dumps(
        {
            "inputs": prompt,
            "parameters": {"max_new_tokens": 100, "temperature":0.9}
        }
    ),
    ContentType = "application/json",
)

adapter_reponse = response["Body"].read().decode("utf8")["generated_text"]
```
Bila Anda menggunakan contoh ini dalam kode Anda sendiri, ganti nilai placeholder sebagai berikut:  
+ *endpoint\$1name*— Nama titik akhir yang menampung komponen inferensi dasar dan adaptor.
+ *adapter\$1ic\$1name*— Nama komponen inferensi adaptor.
+ *prompt*— Prompt untuk permintaan inferensi.
Untuk informasi selengkapnya tentang menjalankan komponen inferensi dengan SDK for Python (Boto3), lihat. [Memanggil model untuk inferensi waktu nyata](realtime-endpoints-test-endpoints.md)