

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

# Menyebarkan model untuk inferensi
<a name="deploy-model"></a>

Dengan Amazon SageMaker AI, Anda dapat mulai mendapatkan prediksi, atau *kesimpulan*, dari model pembelajaran mesin terlatih Anda. SageMaker AI menyediakan berbagai pilihan infrastruktur ML dan opsi penerapan model untuk membantu memenuhi semua kebutuhan inferensi ML Anda. Dengan SageMaker AI Inference, Anda dapat menskalakan penerapan model Anda, mengelola model secara lebih efektif dalam produksi, dan mengurangi beban operasional. SageMaker AI memberi Anda berbagai opsi inferensi, seperti titik akhir waktu nyata untuk mendapatkan inferensi latensi rendah, titik akhir tanpa server untuk infrastruktur dan auto-scaling yang dikelola sepenuhnya, dan titik akhir asinkron untuk kumpulan permintaan. Dengan memanfaatkan opsi inferensi yang sesuai untuk kasus penggunaan Anda, Anda dapat memastikan penerapan dan inferensi model yang efisien.

## Memilih fitur
<a name="deploy-model-choose"></a>

Ada beberapa kasus penggunaan untuk menerapkan model ML dengan SageMaker AI. Bagian ini menjelaskan kasus penggunaan tersebut, serta fitur SageMaker AI yang kami rekomendasikan untuk setiap kasus penggunaan. 

### Kasus penggunaan
<a name="deploy-model-use-cases"></a>

Berikut ini adalah kasus penggunaan utama untuk menerapkan model ML dengan SageMaker AI.
+ **Kasus penggunaan 1: Menerapkan model pembelajaran mesin di lingkungan kode rendah atau tanpa kode.** Untuk pemula atau mereka yang baru mengenal SageMaker AI, Anda dapat menerapkan model pra-terlatih menggunakan Amazon SageMaker JumpStart melalui antarmuka Amazon SageMaker Studio, tanpa perlu konfigurasi yang rumit.
+ **Kasus penggunaan 2: Gunakan kode untuk menerapkan model pembelajaran mesin dengan lebih banyak fleksibilitas dan kontrol.** Praktisi ML berpengalaman dapat menerapkan model mereka sendiri dengan pengaturan khusus untuk kebutuhan aplikasi mereka menggunakan `ModelBuilder` kelas di AI SageMaker Python SDK, yang menyediakan kontrol halus atas berbagai pengaturan, seperti jenis instance, isolasi jaringan, dan alokasi sumber daya.
+ **Kasus penggunaan 3: Terapkan model pembelajaran mesin dalam skala besar.** Untuk pengguna dan organisasi tingkat lanjut yang ingin mengelola model dalam skala produksi, gunakan AWS SDK untuk Python (Boto3) dan CloudFormation bersama dengan Infrastructure as Code (IAc) yang Anda inginkan dan CI/CD alat untuk menyediakan sumber daya dan mengotomatiskan manajemen sumber daya.

### Fitur yang direkomendasikan
<a name="deploy-model-recommended"></a>

Tabel berikut menjelaskan pertimbangan utama dan pengorbanan untuk fitur SageMaker AI yang sesuai dengan setiap kasus penggunaan.


|  | Kasus penggunaan 1 | Kasus penggunaan 2 | Kasus penggunaan 3 | 
| --- | --- | --- | --- | 
| SageMaker Fitur AI | Gunakan [ JumpStart di Studio](jumpstart-foundation-models-use-studio-updated.md) untuk mempercepat penerapan model dasar Anda. | Menerapkan model menggunakan [ModelBuilder dari SageMaker Python SDK](how-it-works-modelbuilder-creation.md). |  [Menyebarkan dan mengelola model dalam skala besar dengan CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SageMaker.html). | 
| Deskripsi | Gunakan UI Studio untuk menerapkan model pra-terlatih dari katalog ke titik akhir inferensi yang telah dikonfigurasi sebelumnya. Opsi ini sangat ideal untuk ilmuwan data warga, atau bagi siapa saja yang ingin menerapkan model tanpa mengonfigurasi pengaturan yang rumit. | Gunakan ModelBuilder kelas dari Amazon SageMaker AI Python SDK untuk menerapkan model Anda sendiri dan mengonfigurasi pengaturan penerapan. Opsi ini sangat ideal untuk ilmuwan data berpengalaman, atau bagi siapa saja yang memiliki model sendiri untuk digunakan dan memerlukan kontrol halus. | Gunakan CloudFormation dan Infrastruktur sebagai Kode (IAc) untuk kontrol dan otomatisasi terprogram untuk menerapkan dan mengelola SageMaker model AI. Opsi ini sangat ideal untuk pengguna tingkat lanjut yang membutuhkan penerapan yang konsisten dan berulang. | 
| Dioptimalkan untuk | Penerapan model open source populer yang cepat dan efisien | Menerapkan model Anda sendiri | Manajemen model yang sedang berlangsung dalam produksi | 
| Pertimbangan-pertimbangan | Kurangnya kustomisasi untuk pengaturan kontainer dan kebutuhan aplikasi tertentu | Tidak ada UI, mengharuskan Anda merasa nyaman mengembangkan dan memelihara kode Python | Membutuhkan manajemen infrastruktur dan sumber daya organisasi, dan juga membutuhkan keakraban dengan AWS SDK untuk Python (Boto3) atau dengan CloudFormation templat. | 
| Lingkungan yang direkomendasikan | Domain SageMaker AI | Lingkungan pengembangan Python yang dikonfigurasi dengan AWS kredensi Anda dan SDK SageMaker Python yang diinstal, atau AI IDE seperti SageMaker [SageMaker JupyterLab](studio-updated-jl.md) | Lingkungan pengembangan lokal AWS CLI, dan Infrastruktur sebagai Kode (IAc) dan alat CI/CD  | 

### Opsi tambahan
<a name="deploy-model-additional"></a>

SageMaker AI menyediakan opsi berbeda untuk kasus penggunaan inferensi Anda, memberi Anda pilihan atas luas dan kedalaman teknis penerapan Anda:
+ **Menerapkan model ke titik akhir.** Saat menerapkan model Anda, pertimbangkan opsi berikut:
  + [Inferensi waktu nyata](realtime-endpoints.md). Inferensi waktu nyata sangat ideal untuk beban kerja inferensi di mana Anda memiliki persyaratan interaktif dan latensi rendah.
  + [Terapkan model dengan Inferensi Tanpa SageMaker Server Amazon](serverless-endpoints.md). Gunakan Inferensi Tanpa Server untuk menerapkan model tanpa mengonfigurasi atau mengelola infrastruktur yang mendasarinya. Opsi ini sangat ideal untuk beban kerja yang memiliki periode idle antara lonjakan lalu lintas dan dapat mentolerir awal yang dingin.
  + [Inferensi asinkron](async-inference.md). Mengantri permintaan yang masuk dan memprosesnya secara asinkron. Opsi ini sangat ideal untuk permintaan dengan ukuran muatan besar (hingga 1GB), waktu pemrosesan yang lama (hingga satu jam), dan persyaratan latensi mendekati waktu nyata.
+ **Optimalisasi biaya.** Untuk mengoptimalkan biaya inferensi Anda, pertimbangkan opsi berikut:
  + [Optimalisasi kinerja model dengan SageMaker Neo](neo.md). Gunakan SageMaker Neo untuk mengoptimalkan dan menjalankan model pembelajaran mesin Anda dengan kinerja dan efisiensi yang lebih baik, membantu Anda meminimalkan biaya komputasi dengan mengoptimalkan model secara otomatis untuk berjalan di lingkungan seperti chip AWS Inferentia.
  + [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md). Gunakan penskalaan otomatis untuk menyesuaikan sumber daya komputasi secara dinamis untuk titik akhir Anda berdasarkan pola lalu lintas masuk, yang membantu Anda mengoptimalkan biaya dengan hanya membayar sumber daya yang Anda gunakan pada waktu tertentu.

# Opsi penerapan model di Amazon AI SageMaker
<a name="how-it-works-deployment"></a>

Setelah melatih model pembelajaran mesin, Anda dapat menerapkannya menggunakan Amazon SageMaker AI untuk mendapatkan prediksi. Amazon SageMaker AI mendukung cara-cara berikut untuk menerapkan model, tergantung pada kasus penggunaan Anda:
+ Untuk titik akhir real-time yang persisten yang membuat satu prediksi pada satu waktu, gunakan layanan hosting real-time SageMaker AI. Lihat [Inferensi waktu nyata](realtime-endpoints.md).
+ Beban kerja yang memiliki periode idle antara lonjakan lalu lintas dan dapat mentolerir start dingin, gunakan Inferensi Tanpa Server. Lihat [Terapkan model dengan Inferensi Tanpa SageMaker Server Amazon](serverless-endpoints.md).
+ Permintaan dengan ukuran muatan besar hingga 1GB, waktu pemrosesan yang lama, dan persyaratan latensi mendekati waktu nyata, menggunakan Inferensi Asinkron Amazon SageMaker . Lihat [Inferensi asinkron](async-inference.md).
+ Untuk mendapatkan prediksi untuk seluruh kumpulan data, gunakan transformasi batch SageMaker AI. Lihat [Transformasi Batch untuk inferensi dengan Amazon AI SageMaker](batch-transform.md).

SageMaker AI juga menyediakan fitur untuk mengelola sumber daya dan mengoptimalkan kinerja inferensi saat menerapkan model pembelajaran mesin:
+ Untuk mengelola model pada perangkat edge sehingga Anda dapat mengoptimalkan, mengamankan, memantau, dan memelihara model pembelajaran mesin pada armada perangkat edge, lihat[Penerapan model di tepi dengan SageMaker Edge Manager](edge.md). Ini berlaku untuk perangkat edge seperti kamera pintar, robot, komputer pribadi, dan perangkat seluler.
+ Untuk mengoptimalkan model Gluon, Keras MXNet,, PyTorch, TensorFlow, TensorFlow -Lite, dan ONNX untuk inferensi pada mesin Android, Linux, dan Windows berdasarkan prosesor dari Ambarella, ARM, Intel, Nvidia, NXP, Qualcomm, Texas Instruments, dan Xilinx, lihat. [Optimalisasi kinerja model dengan SageMaker Neo](neo.md)

Untuk informasi selengkapnya tentang semua opsi penerapan, lihat[Menyebarkan model untuk inferensi](deploy-model.md).

# Memahami opsi untuk menerapkan model dan mendapatkan kesimpulan di Amazon AI SageMaker
<a name="deploy-model-get-started"></a>

Untuk membantu Anda memulai Inferensi SageMaker AI, lihat bagian berikut yang menjelaskan opsi Anda untuk menerapkan model Anda di SageMaker AI dan mendapatkan kesimpulan. [Opsi inferensi di Amazon AI SageMaker](deploy-model-options.md)Bagian ini dapat membantu Anda menentukan fitur mana yang paling sesuai dengan kasus penggunaan Anda untuk inferensi.

Anda dapat merujuk ke [Sumber daya](inference-resources.md) bagian untuk lebih banyak pemecahan masalah dan informasi referensi, blog dan contoh untuk membantu Anda memulai, dan umum. FAQs

**Topics**
+ [Sebelum Anda mulai](#deploy-model-prereqs)
+ [Langkah-langkah untuk penerapan model](#deploy-model-steps)
+ [Opsi inferensi di Amazon AI SageMaker](deploy-model-options.md)
+ [Opsi titik akhir lanjutan untuk inferensi dengan Amazon AI SageMaker](deploy-model-advanced.md)
+ [Langkah selanjutnya untuk inferensi dengan Amazon AI SageMaker](deploy-model-next-steps.md)

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

Topik-topik ini mengasumsikan bahwa Anda telah membangun dan melatih satu atau lebih model pembelajaran mesin dan siap untuk menerapkannya. Anda tidak perlu melatih model Anda dalam SageMaker AI untuk menerapkan model Anda di SageMaker AI dan mendapatkan kesimpulan. Jika Anda tidak memiliki model sendiri, Anda juga dapat menggunakan [algoritme bawaan SageMaker AI atau model yang telah dilatih sebelumnya](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html).

Jika Anda baru mengenal SageMaker AI dan belum memilih model untuk diterapkan, kerjakan langkah-langkah dalam tutorial [Memulai dengan Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html). Gunakan tutorial untuk membiasakan diri dengan bagaimana SageMaker AI mengelola proses ilmu data dan bagaimana menangani penerapan model. Untuk informasi selengkapnya tentang melatih model, lihat [Model Kereta](https://docs.aws.amazon.com/sagemaker/latest/dg/train-model.html).

Untuk informasi tambahan, referensi, dan contoh, lihat[Sumber daya](inference-resources.md).

## Langkah-langkah untuk penerapan model
<a name="deploy-model-steps"></a>

Untuk titik akhir inferensi, alur kerja umum terdiri dari yang berikut:
+ Buat model dalam Inferensi SageMaker AI dengan menunjuk ke artefak model yang disimpan di Amazon S3 dan gambar kontainer.
+ Pilih opsi inferensi. Untuk informasi selengkapnya, lihat [Opsi inferensi di Amazon AI SageMaker](deploy-model-options.md).
+ Buat konfigurasi titik akhir Inferensi SageMaker AI dengan memilih jenis instans dan jumlah instance yang Anda butuhkan di belakang titik akhir. Anda dapat menggunakan [Amazon SageMaker Inference Recommender](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender.html) untuk mendapatkan rekomendasi untuk jenis instans. Untuk Inferensi Tanpa Server, Anda hanya perlu menyediakan konfigurasi memori yang Anda butuhkan berdasarkan ukuran model Anda. 
+ Buat titik akhir Inferensi SageMaker AI.
+ Panggil titik akhir Anda untuk menerima inferensi sebagai tanggapan.

Diagram berikut menunjukkan alur kerja sebelumnya.

![\[Alur kerja yang dijelaskan dalam paragraf sebelumnya menunjukkan cara mendapatkan kesimpulan dari AI. SageMaker\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference-workflow-flowchart.png)


Anda dapat melakukan tindakan ini menggunakan AWS konsol, SDK SageMaker Python, CloudFormation atau. AWS SDKs AWS CLI

Untuk inferensi batch dengan transformasi batch, arahkan ke artefak model Anda dan masukan data dan buat pekerjaan inferensi batch. Alih-alih menghosting titik akhir untuk inferensi, SageMaker AI mengeluarkan kesimpulan Anda ke lokasi Amazon S3 pilihan Anda.

# Opsi inferensi di Amazon AI SageMaker
<a name="deploy-model-options"></a>

SageMaker AI menyediakan beberapa opsi inferensi sehingga Anda dapat memilih opsi yang paling sesuai dengan beban kerja Anda:
+ [Inferensi Real-Time](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html)*: Inferensi real-time* sangat ideal untuk inferensi online yang memiliki latensi rendah atau persyaratan throughput tinggi. Gunakan inferensi real-time untuk endpoint persisten dan terkelola sepenuhnya (REST API) yang dapat menangani lalu lintas berkelanjutan, didukung oleh jenis instans pilihan Anda. Inferensi real-time dapat mendukung ukuran payload hingga 25 MB dan waktu pemrosesan 60 detik untuk respons reguler dan 8 menit untuk respons streaming.
+ Inferensi [Tanpa Server: Inferensi](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html) *tanpa server sangat ideal ketika Anda memiliki pola lalu lintas intermiten* atau tidak dapat diprediksi. SageMaker AI mengelola semua infrastruktur yang mendasarinya, jadi tidak perlu mengelola instance atau kebijakan penskalaan. Anda hanya membayar untuk apa yang Anda gunakan dan bukan untuk waktu idle. Ini dapat mendukung ukuran muatan hingga 4 MB dan waktu pemrosesan hingga 60 detik.
+ [Transformasi Batch](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html)*: Transformasi Batch* cocok untuk pemrosesan offline ketika sejumlah besar data tersedia di muka dan Anda tidak memerlukan titik akhir yang persisten. Anda juga dapat menggunakan transformasi batch untuk set data pra-pemrosesan. Ini dapat mendukung kumpulan data besar yang GBs dalam ukuran dan waktu pemrosesan dalam beberapa hari.
+ Inferensi [Asinkron: Inferensi](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference.html) *asinkron* sangat ideal ketika Anda ingin mengantri permintaan dan memiliki muatan besar dengan waktu pemrosesan yang lama. Inferensi Asinkron dapat mendukung muatan hingga 1 GB dan waktu pemrosesan yang lama hingga satu jam. Anda juga dapat menurunkan titik akhir Anda ke 0 ketika tidak ada permintaan untuk diproses.

# Opsi titik akhir lanjutan untuk inferensi dengan Amazon AI SageMaker
<a name="deploy-model-advanced"></a>

Dengan inferensi real-time, Anda dapat lebih mengoptimalkan kinerja dan biaya dengan opsi inferensi lanjutan berikut:
+ [Titik akhir multi-model](multi-model-endpoints.md)— Gunakan opsi ini jika Anda memiliki beberapa model yang menggunakan kerangka kerja yang sama dan dapat berbagi wadah. Opsi ini membantu Anda mengoptimalkan biaya dengan meningkatkan pemanfaatan titik akhir dan mengurangi overhead penerapan.
+ [Titik akhir multi-kontainer](multi-container-endpoints.md)— Gunakan opsi ini jika Anda memiliki beberapa model yang menggunakan kerangka kerja yang berbeda dan memerlukan wadah mereka sendiri. Anda mendapatkan banyak manfaat dari Multi-Model Endpoint dan dapat menerapkan berbagai kerangka kerja dan model.
+ [Serial Inference Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) - Gunakan opsi ini jika Anda ingin meng-host model dengan logika pra-pemrosesan dan pasca-pemrosesan di belakang titik akhir. Saluran pipa inferensi sepenuhnya dikelola oleh SageMaker AI dan memberikan latensi yang lebih rendah karena semua kontainer di-host pada instans Amazon EC2 yang sama.

# Langkah selanjutnya untuk inferensi dengan Amazon AI SageMaker
<a name="deploy-model-next-steps"></a>

Setelah Anda memiliki titik akhir dan memahami alur kerja inferensi umum, Anda dapat menggunakan fitur berikut di SageMaker AI untuk meningkatkan alur kerja inferensi Anda.

## Memantau
<a name="deploy-model-next-steps-monitoring"></a>

Untuk melacak model Anda dari waktu ke waktu melalui metrik seperti akurasi model dan penyimpangan, Anda dapat menggunakan Model Monitor. Dengan Model Monitor, Anda dapat mengatur peringatan yang memberi tahu Anda ketika ada penyimpangan dalam kualitas model Anda. Untuk mempelajari lebih lanjut, lihat [dokumentasi Model Monitor](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html). 

Untuk mempelajari lebih lanjut tentang alat yang dapat digunakan untuk memantau penerapan model dan peristiwa yang mengubah titik akhir Anda, lihat Memantau [Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-overview.html) AI. SageMaker Misalnya, Anda dapat memantau kesehatan titik akhir Anda melalui metrik seperti kesalahan pemanggilan dan latensi model menggunakan metrik Amazon. CloudWatch [Metrik pemanggilan titik akhir SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-endpoint-invocation) dapat memberi Anda informasi berharga tentang kinerja titik akhir Anda.

## CI/CD untuk penerapan model
<a name="deploy-model-next-steps-cicd"></a>

Untuk mengumpulkan solusi pembelajaran mesin dalam SageMaker AI, Anda dapat menggunakan [SageMaker AI MLOps](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects.html). Anda dapat menggunakan fitur ini untuk mengotomatiskan langkah-langkah dalam alur kerja pembelajaran mesin Anda dan berlatih CI/CD. Anda dapat menggunakan [Template MLOps Proyek](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-templates.html) untuk membantu penyiapan dan implementasi MLOps proyek SageMaker AI. SageMaker AI juga mendukung penggunaan [repo Git pihak ketiga](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-walkthrough-3rdgit.html) Anda sendiri untuk membuat CI/CD sistem.

Untuk pipeline ML Anda, gunakan [Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html) untuk mengelola versi model serta penerapan serta otomatisasi model Anda.

## Pagar pembatas penyebaran
<a name="deploy-model-next-steps-guardrails"></a>

Jika Anda ingin memperbarui model Anda saat sedang dalam produksi tanpa memengaruhi produksi, Anda dapat menggunakan pagar pembatas penerapan. Pagar pembatas penerapan adalah serangkaian opsi penerapan model dalam Inferensi SageMaker AI untuk memperbarui model pembelajaran mesin Anda dalam produksi. Dengan menggunakan opsi penerapan yang dikelola sepenuhnya, Anda dapat mengontrol sakelar dari model saat ini dalam produksi ke yang baru. Mode perpindahan lalu lintas memberi Anda kontrol terperinci atas proses perpindahan lalu lintas, dan perlindungan bawaan seperti rollback otomatis membantu Anda menangkap masalah sejak dini. 

Untuk mempelajari selengkapnya tentang pagar pembatas penerapan, lihat dokumentasi pagar pembatas [penerapan](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails.html).

## Inferensia
<a name="deploy-model-next-steps-inferentia"></a>

Jika Anda perlu menjalankan pembelajaran mesin skala besar dan aplikasi pembelajaran mendalam, Anda dapat menggunakan `Inf1` instance dengan titik akhir waktu nyata. Jenis instance ini cocok untuk kasus penggunaan seperti pengenalan gambar atau ucapan, pemrosesan bahasa alami (NLP), personalisasi, peramalan, atau deteksi penipuan.

`Inf1`instance dibangun untuk mendukung aplikasi inferensi pembelajaran mesin dan menampilkan chip AWS Inferentia. `Inf1`Instans memberikan throughput yang lebih tinggi dan biaya per inferensi yang lebih rendah daripada instans berbasis GPU.

Untuk menerapkan model pada `Inf1` instance, kompilasi model Anda dengan SageMaker Neo dan pilih `Inf1` instance untuk opsi penerapan Anda. Untuk mempelajari lebih lanjut, lihat [Mengoptimalkan kinerja model menggunakan SageMaker Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html).

## Optimalkan kinerja model
<a name="deploy-model-next-steps-optimize"></a>

SageMaker AI menyediakan fitur untuk mengelola sumber daya dan mengoptimalkan kinerja inferensi saat menerapkan model pembelajaran mesin. Anda dapat menggunakan [algoritme bawaan SageMaker AI dan model pra-bangun](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html), serta [gambar Docker bawaan](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-prebuilt.html), yang dikembangkan untuk pembelajaran mesin.

Untuk melatih model dan mengoptimalkannya untuk penerapan, lihat [gambar Docker bawaan](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-prebuilt.html) [Mengoptimalkan kinerja model](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) menggunakan Neo. SageMaker Dengan SageMaker Neo, Anda dapat melatih TensorFlow, Apache MXNet, PyTorch, ONNX, dan model. XGBoost Kemudian, Anda dapat mengoptimalkannya dan menerapkannya pada prosesor ARM, Intel, dan Nvidia.

## Penskalaan otomatis
<a name="deploy-model-next-steps-autoscaling"></a>

Jika Anda memiliki jumlah lalu lintas yang bervariasi ke titik akhir Anda, Anda mungkin ingin mencoba penskalaan otomatis. Misalnya, selama jam sibuk, Anda mungkin memerlukan lebih banyak instance untuk memproses permintaan. Namun, selama periode lalu lintas rendah, Anda mungkin ingin mengurangi penggunaan sumber daya komputasi. Untuk menyesuaikan jumlah instans yang disediakan secara dinamis sebagai respons terhadap perubahan beban kerja Anda, lihat. [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md)

Jika Anda memiliki pola lalu lintas yang tidak dapat diprediksi atau tidak ingin menyiapkan kebijakan penskalaan, Anda juga dapat menggunakan Inferensi Tanpa Server untuk titik akhir. Kemudian, SageMaker AI mengelola penskalaan otomatis untuk Anda. Selama periode lalu lintas rendah, SageMaker AI menurunkan titik akhir Anda, dan jika lalu lintas meningkat, maka SageMaker AI meningkatkan titik akhir Anda. Untuk informasi lebih lanjut, lihat [Terapkan model dengan Inferensi Tanpa SageMaker Server Amazon](serverless-endpoints.md) dokumentasi.

# Buat model di Amazon SageMaker AI dengan ModelBuilder
<a name="how-it-works-modelbuilder-creation"></a>

Mempersiapkan model Anda untuk penerapan pada titik akhir SageMaker AI memerlukan beberapa langkah, termasuk memilih gambar model, menyiapkan konfigurasi titik akhir, mengkodekan fungsi serialisasi dan deserialisasi Anda untuk mentransfer data ke dan dari server dan klien, mengidentifikasi dependensi model, dan mengunggahnya ke Amazon S3. `ModelBuilder`dapat mengurangi kompleksitas penyiapan dan penerapan awal untuk membantu Anda membuat model yang dapat diterapkan dalam satu langkah.

`ModelBuilder`melakukan tugas-tugas berikut untuk Anda: 
+ Mengonversi model pembelajaran mesin yang dilatih menggunakan berbagai kerangka kerja seperti XGBoost atau PyTorch menjadi model yang dapat diterapkan dalam satu langkah.
+ Melakukan pemilihan kontainer otomatis berdasarkan kerangka model sehingga Anda tidak perlu menentukan penampung secara manual. Anda masih dapat membawa kontainer Anda sendiri dengan meneruskan URI Anda sendiri ke`ModelBuilder`.
+ Menangani serialisasi data di sisi klien sebelum mengirimnya ke server untuk inferensi dan deserialisasi hasil yang dikembalikan oleh server. Data diformat dengan benar tanpa pemrosesan manual.
+ Memungkinkan pengambilan dependensi secara otomatis dan mengemas model sesuai dengan harapan server model. `ModelBuilder`penangkapan dependensi otomatis adalah pendekatan upaya terbaik untuk memuat dependensi secara dinamis. (Kami menyarankan Anda menguji pengambilan otomatis secara lokal dan memperbarui dependensi untuk memenuhi kebutuhan Anda.)
+ Untuk kasus penggunaan model bahasa besar (LLM), secara opsional melakukan penyetelan parameter lokal dari properti penyajian yang dapat digunakan untuk kinerja yang lebih baik saat menghosting pada titik akhir AI. SageMaker 
+ Mendukung sebagian besar server model populer dan kontainer seperti TorchServe, Triton, DJLServing dan kontainer TGI.

## Membangun model Anda dengan ModelBuilder
<a name="how-it-works-modelbuilder-creation-mb"></a>

`ModelBuilder`adalah kelas Python yang mengambil model kerangka kerja, seperti XGBoost atau PyTorch, atau spesifikasi inferensi yang ditentukan pengguna dan mengubahnya menjadi model deployable. `ModelBuilder`menyediakan fungsi build yang menghasilkan artefak untuk penerapan. Artefak model yang dihasilkan khusus untuk server model, yang juga dapat Anda tentukan sebagai salah satu input. Untuk detail lebih lanjut tentang `ModelBuilder` kelas, lihat [ModelBuilder](https://sagemaker.readthedocs.io/en/stable/api/inference/model_builder.html#sagemaker.serve.builder.model_builder.ModelBuilder).

Diagram berikut menggambarkan keseluruhan alur kerja pembuatan model saat Anda menggunakan. `ModelBuilder` `ModelBuilder`menerima spesifikasi model atau inferensi bersama dengan skema Anda untuk membuat model yang dapat diterapkan yang dapat Anda uji secara lokal sebelum penerapan.

![\[Pembuatan model dan alur penerapan menggunakanModelBuilder.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-builder-flow.png)


`ModelBuilder`dapat menangani kustomisasi apa pun yang ingin Anda terapkan. Namun, untuk menerapkan model kerangka kerja, pembuat model mengharapkan setidaknya model, input dan output sampel, dan peran. Dalam contoh kode berikut, `ModelBuilder` dipanggil dengan model kerangka kerja dan instance `SchemaBuilder` dengan argumen minimum (untuk menyimpulkan fungsi yang sesuai untuk serialisasi dan deserialisasi input dan output endpoint). Tidak ada kontainer yang ditentukan dan tidak ada dependensi paket yang diteruskan— SageMaker AI secara otomatis menyimpulkan sumber daya ini saat Anda membuat model Anda. 

```
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder

model_builder = ModelBuilder(
    model=model,
    schema_builder=SchemaBuilder(input, output),
    role_arn="execution-role",
)
```

Contoh kode berikut dipanggil `ModelBuilder` dengan spesifikasi inferensi (sebagai `InferenceSpec` contoh) alih-alih model, dengan penyesuaian tambahan. Dalam hal ini, panggilan ke pembuat model menyertakan jalur untuk menyimpan artefak model dan juga mengaktifkan penangkapan otomatis semua dependensi yang tersedia. Untuk detail tambahan tentang`InferenceSpec`, lihat[Sesuaikan pemuatan model dan penanganan permintaan](#how-it-works-modelbuilder-creation-is).

```
model_builder = ModelBuilder(
    mode=Mode.LOCAL_CONTAINER,
    model_path=model-artifact-directory,
    inference_spec=your-inference-spec,
    schema_builder=SchemaBuilder(input, output),
    role_arn=execution-role,
    dependencies={"auto": True}
)
```

## Tentukan metode serialisasi dan deserialisasi
<a name="how-it-works-modelbuilder-creation-sb"></a>

Saat menjalankan titik akhir SageMaker AI, data dikirim melalui muatan HTTP dengan tipe MIME yang berbeda. Misalnya, gambar yang dikirim ke titik akhir untuk inferensi perlu dikonversi ke byte di sisi klien dan dikirim melalui payload HTTP ke titik akhir. Ketika titik akhir menerima payload, ia perlu deserialisasi string byte kembali ke tipe data yang diharapkan oleh model (juga dikenal sebagai deserialisasi sisi server). Setelah model menyelesaikan prediksi, hasilnya juga perlu diserialisasikan ke byte yang dapat dikirim kembali melalui payload HTTP ke pengguna atau klien. Setelah klien menerima data byte respons, klien perlu melakukan deserialisasi sisi klien untuk mengonversi data byte kembali ke format data yang diharapkan, seperti JSON. Minimal, Anda perlu mengonversi data untuk tugas-tugas berikut:

1. Serialisasi permintaan inferensi (ditangani oleh klien)

1. Deserialisasi permintaan inferensi (ditangani oleh server atau algoritma)

1. Memanggil model terhadap muatan dan mengirim muatan respons kembali

1. Serialisasi respons inferensi (ditangani oleh server atau algoritma)

1. Deserialisasi respons inferensi (ditangani oleh klien)

Diagram berikut menunjukkan proses serialisasi dan deserialisasi yang terjadi saat Anda memanggil titik akhir.

![\[Diagram serialisasi dan deserialisasi data klien ke server.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model-builder-serialization.png)


Saat Anda memasok input dan output sampel ke`SchemaBuilder`, pembuat skema menghasilkan fungsi penyusunan yang sesuai untuk membuat serial dan deserialisasi input dan output. Anda dapat lebih lanjut menyesuaikan fungsi serialisasi Anda dengan`CustomPayloadTranslator`. Tetapi untuk kebanyakan kasus, serializer sederhana seperti berikut ini akan berfungsi:

```
input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)
```

Untuk detail lebih lanjut tentang`SchemaBuilder`, lihat [SchemaBuilder](https://sagemaker.readthedocs.io/en/stable/api/inference/model_builder.html#sagemaker.serve.builder.schema_builder.SchemaBuilder).

Cuplikan kode berikut menguraikan contoh di mana Anda ingin menyesuaikan fungsi serialisasi dan deserialisasi di sisi klien dan server. Anda dapat menentukan penerjemah permintaan dan tanggapan Anda sendiri `CustomPayloadTranslator` dan meneruskan penerjemah ini ke. `SchemaBuilder`

Dengan memasukkan input dan output dengan penerjemah, pembuat model dapat mengekstrak format data yang diharapkan model. Misalnya, input sampel adalah gambar mentah, dan penerjemah khusus Anda memotong gambar dan mengirim gambar yang dipotong ke server sebagai tensor. `ModelBuilder`membutuhkan input mentah dan kode pra-pemrosesan atau pasca-pemrosesan khusus untuk memperoleh metode untuk mengonversi data di sisi klien dan server.

```
from sagemaker.serve import CustomPayloadTranslator

# request translator
class MyRequestTranslator(CustomPayloadTranslator):
    # This function converts the payload to bytes - happens on client side
    def serialize_payload_to_bytes(self, payload: object) -> bytes:
        # converts the input payload to bytes
        ... ...
        return  //return object as bytes

    # This function converts the bytes to payload - happens on server side
    def deserialize_payload_from_stream(self, stream) -> object:
        # convert bytes to in-memory object
        ... ...
        return //return in-memory object

# response translator
class MyResponseTranslator(CustomPayloadTranslator):
    # This function converts the payload to bytes - happens on server side
    def serialize_payload_to_bytes(self, payload: object) -> bytes:
        # converts the response payload to bytes
        ... ...
        return //return object as bytes

    # This function converts the bytes to payload - happens on client side
    def deserialize_payload_from_stream(self, stream) -> object:
        # convert bytes to in-memory object
        ... ...
        return //return in-memory object
```

Anda meneruskan input dan output sampel bersama dengan penerjemah kustom yang ditentukan sebelumnya saat Anda membuat `SchemaBuilder` objek, seperti yang ditunjukkan pada contoh berikut:

```
my_schema = SchemaBuilder(
    sample_input=image,
    sample_output=output,
    input_translator=MyRequestTranslator(),
    output_translator=MyResponseTranslator()
)
```

Kemudian Anda meneruskan input dan output sampel, bersama dengan penerjemah khusus yang ditentukan sebelumnya, ke objek. `SchemaBuilder` 

```
my_schema = SchemaBuilder(
    sample_input=image,
    sample_output=output,
    input_translator=MyRequestTranslator(),
    output_translator=MyResponseTranslator()
)
```

Bagian berikut menjelaskan secara rinci cara membangun model Anda `ModelBuilder` dan menggunakan kelas pendukungnya untuk menyesuaikan pengalaman untuk kasus penggunaan Anda.

**Topics**
+ [Membangun model Anda dengan ModelBuilder](#how-it-works-modelbuilder-creation-mb)
+ [Tentukan metode serialisasi dan deserialisasi](#how-it-works-modelbuilder-creation-sb)
+ [Sesuaikan pemuatan model dan penanganan permintaan](#how-it-works-modelbuilder-creation-is)
+ [Bangun model Anda dan terapkan](#how-it-works-modelbuilder-creation-deploy)
+ [Bawa wadah Anda sendiri (BYOC)](#how-it-works-modelbuilder-creation-mb-byoc)
+ [Menggunakan ModelBuilder dalam mode lokal](#how-it-works-modelbuilder-creation-local)
+ [ModelBuilder contoh](#how-it-works-modelbuilder-creation-example)

## Sesuaikan pemuatan model dan penanganan permintaan
<a name="how-it-works-modelbuilder-creation-is"></a>

Memberikan kode inferensi Anda sendiri melalui `InferenceSpec` menawarkan lapisan penyesuaian tambahan. Dengan`InferenceSpec`, Anda dapat menyesuaikan cara model dimuat dan cara menangani permintaan inferensi yang masuk, melewati pemuatan default dan mekanisme penanganan inferensi. Fleksibilitas ini sangat bermanfaat ketika bekerja dengan model non-standar atau pipa inferensi khusus. Anda dapat menyesuaikan `invoke` metode untuk mengontrol bagaimana model memproses dan pasca-proses permintaan masuk. `invoke`Metode ini memastikan bahwa model menangani permintaan inferensi dengan benar. Contoh berikut digunakan `InferenceSpec` untuk menghasilkan model dengan HuggingFace pipa. Untuk detail lebih lanjut tentang`InferenceSpec`, lihat [InferenceSpec](https://sagemaker.readthedocs.io/en/stable/api/inference/model_builder.html#sagemaker.serve.spec.inference_spec.InferenceSpec).

```
from sagemaker.serve.spec.inference_spec import InferenceSpec
from transformers import pipeline

class MyInferenceSpec(InferenceSpec):
    def load(self, model_dir: str):
        return pipeline("translation_en_to_fr", model="t5-small")

    def invoke(self, input, model):
        return model(input)

inf_spec = MyInferenceSpec()

model_builder = ModelBuilder(
    inference_spec=your-inference-spec,
    schema_builder=SchemaBuilder(X_test, y_pred)
)
```

Contoh berikut menggambarkan variasi yang lebih disesuaikan dari contoh sebelumnya. Sebuah model didefinisikan dengan spesifikasi inferensi yang memiliki dependensi. Dalam hal ini, kode dalam spesifikasi inferensi tergantung pada paket *lang-segment*. Argumen untuk `dependencies` berisi pernyataan yang mengarahkan pembangun untuk menginstal *lang-segment menggunakan Git*. Karena pembuat model diarahkan oleh pengguna untuk menginstal dependensi secara kustom, `auto` kuncinya adalah mematikan `False` penangkapan otomatis dependensi.

```
model_builder = ModelBuilder(
    mode=Mode.LOCAL_CONTAINER,
    model_path=model-artifact-directory,
    inference_spec=your-inference-spec,
    schema_builder=SchemaBuilder(input, output),
    role_arn=execution-role,
    dependencies={"auto": False, "custom": ["-e git+https://github.com/luca-medeiros/lang-segment-anything.git#egg=lang-sam"],}
)
```

## Bangun model Anda dan terapkan
<a name="how-it-works-modelbuilder-creation-deploy"></a>

Panggil `build` fungsi untuk membuat model deployable Anda. Langkah ini membuat kode inferensi (as`inference.py`) di direktori kerja Anda dengan kode yang diperlukan untuk membuat skema Anda, menjalankan serialisasi dan deserialisasi input dan output, dan menjalankan logika kustom yang ditentukan pengguna lainnya.

Sebagai pemeriksaan integritas, SageMaker AI mengemas dan mengasinkan file yang diperlukan untuk penerapan sebagai bagian dari fungsi `ModelBuilder` build. Selama proses ini, SageMaker AI juga membuat penandatanganan HMAC untuk file pickle dan menambahkan kunci rahasia di [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API sebagai variabel lingkungan selama `deploy` (atau`create`). Peluncuran endpoint menggunakan variabel lingkungan untuk memvalidasi integritas file pickle.

```
# Build the model according to the model server specification and save it as files in the working directory
model = model_builder.build()
```

Terapkan model Anda dengan `deploy` metode model yang ada. Pada langkah ini, SageMaker AI menyiapkan titik akhir untuk meng-host model Anda saat mulai membuat prediksi pada permintaan yang masuk. Meskipun `ModelBuilder` menyimpulkan sumber daya titik akhir yang diperlukan untuk menerapkan model Anda, Anda dapat mengganti perkiraan tersebut dengan nilai parameter Anda sendiri. Contoh berikut mengarahkan SageMaker AI untuk menyebarkan model pada satu `ml.c6i.xlarge` instance. Model yang dibuat dari `ModelBuilder` memungkinkan pencatatan langsung selama penerapan sebagai fitur tambahan.

```
predictor = model.deploy(
    initial_instance_count=1,
    instance_type="ml.c6i.xlarge"
)
```

Jika Anda menginginkan kontrol yang lebih halus atas sumber daya titik akhir yang ditetapkan ke model Anda, Anda dapat menggunakan objek. `ResourceRequirements` Dengan `ResourceRequirements` objek, Anda dapat meminta jumlah minimum CPUs, akselerator, dan salinan model yang ingin Anda terapkan. Anda juga dapat meminta batas memori minimum dan maksimum (dalam MB). Untuk menggunakan fitur ini, Anda perlu menentukan jenis titik akhir Anda sebagai`EndpointType.INFERENCE_COMPONENT_BASED`. Contoh berikut meminta empat akselerator, ukuran memori minimum 1024 MB, dan satu salinan model Anda untuk digunakan ke titik akhir tipe. `EndpointType.INFERENCE_COMPONENT_BASED`

```
resource_requirements = ResourceRequirements(
    requests={
        "num_accelerators": 4,
        "memory": 1024,
        "copies": 1,
    },
    limits={},
)
predictor = model.deploy(
    mode=Mode.SAGEMAKER_ENDPOINT,
    endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED,
    resources=resource_requirements,
    role="role"
)
```

## Bawa wadah Anda sendiri (BYOC)
<a name="how-it-works-modelbuilder-creation-mb-byoc"></a>

Jika Anda ingin membawa wadah Anda sendiri (diperpanjang dari wadah SageMaker AI), Anda juga dapat menentukan URI gambar seperti yang ditunjukkan pada contoh berikut. Anda juga perlu mengidentifikasi server model yang sesuai dengan gambar `ModelBuilder` untuk menghasilkan artefak khusus untuk server model.

```
model_builder = ModelBuilder(
    model=model,
    model_server=ModelServer.TORCHSERVE,
    schema_builder=SchemaBuilder(X_test, y_pred),
    image_uri="123123123123.dkr.ecr.ap-southeast-2.amazonaws.com/byoc-image:xgb-1.7-1")
)
```

## Menggunakan ModelBuilder dalam mode lokal
<a name="how-it-works-modelbuilder-creation-local"></a>

Anda dapat menerapkan model Anda secara lokal dengan menggunakan `mode` argumen untuk beralih antara pengujian lokal dan penerapan ke titik akhir. Anda perlu menyimpan artefak model di direktori kerja, seperti yang ditunjukkan pada cuplikan berikut:

```
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")
```

Lewati objek model, `SchemaBuilder` instance, dan atur mode ke`Mode.LOCAL_CONTAINER`. Saat Anda memanggil `build` fungsi, `ModelBuilder` secara otomatis mengidentifikasi wadah kerangka kerja yang didukung dan memindai dependensi. Contoh berikut menunjukkan pembuatan model dengan XGBoost model dalam mode lokal.

```
model_builder_local = ModelBuilder(
    model=model,
    schema_builder=SchemaBuilder(X_test, y_pred),
    role_arn=execution-role,
    mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()
```

Panggil `deploy` fungsi untuk menyebarkan secara lokal, seperti yang ditunjukkan pada cuplikan berikut. Jika Anda menentukan parameter untuk tipe atau hitungan contoh, argumen ini diabaikan.

```
predictor_local = xgb_local_builder.deploy()
```

### Memecahkan masalah mode lokal
<a name="how-it-works-modelbuilder-creation-troubleshoot"></a>

Tergantung pada pengaturan lokal pribadi Anda, Anda mungkin mengalami kesulitan berjalan `ModelBuilder` dengan lancar di lingkungan Anda. Lihat daftar berikut untuk beberapa masalah yang mungkin Anda hadapi dan cara mengatasinya.
+ **Sudah digunakan**: Anda mungkin mengalami `Address already in use` kesalahan. Dalam hal ini, ada kemungkinan bahwa kontainer Docker berjalan pada port itu atau proses lain memanfaatkannya. Anda dapat mengikuti pendekatan yang diuraikan dalam [dokumentasi Linux](https://www.cyberciti.biz/faq/what-process-has-open-linux-port/) untuk mengidentifikasi proses dan dengan anggun mengarahkan proses lokal Anda dari port 8080 ke port lain atau membersihkan instance Docker.
+ **Masalah Izin IAM**: Anda mungkin mengalami masalah izin saat mencoba menarik gambar Amazon ECR atau mengakses Amazon S3. Dalam hal ini, navigasikan ke peran eksekusi notebook atau instans Studio Classic untuk memverifikasi kebijakan `SageMakerFullAccess` atau izin API masing-masing.
+ **Masalah kapasitas volume EBS**: Jika Anda menerapkan model bahasa besar (LLM), Anda mungkin kehabisan ruang saat menjalankan Docker dalam mode lokal atau mengalami batasan ruang untuk cache Docker. Dalam hal ini, Anda dapat mencoba memindahkan volume Docker Anda ke sistem file yang memiliki cukup ruang. Untuk memindahkan volume Docker Anda, selesaikan langkah-langkah berikut:

  1. Buka terminal dan jalankan `df` untuk menampilkan penggunaan disk, seperti yang ditunjukkan pada output berikut:

     ```
     (python3) sh-4.2$ df
     Filesystem     1K-blocks      Used Available Use% Mounted on
     devtmpfs       195928700         0 195928700   0% /dev
     tmpfs          195939296         0 195939296   0% /dev/shm
     tmpfs          195939296      1048 195938248   1% /run
     tmpfs          195939296         0 195939296   0% /sys/fs/cgroup
     /dev/nvme0n1p1 141545452 135242112   6303340  96% /
     tmpfs           39187860         0  39187860   0% /run/user/0
     /dev/nvme2n1   264055236  76594068 176644712  31% /home/ec2-user/SageMaker
     tmpfs           39187860         0  39187860   0% /run/user/1002
     tmpfs           39187860         0  39187860   0% /run/user/1001
     tmpfs           39187860         0  39187860   0% /run/user/1000
     ```

  1. Pindahkan direktori Docker default dari `/dev/nvme0n1p1` ke `/dev/nvme2n1` sehingga Anda dapat sepenuhnya memanfaatkan volume SageMaker AI 256 GB. Untuk detail selengkapnya, lihat dokumentasi tentang cara [memindahkan direktori Docker Anda](https://www.guguweb.com/2019/02/07/how-to-move-docker-data-directory-to-another-location-on-ubuntu/).

  1. Hentikan Docker dengan perintah berikut:

     ```
     sudo service docker stop
     ```

  1. Tambahkan `daemon.json` ke `/etc/docker` atau tambahkan gumpalan JSON berikut ke yang sudah ada.

     ```
     {
         "data-root": "/home/ec2-user/SageMaker/{created_docker_folder}"
     }
     ```

  1. Pindahkan direktori Docker `/var/lib/docker` ke `/home/ec2-user/SageMaker AI` dengan perintah berikut:

     ```
     sudo rsync -aP /var/lib/docker/ /home/ec2-user/SageMaker/{created_docker_folder}
     ```

  1. Mulai Docker dengan perintah berikut:

     ```
     sudo service docker start
     ```

  1. Bersihkan sampah dengan perintah berikut:

     ```
     cd /home/ec2-user/SageMaker/.Trash-1000/files/*
     sudo rm -r *
     ```

  1. Jika Anda menggunakan instance SageMaker notebook, Anda dapat mengikuti langkah-langkah dalam [file persiapan Docker](https://github.com/melanie531/amazon-sagemaker-pytorch-lightning-distributed-training/blob/main/prepare-docker.sh) untuk mempersiapkan Docker untuk mode lokal.

## ModelBuilder contoh
<a name="how-it-works-modelbuilder-creation-example"></a>

Untuk contoh penggunaan lainnya `ModelBuilder` untuk membuat model Anda, lihat [ModelBuildercontoh buku catatan](https://github.com/aws-samples/sagemaker-hosting/blob/main/SageMaker-Model-Builder).

# Optimalisasi inferensi untuk model Amazon SageMaker AI
<a name="model-optimize"></a>

Dengan Amazon SageMaker AI, Anda dapat meningkatkan kinerja model AI generatif Anda dengan menerapkan teknik pengoptimalan inferensi. Dengan mengoptimalkan model Anda, Anda dapat mencapai kinerja biaya yang lebih baik untuk kasus penggunaan Anda. Saat mengoptimalkan model, Anda memilih teknik pengoptimalan yang didukung untuk diterapkan, termasuk kuantisasi, decoding spekulatif, dan kompilasi. Setelah model dioptimalkan, Anda dapat menjalankan evaluasi untuk melihat metrik kinerja untuk latensi, throughput, dan harga.

Untuk banyak model, SageMaker AI juga menyediakan beberapa versi yang telah dioptimalkan sebelumnya, di mana masing-masing memenuhi kebutuhan aplikasi yang berbeda untuk latensi dan throughput. Untuk model seperti itu, Anda dapat menggunakan salah satu versi yang dioptimalkan tanpa terlebih dahulu mengoptimalkan model sendiri.

## Teknik pengoptimalan
<a name="optimization-techniques"></a>

Amazon SageMaker AI mendukung teknik pengoptimalan berikut.

### Kompilasi
<a name="compilation"></a>

*Kompilasi* mengoptimalkan model untuk kinerja terbaik yang tersedia pada jenis perangkat keras yang dipilih tanpa kehilangan akurasi. Anda dapat menerapkan kompilasi model LLMs untuk mengoptimalkan perangkat keras yang dipercepat, seperti instans GPU, instans AWS Trainium, atau instans Inferentia. AWS 

Saat Anda mengoptimalkan model dengan kompilasi, Anda mendapat manfaat dari ahead-of-time kompilasi. Anda mengurangi waktu penerapan model dan latensi auto-scaling karena bobot model tidak just-in-time memerlukan kompilasi saat model diterapkan ke instance baru.

Jika Anda memilih untuk mengkompilasi model Anda untuk instance GPU, SageMaker AI menggunakan pustaka Tensorrt-LLM untuk menjalankan kompilasi. Jika Anda memilih untuk mengkompilasi model Anda untuk instance AWS Trainium atau AWS Inferentia, SageMaker AI menggunakan AWS Neuron SDK untuk menjalankan kompilasi.

### Kuantisasi
<a name="quantization"></a>

*Kuantisasi* adalah teknik untuk mengurangi persyaratan perangkat keras model dengan menggunakan tipe data yang kurang tepat untuk bobot dan aktivasi. Setelah Anda mengoptimalkan model dengan kuantisasi, Anda dapat menghostingnya dengan harga yang lebih murah dan lebih tersedia. GPUs Namun, model terkuantisasi mungkin kurang akurat dibandingkan model sumber yang Anda optimalkan. 

Format data yang didukung SageMaker AI untuk kuantisasi bervariasi dari model ke model. Format yang didukung meliputi:
+ INT4-AWQ — Format data 4-bit. Activation-aware Weight Quantization (AWQ) adalah teknik kuantisasi yang efisien, akurat, bit LLMs rendah, dan hanya berat.
+ FP8 — 8-bit Floating Point (FP8) adalah format presisi rendah untuk angka floating point. Ini menyeimbangkan efisiensi memori dan akurasi model dengan mewakili nilai dengan bit lebih sedikit dari format FP16 floating point standar.
+ INT8- SmoothQuant — Sebuah format data 8-bit. SmoothQuant adalah metode kuantisasi presisi campuran yang menskalakan aktivasi dan bobot secara bersama-sama dengan menyeimbangkan rentang dinamisnya.

### Penguraian spekulatif
<a name="speculative-decoding"></a>

*Decoding spekulatif* adalah teknik untuk mempercepat proses decoding besar. LLMs Ini mengoptimalkan model untuk latensi tanpa mengorbankan kualitas teks yang dihasilkan.

Teknik ini menggunakan model yang lebih kecil namun lebih cepat yang disebut model *draft*. Model draf menghasilkan token kandidat, yang kemudian divalidasi oleh model *target* yang lebih besar tetapi lebih lambat. Pada setiap iterasi, model draf menghasilkan beberapa token kandidat. Model target memverifikasi token, dan jika menemukan bahwa token tertentu tidak dapat diterima, ia menolak token dan meregenerasinya. Jadi, model target memverifikasi token dan menghasilkan sejumlah kecil token.

Model draf secara signifikan lebih cepat daripada model target. Ini menghasilkan semua token dengan cepat dan kemudian mengirimkan batch mereka ke model target untuk verifikasi. Model target mengevaluasi semuanya secara paralel, yang mempercepat respons akhir.

SageMaker AI menawarkan model draft pre-built yang dapat Anda gunakan, jadi Anda tidak perlu membuatnya sendiri. Jika Anda lebih suka menggunakan model draf khusus Anda sendiri, SageMaker AI juga mendukung opsi ini.

### Pemuatan model cepat
<a name="fast-model-loading"></a>

Teknik *pemuatan model cepat* menyiapkan LLM sehingga SageMaker AI dapat memuatnya ke instance HTML lebih cepat.

Untuk mempersiapkan model, SageMaker AI memecahnya terlebih dahulu dengan membaginya menjadi beberapa bagian yang masing-masing dapat berada pada GPU terpisah untuk inferensi terdistribusi. Selain itu, SageMaker AI menyimpan bobot model dalam potongan berukuran sama yang dapat dimuat SageMaker AI ke instance secara bersamaan.

Saat SageMaker AI memuat model yang dioptimalkan ke instance, AI mengalirkan bobot model langsung dari Amazon S3 ke GPUs instance. Dengan mengalirkan bobot, SageMaker AI menghilangkan beberapa langkah yang memakan waktu yang biasanya diperlukan. Langkah-langkah ini termasuk mengunduh artefak model dari Amazon S3 ke disk, memuat artefak model ke memori host, dan membagi model pada host sebelum akhirnya memuat pecahan ke file. GPUs

Setelah mengoptimalkan model untuk pemuatan yang lebih cepat, Anda dapat menerapkannya lebih cepat ke titik akhir SageMaker AI. Selain itu, jika Anda mengonfigurasi titik akhir untuk menggunakan penskalaan otomatis, penskalaan akan lebih cepat untuk mengakomodasi peningkatan lalu lintas.

# Terapkan model yang telah dioptimalkan sebelumnya
<a name="model-optimize-preoptimized"></a>

Beberapa model telah JumpStart dioptimalkan sebelumnya oleh SageMaker AI, yang berarti Anda dapat menerapkan versi yang dioptimalkan dari model ini tanpa terlebih dahulu membuat pekerjaan pengoptimalan inferensi. 

Untuk daftar model dengan opsi yang telah dioptimalkan sebelumnya, lihat[Model pra-dioptimalkan JumpStart](#pre-optimized-js).

## SageMaker Studio Amazon
<a name="preoptimized-studio"></a>

Gunakan prosedur berikut untuk menerapkan JumpStart model yang telah dioptimalkan sebelumnya menggunakan Amazon SageMaker Studio.

**Untuk menerapkan model yang telah dioptimalkan sebelumnya**

1. Di Studio, di menu navigasi di sebelah kiri, pilih **JumpStart**.

1. Pada halaman **Semua model publik**, pilih salah satu model yang telah dioptimalkan sebelumnya.

1. Pada halaman detail model, pilih **Deploy**.

1. Pada halaman penerapan, beberapa JumpStart model mengharuskan Anda untuk menandatangani perjanjian lisensi pengguna akhir (EULA) sebelum Anda dapat melanjutkan. Jika diminta, tinjau persyaratan lisensi di bagian **Perjanjian Lisensi**. Jika persyaratan dapat diterima untuk kasus penggunaan Anda, pilih kotak centang untuk **Saya menerima EULA, dan baca syarat dan ketentuan**.

   Untuk informasi selengkapnya, lihat [Perjanjian lisensi pengguna akhir](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula).

1. Untuk **nama Endpoint** dan **jumlah instans awal**, terima nilai default atau setel yang kustom.

1. Untuk **tipe Instance**, pertahankan nilai default. Jika tidak, Anda tidak dapat menerapkan konfigurasi yang telah dioptimalkan sebelumnya.

1. Di bawah **Model**, perluas konfigurasi model. Studio menampilkan tabel yang menyediakan konfigurasi yang telah dioptimalkan sebelumnya yang dapat Anda pilih. Setiap opsi memiliki metrik untuk latensi dan throughput. Pilih opsi yang paling sesuai dengan kebutuhan aplikasi Anda.

1. Pilih **Deploy**.

## SageMaker SDK Python AI
<a name="preoptimized-sdk"></a>

Anda dapat menerapkan model yang telah dioptimalkan sebelumnya dengan menggunakan AI SageMaker Python SDK dalam proyek Anda. Pertama, Anda mendefinisikan sebuah `Model` instance dengan menggunakan `ModelBuilder` kelas. Kemudian, Anda menggunakan `set_deployment_config()` metode untuk mengatur konfigurasi yang telah dioptimalkan sebelumnya yang ingin Anda terapkan. Kemudian, Anda menggunakan `build()` metode untuk membangun model. Akhirnya, Anda menggunakan `deploy()` metode untuk menerapkannya ke titik akhir inferensi.

Untuk informasi selengkapnya tentang kelas dan metode yang digunakan dalam contoh berikut, lihat [APIs](https://sagemaker.readthedocs.io/en/stable/api/index.html)di dokumentasi SageMaker AI Python SDK.

**Untuk menyiapkan proyek Anda**

1. Dalam kode aplikasi Anda, impor pustaka yang diperlukan. Contoh berikut mengimpor SDK untuk Python (Boto3). Ini juga mengimpor modul dari SageMaker AI Python SDK yang Anda gunakan untuk mendefinisikan dan bekerja dengan model:

   ```
   import boto3
   from sagemaker.serve.builder.model_builder import ModelBuilder
   from sagemaker.serve.builder.schema_builder import SchemaBuilder
   from sagemaker.session import Session
   ```

1. Inisialisasi sesi SageMaker AI. Contoh berikut menggunakan `Session()` kelas:

   ```
   sagemaker_session = Session()
   ```

**Untuk menentukan model Anda**

1. Buat `SchemaBuilder` instance, dan berikan sampel input dan output. Anda menyediakan instance ini ke `ModelBuilder` kelas ketika Anda mendefinisikan model. Dengan itu, SageMaker AI secara otomatis menghasilkan fungsi marshalling untuk membuat serial dan deserialisasi input dan output.

   Untuk informasi selengkapnya tentang penggunaan `SchemaBuilder` dan `ModelBuilder` kelas, lihat[Buat model di Amazon SageMaker AI dengan ModelBuilder](how-it-works-modelbuilder-creation.md).

   Contoh berikut memberikan sampel input dan output string ke `SchemaBuilder` kelas:

   ```
   response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun."
   sample_input = {
       "inputs": "What is the largest planet in the solar system?",
       "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6},
   }
   sample_output = [{"generated_text": response}]
   schema_builder = SchemaBuilder(sample_input, sample_output)
   ```

1. Tentukan model Anda ke SageMaker AI. Contoh berikut menetapkan parameter untuk menginisialisasi `ModelBuilder` instance:

   ```
   model_builder = ModelBuilder(
       model="jumpstart-model-id",
       schema_builder=schema_builder,
       sagemaker_session=sagemaker_session,
       role_arn=sagemaker_session.get_caller_identity_arn(),
   )
   ```

   Contoh ini menggunakan JumpStart model. Ganti `jumpstart-model-id` dengan ID JumpStart model, seperti`meta-textgeneration-llama-3-70b`.

**Untuk mengambil metrik benchmark**

1. Untuk menentukan konfigurasi pra-optimasi mana yang ingin Anda terapkan, cari opsi yang disediakan SageMaker AI. Contoh berikut menampilkannya:

   ```
   model_builder.display_benchmark_metrics()
   ```

   `display_benchmark_metrics()`Metode ini mencetak tabel seperti berikut:

   ```
   | Instance Type   | Config Name   |   Concurrent Users |   Latency, TTFT (P50 in sec) |   Throughput (P50 in tokens/sec/user) |
   |:----------------|:--------------|-------------------:|-----------------------------:|--------------------------------------:|
   | ml.g5.48xlarge  | lmi-optimized |                  1 |                         2.25 |                                 49.70 |
   | ml.g5.48xlarge  | lmi-optimized |                  2 |                         2.28 |                                 21.10 |
   | ml.g5.48xlarge  | lmi-optimized |                  4 |                         2.37 |                                 14.10 |
   . . .
   | ml.p4d.24xlarge | lmi-optimized |                  1 |                         0.10 |                                137.40 |
   | ml.p4d.24xlarge | lmi-optimized |                  2 |                         0.11 |                                109.20 |
   | ml.p4d.24xlarge | lmi-optimized |                  4 |                         0.13 |                                 85.00 |
   . . .
   ```

   Di kolom pertama, tabel mencantumkan jenis instance potensial yang dapat Anda gunakan untuk meng-host JumpStart model yang Anda pilih. Untuk setiap jenis instance, di bawah`Config Name`, ini mencantumkan nama konfigurasi yang telah dioptimalkan sebelumnya. Konfigurasi yang disediakan SageMaker AI diberi nama`lmi-optimized`. Untuk setiap jenis dan konfigurasi instans, tabel menyediakan metrik benchmark. Metrik ini menunjukkan throughput dan latensi yang akan didukung model Anda untuk jumlah pengguna bersamaan yang berbeda.

1. Berdasarkan metrik benchmark, pilih jenis instans dan nama konfigurasi yang paling mendukung kebutuhan kinerja Anda. Anda akan menggunakan nilai-nilai ini ketika Anda membuat konfigurasi penerapan.

**Untuk menerapkan model yang telah dioptimalkan sebelumnya**

1. Buat konfigurasi penerapan. Contoh berikut menggunakan `ModelBuilder` contoh. Ini meneruskan tipe instance dan nama konfigurasi ke `set_deployment_config()` metode:

   ```
   model_builder.set_deployment_config(
       config_name="config-name", 
       instance_type="instance-type",
   )
   ```

   Ganti *`config-name`* dengan nama konfigurasi dari tabel, seperti seperti`lmi-optimized`. Ganti `instance-type` dengan tipe instance dari tabel, seperti`ml.p4d.24xlarge`.

1. Bangun model Anda. Contoh berikut menggunakan `.build()` metode `ModelBuilder` instance:

   ```
   optimized_model = model_builder.build()
   ```

   `.build()`Metode mengembalikan instance deployable`Model`.

1. Terapkan model Anda ke titik akhir inferensi. Contoh berikut menggunakan `.deploy()` metode `Model` instance:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan `Predictor` instance, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke model.

**Untuk menguji model Anda dengan permintaan inferensi**
+ Setelah Anda menerapkan model Anda ke titik akhir inferensi, uji prediksi model. Contoh berikut mengirimkan permintaan inferensi dengan menggunakan `Predictor` instance:

  ```
  predictor.predict(sample_input)
  ```

  Model mengembalikan teks yang dihasilkannya dengan respons seperti berikut:

  ```
  {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}
  ```

## Model pra-dioptimalkan JumpStart
<a name="pre-optimized-js"></a>

Berikut ini adalah JumpStart model yang memiliki konfigurasi yang telah dioptimalkan sebelumnya.

**Meta**
+ Instruksi Llama 3.1 70B
+ Llama 3.1 70B
+ Instruksi Llama 3.1 405B FP8
+ Llama 3.1 405B FP8
+ Instruksi Llama 3 8B
+ Llama 3 8B
+ Instruksi Llama 3 70B
+ Llama 3 70B
+ Llama 2 70B Obrolan
+ Llama 2 7B Obrolan
+ Llama 2 13B Obrolan

**HuggingFace**
+ Instruksi Mixtral 8x7B
+ Mixtral 8x7B
+ Instruksi Mistral 7B
+ Mistral 7B

### Model pra-kompilasi JumpStart
<a name="pre-compiled"></a>

Untuk beberapa model dan konfigurasi, SageMaker AI menyediakan model yang telah dikompilasi sebelumnya untuk instans AWS Inferentia dan AWS Trainium tertentu. Untuk ini, jika Anda membuat pekerjaan pengoptimalan kompilasi, dan Anda memilih ml.inf2.48xlarge atau ml.trn1.32xlarge sebagai jenis instance penerapan, AI mengambil artefak yang dikompilasi. SageMaker Karena pekerjaan menggunakan model yang sudah dikompilasi, pekerjaan selesai dengan cepat tanpa menjalankan kompilasi dari awal.

Berikut ini adalah JumpStart model yang SageMaker AI memiliki model pra-kompilasi:

**Meta**
+ Llama3 8B
+ Llama3 70B
+ Llama2 7B
+ Llama2 70B
+ Llama2 13B
+ Kode Llama 7B
+ Kode Llama 70B

**HuggingFace**
+ Mistral 7B

# Buat pekerjaan pengoptimalan inferensi
<a name="model-optimize-create-job"></a>

Anda dapat membuat pekerjaan pengoptimalan inferensi dengan menggunakan Studio atau SageMaker AI Python SDK. Pekerjaan mengoptimalkan model Anda dengan menerapkan teknik yang Anda pilih. Untuk informasi selengkapnya, lihat [Teknik pengoptimalan](model-optimize.md#optimization-techniques).

**Penetapan harga instans untuk pekerjaan pengoptimalan inferensi**  
Saat Anda membuat pekerjaan pengoptimalan inferensi yang menerapkan kuantisasi atau kompilasi, SageMaker AI memilih jenis instans mana yang akan digunakan untuk menjalankan pekerjaan. Anda dikenakan biaya berdasarkan instance yang digunakan.  
Untuk jenis instans yang mungkin dan detail harganya, lihat informasi harga pengoptimalan inferensi di halaman [ SageMaker harga Amazon](https://aws.amazon.com/sagemaker/pricing/).  
Anda tidak dikenakan biaya tambahan untuk pekerjaan yang menerapkan decoding spekulatif.

Untuk model yang didukung yang dapat Anda optimalkan, lihat[Referensi model yang didukung](optimization-supported-models.md).

## SageMaker Studio Amazon
<a name="optimize-create-studio"></a>

Selesaikan langkah-langkah berikut untuk membuat pekerjaan pengoptimalan inferensi di Studio.

**Untuk mulai membuat pekerjaan optimasi**

1. Di SageMaker AI Studio, buat pekerjaan pengoptimalan melalui salah satu jalur berikut:
   + Untuk membuat pekerjaan untuk JumpStart model, lakukan hal berikut:

     1. Di menu navigasi, pilih **JumpStart**.

     1. Pada halaman **Semua model publik**, pilih penyedia model, lalu pilih salah satu model yang mendukung pengoptimalan.

     1. Pada halaman detail model, pilih **Optimalkan**. Tombol ini diaktifkan hanya untuk model yang mendukung optimasi.

     1. Pada halaman **pekerjaan Buat pengoptimalan inferensi**, beberapa JumpStart model mengharuskan Anda menandatangani perjanjian lisensi pengguna akhir (EULA) sebelum Anda dapat melanjutkan. Jika diminta, tinjau persyaratan lisensi di bagian **Perjanjian Lisensi**. Jika persyaratan dapat diterima untuk kasus penggunaan Anda, pilih kotak centang untuk **Saya menerima EULA, dan baca syarat dan ketentuan**.
   + Untuk membuat pekerjaan untuk JumpStart model yang disetel dengan baik, lakukan hal berikut:

     1. Di menu navigasi, di bawah **Pekerjaan**, pilih **Pelatihan**.

     1. Pada halaman **Training Jobs**, pilih nama pekerjaan yang Anda gunakan untuk menyempurnakan JumpStart model. Pekerjaan ini memiliki jenis **JumpStartpelatihan** di kolom **Jenis Job**.

     1. Pada halaman detail untuk pekerjaan pelatihan, pilih **Optimalkan**.
   + Untuk membuat pekerjaan untuk model kustom, lakukan hal berikut:

     1. Di menu navigasi, di bawah **Jobs**, pilih **Optimasi inferensi**.

     1. Pilih **Buat pekerjaan baru**.

     1. Pada halaman **pekerjaan Buat optimasi inferensi**, pilih **Tambah model**.

     1. Di jendela **Tambah model**, pilih **Model Kustom**.

     1. Pilih salah satu opsi berikut:

        **Gunakan model yang ada** - Pilih opsi ini untuk mengoptimalkan model yang telah Anda buat di SageMaker AI.

        **Nama model yang ada** - masukkan nama model SageMaker AI Anda.

        **Dari S3** - Pilih opsi ini untuk menyediakan artefak model dari Amazon S3. Untuk **URI S3**, masukkan URI untuk lokasi di Amazon S3 tempat Anda menyimpan artefak model.

     1. (Opsional) Untuk ****nama model Output****, Anda dapat memasukkan nama khusus untuk model yang dioptimalkan yang dibuat oleh pekerjaan. Jika Anda tidak memberikan nama, Studio secara otomatis membuatnya berdasarkan pilihan Anda.

1. Pada halaman **pekerjaan Buat optimasi inferensi**, untuk **nama Job**, Anda dapat menerima nama default yang diberikan SageMaker AI. Atau, untuk memasukkan nama pekerjaan khusus, pilih bidang **Nama pekerjaan**, dan pilih **Masukkan nama pekerjaan**.

**Untuk mengatur konfigurasi optimasi**

1. Untuk **jenis instance Deployment**, pilih jenis instance yang ingin Anda optimalkan modelnya.

   Jenis instans memengaruhi teknik pengoptimalan apa yang dapat Anda pilih. **Untuk sebagian besar jenis yang menggunakan perangkat keras GPU, teknik yang didukung adalah **Quantization** dan Speculative decoding.** Jika Anda memilih instance yang menggunakan silikon khusus, seperti instance AWS Inferentia ml.inf2.8xlarge, teknik yang didukung adalah **Kompilasi, yang dapat Anda gunakan untuk mengkompilasi** model untuk jenis perangkat keras tertentu.

1. Pilih satu atau beberapa teknik pengoptimalan yang disediakan Studio:
   + Jika Anda memilih **Kuantisasi**, pilih tipe data untuk tipe **data presisi**. 
   + Jika Anda memilih **decoding spekulatif**, pilih salah satu opsi berikut:
     + **Gunakan model draf SageMaker AI** — Pilih untuk menggunakan model draf yang disediakan SageMaker AI.
**catatan**  
Jika Anda memilih untuk menggunakan model draf SageMaker AI, Anda juga harus mengaktifkan isolasi jaringan. Studio menyediakan opsi ini di bawah **Keamanan**.
     + **Pilih model JumpStart draf** — Pilih untuk memilih model dari JumpStart katalog yang akan digunakan sebagai model draf Anda.
     + **Pilih model draf Anda sendiri** — Pilih untuk menggunakan model draf Anda sendiri, dan berikan URI S3 yang menempatkannya.
   + Jika Anda memilih **Pemuatan model cepat**, Studio menunjukkan variabel `OPTION_TENSOR_PARALLEL_DEGREE` lingkungan. Gunakan bidang **Nilai** untuk mengatur derajat paralelisme tensor. Nilai harus membagi secara merata jumlah GPUs dalam instance yang Anda pilih untuk **jenis instance Deployment**. Misalnya, untuk membelah model Anda saat menggunakan instance dengan 8 GPUs, gunakan nilai 2, 4, atau 8.
   + Jika Anda menyetel **jenis instance Deployment** ke instance AWS Inferentia atau AWS Trainium, Studio mungkin menunjukkan bahwa **Kompilasi** adalah salah satu opsi yang didukung. Dalam hal ini, Studio memilih opsi ini untuk Anda.

1. Untuk **Output**, masukkan URI lokasi di Amazon S3. Di sana, SageMaker AI menyimpan artefak dari model yang dioptimalkan yang dibuat oleh pekerjaan Anda.

1. (Opsional) Perluas **opsi lanjutan** untuk kontrol yang lebih halus atas pengaturan seperti peran IAM, VPC, dan variabel lingkungan. Untuk informasi selengkapnya, lihat *Opsi lanjutan* di bawah ini.

1. Setelah selesai mengonfigurasi pekerjaan, pilih **Buat pekerjaan**.

   Studio menampilkan halaman detail pekerjaan, yang menunjukkan status pekerjaan dan semua pengaturannya.

### Opsi lanjutan
<a name="set-advanced-optimization-options"></a>

Anda dapat mengatur opsi lanjutan berikut saat membuat pekerjaan pengoptimalan inferensi.

Di bawah **Konfigurasi**, Anda dapat mengatur opsi berikut:

**Derajat paralel tensor **  
Nilai untuk tingkat *paralelisme tensor*. Paralelisme tensor adalah jenis paralelisme model di mana bobot model tertentu, gradien, dan status pengoptimal dibagi di seluruh perangkat. Nilai harus merata membagi jumlah GPUs di cluster Anda.

**Panjang token maksimum**  
Batas jumlah token yang akan dihasilkan oleh model. Perhatikan bahwa model mungkin tidak selalu menghasilkan jumlah token maksimum.

**Bersamaan**  
Kemampuan untuk menjalankan beberapa contoh model pada perangkat keras dasar yang sama. Gunakan konkurensi untuk menyajikan prediksi kepada banyak pengguna dan untuk memaksimalkan pemanfaatan perangkat keras.

**Ukuran batch**  
Jika model Anda melakukan *inferensi batch*, gunakan opsi ini untuk mengontrol ukuran batch yang diproses model Anda.  
Inferensing Batch menghasilkan prediksi model pada batch pengamatan. Ini adalah pilihan yang baik untuk kumpulan data besar atau jika Anda tidak memerlukan respons langsung terhadap permintaan inferensi. 

Di bawah **Keamanan**, Anda dapat mengatur opsi berikut:

**IAM Role**  
Peran IAM yang memungkinkan SageMaker AI melakukan tugas atas nama Anda. Selama pengoptimalan model, SageMaker AI memerlukan izin Anda untuk:  
+ Baca data masukan dari bucket S3
+ Tulis artefak model ke ember S3
+ Menulis log ke Amazon CloudWatch Logs
+ Publikasikan metrik ke Amazon CloudWatch
Anda memberikan izin untuk semua tugas ini ke peran IAM.  
Untuk informasi selengkapnya, lihat [Cara menggunakan peran eksekusi SageMaker AI](sagemaker-roles.md).

**Kunci KMS enkripsi**  
Sebuah kunci dalam AWS Key Management Service (AWS KMS). SageMaker AI menggunakan kunci mereka untuk mengenkripsi artefak model yang dioptimalkan saat SageMaker AI mengunggah model ke Amazon S3.

**VPC**  
SageMaker AI menggunakan informasi ini untuk membuat antarmuka jaringan dan melampirkannya ke wadah model Anda. Antarmuka jaringan menyediakan wadah model Anda dengan koneksi jaringan dalam VPC Anda yang tidak terhubung ke internet. Mereka juga memungkinkan model Anda terhubung ke sumber daya di VPC pribadi Anda.  
Untuk informasi selengkapnya, lihat [Berikan Akses Titik Akhir yang Dihosting SageMaker AI ke Sumber Daya di VPC Amazon Anda](host-vpc.md).

**Aktifkan isolasi jaringan**  
Aktifkan opsi ini jika Anda ingin membatasi akses internet kontainer Anda. Kontainer yang berjalan dengan isolasi jaringan tidak dapat melakukan panggilan jaringan keluar.  
Anda harus mengaktifkan opsi ini ketika Anda mengoptimalkan dengan decoding spekulatif dan Anda menggunakan model draf AI. SageMaker   
Untuk informasi selengkapnya tentang isolasi jaringan, lihat[Isolasi Jaringan](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation).

Di bawah **Definisi kontainer lanjutan**, Anda dapat mengatur opsi berikut:

**Kondisi berhenti**  
Menentukan batas untuk berapa lama pekerjaan dapat berjalan. Ketika pekerjaan mencapai batas waktu, SageMaker AI mengakhiri pekerjaan. Gunakan opsi ini untuk membatasi biaya.

**Tag**  
Pasangan nilai kunci yang terkait dengan pekerjaan pengoptimalan.  
Untuk informasi selengkapnya tentang tag, lihat [Menandai AWS sumber daya Anda](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) di. *Referensi Umum AWS*

**Variabel-variabel lingkungan**  
Pasangan kunci-nilai yang menentukan variabel lingkungan untuk diatur dalam wadah model.

## SageMaker SDK Python AI
<a name="optimize-create-pysdk"></a>

Anda dapat membuat pekerjaan pengoptimalan inferensi dengan menggunakan SageMaker AI Python SDK dalam proyek Anda. Pertama, Anda mendefinisikan sebuah `Model` instance dengan menggunakan `ModelBuilder` kelas. Kemudian, Anda menggunakan `optimize()` metode ini untuk menjalankan pekerjaan yang mengoptimalkan model Anda dengan kuantisasi, decoding spekulatif, atau kompilasi. Ketika pekerjaan selesai, Anda menerapkan model ke titik akhir inferensi dengan menggunakan metode. `deploy()`

Untuk informasi selengkapnya tentang kelas dan metode yang digunakan dalam contoh berikut, lihat [APIs](https://sagemaker.readthedocs.io/en/stable/api/index.html)di dokumentasi SageMaker AI Python SDK.

**Untuk menyiapkan proyek Anda**

1. Dalam kode aplikasi Anda, impor pustaka yang diperlukan. Contoh berikut mengimpor SDK untuk Python (Boto3). Ini juga mengimpor kelas dari SageMaker AI Python SDK yang Anda gunakan untuk mendefinisikan dan bekerja dengan model:

   ```
   import boto3
   from sagemaker.serve.builder.model_builder import ModelBuilder
   from sagemaker.serve.builder.schema_builder import SchemaBuilder
   from sagemaker.session import Session
   from pathlib import Path
   ```

1. Inisialisasi sesi SageMaker AI. Contoh berikut menggunakan `Session()` kelas:

   ```
   sagemaker_session = Session()
   ```

**Untuk menentukan model Anda**

1. Buat `SchemaBuilder` instance, dan berikan sampel input dan output. Anda menyediakan instance ini ke `ModelBuilder` kelas ketika Anda mendefinisikan model. Dengan itu, SageMaker AI secara otomatis menghasilkan fungsi marshalling untuk membuat serial dan deserialisasi input dan output.

   Untuk informasi selengkapnya tentang penggunaan `SchemaBuilder` dan `ModelBuilder` kelas, lihat[Buat model di Amazon SageMaker AI dengan ModelBuilder](how-it-works-modelbuilder-creation.md).

   Contoh berikut memberikan sampel input dan output string ke `SchemaBuilder` kelas:

   ```
   response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun."
   sample_input = {
       "inputs": "What is the largest planet in the solar system?",
       "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6},
   }
   sample_output = [{"generated_text": response}]
   schema_builder = SchemaBuilder(sample_input, sample_output)
   ```

1. Tentukan model Anda ke SageMaker AI. Contoh berikut menetapkan parameter untuk menginisialisasi `ModelBuilder` instance:

   ```
   model_builder = ModelBuilder(
       model="jumpstart-model-id",
       schema_builder=schema_builder,
       sagemaker_session=sagemaker_session,
       role_arn=sagemaker_session.get_caller_identity_arn(),
   )
   ```

   Contoh ini menggunakan JumpStart model. Ganti `jumpstart-model-id` dengan ID JumpStart model, seperti`meta-textgeneration-llama-3-70b`.
**catatan**  
Jika Anda ingin mengoptimalkan dengan decoding spekulatif, dan Anda ingin menggunakan draf SageMaker AI, Anda harus mengaktifkan isolasi jaringan. Untuk mengaktifkannya, sertakan argumen berikut saat Anda menginisialisasi `ModelBuilder` instance:  

   ```
   enable_network_isolation=True,
   ```
Untuk informasi selengkapnya tentang isolasi jaringan, lihat[Isolasi Jaringan](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation).

**Untuk mengoptimalkan dengan kuantisasi**

1. Untuk menjalankan pekerjaan kuantisasi, gunakan `optimize()` metode, dan atur argumen. `quantization_config` Contoh berikut ditetapkan `OPTION_QUANTIZE` sebagai variabel lingkungan dalam wadah optimasi:

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       quantization_config={
           "OverrideEnvironment": {
               "OPTION_QUANTIZE": "awq",
           },
       },
       output_path="s3://output-path",
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`. Ganti *`s3://output-path`* dengan jalur ke lokasi S3 tempat Anda menyimpan model yang dioptimalkan yang dibuat oleh pekerjaan.

   `optimize()`Metode mengembalikan `Model` objek, yang dapat Anda gunakan untuk menyebarkan model Anda ke titik akhir.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(
       instance_type="instance-type", 
       accept_eula=True,
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`. 

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk mengoptimalkan dengan decoding spekulatif menggunakan model draft AI SageMaker**

Saat Anda mengoptimalkan model Anda dengan decoding spekulatif, Anda dapat memilih untuk menggunakan model draf yang disediakan SageMaker AI, atau Anda dapat menggunakannya sendiri. Contoh berikut menggunakan model draf SageMaker AI.
**Prasyarat**  
Untuk mengoptimalkan dengan decoding spekulatif dan model draf SageMaker AI, Anda harus mengaktifkan isolasi jaringan saat menentukan model Anda.

1. Untuk menjalankan pekerjaan decoding spekulatif, gunakan `optimize()` metode, dan atur argumennya. `speculative_decoding_config` Contoh berikut menetapkan `ModelProvider` kunci `SAGEMAKER` untuk menggunakan model draf yang disediakan SageMaker AI.

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       speculative_decoding_config={
           "ModelProvider": "SAGEMAKER",
       },
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`.

   `optimize()`Metode mengembalikan `Model` objek, yang dapat Anda gunakan untuk menyebarkan model Anda ke titik akhir.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk mengoptimalkan dengan decoding spekulatif menggunakan model draf khusus**

Sebelum Anda dapat memberikan model draf khusus Anda ke SageMaker AI, Anda harus terlebih dahulu mengunggah artefak model ke Amazon S3.

Contoh berikut menunjukkan satu cara yang mungkin untuk menyediakan model draf khusus. Contoh mengunduh model draf dari Hugging Face Hub, mengunggahnya ke Amazon S3, dan memberikan URI S3 ke argumen. `speculative_decoding_config`

1. Jika Anda ingin mengunduh model dari Hugging Face Hub, tambahkan pustaka `huggingface_hub` ke proyek Anda, dan unduh model dengan metode `snapshot_download()` tersebut. Contoh berikut mengunduh model ke direktori lokal:

   ```
   import huggingface_hub
   
   huggingface_hub.snapshot_download(
       repo_id="model-id",
       revision="main",
       local_dir=download-dir,
       token=hf-access-token,
   )
   ```

   Dalam contoh ini, ganti *`model-id`* dengan ID model Hugging Face Hub, seperti`meta-llama/Meta-Llama-3-8B`. Ganti *`download-dir`* dengan direktori lokal. Ganti *`hf-access-token`* dengan token akses pengguna Anda. Untuk mempelajari cara mendapatkan token akses, lihat [Token akses pengguna](https://huggingface.co/docs/hub/en/security-tokens) di dokumentasi Hugging Face.

   Untuk informasi selengkapnya tentang `huggingface_hub` pustaka, lihat [Pustaka klien Hub](https://huggingface.co/docs/huggingface_hub/en/index) di dokumentasi Hugging Face.

1. Untuk membuat model yang Anda unduh tersedia untuk SageMaker AI, unggah ke Amazon S3. Contoh berikut mengunggah model dengan `sagemaker_session` objek:

   ```
   custom_draft_model_uri = sagemaker_session.upload_data(
       path=hf_local_download_dir.as_posix(),
       bucket=sagemaker_session.default_bucket(),
       key_prefix="prefix",
   )
   ```

   Dalam contoh ini, ganti *`prefix`* dengan qualifier yang membantu Anda membedakan model draf di S3, seperti. `spec-dec-custom-draft-model`

   `upload_data()`Metode mengembalikan URI S3 untuk artefak model.

1. Untuk menjalankan pekerjaan decoding spekulatif, gunakan `optimize()` metode, dan atur argumennya. `speculative_decoding_config` Contoh berikut menetapkan `ModelSource` kunci ke URI S3 dari model draf kustom:

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       speculative_decoding_config={
           "ModelSource": custom_draft_model_uri + "/",
       },
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`.

   `optimize()`Metode mengembalikan `Model` objek, yang dapat Anda gunakan untuk menyebarkan model Anda ke titik akhir.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk mengoptimalkan dengan kompilasi**

1. Untuk menjalankan pekerjaan kompilasi, gunakan `optimize()` metode, dan atur `compilation_config` argumen. Contoh berikut menggunakan `OverrideEnvironment` kunci untuk mengatur variabel lingkungan yang diperlukan dalam wadah optimasi:

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       compilation_config={
           "OverrideEnvironment": {
               "OPTION_TENSOR_PARALLEL_DEGREE": "24",
               "OPTION_N_POSITIONS": "8192",
               "OPTION_DTYPE": "fp16",
               "OPTION_ROLLING_BATCH": "auto",
               "OPTION_MAX_ROLLING_BATCH_SIZE": "4",
               "OPTION_NEURON_OPTIMIZE_LEVEL": "2",
           }
       },
       output_path="s3://output-path",
   )
   ```

   Dalam contoh ini, atur *`instance-type`* ke tipe instans ML dengan perangkat keras yang dipercepat. Misalnya, untuk inferensi yang dipercepat dengan AWS Inferentia, Anda dapat mengatur tipe ke instance Inf2, seperti. `ml.inf2.48xlarge` Ganti *`s3://output-path`* dengan jalur ke lokasi S3 tempat Anda menyimpan model yang dioptimalkan yang dibuat oleh pekerjaan.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk menguji model Anda dengan permintaan inferensi**
+ Untuk mengirim permintaan inferensi pengujian ke model yang Anda gunakan, gunakan `predict()` metode objek prediktor. Contoh berikut meneruskan `sample_input` variabel yang juga diteruskan ke `SchemaBuilder` kelas dalam contoh untuk menentukan model Anda:

  ```
  predictor.predict(sample_input)
  ```

  Masukan sampel memiliki prompt,`"What is the largest planet in the solar system?"`. `predict()`Metode mengembalikan respon bahwa model dihasilkan, seperti yang ditunjukkan oleh contoh berikut:

  ```
  {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}
  ```

## AWS SDK untuk Python (Boto3)
<a name="optimize-create-pysdk-boto"></a>

Anda dapat menggunakan AWS SDK for Python (Boto3) untuk membuat dan mengelola pekerjaan pengoptimalan inferensi secara terprogram. Bagian ini memberikan contoh untuk teknik optimasi yang berbeda.

**Prasyarat**

Sebelum membuat pekerjaan pengoptimalan dengan Boto3, pastikan Anda memiliki:
+  AWS Kredensi yang dikonfigurasi - Siapkan AWS kredensil Anda dengan izin yang sesuai
+ Membuat model SageMaker AI (jika menggunakan model yang ada)
+ Data pelatihan yang disiapkan di S3 (untuk optimasi decoding spekulatif, mendukung panjang konteks hingga 4096)
+ Peran IAM dengan izin yang diperlukan - Peran eksekusi Anda harus memiliki izin untuk mengakses S3 dan membuat sumber daya SageMaker 

**Contoh: Buat Job Optimasi dengan EAGLE Speculative Decoding (Llama 3.3 70B)**

Contoh ini menunjukkan pembuatan pekerjaan pengoptimalan untuk model bahasa besar menggunakan teknik decoding spekulatif EAGLE:

```
import boto3

# Initialize SageMaker client
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

# Step 1: Create a SageMaker model (if not already created)
model_response = sagemaker_client.create_model(
    ModelName='meta-llama-3-3-70b-instruct',
    ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    PrimaryContainer={
        'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>',
        'ModelDataSource': {
            'S3DataSource': {
                'S3Uri': 's3://my-bucket/models/Llama-3.3-70B-Instruct/',
                'S3DataType': 'S3Prefix',
                'CompressionType': 'None'
            }
        },
        'Environment': {
            'SAGEMAKER_ENV': '1',
            'SAGEMAKER_MODEL_SERVER_TIMEOUT': '3600'
        }
    }
)

# Step 2: Create optimization job with speculative decoding
optimization_response = sagemaker_client.create_optimization_job(
    OptimizationJobName='llama-optim-job-eagle-speculative-decoding',
    RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    ModelSource={
        'SageMakerModel': {
            'ModelName': 'meta-llama-3-3-70b-instruct'
        }
    },
    DeploymentInstanceType='ml.p4d.24xlarge',
    # MaxInstanceCount specifies the maximum number of instances for distributed training
    MaxInstanceCount=4,
    OptimizationConfigs=[
        {
            'ModelSpeculativeDecodingConfig': {
                'Technique': 'EAGLE',
                'TrainingDataSource': {
                    'S3Uri': 's3://my-bucket/training_data/ultrachat_8k/',
                    'S3DataType': 'S3Prefix'
                }
            }
        }
    ],
    OutputConfig={
        'S3OutputLocation': 's3://my-bucket/optimized-models/llama-optim-output/',
    },
    StoppingCondition={
        'MaxRuntimeInSeconds': 432000  # 5 days
    }
)

print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")
```

**Contoh: Buat Job Optimasi dari Artefak Model S3 (Qwen3 32B)**

Contoh ini menunjukkan cara membuat pekerjaan pengoptimalan menggunakan artefak model langsung dari S3:

```
import boto3

sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

# Create model from S3 artifacts
model_response = sagemaker_client.create_model(
    ModelName='qwen3-32b',
    ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    PrimaryContainer={
        'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>',
        'Mode': 'SingleModel',
        'ModelDataSource': {
            'S3DataSource': {
                'S3Uri': 's3://my-bucket/models/qwen3-32b/',
                'S3DataType': 'S3Prefix',
                'CompressionType': 'None'
            }
        },
        'Environment': {
            'AWS_REGION': 'us-west-2'
        }
    }
)

# Create optimization job with smaller training dataset
optimization_response = sagemaker_client.create_optimization_job(
    OptimizationJobName='qwen3-optim-job-eagle',
    RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    ModelSource={
        'SageMakerModel': {
            'ModelName': 'qwen3-32b'
        }
    },
    DeploymentInstanceType='ml.g6.48xlarge',
    MaxInstanceCount=4,
    OptimizationConfigs=[
        {
            'ModelSpeculativeDecodingConfig': {
                'Technique': 'EAGLE',
                'TrainingDataSource': {
                    'S3Uri': 's3://my-bucket/training_data/ultrachat_1k/',
                    'S3DataType': 'S3Prefix'
                }
            }
        }
    ],
    OutputConfig={
        'S3OutputLocation': 's3://my-bucket/optimized-models/qwen3-optim-output/',
    },
    StoppingCondition={
        'MaxRuntimeInSeconds': 432000  # 5 days
    }
)

print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")
```

**Contoh: Memantau dan Mengelola Pekerjaan Optimasi**

Setelah membuat pekerjaan pengoptimalan, Anda dapat memantau kemajuannya dan mengelolanya menggunakan perintah ini:

```
import boto3

sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

# Describe optimization job to check status
describe_response = sagemaker_client.describe_optimization_job(
    OptimizationJobName='llama-optim-job-eagle-speculative-decoding'
)

print(f"Job Status: {describe_response['OptimizationJobStatus']}")

# List all optimization jobs (with pagination)
list_response = sagemaker_client.list_optimization_jobs(
    MaxResults=10,
    SortBy='CreationTime',
    SortOrder='Descending'
)

print("\nRecent optimization jobs:")
for job in list_response['OptimizationJobSummaries']:
    print(f"- {job['OptimizationJobName']}: {job['OptimizationJobStatus']}")

# Stop a running optimization job if needed
# sagemaker_client.stop_optimization_job(
#     OptimizationJobName='llama-optim-job-eagle-speculative-decoding'
# )

# Delete a completed or failed optimization job
# sagemaker_client.delete_optimization_job(
#     OptimizationJobName='llama-optim-job-eagle-speculative-decoding'
# )
```

Decoding spekulatif dengan Eagle Heads menjalankan empat pekerjaan pelatihan berurutan. Setiap pekerjaan menghasilkan output yang menjadi input ke pekerjaan berikutnya. Hanya output dari pekerjaan akhir yang dikirim ke bucket S3 Anda. Output perantara dienkripsi dan disimpan dalam bucket layanan SageMaker AI internal hingga 20 hari. SageMaker AI tidak memiliki izin untuk men-de-crypt mereka. Jika Anda ingin data perantara dihapus sebelum periode waktu tersebut, pastikan pekerjaan Anda telah selesai atau telah dihentikan, lalu buka kasus dukungan [[https://docs.aws.amazon.com/awssupport/latest/user/case-management.html\$1 creating-a-support-case](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case)] agar data ini dihapus. Sertakan dalam permintaan ID AWS akun Anda dan pekerjaan pengoptimalan ARN.

## Keterbatasan model draf SageMaker AI
<a name="sm-draft-model-limitations"></a>

Untuk model apa pun yang Anda optimalkan dengan model draf SageMaker AI, perhatikan persyaratan, batasan, dan variabel lingkungan yang didukung.

**Persyaratan**

Anda harus melakukan tindakan berikut:
+ Gunakan model yang disediakan oleh SageMaker JumpStart.
+ Aktifkan isolasi jaringan untuk penerapan model.
+ Jika Anda menerapkan model ke wadah Large Model Inference (LMI), gunakan DJLServing wadah pada versi 0.28.0 atau lebih tinggi.

  Untuk kontainer yang tersedia, lihat Wadah [Inferensi Model Besar di GitHub repositori](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers) Deep Learning Containers.
+ Jika Anda menyempurnakan JumpStart model, gunakan format safetensors untuk bobot model.

  Untuk informasi selengkapnya tentang format ini, lihat [Safetensors](https://huggingface.co/docs/safetensors/en/index) di dokumentasi Hugging Face.

**Pembatasan**

Anda tidak dapat melakukan hal berikut:
+ Gunakan model di lingkungan pengujian lokal yang Anda buat dengan mode lokal. 

  Untuk informasi selengkapnya tentang mode lokal, lihat [Mode Lokal](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) dalam dokumentasi SageMaker AI Python SDK.
+ Akses wadah model melalui AWS Systems Manager Agen (Agen SSM). Agen SSM menyediakan akses tingkat shell ke wadah model Anda sehingga Anda dapat men-debug proses dan perintah log dengan Amazon. CloudWatch 

  Untuk informasi selengkapnya tentang fitur ini, lihat [Akses kontainer melalui SSM](ssm-access.md).
+ Konfigurasikan wadah model untuk dump inti yang terjadi jika proses macet. 

  Untuk informasi selengkapnya tentang pembuangan inti dari wadah model, lihat [ProductionVariantCoreDumpConfig](sagemaker/latest/APIReference/API_ProductionVariantCoreDumpConfig.html).
+ Terapkan model ke titik akhir multi-model, titik akhir multi-kontainer, atau titik akhir yang menampung komponen inferensi. 

  Untuk informasi selengkapnya tentang jenis titik akhir ini, lihat[Titik akhir multi-model](multi-model-endpoints.md),[Titik akhir multi-kontainer](multi-container-endpoints.md), dan[Komponen inferensi](realtime-endpoints-deploy-models.md#inference-components).
+ Buat paket model untuk model. Anda menggunakan paket model untuk membuat model deployable yang Anda publikasikan. AWS Marketplace

  Untuk informasi selengkapnya tentang fitur ini, lihat [Membuat Model Package Resource](sagemaker-mkt-create-model-package.md).
+ Gunakan kode inferensi Anda sendiri dalam wadah model.
+ Gunakan `requirements.txt` file dalam wadah model. Jenis file ini mencantumkan dependensi paket.
+ Aktifkan parameter Hugging Face`trust_remote_code`.

**Variabel lingkungan yang didukung**

Anda dapat mengkonfigurasi kontainer hanya dengan variabel lingkungan berikut:
+ Variabel lingkungan umum untuk wadah inferensi model besar (LMI). 

  Untuk informasi selengkapnya tentang variabel-variabel ini, lihat [Konfigurasi Variabel Lingkungan](https://docs.djl.ai/master/docs/serving/serving/docs/lmi/deployment_guide/configurations.html#environment-variable-configurations) dalam dokumentasi kontainer LMI.
+ Variabel lingkungan umum untuk paket yang disediakan Hugging Face Hub di repositori Gitnya. 

  Untuk repositori, lihat [Hugging Face](https://github.com/huggingface) on. GitHub
+ Variabel lingkungan umum PyTorch & CUDA. 

  Untuk informasi selengkapnya tentang variabel-variabel ini, lihat [Variabel Lingkungan Obor](https://pytorch.org/docs/stable/torch_environment_variables.html) dalam PyTorch dokumentasi.

# Lihat hasil pekerjaan pengoptimalan
<a name="model-optimize-view-results"></a>

Setelah Anda membuat satu atau beberapa pekerjaan pengoptimalan, Anda dapat menggunakan Studio untuk melihat tabel ringkasan semua pekerjaan Anda, dan Anda dapat melihat detail untuk setiap pekerjaan individu.

## SageMaker Studio Amazon
<a name="optimization-results-studio"></a>

**Untuk melihat tabel ringkasan pekerjaan optimasi**
+ Di menu navigasi Studio, di bawah **Pekerjaan**, pilih **Optimasi inferensi**.

  Halaman **optimasi inferensi** menampilkan tabel yang menampilkan pekerjaan yang telah Anda buat. Untuk setiap pekerjaan, ini menunjukkan konfigurasi pengoptimalan yang Anda lamar dan status pekerjaan.

**Untuk melihat detail pekerjaan**
+ Pada halaman **Pengoptimalan inferensi**, di tabel ringkasan, pilih nama pekerjaan.

  Studio menampilkan halaman detail pekerjaan, yang menunjukkan status pekerjaan dan semua pengaturan yang Anda terapkan saat Anda membuat pekerjaan. Jika pekerjaan berhasil diselesaikan, SageMaker AI menyimpan artefak model yang dioptimalkan di lokasi Amazon S3 di **bawah URI model S3 yang dioptimalkan**.

# Mengevaluasi kinerja model yang dioptimalkan
<a name="model-optimize-evaluate"></a>

Setelah Anda menggunakan pekerjaan pengoptimalan untuk membuat model yang dioptimalkan, Anda dapat menjalankan evaluasi kinerja model. Evaluasi ini menghasilkan metrik untuk latensi, throughput, dan harga. Gunakan metrik ini untuk menentukan apakah model yang dioptimalkan memenuhi kebutuhan kasus penggunaan Anda atau apakah itu memerlukan pengoptimalan lebih lanjut.

Anda dapat menjalankan evaluasi kinerja hanya dengan menggunakan Studio. Fitur ini tidak disediakan melalui Amazon SageMaker AI API atau Python SDK.

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

Sebelum Anda dapat membuat evaluasi kinerja, Anda harus terlebih dahulu mengoptimalkan model dengan membuat pekerjaan pengoptimalan inferensi. Di Studio, Anda hanya dapat mengevaluasi model yang Anda buat dengan pekerjaan ini.

## Buat evaluasi kinerja
<a name="create-perf-eval"></a>

Selesaikan langkah-langkah berikut di Studio untuk membuat evaluasi kinerja untuk model yang dioptimalkan.

1. Di menu navigasi Studio, di bawah **Pekerjaan**, pilih **Optimasi inferensi**.

1. Pilih nama pekerjaan yang menciptakan model yang dioptimalkan yang ingin Anda evaluasi.

1. Pada halaman detail pekerjaan, pilih **Evaluasi kinerja**.

1. Pada halaman **Evaluasi kinerja**, beberapa JumpStart model mengharuskan Anda untuk menandatangani perjanjian lisensi pengguna akhir (EULA) sebelum Anda dapat melanjutkan. Jika diminta, tinjau persyaratan lisensi di bagian **Perjanjian Lisensi**. Jika persyaratan dapat diterima untuk kasus penggunaan Anda, pilih kotak centang untuk **Saya menerima EULA, dan baca syarat dan ketentuan**.

1. Untuk **Pilih model untuk tokenizer**, terima default, atau pilih model tertentu untuk bertindak sebagai tokenizer untuk evaluasi Anda.

1. Untuk **kumpulan data Input**, pilih apakah akan: 
   + Gunakan kumpulan data sampel default dari SageMaker AI.
   + Berikan URI S3 yang menunjuk ke kumpulan data sampel Anda sendiri.

1. Untuk **URI S3 untuk hasil kinerja**, berikan URI yang menunjuk ke lokasi di Amazon S3 tempat Anda ingin menyimpan hasil evaluasi.

1. Pilih **Evaluasi**.

   Studio menunjukkan halaman **evaluasi kinerja**, di mana pekerjaan evaluasi Anda ditampilkan dalam tabel. Kolom **Status** menunjukkan status evaluasi Anda.

1. Ketika status **selesai**, pilih nama pekerjaan untuk melihat hasil evaluasi.

Halaman detail evaluasi menampilkan tabel yang menyediakan metrik kinerja untuk latensi, throughput, dan harga. Untuk informasi lebih lanjut tentang setiap metrik, lihat[Referensi metrik untuk evaluasi kinerja inferensi](#performance-eval-metrics-reference).

## Referensi metrik untuk evaluasi kinerja inferensi
<a name="performance-eval-metrics-reference"></a>

Setelah Anda berhasil mengevaluasi kinerja model yang dioptimalkan, halaman detail evaluasi di Studio menunjukkan metrik berikut.

### Metrik latensi
<a name="latency-metrics"></a>

Bagian **Latensi** menunjukkan metrik berikut

**Bersamaan**  
Jumlah pengguna bersamaan yang disimulasikan evaluasi untuk memanggil titik akhir secara bersamaan.

**Waktu ke token pertama (ms)**  
Waktu yang berlalu antara saat permintaan dikirim dan kapan token pertama dari respons streaming diterima.

**Latensi antar-token (ms)**  
Waktu untuk menghasilkan token output untuk setiap permintaan.

**Latensi klien (ms)**  
Latensi permintaan dari saat permintaan dikirim ke waktu seluruh respons diterima.

**Masukan tokens/sec (hitungan)**  
Jumlah total token input yang dihasilkan, di semua permintaan, dibagi dengan total durasi dalam detik untuk konkurensi.

**Keluaran tokens/sec (hitungan)**  
Jumlah total token keluaran yang dihasilkan, di semua permintaan, dibagi dengan total durasi dalam detik untuk konkurensi.

**Pemanggilan klien (hitungan)**  
Jumlah total permintaan inferensi yang dikirim ke titik akhir di semua pengguna secara bersamaan.

**Kesalahan pemanggilan klien (hitungan)**  
Jumlah total permintaan inferensi yang dikirim ke titik akhir di semua pengguna pada konkurensi tertentu yang mengakibatkan kesalahan pemanggilan.

**Tokenizer gagal (hitungan)**  
Jumlah total permintaan inferensi di mana tokenizer gagal mengurai permintaan atau respons.

**Respon inferensi kosong (hitungan)**  
Jumlah total permintaan inferensi yang menghasilkan token keluaran nol atau tokenizer gagal mengurai respons.

### Metrik throughput
<a name="throughput-metrics"></a>

Bagian **Throughput** menunjukkan metrik berikut.

**Bersamaan**  
Jumlah pengguna bersamaan yang disimulasikan evaluasi untuk memanggil titik akhir secara bersamaan.

**Masukan tokens/sec/req (hitungan)**  
Jumlah total token input yang dihasilkan per detik per permintaan.

**Keluaran tokens/sec/req (hitungan)**  
Jumlah total token keluaran yang dihasilkan per detik per permintaan.

**Token masukan (hitungan)**  
Jumlah total token input yang dihasilkan per permintaan.

**Token keluaran (hitungan)**  
Jumlah total token keluaran yang dihasilkan per permintaan.

### Metrik harga
<a name="price-metrics"></a>

Bagian **Harga** menunjukkan metrik berikut.

**Bersamaan**  
Jumlah pengguna bersamaan yang disimulasikan evaluasi untuk memanggil titik akhir secara bersamaan.

**Harga per juta token masukan**  
Biaya pemrosesan token masukan 1M.

**Harga per juta token keluaran**  
Biaya menghasilkan token keluaran 1M.

# Referensi model yang didukung
<a name="optimization-supported-models"></a>

Tabel berikut menunjukkan model yang SageMaker AI mendukung optimasi inferensi, dan mereka menunjukkan teknik pengoptimalan yang didukung.


**Model Llama yang didukung**  

| Nama Model | Format Data yang Didukung untuk Kuantisasi | Mendukung Decoding Spekulatif | Mendukung Pemuatan Model Cepat | Perpustakaan Digunakan untuk Kompilasi | 
| --- | --- | --- | --- | --- | 
| Meta Llama 2 13B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 2 13B Obrolan |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 2 70B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 2 70B Obrolan |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 2 7B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 2 7B Obrolan |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 3 70B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Instruksi Meta Llama 3 70B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Meta Llama 3 8B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Instruksi Meta Llama 3 8B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Kode Meta Llama 13B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Meta Kode Llama 13B Instruksi |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 13B Python |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 34B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Meta Kode Llama 34B Instruksi  |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 34B Python |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 70B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Meta Kode Llama 70B Instruksi |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 70B Python |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 7B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Meta Kode Llama 7B Instruksi |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Kode Meta Llama 7B Python |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Meta Llama 2 13B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 2 13B Obrolan Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 2 70B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 2 70B Obrolan Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 2 7B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 2 7B Neuron Obrolan | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3 70B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3 70B Instruksi Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3 8B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3 8B Instruksi Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Kode Meta Llama 70B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Kode Meta Llama 7B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Kode Meta Llama 7B Neuron Python | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3.1 405B FP8 | Tidak ada | Ya | Ya |  Tidak ada  | 
| Instruksi Meta Llama 3.1 405B FP8 | Tidak ada | Ya | Ya |  Tidak ada  | 
| Meta Llama 3.1 70B |  INT4-AWQ FP8  | Ya | Ya |  Tidak ada  | 
| Instruksi Meta Llama 3.1 70B |  INT4-AWQ FP8  | Ya | Ya |  Tidak ada  | 
| Meta Llama 3.1 8B |  INT4-AWQ FP8  | Ya | Ya |  Tidak ada  | 
| Instruksi Meta Llama 3.1 8B |  INT4-AWQ FP8  | Ya | Ya |  Tidak ada  | 
| Meta Llama 3.1 70B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3.1 70B Instruksi Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3 1 8B Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Meta Llama 3.1 8B Instruksi Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 


**Model Mistral yang didukung**  

| Nama Model | Format Data yang Didukung untuk Kuantisasi | Mendukung Decoding Spekulatif | Mendukung Pemuatan Model Cepat | Perpustakaan Digunakan untuk Kompilasi | 
| --- | --- | --- | --- | --- | 
| Mistral 7B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Instruksi Mistral 7B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  AWSNeuron Tensorrt-LLM  | 
| Neuron Mistral 7B | Tidak ada | Tidak | Tidak |  AWSNeuron  | 
| Mistral 7B Instruksikan Neuron | Tidak ada | Tidak | Tidak |  AWSNeuron  | 


**Model Mixtral yang didukung**  

| Nama Model | Format Data yang Didukung untuk Kuantisasi | Mendukung Decoding Spekulatif | Mendukung Pemuatan Model Cepat | Perpustakaan Digunakan untuk Kompilasi | 
| --- | --- | --- | --- | --- | 
| Mixtral-8x22B-Instruksi-V0.1 |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Mixtral-8x22B V1 |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Mixtral 8x7B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 
| Instruksi Mixtral 8x7B |  INT4-AWQ INT8-SmoothQuant FP8  | Ya | Ya |  Tensorrt-LLM  | 


**Arsitektur Model yang Didukung dan Tipe EAGLE**  

|  Nama Arsitektur Model  |  Jenis EAGLE  | 
| --- | --- | 
|  LlamaForCausalLM  |  ELANG 3  | 
|  Qwen3 ForCausal LM  |  ELANG 3  | 
|  Qwen3 NextForCausal LM  |  ELANG 2  | 
|  Qwen3 MoeForCausal LM   |  ELANG 3  | 
|  Qwen2 ForCausal LM  |  ELANG 3  | 
|  GptOssForCausalLM  |  ELANG 3  | 

# Opsi untuk mengevaluasi model pembelajaran mesin Anda di Amazon AI SageMaker
<a name="how-it-works-model-validation"></a>

Setelah melatih model, evaluasi untuk menentukan apakah kinerja dan akurasinya memungkinkan Anda untuk mencapai tujuan bisnis Anda. Anda dapat menghasilkan beberapa model menggunakan metode yang berbeda dan mengevaluasi masing-masing. Misalnya, Anda dapat menerapkan aturan bisnis yang berbeda untuk setiap model, dan kemudian menerapkan berbagai ukuran untuk menentukan kesesuaian setiap model. Anda mungkin mempertimbangkan apakah model Anda perlu lebih sensitif daripada spesifik (atau sebaliknya). 

Anda dapat mengevaluasi model Anda menggunakan data historis (offline) atau data langsung:
+ **Pengujian offline** —Gunakan data historis, bukan langsung, untuk mengirim permintaan ke model untuk kesimpulan. 

  Terapkan model terlatih Anda ke titik akhir alfa, dan gunakan data historis untuk mengirim permintaan inferensi ke sana. Untuk mengirim permintaan, gunakan notebook Jupyter di instance notebook Amazon SageMaker AI Anda dan pustaka Python tingkat tinggi AWS SDK for Python (Boto) atau yang disediakan oleh AI. SageMaker 
+ **Pengujian online dengan data langsung** — SageMaker AI mendukung A/B pengujian model dalam produksi dengan menggunakan varian produksi. Varian produksi adalah model yang menggunakan kode inferensi yang sama dan digunakan pada titik akhir SageMaker AI yang sama. Anda mengonfigurasi varian produksi sehingga sebagian kecil lalu lintas langsung masuk ke model yang ingin Anda validasi. Misalnya, Anda dapat memilih untuk mengirim 10% lalu lintas ke varian model untuk evaluasi. Setelah Anda puas dengan kinerja model, Anda dapat merutekan lalu lintas 100% ke model yang diperbarui. Untuk contoh model pengujian dalam produksi, lihat[Menguji model dengan varian produksi](model-ab-testing.md).

Untuk informasi selengkapnya, lihat artikel dan buku tentang cara mengevaluasi model, misalnya, [Evaluating Machine Learning Models](http://www.oreilly.com/data/free/evaluating-machine-learning-models.csp). 

Opsi untuk evaluasi model offline meliputi:
+ **Memvalidasi menggunakan set penahanan** —Praktisi pembelajaran mesin sering menyisihkan sebagian data sebagai “set penahanan.” Mereka tidak menggunakan data ini untuk pelatihan model.

  Dengan pendekatan ini, Anda mengevaluasi seberapa baik model Anda memberikan kesimpulan pada set penahanan. Anda kemudian menilai seberapa efektif model menggeneralisasi apa yang dipelajari dalam pelatihan awal, sebagai lawan menggunakan memori model. Pendekatan validasi ini memberi Anda gambaran tentang seberapa sering model dapat menyimpulkan jawaban yang benar. 

   

  Dalam beberapa hal, pendekatan ini mirip dengan mengajar siswa sekolah dasar. Pertama, Anda memberi mereka serangkaian contoh untuk dipelajari, dan kemudian menguji kemampuan mereka untuk menggeneralisasi dari pembelajaran mereka. Dengan pekerjaan rumah dan tes, Anda menimbulkan masalah yang tidak termasuk dalam pembelajaran awal dan menentukan apakah mereka dapat menggeneralisasi secara efektif. Siswa dengan ingatan yang sempurna dapat menghafal masalah, alih-alih mempelajari aturan.

   

  Biasanya, dataset penahanan adalah 20-30% dari data pelatihan.

   
+ **validasi k-fold** *—Dalam pendekatan validasi ini, Anda membagi kumpulan data contoh menjadi k bagian.* Anda memperlakukan masing-masing bagian ini sebagai set penahanan untuk *k* latihan lari, dan menggunakan bagian *k* -1 lainnya sebagai set pelatihan untuk lari itu. Anda menghasilkan model *k* menggunakan proses serupa, dan menggabungkan model untuk menghasilkan model akhir Anda. Nilai *k* biasanya dalam kisaran 5-10.

# Rekomendasi SageMaker Inferensi Amazon
<a name="inference-recommender"></a>

Amazon SageMaker Inference Recommender adalah kemampuan Amazon SageMaker AI. Ini mengurangi waktu yang diperlukan untuk mendapatkan model pembelajaran mesin (ML) dalam produksi dengan mengotomatiskan pengujian beban dan penyetelan model di seluruh instans SageMaker AI. Anda dapat menggunakan Inference Recommender untuk menyebarkan model Anda ke titik akhir inferensi real-time atau tanpa server yang memberikan kinerja terbaik dengan biaya terendah. Inference Recommender membantu Anda memilih jenis dan konfigurasi instans terbaik untuk model dan beban kerja ML Anda. Ini mempertimbangkan faktor-faktor seperti jumlah instance, parameter kontainer, pengoptimalan model, konkurensi maks, dan ukuran memori.

Amazon SageMaker Inference Recommender hanya menagih Anda untuk instans yang digunakan saat pekerjaan Anda dijalankan.

## Cara kerjanya
<a name="inference-recommender-how-it-works"></a>

Untuk menggunakan Amazon SageMaker Inference Recommender, Anda dapat [membuat model SageMaker AI atau mendaftarkan model](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) ke Registry Model dengan SageMaker artefak model Anda. Gunakan AWS SDK untuk Python (Boto3) atau konsol SageMaker AI untuk menjalankan tugas benchmarking untuk konfigurasi titik akhir SageMaker AI yang berbeda. Pekerjaan Inference Recommender membantu Anda mengumpulkan dan memvisualisasikan metrik di seluruh kinerja dan pemanfaatan sumber daya untuk membantu Anda memutuskan jenis dan konfigurasi titik akhir mana yang akan dipilih.

## Cara Memulai
<a name="inference-recommender-get-started"></a>

Jika Anda adalah pengguna pertama kali Amazon SageMaker Inference Recommender, kami sarankan Anda melakukan hal berikut:

1. Baca [Prasyarat untuk menggunakan Amazon Inference Recommender SageMaker](inference-recommender-prerequisites.md) bagian untuk memastikan Anda telah memenuhi persyaratan untuk menggunakan Amazon SageMaker Inference Recommender.

1. Baca [Pekerjaan rekomendasi dengan Amazon SageMaker Inference Recommender](inference-recommender-recommendation-jobs.md) bagian untuk meluncurkan pekerjaan rekomendasi Inference Recommender pertama Anda.

1. Jelajahi contoh buku catatan pengantar Amazon SageMaker Inference Recommender [Jupyter, atau tinjau contoh buku](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-inference-recommender/inference-recommender.ipynb) catatan di bagian berikut.

## Notebook contoh
<a name="inference-recommender-notebooks"></a>

Contoh notebook Jupyter berikut dapat membantu Anda dengan alur kerja untuk beberapa kasus penggunaan di Inference Recommender:
+ Jika Anda menginginkan buku catatan pengantar yang membandingkan TensorFlow model, lihat buku catatan [SageMaker Inference Recommender](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/inference-recommender.ipynb). TensorFlow
+ Jika Anda ingin melakukan benchmark HuggingFace model, lihat [SageMaker Inference Recommender](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/huggingface-inference-recommender/huggingface-inference-recommender.ipynb) untuk notebook. HuggingFace
+ Jika Anda ingin melakukan benchmark XGBoost model, lihat buku catatan [SageMaker Inference XGBoost Recommender](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/xgboost/xgboost-inference-recommender.ipynb).
+ Jika Anda ingin meninjau CloudWatch metrik untuk pekerjaan Inference Recommender, lihat buku catatan metrik [SageMaker Inference](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/tensorflow-cloudwatch/tf-cloudwatch-inference-recommender.ipynb) Recommender. CloudWatch 

# Prasyarat untuk menggunakan Amazon Inference Recommender SageMaker
<a name="inference-recommender-prerequisites"></a>

Sebelum Anda dapat menggunakan Amazon SageMaker Inference Recommender, Anda harus menyelesaikan langkah-langkah prasyarat. Sebagai contoh, kami menunjukkan cara menggunakan model pra-terlatih PyTorch (v1.7.1) ResNet -18 untuk kedua jenis pekerjaan rekomendasi Amazon SageMaker Inference Recommender. Contoh yang ditampilkan menggunakan AWS SDK untuk Python (Boto3).

**catatan**  
Contoh kode berikut menggunakan Python. Hapus karakter `!` awalan jika Anda menjalankan salah satu contoh kode berikut di terminal Anda atau AWS CLI.
Anda dapat menjalankan contoh berikut dengan kernel Python 3 (TensorFlow 2.6 Python 3.8 CPU Optimized) di notebook Amazon Studio. SageMaker Untuk informasi selengkapnya tentang Studio, lihat[SageMaker Studio Amazon](studio-updated.md).

1. **Buat peran IAM untuk Amazon SageMaker AI.**

   Buat peran IAM untuk Amazon SageMaker AI yang memiliki kebijakan terkelola `AmazonSageMakerFullAccess` IAM terlampir.

1. **Siapkan lingkungan Anda.**

   Impor dependensi dan buat variabel untuk peran SageMaker AI IAM Anda (dari Langkah 1), dan klien AI. Wilayah AWS SageMaker 

   ```
   !pip install --upgrade pip awscli botocore boto3  --quiet
   from sagemaker import get_execution_role, Session, image_uris
   import boto3
   
   region = boto3.Session().region_name
   role = get_execution_role()
   sagemaker_client = boto3.client("sagemaker", region_name=region)
   sagemaker_session = Session()
   ```

1. **(Opsional) Tinjau model yang ada yang dipatokan oleh Inference Recommender.**

   Inferensi Rekomendasi tolok ukur model dari kebun binatang model populer. Inference Recommender mendukung model Anda meskipun belum benchmark.

   Gunakan `ListModelMetaData` untuk mendapatkan objek respons yang mencantumkan domain, kerangka kerja, tugas, dan nama model model pembelajaran mesin yang ditemukan di kebun binatang model umum.

   Anda menggunakan domain, kerangka kerja, versi kerangka kerja, tugas, dan nama model di langkah selanjutnya untuk memilih gambar Docker inferensi dan mendaftarkan model Anda dengan SageMaker Model Registry. Berikut ini menunjukkan cara daftar metadata model dengan SDK for Python (Boto3): 

   ```
   list_model_metadata_response=sagemaker_client.list_model_metadata()
   ```

   Outputnya mencakup ringkasan model (`ModelMetadataSummaries`) dan metadata respons (`ResponseMetadata`) mirip dengan contoh berikut:

   ```
   {
       'ModelMetadataSummaries': [{
               'Domain': 'NATURAL_LANGUAGE_PROCESSING',
               'Framework': 'PYTORCH:1.6.0',
                'Model': 'bert-base-cased',
                'Task': 'FILL_MASK'
                },
               {
                'Domain': 'NATURAL_LANGUAGE_PROCESSING',
                'Framework': 'PYTORCH:1.6.0',
                'Model': 'bert-base-uncased',
                'Task': 'FILL_MASK'
                },
               {
               'Domain': 'COMPUTER_VISION',
                'Framework': 'MXNET:1.8.0',
                'Model': 'resnet18v2-gluon',
                'Task': 'IMAGE_CLASSIFICATION'
                },
                {
                'Domain': 'COMPUTER_VISION',
                'Framework': 'PYTORCH:1.6.0',
                'Model': 'resnet152',
                'Task': 'IMAGE_CLASSIFICATION'
                }],
       'ResponseMetadata': {
                               'HTTPHeaders': {
                               'content-length': '2345',
                               'content-type': 'application/x-amz-json-1.1',
                               'date': 'Tue, 19 Oct 2021 20:52:03 GMT',
                               'x-amzn-requestid': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
                             },
       'HTTPStatusCode': 200,
       'RequestId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
       'RetryAttempts': 0
       }
   }
   ```

   Untuk demo ini, kami menggunakan model PyTorch (v1.7.1) ResNet -18 untuk melakukan klasifikasi gambar. Contoh kode Python berikut menyimpan kerangka kerja, versi kerangka kerja, domain, dan tugas ke dalam variabel untuk digunakan nanti:

   ```
   # ML framework details
   framework = 'pytorch'
   framework_version = '1.7.1'
   
   # ML model details
   ml_domain = 'COMPUTER_VISION'
   ml_task = 'IMAGE_CLASSIFICATION'
   ```

1. **Unggah model pembelajaran mesin Anda ke Amazon S3.**

   Gunakan model PyTorch (v1.7.1) ResNet -18 ini jika Anda tidak memiliki model pembelajaran mesin yang telah dilatih sebelumnya:

   ```
   # Optional: Download a sample PyTorch model
   import torch
   from torchvision import models, transforms, datasets
   
   # Create an example input for tracing
   image = torch.zeros([1, 3, 256, 256], dtype=torch.float32)
   
   # Load a pretrained resnet18 model from TorchHub
   model = models.resnet18(pretrained=True)
   
   # Tell the model we are using it for evaluation (not training). Note this is required for Inferentia compilation.
   model.eval()
   model_trace = torch.jit.trace(model, image)
   
   # Save your traced model
   model_trace.save('model.pth')
   ```

   Unduh contoh skrip `inference.py` inferensi. Buat `code` direktori dan pindahkan skrip inferensi ke `code` direktori.

   ```
   # Download the inference script
   !wget https://aws-ml-blog-artifacts.s3.us-east-2.amazonaws.com/inference.py
   
   # move it into a code/ directory
   !mkdir code
   !mv inference.py code/
   ```

   Amazon SageMaker AI membutuhkan model pembelajaran mesin yang telah dilatih sebelumnya untuk dikemas sebagai file TAR terkompresi (). `*.tar.gz` Kompres model dan skrip inferensi Anda untuk memenuhi persyaratan ini:

   ```
   !tar -czf test.tar.gz model.pth code/inference.py
   ```

   Saat titik akhir Anda disediakan, file dalam arsip diekstraksi ke `/opt/ml/model/` titik akhir.

   Setelah Anda mengompres model dan model artefak sebagai `.tar.gz` file, unggah ke bucket Amazon S3 Anda. Contoh berikut menunjukkan cara mengunggah model Anda ke Amazon S3 menggunakan: AWS CLI

   ```
   !aws s3 cp test.tar.gz s3://{your-bucket}/models/
   ```

1. **Pilih gambar inferensi Docker bawaan atau buat Inference Docker Image Anda sendiri.**

   SageMaker AI menyediakan wadah untuk algoritme bawaan dan gambar Docker bawaan untuk beberapa kerangka kerja pembelajaran mesin yang paling umum, seperti Apache MXNet,,, dan Chainer. TensorFlow PyTorch Untuk daftar lengkap gambar SageMaker AI yang tersedia, lihat Gambar [Deep Learning Containers yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md).

   Jika tidak ada kontainer SageMaker AI yang ada yang memenuhi kebutuhan Anda dan Anda tidak memiliki wadah sendiri, buat image Docker baru. Lihat [Wadah dengan kode inferensi khusus](your-algorithms-inference-main.md) untuk informasi tentang cara membuat image Docker Anda.

   Berikut ini menunjukkan cara mengambil gambar inferensi PyTorch versi 1.7.1 menggunakan Python SDK: SageMaker 

   ```
   from sagemaker import image_uris
   
   ## Uncomment and replace with your own values if you did not define  
   ## these variables a previous step.
   #framework = 'pytorch'
   #framework_version = '1.7.1'
   
   # Note: you can use any CPU-based instance here, 
   # this is just to set the arch as CPU for the Docker image
   instance_type = 'ml.m5.2xlarge' 
   
   image_uri = image_uris.retrieve(framework, 
                                   region, 
                                   version=framework_version, 
                                   py_version='py3', 
                                   instance_type=instance_type, 
                                   image_scope='inference')
   ```

   Untuk daftar Instans SageMaker AI yang tersedia, lihat [Harga Amazon SageMaker AI](https://aws.amazon.com/sagemaker/pricing/).

1. **Buat contoh arsip payload.**

   Buat arsip yang berisi file individual yang dapat dikirim oleh alat pengujian beban ke titik akhir SageMaker AI Anda. Kode inferensi Anda harus dapat membaca format file dari payload sampel.

   Berikut ini mengunduh gambar.jpg yang digunakan contoh ini pada langkah selanjutnya untuk model ResNet -18.

   ```
   !wget https://cdn.pixabay.com/photo/2020/12/18/05/56/flowers-5841251_1280.jpg
   ```

   Kompres muatan sampel sebagai tarball:

   ```
   !tar -cvzf payload.tar.gz flowers-5841251_1280.jpg
   ```

   Unggah payload sampel ke Amazon S3 dan perhatikan URI Amazon S3:

   ```
   !aws s3 cp payload.tar.gz s3://{bucket}/models/
   ```

   Anda memerlukan URI Amazon S3 di langkah selanjutnya, jadi simpan dalam variabel:

   ```
   bucket_prefix='models'
   bucket = '<your-bucket-name>' # Provide the name of your S3 bucket
   payload_s3_key = f"{bucket_prefix}/payload.tar.gz"
   sample_payload_url= f"s3://{bucket}/{payload_s3_key}"
   ```

1. **Siapkan masukan model Anda untuk pekerjaan rekomendasi**

   Untuk prasyarat terakhir, Anda memiliki dua opsi untuk menyiapkan input model Anda. Anda dapat mendaftarkan model Anda dengan SageMaker Model Registry, yang dapat Anda gunakan untuk membuat katalog model untuk produksi, atau Anda dapat membuat model SageMaker AI dan menentukannya di `ContainerConfig` bidang saat membuat pekerjaan rekomendasi. Opsi pertama adalah yang terbaik jika Anda ingin memanfaatkan fitur yang disediakan [Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html), seperti mengelola versi model dan mengotomatiskan penerapan model. Opsi kedua sangat ideal jika Anda ingin memulai dengan cepat. Untuk opsi pertama, lanjutkan ke langkah 7. Untuk opsi kedua, lewati langkah 7 dan lanjutkan ke langkah 8.

1. **Opsi 1: Daftarkan model Anda di registri model**

   Dengan SageMaker Model Registry, Anda dapat membuat katalog model untuk produksi, mengelola versi model, mengaitkan metadata (seperti metrik pelatihan) dengan model, mengelola status persetujuan model, menyebarkan model ke produksi, dan mengotomatiskan penerapan model dengan CI/CD.

   Bila Anda menggunakan SageMaker Model Registry untuk melacak dan mengelola model Anda, mereka direpresentasikan sebagai paket model berversi dalam grup paket model. Paket model tidak berversi bukan bagian dari grup model. Grup paket model menyimpan beberapa versi atau iterasi model. Meskipun tidak diperlukan untuk membuatnya untuk setiap model dalam registri, mereka membantu mengatur berbagai model yang semuanya memiliki tujuan yang sama dan menyediakan versi otomatis.

   Untuk menggunakan Amazon SageMaker Inference Recommender, Anda harus memiliki paket model berversi. Anda dapat membuat paket model berversi secara terprogram dengan atau AWS SDK untuk Python (Boto3) dengan Amazon Studio Classic. SageMaker Untuk membuat paket model berversi secara terprogram, pertama-tama buat grup paket model dengan API. `CreateModelPackageGroup` Selanjutnya, buat paket model menggunakan `CreateModelPackage` API. Memanggil metode ini membuat paket model berversi.

   Lihat [Buat Grup Model](model-registry-model-group.md) dan [Daftarkan Versi Model](model-registry-version.md) untuk petunjuk terperinci tentang cara membuat grup paket model secara terprogram dan interaktif dan cara membuat paket model berversi, masing-masing, dengan Amazon Studio Classic dan AWS SDK untuk Python (Boto3) Amazon. SageMaker 

   Contoh kode berikut menunjukkan cara membuat paket model berversi menggunakan. AWS SDK untuk Python (Boto3)
**catatan**  
Anda tidak perlu menyetujui paket model untuk membuat pekerjaan Inference Recommender.

   1. **Buat grup paket model**

      Buat grup paket model dengan `CreateModelPackageGroup` API. Berikan nama ke grup paket model untuk `ModelPackageGroupName` dan secara opsional memberikan deskripsi paket model di `ModelPackageGroupDescription` lapangan.

      ```
      model_package_group_name = '<INSERT>'
      model_package_group_description = '<INSERT>' 
      
      model_package_group_input_dict = {
       "ModelPackageGroupName" : model_package_group_name,
       "ModelPackageGroupDescription" : model_package_group_description,
      }
      
      model_package_group_response = sagemaker_client.create_model_package_group(**model_package_group_input_dict)
      ```

      Lihat [Panduan Referensi Amazon SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) untuk daftar lengkap argumen opsional dan wajib yang dapat Anda berikan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackageGroup.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackageGroup.html).

      Buat paket model dengan menentukan image Docker yang menjalankan kode inferensi dan lokasi Amazon S3 dari artefak model Anda dan berikan nilai untuknya. `InferenceSpecification` `InferenceSpecification`harus berisi informasi tentang pekerjaan inferensi yang dapat dijalankan dengan model berdasarkan paket model ini, termasuk yang berikut:
      + Jalur Amazon ECR dari gambar yang menjalankan kode inferensi Anda.
      + (Opsional) Jenis instance yang didukung paket model untuk pekerjaan transformasi dan titik akhir waktu nyata yang digunakan untuk inferensi.
      + Format konten input dan output yang didukung paket model untuk inferensi.

      Selain itu, Anda harus menentukan parameter berikut saat membuat paket model:
      + [Domain](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-Domain): Domain pembelajaran mesin dari paket model Anda dan komponennya. Domain pembelajaran mesin yang umum termasuk visi komputer dan pemrosesan bahasa alami.
      + [Tugas: Tugas](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-Task) pembelajaran mesin yang diselesaikan oleh paket model Anda. Tugas pembelajaran mesin yang umum termasuk deteksi objek dan klasifikasi gambar. Tentukan “LAINNYA” jika tidak ada tugas yang tercantum dalam [Panduan Referensi API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) yang memenuhi kasus penggunaan Anda. Lihat deskripsi bidang API [Tugas](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-Task) untuk daftar tugas pembelajaran mesin yang didukung.
      + [SamplePayloadUrl](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-SamplePayloadUrl): Jalur Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) tempat muatan sampel disimpan. Jalur ini harus menunjuk ke satu arsip TAR terkompresi GZIP (akhiran .tar.gz).
      + [Kerangka kerja](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelPackageContainerDefinition.html#sagemaker-Type-ModelPackageContainerDefinition-Framework): Kerangka pembelajaran mesin dari gambar wadah paket model.
      + [FrameworkVersion](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelPackageContainerDefinition.html#sagemaker-Type-ModelPackageContainerDefinition-FrameworkVersion): Versi kerangka dari gambar wadah paket model.

      Jika Anda memberikan daftar jenis instans yang diizinkan untuk digunakan untuk menghasilkan inferensi secara real-time [SupportedRealtimeInferenceInstanceTypes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InferenceSpecification.html#sagemaker-Type-InferenceSpecification-SupportedRealtimeInferenceInstanceTypes), Inference Recommender membatasi ruang pencarian untuk jenis instans selama pekerjaan. `Default` Gunakan parameter ini jika Anda memiliki batasan anggaran atau mengetahui ada sekumpulan tipe instance tertentu yang dapat mendukung model dan gambar kontainer Anda.

      Pada langkah sebelumnya, kami mengunduh model ResNet 18 yang telah dilatih sebelumnya dan menyimpannya di bucket Amazon S3 di direktori bernama. `models` Kami mengambil gambar inferensi Deep Learning Container PyTorch (v1.7.1) dan menyimpan URI dalam variabel yang disebut. `image_uri` Gunakan variabel-variabel tersebut dalam contoh kode berikut untuk mendefinisikan kamus yang digunakan sebagai masukan ke [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html)API.

      ```
      # Provide the Amazon S3 URI of your compressed tarfile
      # so that Model Registry knows where to find your model artifacts
      bucket_prefix='models'
      bucket = '<your-bucket-name>' # Provide the name of your S3 bucket
      model_s3_key = f"{bucket_prefix}/test.tar.gz"
      model_url= f"s3://{bucket}/{model_s3_key}"
      
      # Similar open source model to the packaged model
      # The name of the ML model as standardized by common model zoos
      nearest_model_name = 'resnet18'
      
      # The supported MIME types for input and output data. In this example, 
      # we are using images as input.
      input_content_type='image/jpeg'
      
      
      # Optional - provide a description of your model.
      model_package_description = '<INSERT>'
      
      ## Uncomment if you did not store the domain and task in an earlier
      ## step 
      #ml_domain = 'COMPUTER_VISION'
      #ml_task = 'IMAGE_CLASSIFICATION'
      
      ## Uncomment if you did not store the framework and framework version
      ## in a previous step.
      #framework = 'PYTORCH'
      #framework_version = '1.7.1'
      
      # Optional: Used for optimizing your model using SageMaker Neo
      # PyTorch uses NCHW format for images
      data_input_configuration = "[[1,3,256,256]]"
      
      # Create a dictionary to use as input for creating a model pacakge group
      model_package_input_dict = {
              "ModelPackageGroupName" : model_package_group_name,
              "ModelPackageDescription" : model_package_description,
              "Domain": ml_domain,
              "Task": ml_task,
              "SamplePayloadUrl": sample_payload_url,
              "InferenceSpecification": {
                      "Containers": [
                          {
                              "Image": image_uri,
                              "ModelDataUrl": model_url,
                              "Framework": framework.upper(), 
                              "FrameworkVersion": framework_version,
                              "NearestModelName": nearest_model_name,
                              "ModelInput": {"DataInputConfig": data_input_configuration}
                          }
                          ],
                      "SupportedContentTypes": [input_content_type]
              }
          }
      ```

   1. **Buat paket model**

      Gunakan `CreateModelPackage` API untuk membuat paket model. Lulus kamus masukan yang ditentukan pada langkah sebelumnya:

      ```
      model_package_response = sagemaker_client.create_model_package(**model_package_input_dict)
      ```

      Anda memerlukan paket model ARN untuk menggunakan Amazon SageMaker Inference Recommender. Perhatikan ARN dari paket model atau simpan dalam variabel:

      ```
      model_package_arn = model_package_response["ModelPackageArn"]
      
      print('ModelPackage Version ARN : {}'.format(model_package_arn))
      ```

1. **Opsi 2: Buat model dan konfigurasikan `ContainerConfig` bidang**

   Gunakan opsi ini jika Anda ingin memulai pekerjaan rekomendasi inferensi dan tidak perlu mendaftarkan model Anda di Registri Model. Pada langkah-langkah berikut, Anda membuat model di SageMaker AI dan mengonfigurasi `ContainerConfig` bidang sebagai input untuk pekerjaan rekomendasi.

   1. **Buat model**

      Buat model dengan `CreateModel` API. Untuk contoh yang memanggil metode ini saat menerapkan model ke SageMaker AI Hosting, lihat [Membuat Model (AWS SDK untuk Python (Boto3))](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html#realtime-endpoints-deployment-create-model).

      Pada langkah sebelumnya, kami mengunduh model ResNet 18 yang telah dilatih sebelumnya dan menyimpannya di bucket Amazon S3 di direktori bernama. `models` Kami mengambil gambar inferensi Deep Learning Container PyTorch (v1.7.1) dan menyimpan URI dalam variabel yang disebut. `image_uri` Kami menggunakan variabel-variabel tersebut dalam contoh kode berikut di mana kami mendefinisikan kamus yang digunakan sebagai masukan ke `[CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ModelName)` API.

      ```
      model_name = '<name_of_the_model>'
      # Role to give SageMaker permission to access AWS services.
      sagemaker_role= "arn:aws:iam::<region>:<account>:role/*"
      
      # Provide the Amazon S3 URI of your compressed tarfile
      # so that Model Registry knows where to find your model artifacts
      bucket_prefix='models'
      bucket = '<your-bucket-name>' # Provide the name of your S3 bucket
      model_s3_key = f"{bucket_prefix}/test.tar.gz"
      model_url= f"s3://{bucket}/{model_s3_key}"
      
      #Create model
      create_model_response = sagemaker_client.create_model(
          ModelName = model_name,
          ExecutionRoleArn = sagemaker_role, 
          PrimaryContainer = {
              'Image': image_uri,
              'ModelDataUrl': model_url,
          })
      ```

   1. **Konfigurasikan `ContainerConfig` bidang**

      Selanjutnya, Anda harus mengkonfigurasi [ContainerConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RecommendationJobInputConfig.html#sagemaker-Type-RecommendationJobInputConfig-ContainerConfig)bidang dengan model yang baru saja Anda buat dan tentukan parameter berikut di dalamnya:
      + `Domain`: Domain pembelajaran mesin model dan komponennya, seperti visi komputer atau pemrosesan bahasa alami.
      + `Task`Tugas pembelajaran mesin yang diselesaikan model, seperti klasifikasi gambar atau deteksi objek.
      + `PayloadConfig`: Konfigurasi untuk payload untuk pekerjaan rekomendasi. Untuk informasi selengkapnya tentang subbidang, lihat`[RecommendationJobPayloadConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RecommendationJobPayloadConfig.html#sagemaker-Type-RecommendationJobPayloadConfig-SamplePayloadUrl)`.
      + `Framework`: Kerangka pembelajaran mesin dari gambar wadah, seperti PyTorch.
      + `FrameworkVersion`: Versi kerangka gambar kontainer.
      + (Opsional)`SupportedInstanceTypes`: Daftar jenis instance yang digunakan untuk menghasilkan kesimpulan secara real-time.

      Jika Anda menggunakan `SupportedInstanceTypes` parameter, Inference Recommender membatasi ruang pencarian untuk jenis instance selama pekerjaan. `Default` Gunakan parameter ini jika Anda memiliki batasan anggaran atau mengetahui ada sekumpulan tipe instance tertentu yang dapat mendukung model dan gambar kontainer Anda.

      Dalam contoh kode berikut, kita menggunakan parameter yang ditentukan sebelumnya, bersama dengan`NearestModelName`, untuk mendefinisikan kamus yang digunakan sebagai masukan ke `[CreateInferenceRecommendationsJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html)` API.

      ```
      ## Uncomment if you did not store the domain and task in a previous step
      #ml_domain = 'COMPUTER_VISION'
      #ml_task = 'IMAGE_CLASSIFICATION'
      
      ## Uncomment if you did not store the framework and framework version in a previous step
      #framework = 'PYTORCH'
      #framework_version = '1.7.1'
      
      # The name of the ML model as standardized by common model zoos
      nearest_model_name = 'resnet18'
      
      # The supported MIME types for input and output data. In this example, 
      # we are using images as input
      input_content_type='image/jpeg'
      
      # Optional: Used for optimizing your model using SageMaker Neo
      # PyTorch uses NCHW format for images
      data_input_configuration = "[[1,3,256,256]]"
      
      # Create a dictionary to use as input for creating an inference recommendation job
      container_config = {
              "Domain": ml_domain,
              "Framework": framework.upper(), 
              "FrameworkVersion": framework_version,
              "NearestModelName": nearest_model_name,
              "PayloadConfig": { 
                  "SamplePayloadUrl": sample_payload_url,
                  "SupportedContentTypes": [ input_content_type ]
               },
              "DataInputConfig": data_input_configuration
              "Task": ml_task,
              }
      ```

# Pekerjaan rekomendasi dengan Amazon SageMaker Inference Recommender
<a name="inference-recommender-recommendation-jobs"></a>

Amazon SageMaker Inference Recommender dapat membuat dua jenis rekomendasi:

1. Rekomendasi inferensi (tipe `Default` pekerjaan) menjalankan serangkaian tes beban pada jenis instance yang direkomendasikan. Anda juga dapat memuat pengujian untuk titik akhir tanpa server.. Anda hanya perlu menyediakan paket model Amazon Resource Name (ARN) untuk meluncurkan jenis pekerjaan rekomendasi ini. Pekerjaan rekomendasi inferensi selesai dalam waktu 45 menit.

1. Rekomendasi titik akhir (tipe `Advanced` pekerjaan) didasarkan pada uji beban khusus di mana Anda memilih instans ML yang diinginkan atau titik akhir tanpa server, menyediakan pola lalu lintas khusus, dan menyediakan persyaratan untuk latensi dan throughput berdasarkan persyaratan produksi Anda. Pekerjaan ini membutuhkan waktu rata-rata 2 jam untuk diselesaikan tergantung pada durasi pekerjaan yang ditetapkan dan jumlah total konfigurasi inferensi yang diuji.

Kedua jenis rekomendasi menggunakan hal yang sama APIs untuk membuat, mendeskripsikan, dan menghentikan pekerjaan. Outputnya adalah daftar rekomendasi konfigurasi instance dengan variabel lingkungan terkait, biaya, throughput, dan metrik latensi. Pekerjaan rekomendasi juga menyediakan jumlah instans awal, yang dapat Anda gunakan untuk mengonfigurasi kebijakan penskalaan otomatis. Untuk membedakan antara dua jenis pekerjaan, saat Anda membuat pekerjaan melalui konsol SageMaker AI atau APIs, tentukan `Default` untuk membuat rekomendasi titik akhir awal dan untuk pengujian beban khusus dan `Advanced` rekomendasi titik akhir.

**catatan**  
Anda tidak perlu melakukan kedua jenis pekerjaan rekomendasi dalam alur kerja Anda sendiri. Anda dapat melakukan keduanya secara independen dari yang lain.

Inference Recommender juga dapat memberi Anda daftar instans prospektif, atau lima jenis instans teratas yang dioptimalkan untuk biaya, throughput, dan latensi untuk penerapan model, bersama dengan skor kepercayaan. Anda dapat memilih instance ini saat menerapkan model Anda. Inference Recommender secara otomatis melakukan benchmarking terhadap model Anda agar Anda dapat memberikan contoh prospektif. Karena ini adalah rekomendasi awal, kami sarankan Anda menjalankan pekerjaan rekomendasi contoh lebih lanjut untuk mendapatkan hasil yang lebih akurat. Untuk melihat instance prospektif, buka halaman detail model SageMaker AI Anda. Untuk informasi selengkapnya, lihat [Dapatkan instans prospektif instan](inference-recommender-prospective.md).

**Topics**
+ [Dapatkan instans prospektif instan](inference-recommender-prospective.md)
+ [Rekomendasi inferensi](inference-recommender-instance-recommendation.md)
+ [Dapatkan rekomendasi inferensi untuk titik akhir yang ada](inference-recommender-existing-endpoint.md)
+ [Hentikan rekomendasi inferensi Anda](instance-recommendation-stop.md)
+ [Rekomendasi yang dikompilasi dengan Neo](inference-recommender-neo-compilation.md)
+ [Hasil rekomendasi](inference-recommender-interpret-results.md)
+ [Dapatkan rekomendasi kebijakan penskalaan otomatis](inference-recommender-autoscaling.md)
+ [Jalankan uji beban khusus](inference-recommender-load-test.md)
+ [Hentikan uji beban Anda](load-test-stop.md)
+ [Memecahkan masalah kesalahan Inference Recommender](inference-recommender-troubleshooting.md)

# Dapatkan instans prospektif instan
<a name="inference-recommender-prospective"></a>

Inference Recommender juga dapat memberi Anda daftar *instance prospektif, atau jenis instans* yang mungkin cocok untuk model Anda, di halaman detail model SageMaker AI Anda. Inference Recommender secara otomatis melakukan benchmarking awal terhadap model Anda agar Anda dapat memberikan lima contoh prospektif teratas. Karena ini adalah rekomendasi awal, kami sarankan Anda menjalankan pekerjaan rekomendasi contoh lebih lanjut untuk mendapatkan hasil yang lebih akurat.

Anda dapat melihat daftar instance prospektif untuk model Anda baik secara terprogram dengan menggunakan API, SageMaker Python SDK [DescribeModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModel.html), atau konsol AI. SageMaker 

**catatan**  
Anda tidak akan mendapatkan instance prospektif untuk model yang Anda buat di SageMaker AI sebelum fitur ini tersedia.

Untuk melihat instance prospektif model Anda melalui konsol, lakukan hal berikut:

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

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

1. Dari daftar model, pilih model Anda.

Pada halaman detail untuk model Anda, buka bagian **Instans prospektif untuk menyebarkan** model. Screenshot berikut menunjukkan bagian ini.

![\[Screenshot dari daftar instance prospektif pada halaman detail model.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inf-rec-prospective.png)


Di bagian ini, Anda dapat melihat instans prospektif yang dioptimalkan untuk biaya, throughput, dan latensi untuk penerapan model, bersama dengan informasi tambahan untuk setiap jenis instans seperti ukuran memori, jumlah CPU dan GPU, dan biaya per jam.

Jika Anda memutuskan ingin membandingkan muatan sampel dan menjalankan pekerjaan rekomendasi inferensi penuh untuk model Anda, Anda dapat memulai pekerjaan rekomendasi inferensi default dari halaman ini. Untuk memulai pekerjaan default melalui konsol, lakukan hal berikut:

1. Pada halaman detail model Anda di **bagian Prospective instance to deploy model**, pilih **Run Inference** recommended job.

1. Di kotak dialog yang muncul, untuk **bucket S3 untuk benchmarking payload, masukkan** lokasi Amazon S3 tempat Anda menyimpan muatan sampel untuk model Anda.

1. Untuk **jenis konten Payload, masukkan tipe** MIME untuk data payload Anda.

1. (Opsional) Dalam **kompilasi Model menggunakan bagian SageMaker Neo**, untuk **konfigurasi input Data**, masukkan bentuk data dalam format kamus.

1. Pilih **Jalankan tugas**.

Inference Recommender memulai pekerjaan, dan Anda dapat melihat pekerjaan dan hasilnya dari halaman daftar **pemberi rekomendasi Inferensi** di konsol AI. SageMaker 

Jika Anda ingin menjalankan pekerjaan lanjutan dan melakukan uji beban khusus, atau jika Anda ingin mengonfigurasi pengaturan dan parameter tambahan untuk pekerjaan Anda, lihat[Jalankan uji beban khusus](inference-recommender-load-test.md).

# Rekomendasi inferensi
<a name="inference-recommender-instance-recommendation"></a>

Pekerjaan rekomendasi inferensi menjalankan serangkaian tes beban pada jenis instance yang direkomendasikan atau titik akhir tanpa server. Pekerjaan rekomendasi inferensi menggunakan metrik kinerja yang didasarkan pada uji beban menggunakan data sampel yang Anda berikan selama pendaftaran versi model.

**catatan**  
Sebelum Anda membuat pekerjaan rekomendasi Inference Recommender, pastikan Anda telah puas. [Prasyarat untuk menggunakan Amazon Inference Recommender SageMaker](inference-recommender-prerequisites.md)

Berikut ini menunjukkan cara menggunakan Amazon SageMaker Inference Recommender untuk membuat rekomendasi inferensi berdasarkan jenis model Anda menggunakan AWS SDK untuk Python (Boto3),, AWS CLI dan Amazon SageMaker Studio Classic, dan konsol AI SageMaker 

**Topics**
+ [Buat rekomendasi inferensi](instance-recommendation-create.md)
+ [Dapatkan hasil pekerjaan rekomendasi inferensi Anda](instance-recommendation-results.md)

# Buat rekomendasi inferensi
<a name="instance-recommendation-create"></a>

Buat rekomendasi inferensi secara terprogram menggunakan atau AWS CLI, AWS SDK untuk Python (Boto3) atau secara interaktif menggunakan Studio Classic atau konsol AI. SageMaker **Tentukan nama pekerjaan untuk rekomendasi inferensi Anda, ARN peran AWS IAM, konfigurasi input, dan paket model ARN saat Anda mendaftarkan model Anda dengan registri model, atau nama model dan `ContainerConfig` kamus dari saat Anda membuat model di bagian Prasyarat.**

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

Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html)API untuk memulai pekerjaan rekomendasi inferensi. Tetapkan `JobType` bidang `'Default'` untuk pekerjaan rekomendasi inferensi. Selain itu, berikan yang berikut:
+ Nama Sumber Daya Amazon (ARN) dari peran IAM yang memungkinkan Inference Recommender untuk melakukan tugas atas nama Anda. Tentukan ini untuk `RoleArn` bidang.
+ Paket model ARN atau nama model. Inference Recommender mendukung salah satu paket model ARN atau nama model sebagai input. Tentukan satu dari yang berikut ini:
  + ARN dari paket model berversi yang Anda buat saat Anda mendaftarkan model Anda dengan SageMaker registri model AI. Tentukan ini untuk `ModelPackageVersionArn` di `InputConfig` lapangan.
  + Nama model yang Anda buat. Tentukan ini untuk `ModelName` di `InputConfig` lapangan. Juga, berikan `ContainerConfig` kamus, yang mencakup bidang wajib yang perlu disediakan dengan nama model. Tentukan ini untuk `ContainerConfig` di `InputConfig` lapangan. Dalam`ContainerConfig`, Anda juga dapat secara opsional menentukan `SupportedEndpointType` bidang sebagai salah satu `RealTime` atau`Serverless`. Jika Anda menentukan bidang ini, Inference Recommender mengembalikan rekomendasi hanya untuk jenis titik akhir tersebut. Jika Anda tidak menentukan bidang ini, Inference Recommender mengembalikan rekomendasi untuk kedua tipe titik akhir.
+ Nama untuk pekerjaan rekomendasi Inference Recommender Anda untuk bidang tersebut. `JobName` Nama pekerjaan Inference Recommender harus unik di dalam AWS Wilayah dan di dalam akun Anda AWS .

Impor AWS SDK untuk Python (Boto3) paket dan buat objek klien SageMaker AI menggunakan kelas klien. Jika Anda mengikuti langkah-langkah di bagian **Prasyarat**, hanya tentukan salah satu dari berikut ini:
+ Opsi 1: Jika Anda ingin membuat pekerjaan rekomendasi inferensi dengan paket model ARN, maka simpan grup paket model ARN dalam variabel bernama. `model_package_arn`
+ Opsi 2: Jika Anda ingin membuat pekerjaan rekomendasi inferensi dengan nama model dan`ContainerConfig`, simpan nama model dalam variabel bernama `model_name` dan `ContainerConfig` kamus dalam variabel bernama`container_config`.

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

# Provide only one of model package ARN or model name, not both.
# Provide your model package ARN that was created when you registered your 
# model with Model Registry 
model_package_arn = '<INSERT>'
## Uncomment if you would like to create an inference recommendations job with a
## model name instead of a model package ARN, and comment out model_package_arn above
## Provide your model name
# model_name = '<INSERT>'
## Provide your container config 
# container_config = '<INSERT>'

# Provide a unique job name for SageMaker Inference Recommender job
job_name = '<INSERT>'

# Inference Recommender job type. Set to Default to get an initial recommendation
job_type = 'Default'

# Provide an IAM Role that gives SageMaker Inference Recommender permission to 
# access AWS services
role_arn = 'arn:aws:iam::<account>:role/*'

sagemaker_client.create_inference_recommendations_job(
    JobName = job_name,
    JobType = job_type,
    RoleArn = role_arn,
    # Provide only one of model package ARN or model name, not both. 
    # If you would like to create an inference recommendations job with a model name,
    # uncomment ModelName and ContainerConfig, and comment out ModelPackageVersionArn.
    InputConfig = {
        'ModelPackageVersionArn': model_package_arn
        # 'ModelName': model_name,
        # 'ContainerConfig': container_config
    }
)
```

Lihat [Panduan Referensi Amazon SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) untuk daftar lengkap argumen opsional dan wajib yang dapat Anda berikan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html).

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

Gunakan `create-inference-recommendations-job` API untuk memulai pekerjaan rekomendasi inferensi. Tetapkan `job-type` bidang `'Default'` untuk pekerjaan rekomendasi inferensi. Selain itu, berikan yang berikut:
+ Nama Sumber Daya Amazon (ARN) dari peran IAM yang memungkinkan Amazon SageMaker Inference Recommender untuk melakukan tugas atas nama Anda. Tentukan ini untuk `role-arn` bidang.
+ Paket model ARN atau nama model. Inference Recommender mendukung salah satu paket model ARN atau nama model sebagai input. Tentukan salah satu dari berikut ini
  + ARN dari paket model berversi yang Anda buat saat Anda mendaftarkan model Anda dengan Model Registry. Tentukan ini untuk `ModelPackageVersionArn` di `input-config` lapangan.
  + Nama model yang Anda buat. Tentukan ini untuk `ModelName` di `input-config` lapangan. Juga, berikan `ContainerConfig` kamus yang mencakup bidang wajib yang perlu disediakan dengan nama model. Tentukan ini untuk `ContainerConfig` di `input-config` lapangan. Dalam`ContainerConfig`, Anda juga dapat secara opsional menentukan `SupportedEndpointType` bidang sebagai salah satu `RealTime` atau`Serverless`. Jika Anda menentukan bidang ini, Inference Recommender mengembalikan rekomendasi hanya untuk jenis titik akhir tersebut. Jika Anda tidak menentukan bidang ini, Inference Recommender mengembalikan rekomendasi untuk kedua tipe titik akhir.
+ Nama untuk pekerjaan rekomendasi Inference Recommender Anda untuk bidang tersebut. `job-name` Nama pekerjaan Inference Recommender harus unik di dalam AWS Wilayah dan di dalam akun Anda AWS .

Untuk membuat lowongan rekomendasi inferensi dengan paket model ARN, gunakan contoh berikut:

```
aws sagemaker create-inference-recommendations-job 
    --region <region>\
    --job-name <job_name>\
    --job-type Default\
    --role-arn arn:aws:iam::<account:role/*>\
    --input-config "{
        \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region:account:role/*>\",
        }"
```

Untuk membuat pekerjaan rekomendasi inferensi dengan nama model dan`ContainerConfig`, gunakan contoh berikut. Contoh menggunakan `SupportedEndpointType` bidang untuk menentukan bahwa kami hanya ingin mengembalikan rekomendasi inferensi waktu nyata:

```
aws sagemaker create-inference-recommendations-job 
    --region <region>\
    --job-name <job_name>\
    --job-type Default\
    --role-arn arn:aws:iam::<account:role/*>\
    --input-config "{
        \"ModelName\": \"model-name\",
        \"ContainerConfig\" : {
                \"Domain\": \"COMPUTER_VISION\",
                \"Framework\": \"PYTORCH\",
                \"FrameworkVersion\": \"1.7.1\",
                \"NearestModelName\": \"resnet18\",
                \"PayloadConfig\": 
                    {
                        \"SamplePayloadUrl\": \"s3://{bucket}/{payload_s3_key}\", 
                        \"SupportedContentTypes\": [\"image/jpeg\"]
                    },
                \"SupportedEndpointType\": \"RealTime\",
                \"DataInputConfig\": \"[[1,3,256,256]]\",
                \"Task\": \"IMAGE_CLASSIFICATION\",
            },
        }"
```

------
#### [ Amazon SageMaker Studio Classic ]

Buat pekerjaan rekomendasi inferensi di Studio Classic.

1. Di aplikasi Studio Classic Anda, pilih ikon beranda (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Di bilah sisi kiri Studio Classic, pilih **Model**.

1. Pilih **Model Registry** dari daftar dropdown untuk menampilkan model yang telah Anda daftarkan dengan registri model.

   Panel kiri menampilkan daftar grup model. Daftar ini mencakup semua grup model yang terdaftar dengan registri model di akun Anda, termasuk model yang terdaftar di luar Studio Classic.

1. Pilih nama grup model Anda. Saat Anda memilih grup model, panel kanan Studio Classic menampilkan kepala kolom seperti **Versi** dan **Pengaturan**.

   Jika Anda memiliki satu atau beberapa paket model dalam grup model Anda, Anda akan melihat daftar paket model tersebut dalam kolom **Versions**.

1. Pilih kolom **Inference recommended.**

1. Pilih peran IAM yang memberikan izin Inference Recommender untuk mengakses layanan. AWS Anda dapat membuat peran dan melampirkan kebijakan terkelola `AmazonSageMakerFullAccess` IAM untuk mencapai hal ini. Atau Anda dapat membiarkan Studio Classic membuat peran untuk Anda.

1. Pilih **Dapatkan rekomendasi**.

   Rekomendasi inferensi dapat memakan waktu hingga 45 menit.
**Awas**  
Jangan tutup tab ini. Jika Anda menutup tab ini, Anda membatalkan pekerjaan rekomendasi instans.

------
#### [ SageMaker AI console ]

Buat pekerjaan rekomendasi instans melalui konsol SageMaker AI dengan melakukan 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, lalu pilih **Inference**** recommended.

1. Pada halaman **lowongan pemberi rekomendasi inferensi, pilih **Buat** pekerjaan**.

1. Untuk **Langkah 1: Konfigurasi model**, lakukan hal berikut:

   1. Untuk **jenis Job**, pilih **Default recommended job**.

   1. Jika Anda menggunakan model yang terdaftar di registri model SageMaker AI, aktifkan sakelar **Pilih model dari registri model** dan lakukan hal berikut:

      1. Dari daftar dropdown **grup Model**, pilih grup model di registri model SageMaker AI tempat model Anda berada.

      1. Dari daftar dropdown **versi Model**, pilih versi model yang diinginkan.

   1. Jika Anda menggunakan model yang telah Anda buat di SageMaker AI, matikan **sakelar Pilih model dari registri model** dan lakukan hal berikut:

      1. Untuk bidang **Nama Model**, masukkan nama model SageMaker AI Anda.

   1. Dari daftar tarik-turun **peran IAM**, Anda dapat memilih peran AWS IAM yang ada yang memiliki izin yang diperlukan untuk membuat pekerjaan rekomendasi instans. Atau, jika Anda tidak memiliki peran yang ada, Anda dapat memilih **Buat peran baru** untuk membuka pop-up pembuatan peran, dan SageMaker AI menambahkan izin yang diperlukan ke peran baru yang Anda buat.

   1. Untuk **bucket S3 untuk benchmarking payload**, masukkan path Amazon S3 ke arsip payload sampel Anda, yang harus berisi contoh file payload yang digunakan Inference Recomder untuk membandingkan model Anda pada jenis instans yang berbeda.

   1. Untuk **jenis konten Payload, masukkan tipe** MIME dari data payload sampel Anda.

   1. (Opsional) Jika Anda mematikan **tombol Pilih model dari registri model** dan menentukan model SageMaker AI, lalu untuk **konfigurasi Container**, lakukan hal berikut:

      1. Untuk daftar dropdown **Domain**, pilih domain pembelajaran mesin model, seperti visi komputer, pemrosesan bahasa alami, atau pembelajaran mesin.

      1. Untuk daftar dropdown **Framework**, pilih framework penampung Anda, seperti TensorFlow atau. XGBoost

      1. Untuk **versi Framework**, masukkan versi kerangka gambar kontainer Anda.

      1. Untuk daftar dropdown **nama model terdekat**, pilih model pra-terlatih yang sebagian besar cocok dengan model Anda.

      1. Untuk daftar tarik-turun **Tugas**, pilih tugas pembelajaran mesin yang diselesaikan model, seperti klasifikasi gambar atau regresi.

   1. (Opsional) Untuk **kompilasi Model menggunakan SageMaker Neo**, Anda dapat mengonfigurasi pekerjaan rekomendasi untuk model yang telah Anda kompilasi menggunakan SageMaker Neo. Untuk **konfigurasi input Data**, masukkan bentuk data input yang benar untuk model Anda dalam format yang mirip dengan`{'input':[1,1024,1024,3]}`.

   1. Pilih **Berikutnya**.

1. Untuk **Langkah 2: Contoh dan parameter lingkungan**, lakukan hal berikut:

   1. (Opsional) Untuk **Select instance untuk benchmarking**, Anda dapat memilih hingga 8 jenis instans yang ingin Anda benchmark. Jika Anda tidak memilih instans apa pun, Inference Recommender mempertimbangkan semua jenis instance.

   1. Pilih **Berikutnya**.

1. Untuk **Langkah 3: Parameter Job**, lakukan hal berikut:

   1. (Opsional) Untuk bidang **Nama Job**, masukkan nama untuk pekerjaan rekomendasi instans Anda. Saat Anda membuat pekerjaan, SageMaker AI menambahkan stempel waktu di akhir nama ini.

   1. (Opsional) Untuk kolom **Job description**, masukkan deskripsi untuk pekerjaan tersebut.

   1. (Opsional) Untuk daftar dropdown **kunci Enkripsi**, pilih AWS KMS kunci berdasarkan nama atau masukkan ARN untuk mengenkripsi data Anda.

   1. (Opsional) Untuk **durasi pengujian Maks**, masukkan jumlah detik maksimum yang Anda inginkan setiap pengujian dijalankan.

   1. (Opsional) Untuk **pemanggilan Maks per menit**, masukkan jumlah maksimum permintaan per menit yang dapat dicapai titik akhir sebelum menghentikan pekerjaan rekomendasi. Setelah mencapai batas ini, SageMaker AI mengakhiri pekerjaan.

   1. (Opsional) Untuk **ambang latensi Model P99 (ms)**, masukkan persentil latensi model dalam milidetik.

   1. Pilih **Berikutnya**.

1. Untuk **Langkah 4: Tinjau pekerjaan**, tinjau konfigurasi Anda, lalu pilih **Kirim**.

------

# Dapatkan hasil pekerjaan rekomendasi inferensi Anda
<a name="instance-recommendation-results"></a>

Kumpulkan hasil pekerjaan rekomendasi inferensi Anda secara terprogram dengan AWS SDK untuk Python (Boto3), Studio Classic AWS CLI, atau konsol AI. SageMaker 

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

Setelah rekomendasi inferensi selesai, Anda dapat menggunakan `DescribeInferenceRecommendationsJob` untuk mendapatkan rincian pekerjaan dan rekomendasi. Berikan nama pekerjaan yang Anda gunakan saat Anda membuat pekerjaan rekomendasi inferensi.

```
job_name='<INSERT>'
response = sagemaker_client.describe_inference_recommendations_job(
                    JobName=job_name)
```

Cetak objek respons. Sampel kode sebelumnya menyimpan respons dalam variabel bernama`response`.

```
print(response['Status'])
```

Ini mengembalikan respon JSON mirip dengan contoh berikut. Perhatikan bahwa contoh ini menunjukkan jenis instance yang direkomendasikan untuk inferensi waktu nyata (untuk contoh yang menunjukkan rekomendasi inferensi tanpa server, lihat contoh setelah yang ini).

```
{
    'JobName': 'job-name', 
    'JobDescription': 'job-description', 
    'JobType': 'Default', 
    'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 
    'Status': 'COMPLETED', 
    'CreationTime': datetime.datetime(2021, 10, 26, 20, 4, 57, 627000, tzinfo=tzlocal()), 
    'LastModifiedTime': datetime.datetime(2021, 10, 26, 20, 25, 1, 997000, tzinfo=tzlocal()), 
    'InputConfig': {
                'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 
                'JobDurationInSeconds': 0
                }, 
    'InferenceRecommendations': [{
            'Metrics': {
                'CostPerHour': 0.20399999618530273, 
                'CostPerInference': 5.246913588052848e-06, 
                'MaximumInvocations': 648, 
                'ModelLatency': 263596
                }, 
            'EndpointConfiguration': {
                'EndpointName': 'endpoint-name', 
                'VariantName': 'variant-name', 
                'InstanceType': 'ml.c5.xlarge', 
                'InitialInstanceCount': 1
                }, 
            'ModelConfiguration': {
                'Compiled': False, 
                'EnvironmentParameters': []
                }
         }, 
         {
            'Metrics': {
                'CostPerHour': 0.11500000208616257, 
                'CostPerInference': 2.92620870823157e-06, 
                'MaximumInvocations': 655, 
                'ModelLatency': 826019
                }, 
            'EndpointConfiguration': {
                'EndpointName': 'endpoint-name', 
                'VariantName': 'variant-name', 
                'InstanceType': 'ml.c5d.large', 
                'InitialInstanceCount': 1
                }, 
            'ModelConfiguration': {
                'Compiled': False, 
                'EnvironmentParameters': []
                }
            }, 
            {
                'Metrics': {
                    'CostPerHour': 0.11500000208616257, 
                    'CostPerInference': 3.3625731248321244e-06, 
                    'MaximumInvocations': 570, 
                    'ModelLatency': 1085446
                    }, 
                'EndpointConfiguration': {
                    'EndpointName': 'endpoint-name', 
                    'VariantName': 'variant-name', 
                    'InstanceType': 'ml.m5.large', 
                    'InitialInstanceCount': 1
                    }, 
                'ModelConfiguration': {
                    'Compiled': False, 
                    'EnvironmentParameters': []
                    }
            }], 
    'ResponseMetadata': {
        'RequestId': 'request-id', 
        'HTTPStatusCode': 200, 
        'HTTPHeaders': {
            'x-amzn-requestid': 'x-amzn-requestid', 
            'content-type': 'content-type', 
            'content-length': '1685', 
            'date': 'Tue, 26 Oct 2021 20:31:10 GMT'
            }, 
        'RetryAttempts': 0
        }
}
```

Beberapa baris pertama memberikan informasi tentang pekerjaan rekomendasi inferensi itu sendiri. Ini termasuk nama pekerjaan, ARN peran, dan waktu pembuatan dan penghapusan. 

`InferenceRecommendations`Kamus berisi daftar rekomendasi inferensi Inference Recommender.

Kamus `EndpointConfiguration` bersarang berisi rekomendasi instance type (`InstanceType`) bersama dengan titik akhir dan nama varian (model pembelajaran AWS mesin yang diterapkan) yang digunakan selama pekerjaan rekomendasi. Anda dapat menggunakan nama endpoint dan varian untuk pemantauan di Amazon CloudWatch Events. Untuk informasi selengkapnya, lihat [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md).

Kamus `Metrics` bersarang berisi informasi tentang perkiraan biaya per jam (`CostPerHour`) untuk titik akhir real-time Anda dalam dolar AS, perkiraan biaya per inferensi (`CostPerInference`) dalam dolar AS untuk titik akhir waktu nyata Anda, jumlah maksimum yang diharapkan `InvokeEndpoint` permintaan per menit yang dikirim ke titik akhir (`MaxInvocations`), dan latensi model (`ModelLatency`), yang merupakan interval waktu (dalam mikrodetik) yang diambil model Anda untuk merespons AI. SageMaker Latensi model mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah.

Contoh berikut menunjukkan `InferenceRecommendations` bagian dari respons untuk pekerjaan rekomendasi inferensi yang dikonfigurasi untuk mengembalikan rekomendasi inferensi tanpa server:

```
"InferenceRecommendations": [ 
      { 
         "EndpointConfiguration": { 
            "EndpointName": "value",
            "InitialInstanceCount": value,
            "InstanceType": "value",
            "VariantName": "value",
            "ServerlessConfig": {
                "MaxConcurrency": value,
                "MemorySizeInMb": value
            }
         },
         "InvocationEndTime": value,
         "InvocationStartTime": value,
         "Metrics": { 
            "CostPerHour": value,
            "CostPerInference": value,
            "CpuUtilization": value,
            "MaxInvocations": value,
            "MemoryUtilization": value,
            "ModelLatency": value,
            "ModelSetupTime": value
         },
         "ModelConfiguration": { 
            "Compiled": "False",
            "EnvironmentParameters": [],
            "InferenceSpecificationName": "value"
         },
         "RecommendationId": "value"
      }
   ]
```

Anda dapat menafsirkan rekomendasi untuk inferensi tanpa server mirip dengan hasil untuk inferensi waktu nyata, dengan pengecualian`ServerlessConfig`, yang memberi tahu Anda metrik yang dikembalikan untuk titik akhir tanpa server dengan yang diberikan dan kapan. `MemorySizeInMB` `MaxConcurrency = 1` Untuk meningkatkan throughput yang mungkin pada titik akhir, tingkatkan nilai linier. `MaxConcurrency` Misalnya, jika rekomendasi inferensi menunjukkan `MaxInvocations` sebagai`1000`, maka meningkat `MaxConcurrency` menjadi `2` akan mendukung 2000`MaxInvocations`. Perhatikan bahwa ini benar hanya sampai titik tertentu, yang dapat bervariasi berdasarkan model dan kode Anda. Rekomendasi tanpa server juga mengukur metrik`ModelSetupTime`, yang mengukur (dalam mikrodetik) waktu yang diperlukan untuk meluncurkan sumber daya komputer pada titik akhir tanpa server. Untuk informasi selengkapnya tentang pengaturan titik akhir tanpa server, lihat dokumentasi Inferensi Tanpa [Server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).

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

Setelah rekomendasi inferensi selesai, Anda dapat menggunakan `describe-inference-recommendations-job` untuk mendapatkan detail pekerjaan dan jenis instans yang direkomendasikan. Berikan nama pekerjaan yang Anda gunakan saat Anda membuat pekerjaan rekomendasi inferensi.

```
aws sagemaker describe-inference-recommendations-job\
    --job-name <job-name>\
    --region <aws-region>
```

Respons JSON serupa harus menyerupai contoh berikut. Perhatikan bahwa contoh ini menunjukkan jenis instance yang direkomendasikan untuk inferensi waktu nyata (untuk contoh yang menunjukkan rekomendasi inferensi tanpa server, lihat contoh setelah yang ini).

```
{
    'JobName': 'job-name', 
    'JobDescription': 'job-description', 
    'JobType': 'Default', 
    'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 
    'Status': 'COMPLETED', 
    'CreationTime': datetime.datetime(2021, 10, 26, 20, 4, 57, 627000, tzinfo=tzlocal()), 
    'LastModifiedTime': datetime.datetime(2021, 10, 26, 20, 25, 1, 997000, tzinfo=tzlocal()), 
    'InputConfig': {
                'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 
                'JobDurationInSeconds': 0
                }, 
    'InferenceRecommendations': [{
            'Metrics': {
                'CostPerHour': 0.20399999618530273, 
                'CostPerInference': 5.246913588052848e-06, 
                'MaximumInvocations': 648, 
                'ModelLatency': 263596
                }, 
            'EndpointConfiguration': {
                'EndpointName': 'endpoint-name', 
                'VariantName': 'variant-name', 
                'InstanceType': 'ml.c5.xlarge', 
                'InitialInstanceCount': 1
                }, 
            'ModelConfiguration': {
                'Compiled': False, 
                'EnvironmentParameters': []
                }
         }, 
         {
            'Metrics': {
                'CostPerHour': 0.11500000208616257, 
                'CostPerInference': 2.92620870823157e-06, 
                'MaximumInvocations': 655, 
                'ModelLatency': 826019
                }, 
            'EndpointConfiguration': {
                'EndpointName': 'endpoint-name', 
                'VariantName': 'variant-name', 
                'InstanceType': 'ml.c5d.large', 
                'InitialInstanceCount': 1
                }, 
            'ModelConfiguration': {
                'Compiled': False, 
                'EnvironmentParameters': []
                }
            }, 
            {
                'Metrics': {
                    'CostPerHour': 0.11500000208616257, 
                    'CostPerInference': 3.3625731248321244e-06, 
                    'MaximumInvocations': 570, 
                    'ModelLatency': 1085446
                    }, 
                'EndpointConfiguration': {
                    'EndpointName': 'endpoint-name', 
                    'VariantName': 'variant-name', 
                    'InstanceType': 'ml.m5.large', 
                    'InitialInstanceCount': 1
                    }, 
                'ModelConfiguration': {
                    'Compiled': False, 
                    'EnvironmentParameters': []
                    }
            }], 
    'ResponseMetadata': {
        'RequestId': 'request-id', 
        'HTTPStatusCode': 200, 
        'HTTPHeaders': {
            'x-amzn-requestid': 'x-amzn-requestid', 
            'content-type': 'content-type', 
            'content-length': '1685', 
            'date': 'Tue, 26 Oct 2021 20:31:10 GMT'
            }, 
        'RetryAttempts': 0
        }
}
```

Beberapa baris pertama memberikan informasi tentang pekerjaan rekomendasi inferensi itu sendiri. Ini termasuk nama pekerjaan, peran ARN, pembuatan, dan waktu penghapusan. 

`InferenceRecommendations`Kamus berisi daftar rekomendasi inferensi Inference Recommender.

Kamus `EndpointConfiguration` bersarang berisi rekomendasi instance type (`InstanceType`) bersama dengan titik akhir dan nama varian (model pembelajaran AWS mesin yang diterapkan) yang digunakan selama pekerjaan rekomendasi. Anda dapat menggunakan nama endpoint dan varian untuk pemantauan di Amazon CloudWatch Events. Untuk informasi selengkapnya, lihat [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md).

Kamus `Metrics` bersarang berisi informasi tentang perkiraan biaya per jam (`CostPerHour`) untuk titik akhir real-time Anda dalam dolar AS, perkiraan biaya per inferensi (`CostPerInference`) dalam dolar AS untuk titik akhir waktu nyata Anda, jumlah maksimum yang diharapkan `InvokeEndpoint` permintaan per menit yang dikirim ke titik akhir (`MaxInvocations`), dan latensi model (`ModelLatency`), yang merupakan interval waktu (dalam milidetik) yang diambil model Anda untuk merespons AI. SageMaker Latensi model mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah.

Contoh berikut menunjukkan `InferenceRecommendations` bagian dari respons untuk pekerjaan rekomendasi inferensi yang dikonfigurasi untuk mengembalikan rekomendasi inferensi tanpa server:

```
"InferenceRecommendations": [ 
      { 
         "EndpointConfiguration": { 
            "EndpointName": "value",
            "InitialInstanceCount": value,
            "InstanceType": "value",
            "VariantName": "value",
            "ServerlessConfig": {
                "MaxConcurrency": value,
                "MemorySizeInMb": value
            }
         },
         "InvocationEndTime": value,
         "InvocationStartTime": value,
         "Metrics": { 
            "CostPerHour": value,
            "CostPerInference": value,
            "CpuUtilization": value,
            "MaxInvocations": value,
            "MemoryUtilization": value,
            "ModelLatency": value,
            "ModelSetupTime": value
         },
         "ModelConfiguration": { 
            "Compiled": "False",
            "EnvironmentParameters": [],
            "InferenceSpecificationName": "value"
         },
         "RecommendationId": "value"
      }
   ]
```

Anda dapat menafsirkan rekomendasi untuk inferensi tanpa server mirip dengan hasil untuk inferensi waktu nyata, dengan pengecualian`ServerlessConfig`, yang memberi tahu Anda metrik yang dikembalikan untuk titik akhir tanpa server dengan yang diberikan dan kapan. `MemorySizeInMB` `MaxConcurrency = 1` Untuk meningkatkan throughput yang mungkin pada titik akhir, tingkatkan nilai linier. `MaxConcurrency` Misalnya, jika rekomendasi inferensi menunjukkan `MaxInvocations` sebagai`1000`, maka meningkat `MaxConcurrency` menjadi `2` akan mendukung 2000`MaxInvocations`. Perhatikan bahwa ini benar hanya sampai titik tertentu, yang dapat bervariasi berdasarkan model dan kode Anda. Rekomendasi tanpa server juga mengukur metrik`ModelSetupTime`, yang mengukur (dalam mikrodetik) waktu yang diperlukan untuk meluncurkan sumber daya komputer pada titik akhir tanpa server. Untuk informasi selengkapnya tentang pengaturan titik akhir tanpa server, lihat dokumentasi Inferensi Tanpa [Server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).

------
#### [ Amazon SageMaker Studio Classic ]

Rekomendasi inferensi terisi di tab Rekomendasi **Inferensi baru dalam Studio** Classic. Diperlukan waktu hingga 45 menit agar hasilnya muncul. Tab ini berisi judul kolom **Hasil** dan **Detail**.

Kolom **Detail** memberikan informasi tentang pekerjaan rekomendasi inferensi, seperti nama rekomendasi inferensi, kapan pekerjaan dibuat (**Waktu pembuatan**), dan banyak lagi. Ini juga menyediakan informasi **Pengaturan**, seperti jumlah maksimum pemanggilan yang terjadi per menit dan informasi tentang Nama Sumber Daya Amazon yang digunakan.

Kolom **Results** menyediakan jendela **sasaran Deployment** dan **rekomendasi SageMaker AI** di mana Anda dapat menyesuaikan urutan hasil yang ditampilkan berdasarkan kepentingan penerapan. Ada tiga menu tarik-turun yang dapat Anda gunakan untuk memberikan tingkat kepentingan **Biaya**, **Latensi**, dan **Throughput** untuk kasus penggunaan Anda. Untuk setiap tujuan (biaya, latensi, dan throughput), Anda dapat menetapkan tingkat kepentingan: Kepentingan **Terendah, Kepentingan** **Rendah, Kepentingan** **sedang, Kepentingan** **tinggi, atau Kepentingan** **tertinggi**. 

Berdasarkan pilihan penting Anda untuk setiap tujuan, Inference Recommender menampilkan rekomendasi teratasnya di bidang **SageMakerrekomendasi** di sebelah kanan panel, bersama dengan perkiraan biaya per jam dan permintaan inferensi. Ini juga memberikan informasi tentang latensi model yang diharapkan, jumlah maksimum pemanggilan, dan jumlah instance. Untuk rekomendasi tanpa server, Anda dapat melihat nilai ideal untuk konkurensi maksimum dan ukuran memori titik akhir.

Selain rekomendasi teratas yang ditampilkan, Anda juga dapat melihat informasi yang sama ditampilkan untuk semua instance yang diuji oleh Inference Recommender di bagian **Semua** berjalan.

------
#### [ SageMaker AI console ]

Anda dapat melihat pekerjaan rekomendasi instans Anda di konsol SageMaker AI dengan melakukan 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, lalu pilih **Inference**** recommended.

1. Pada halaman **pekerjaan pemberi rekomendasi inferensi**, pilih nama pekerjaan rekomendasi inferensi Anda.

Pada halaman detail untuk pekerjaan Anda, Anda dapat melihat **rekomendasi Inferensi**, yang merupakan jenis instans yang direkomendasikan SageMaker AI untuk model Anda, seperti yang ditunjukkan pada tangkapan layar berikut.

![\[Tangkapan layar dari daftar rekomendasi inferensi di halaman detail pekerjaan di konsol SageMaker AI.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inf-rec-instant-recs.png)


Di bagian ini, Anda dapat membandingkan jenis instans dengan berbagai faktor seperti **latensi Model**, **Biaya per jam, Biaya per** **inferensi**, dan **Pemanggilan** per menit.

Di halaman ini, Anda juga dapat melihat konfigurasi yang Anda tentukan untuk pekerjaan Anda. Di bagian **Monitor**, Anda dapat melihat CloudWatch metrik Amazon yang dicatat untuk setiap jenis instans. Untuk mempelajari lebih lanjut tentang menafsirkan metrik ini, lihat [Menafsirkan](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-interpret-results.html) hasil.

------

Untuk informasi lebih lanjut tentang menafsirkan hasil pekerjaan rekomendasi Anda, lihat[Hasil rekomendasi](inference-recommender-interpret-results.md).

# Dapatkan rekomendasi inferensi untuk titik akhir yang ada
<a name="inference-recommender-existing-endpoint"></a>

Pekerjaan rekomendasi inferensi menjalankan serangkaian uji beban pada jenis instance yang direkomendasikan dan titik akhir yang ada. Pekerjaan rekomendasi inferensi menggunakan metrik kinerja yang didasarkan pada uji beban menggunakan data sampel yang Anda berikan selama pendaftaran versi model.

Anda dapat melakukan benchmark dan mendapatkan rekomendasi inferensi untuk titik akhir Inferensi SageMaker AI yang ada untuk membantu Anda meningkatkan kinerja titik akhir Anda. Prosedur mendapatkan rekomendasi untuk titik akhir Inferensi SageMaker AI yang ada mirip dengan prosedur untuk [mendapatkan rekomendasi inferensi](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-instance-recommendation.html) tanpa titik akhir. Ada beberapa pengecualian fitur yang perlu diperhatikan saat membandingkan titik akhir yang ada:
+ Anda hanya dapat menggunakan satu titik akhir yang ada per pekerjaan Inference Recommender.
+ Anda hanya dapat memiliki satu varian di titik akhir Anda.
+ Anda tidak dapat menggunakan titik akhir yang memungkinkan penskalaan otomatis.
+ Fungsionalitas ini hanya didukung untuk [Inferensi Real-Time](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html).
+ Fungsionalitas ini tidak mendukung Titik [Akhir Multi-Model Real-Time](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html).

**Awas**  
Kami sangat menyarankan agar Anda tidak menjalankan pekerjaan Inference Recommender pada titik akhir produksi yang menangani lalu lintas langsung. Beban sintetis selama pembandingan dapat memengaruhi titik akhir produksi Anda dan menyebabkan pelambatan atau memberikan hasil benchmark yang tidak akurat. Kami menyarankan Anda menggunakan titik akhir non-produksi atau pengembang untuk tujuan perbandingan. 

Bagian berikut menunjukkan cara menggunakan Amazon SageMaker Inference Recommender untuk membuat rekomendasi inferensi untuk titik akhir yang ada berdasarkan jenis model Anda menggunakan AWS SDK for Python (Boto3) dan file. AWS CLI

**catatan**  
Sebelum Anda membuat pekerjaan rekomendasi Inference Recommender, pastikan Anda telah puas. [Prasyarat untuk menggunakan Amazon Inference Recommender SageMaker](inference-recommender-prerequisites.md)

## Prasyarat
<a name="inference-recommender-existing-endpoint-prerequisites"></a>

Jika Anda belum memiliki titik akhir Inferensi SageMaker AI, Anda bisa [mendapatkan rekomendasi inferensi tanpa titik akhir, atau Anda dapat membuat titik akhir Inferensi](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-instance-recommendation.html) Waktu Nyata dengan mengikuti instruksi di [Buat titik akhir Anda dan terapkan model Anda](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html).

## Buat pekerjaan rekomendasi inferensi untuk titik akhir yang ada
<a name="inference-recommender-existing-endpoint-create"></a>

Buat rekomendasi inferensi secara terprogram menggunakan AWS SDK untuk Python (Boto3), atau. AWS CLI Tentukan nama pekerjaan untuk rekomendasi inferensi Anda, nama titik akhir Inferensi SageMaker AI yang ada, ARN peran AWS IAM, konfigurasi input, dan ARN paket model Anda sejak Anda mendaftarkan model Anda dengan registri model.

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

Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html)API untuk mendapatkan rekomendasi inferensi. Tetapkan `JobType` bidang `'Default'` untuk pekerjaan rekomendasi inferensi. Selain itu, berikan yang berikut:
+ Berikan nama untuk pekerjaan rekomendasi Inference Recommender Anda untuk bidang tersebut. `JobName` Nama pekerjaan Inference Recommender harus unik di dalam AWS Wilayah dan di dalam akun Anda AWS .
+ Nama Sumber Daya Amazon (ARN) dari peran IAM yang memungkinkan Inference Recommender untuk melakukan tugas atas nama Anda. Tentukan ini untuk `RoleArn` bidang.
+ ARN dari paket model berversi yang Anda buat saat Anda mendaftarkan model Anda dengan registri model. Tentukan ini untuk `ModelPackageVersionArn` di `InputConfig` lapangan.
+ Berikan nama titik akhir Inferensi SageMaker AI yang ada yang ingin Anda benchmark di Inference Recommender di lapangan. `Endpoints` `InputConfig`

Impor AWS SDK untuk Python (Boto3) paket dan buat objek klien SageMaker AI menggunakan kelas klien. Jika Anda mengikuti langkah-langkah di bagian **Prasyarat**, kelompok paket model ARN disimpan dalam variabel bernama. `model_package_arn`

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

# Provide your model package ARN that was created when you registered your 
# model with Model Registry 
model_package_arn = '<model-package-arn>'

# Provide a unique job name for SageMaker Inference Recommender job
job_name = '<job-name>'

# Inference Recommender job type. Set to Default to get an initial recommendation
job_type = 'Default'

# Provide an IAM Role that gives SageMaker Inference Recommender permission to 
# access AWS services
role_arn = '<arn:aws:iam::<account>:role/*>'
                                    
# Provide endpoint name for your endpoint that want to benchmark in Inference Recommender
endpoint_name = '<existing-endpoint-name>'

sagemaker_client.create_inference_recommendations_job(
    JobName = job_name,
    JobType = job_type,
    RoleArn = role_arn,
    InputConfig = {
        'ModelPackageVersionArn': model_package_arn,
        'Endpoints': [{'EndpointName': endpoint_name}]
    }
)
```

Lihat [Panduan Referensi Amazon SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) untuk daftar lengkap argumen opsional dan wajib yang dapat Anda berikan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html).

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

Gunakan `create-inference-recommendations-job` API untuk mendapatkan rekomendasi titik akhir instance. Tetapkan `job-type` bidang untuk `'Default'` misalnya pekerjaan rekomendasi titik akhir. Selain itu, berikan yang berikut:
+ Berikan nama untuk pekerjaan rekomendasi Inference Recommender Anda untuk bidang tersebut. `job-name` Nama pekerjaan Inference Recommender harus unik di dalam AWS Wilayah dan di dalam akun Anda AWS .
+ Nama Sumber Daya Amazon (ARN) dari peran IAM yang memungkinkan Amazon SageMaker Inference Recommender untuk melakukan tugas atas nama Anda. Tentukan ini untuk `role-arn` bidang.
+ ARN dari paket model berversi yang Anda buat saat Anda mendaftarkan model Anda dengan Model Registry. Tentukan ini untuk `ModelPackageVersionArn` di `input-config` lapangan.
+ Berikan nama titik akhir Inferensi SageMaker AI yang ada yang ingin Anda benchmark di Inference Recommender di lapangan. `Endpoints` `input-config`

```
aws sagemaker create-inference-recommendations-job 
    --region <region>\
    --job-name <job_name>\
    --job-type Default\
    --role-arn arn:aws:iam::<account:role/*>\
    --input-config "{
        \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region:account:role/*>\",
        \"Endpoints\": [{\"EndpointName\": <endpoint_name>}]
        }"
```

------

## Dapatkan hasil pekerjaan rekomendasi inferensi Anda
<a name="inference-recommender-existing-endpoint-results"></a>

Anda dapat mengumpulkan hasil pekerjaan rekomendasi inferensi Anda secara terprogram dengan prosedur yang sama untuk pekerjaan rekomendasi inferensi standar. Untuk informasi selengkapnya, lihat [Dapatkan hasil pekerjaan rekomendasi inferensi Anda](instance-recommendation-results.md).

Ketika Anda mendapatkan hasil pekerjaan rekomendasi inferensi untuk titik akhir yang ada, Anda harus menerima respons JSON yang mirip dengan berikut ini:

```
{
    "JobName": "job-name",
    "JobType": "Default",
    "JobArn": "arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id",
    "RoleArn": "iam-role-arn",
    "Status": "COMPLETED",
    "CreationTime": 1664922919.2,
    "LastModifiedTime": 1664924208.291,
    "InputConfig": {
        "ModelPackageVersionArn": "arn:aws:sagemaker:region:account-id:model-package/resource-id",
        "Endpoints": [
            {
                "EndpointName": "endpoint-name"
            }
        ]
    },
    "InferenceRecommendations": [
        {
            "Metrics": {
                "CostPerHour": 0.7360000014305115,
                "CostPerInference": 7.456940238625975e-06,
                "MaxInvocations": 1645,
                "ModelLatency": 171
            },
            "EndpointConfiguration": {
                "EndpointName": "sm-endpoint-name",
                "VariantName": "variant-name",
                "InstanceType": "ml.g4dn.xlarge",
                "InitialInstanceCount": 1
            },
            "ModelConfiguration": {
                "EnvironmentParameters": [
                    {
                        "Key": "TS_DEFAULT_WORKERS_PER_MODEL",
                        "ValueType": "string",
                        "Value": "4"
                    }
                ]
            }
        }
    ],
    "EndpointPerformances": [
        {
            "Metrics": {
                "MaxInvocations": 184,
                "ModelLatency": 1312
            },
            "EndpointConfiguration": {
                "EndpointName": "endpoint-name"
            }
        }
    ]
}
```

Beberapa baris pertama memberikan informasi tentang pekerjaan rekomendasi inferensi itu sendiri. Ini termasuk nama pekerjaan, peran ARN, dan pembuatan dan waktu modifikasi terbaru.

`InferenceRecommendations`Kamus berisi daftar rekomendasi inferensi Inference Recommender.

Kamus `EndpointConfiguration` bersarang berisi rekomendasi instance type (`InstanceType`) bersama dengan titik akhir dan nama varian (model pembelajaran AWS mesin yang diterapkan) yang digunakan selama pekerjaan rekomendasi.

Kamus `Metrics` bersarang berisi informasi tentang perkiraan biaya per jam (`CostPerHour`) untuk titik akhir real-time Anda dalam dolar AS, perkiraan biaya per inferensi (`CostPerInference`) dalam dolar AS untuk titik akhir waktu nyata Anda, jumlah maksimum yang diharapkan `InvokeEndpoint` permintaan per menit yang dikirim ke titik akhir (`MaxInvocations`), dan latensi model (`ModelLatency`), yang merupakan interval waktu (dalam milidetik) yang diambil model Anda untuk merespons AI. SageMaker Latensi model mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah.

Kamus `EndpointPerformances` bersarang berisi nama titik akhir yang ada tempat tugas rekomendasi dijalankan (`EndpointName`) dan metrik kinerja untuk titik akhir Anda (dan). `MaxInvocations` `ModelLatency`

# Hentikan rekomendasi inferensi Anda
<a name="instance-recommendation-stop"></a>

Anda mungkin ingin menghentikan pekerjaan yang sedang berjalan jika Anda memulai pekerjaan secara tidak sengaja atau tidak perlu lagi menjalankan pekerjaan itu. Hentikan pekerjaan rekomendasi inferensi Inference Recommender Anda secara terprogram dengan `StopInferenceRecommendationsJob` API atau dengan Studio Classic.

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

Tentukan nama pekerjaan rekomendasi inferensi untuk `JobName` bidang tersebut:

```
sagemaker_client.stop_inference_recommendations_job(
                                    JobName='<INSERT>'
                                    )
```

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

Tentukan nama pekerjaan pekerjaan rekomendasi inferensi untuk `job-name` bendera:

```
aws sagemaker stop-inference-recommendations-job --job-name <job-name>
```

------
#### [ Amazon SageMaker Studio Classic ]

Tutup tab di mana Anda memulai rekomendasi inferensi untuk menghentikan rekomendasi inferensi Inference Recommender Anda.

------
#### [ SageMaker AI console ]

Untuk menghentikan pekerjaan rekomendasi instans Anda melalui 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, lalu pilih **Inference**** recommended.

1. Pada halaman **lowongan pemberi rekomendasi inferensi, pilih lowongan** rekomendasi instans Anda.

1. Pilih **Stop Job**.

1. Di kotak dialog yang muncul, pilih **Konfirmasi**.

Setelah menghentikan pekerjaan Anda, **Status** pekerjaan harus berubah menjadi **Berhenti**.

------

# Rekomendasi yang dikompilasi dengan Neo
<a name="inference-recommender-neo-compilation"></a>

Di Inference Recommender, Anda dapat mengkompilasi model Anda dengan Neo dan mendapatkan rekomendasi endpoint untuk model kompilasi Anda. [SageMaker Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) adalah layanan yang dapat mengoptimalkan model Anda untuk platform perangkat keras target (yaitu, jenis atau lingkungan instans tertentu). Mengoptimalkan model dengan Neo dapat meningkatkan kinerja model host Anda.

Untuk kerangka kerja dan kontainer yang didukung NEO, Inference Recommender secara otomatis menyarankan rekomendasi yang dioptimalkan oleh NEO. Agar memenuhi syarat untuk kompilasi Neo, masukan Anda harus memenuhi prasyarat berikut:
+ Anda menggunakan [DLC atau SageMaker XGBoost kontainer](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html) milik AI.
+ Anda menggunakan versi kerangka kerja yang didukung oleh Neo. Untuk versi kerangka kerja yang didukung oleh Neo, lihat [Instans Cloud](neo-supported-cloud.md#neo-supported-cloud-instances) di dokumentasi SageMaker Neo.
+ Neo mengharuskan Anda memberikan bentuk data input yang benar untuk model Anda. Anda dapat menentukan bentuk data ini seperti `[DataInputConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelInput.html#sagemaker-Type-ModelInput-DataInputConfig)` pada `[InferenceSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-InferenceSpecification)` saat Anda membuat paket model. Untuk informasi tentang bentuk data yang benar untuk setiap framework, lihat [Mempersiapkan Model untuk Kompilasi](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-compilation-preparing-model.html) dalam dokumentasi SageMaker Neo.

  Contoh berikut menunjukkan bagaimana menentukan `DataInputConfig` bidang di`InferenceSpecification`, di mana `data_input_configuration` adalah variabel yang berisi bentuk data dalam format kamus (misalnya,`{'input':[1,1024,1024,3]}`).

  ```
  "InferenceSpecification": {
          "Containers": [
              {
                  "Image": dlc_uri,
                  "Framework": framework.upper(),
                  "FrameworkVersion": framework_version,
                  "NearestModelName": model_name,
                  "ModelInput": {"DataInputConfig": data_input_configuration},
              }
          ],
          "SupportedContentTypes": input_mime_types,  # required, must be non-null
          "SupportedResponseMIMETypes": [],
          "SupportedRealtimeInferenceInstanceTypes": supported_realtime_inference_types,  # optional
      }
  ```

Jika kondisi ini terpenuhi dalam permintaan Anda, maka Inference Recommender menjalankan skenario untuk versi model Anda yang dikompilasi dan tidak dikompilasi, memberi Anda beberapa kombinasi rekomendasi untuk dipilih. Anda dapat membandingkan konfigurasi untuk versi yang dikompilasi dan tidak dikompilasi dari rekomendasi inferensi yang sama dan menentukan mana yang paling sesuai dengan kasus penggunaan Anda. Rekomendasi diberi peringkat berdasarkan biaya per inferensi.

Untuk mendapatkan rekomendasi kompilasi Neo, Anda tidak perlu melakukan konfigurasi tambahan selain memastikan bahwa input Anda memenuhi persyaratan sebelumnya. Inference Recommender secara otomatis menjalankan kompilasi Neo pada model Anda jika input Anda memenuhi persyaratan, dan Anda menerima respons yang menyertakan rekomendasi Neo.

Jika Anda mengalami kesalahan selama kompilasi Neo Anda, lihat[Memecahkan Masalah Kesalahan Kompilasi Neo](neo-troubleshooting-compilation.md).

Tabel berikut adalah contoh respons yang mungkin Anda dapatkan dari pekerjaan Inference Recommender yang mencakup rekomendasi untuk model yang dikompilasi. Jika `InferenceSpecificationName` bidangnya`None`, maka rekomendasinya adalah model yang tidak dikompilasi. Baris terakhir, di mana nilai untuk **InferenceSpecificationName**bidang tersebut`neo-00011122-2333-4445-5566-677788899900`, adalah untuk model yang dikompilasi dengan Neo. Nilai di bidang adalah nama pekerjaan Neo yang digunakan untuk mengkompilasi dan mengoptimalkan model Anda.


| EndpointName | InstanceType | InitialInstanceCount | EnvironmentParameters | CostPerHour | CostPerInference | MaxInvocations | ModelLatency | InferenceSpecificationName | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| sm-epc-example-000111222 | ml.c5.9xlarge | 1 | [] | 1.836 | 9.15E-07 | 33456 | 7 | Tidak ada | 
| sm-epc-example-111222333 | ml.c5.2xlarge | 1 | [] | 0,408 | 2.11E-07 | 32211 | 21 | Tidak ada | 
| sm-epc-example-222333444 | ml.c5.xlarge | 1 | [] | 0,204 | 1.86E-07 | 18276 | 92 | Tidak ada | 
| sm-epc-example-333444555 | ml.c5.xlarge | 1 | [] | 0,204 | 1.60E-07 | 21286 | 42 | neo-00011122-2333-4445-5566-677788899900 | 

## Memulai
<a name="inference-recommender-neo-compilation-get-started"></a>

Langkah-langkah umum untuk membuat pekerjaan Inference Recommender yang mencakup rekomendasi yang dioptimalkan NEO adalah sebagai berikut:
+ Siapkan model ML Anda untuk kompilasi. Untuk informasi lebih lanjut, lihat [Mempersiapkan Model untuk Kompilasi](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-compilation-preparing-model.html) dalam dokumentasi Neo.
+ Package model Anda dalam arsip model (`.tar.gz`file).
+ Buat contoh arsip payload.
+ Daftarkan model Anda di SageMaker Model Registry.
+ Buat pekerjaan Inference Recommender.
+ Lihat hasil pekerjaan Inference Recommender dan pilih konfigurasi.
+ Kegagalan kompilasi debug, jika ada. Untuk informasi selengkapnya, lihat [Memecahkan Masalah Kesalahan Kompilasi Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html).

[Untuk contoh yang menunjukkan alur kerja sebelumnya dan cara mendapatkan rekomendasi yang dioptimalkan untuk NEO XGBoost, lihat contoh buku catatan berikut.](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/xgboost/xgboost-inference-recommender.ipynb) Untuk contoh yang menunjukkan cara mendapatkan rekomendasi yang dioptimalkan NEO menggunakan TensorFlow, lihat [contoh](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/inference-recommender.ipynb) buku catatan berikut.

# Hasil rekomendasi
<a name="inference-recommender-interpret-results"></a>

Setiap hasil pekerjaan Inference Recommender mencakup`InstanceType`,, dan `InitialInstanceCount``EnvironmentParameters`, yang merupakan parameter variabel lingkungan yang disetel untuk penampung Anda guna meningkatkan latensi dan throughputnya. Hasilnya juga mencakup metrik kinerja dan biaya seperti`MaxInvocations`,,`ModelLatency`,`CostPerHour`, `CostPerInference``CpuUtilization`, dan`MemoryUtilization`.

Pada tabel di bawah ini kami memberikan deskripsi metrik ini. Metrik ini dapat membantu Anda mempersempit pencarian Anda untuk konfigurasi titik akhir terbaik yang sesuai dengan kasus penggunaan Anda. Misalnya, jika motivasi Anda adalah kinerja harga secara keseluruhan dengan penekanan pada throughput, maka Anda harus fokus pada`CostPerInference`. 


| Metrik | Deskripsi | Kasus penggunaan | 
| --- | --- | --- | 
|  `ModelLatency`  |  Interval waktu yang dibutuhkan oleh model untuk merespons seperti yang dilihat dari SageMaker AI. Interval ini mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah. Unit: Milidetik  | Beban kerja sensitif latensi seperti penayangan iklan dan diagnosis medis | 
|  `MaximumInvocations`  |  Jumlah maksimum `InvokeEndpoint` permintaan yang dikirim ke titik akhir model dalam satu menit. Satuan: Tidak ada  | Beban kerja yang berfokus pada throughput seperti pemrosesan video atau inferensi batch | 
|  `CostPerHour`  |  Perkiraan biaya per jam untuk titik akhir real-time Anda. Unit: Dolar AS  | Beban kerja yang sensitif terhadap biaya tanpa tenggat waktu latensi | 
|  `CostPerInference`  |  Perkiraan biaya per panggilan inferensi untuk titik akhir real-time Anda. Unit: Dolar AS  | Maksimalkan kinerja harga secara keseluruhan dengan fokus pada throughput | 
|  `CpuUtilization`  |  Pemanfaatan CPU yang diharapkan pada pemanggilan maksimum per menit untuk instance titik akhir. Unit: Persen  | Memahami kesehatan instance selama benchmarking dengan memiliki visibilitas ke dalam pemanfaatan CPU inti instance | 
|  `MemoryUtilization`  |  Pemanfaatan memori yang diharapkan pada pemanggilan maksimum per menit untuk instance titik akhir. Unit: Persen  | Memahami kesehatan instance selama pembandingan dengan memiliki visibilitas ke dalam pemanfaatan memori inti instance | 

Dalam beberapa kasus, Anda mungkin ingin menjelajahi [metrik Pemanggilan Titik Akhir SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-endpoint-invocation) lainnya seperti. `CPUUtilization` Setiap hasil pekerjaan Inference Recommender mencakup nama-nama titik akhir yang diputar selama uji beban. Anda dapat menggunakan CloudWatch untuk meninjau log untuk titik akhir ini bahkan setelah dihapus.

Gambar berikut adalah contoh CloudWatch metrik dan bagan yang dapat Anda tinjau untuk satu titik akhir dari hasil rekomendasi Anda. Hasil rekomendasi ini berasal dari pekerjaan Default. Cara untuk menafsirkan nilai skalar dari hasil rekomendasi adalah bahwa mereka didasarkan pada titik waktu ketika grafik Invocations pertama kali mulai naik level. Misalnya, `ModelLatency` nilai yang dilaporkan berada di awal dataran tinggi sekitar. `03:00:31`

![\[Grafik untuk CloudWatch metrik.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inference-recommender-cw-metrics.png)


Untuk deskripsi lengkap tentang CloudWatch metrik yang digunakan dalam bagan sebelumnya, lihat Metrik Pemanggilan Titik Akhir [SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-endpoint-invocation).

Anda juga dapat melihat metrik kinerja seperti `ClientInvocations` dan `NumberOfUsers` diterbitkan oleh Inference Recommender di namespace. `/aws/sagemaker/InferenceRecommendationsJobs` Untuk daftar lengkap metrik dan deskripsi yang diterbitkan oleh Inference Recommender, lihat. [SageMaker Metrik pekerjaan Inference Recommender](monitoring-cloudwatch.md#cloudwatch-metrics-inference-recommender)

Lihat [Amazon SageMaker Inference Recommender - CloudWatch Metrics](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-inference-recommender/tensorflow-cloudwatch/tf-cloudwatch-inference-recommender.ipynb) Jupyter notebook di repositori [amazon-sagemaker-examples](https://github.com/aws/amazon-sagemaker-examples)Github untuk contoh cara menggunakan SDK for Python AWS (Boto3) untuk menjelajahi metrik untuk titik akhir Anda. CloudWatch 

# Dapatkan rekomendasi kebijakan penskalaan otomatis
<a name="inference-recommender-autoscaling"></a>

Dengan Amazon SageMaker Inference Recommender, Anda bisa mendapatkan rekomendasi untuk kebijakan penskalaan otomatis untuk titik akhir SageMaker AI Anda berdasarkan pola lalu lintas yang Anda antisipasi. Jika Anda telah menyelesaikan pekerjaan rekomendasi inferensi, Anda dapat memberikan rincian pekerjaan untuk mendapatkan rekomendasi untuk kebijakan penskalaan otomatis yang dapat Anda terapkan ke titik akhir Anda.

Inference Recommender membandingkan nilai yang berbeda untuk setiap metrik untuk menentukan konfigurasi penskalaan otomatis yang ideal untuk titik akhir Anda. Rekomendasi penskalaan otomatis mengembalikan kebijakan penskalaan otomatis yang direkomendasikan untuk setiap metrik yang ditentukan dalam pekerjaan rekomendasi inferensi Anda. Anda dapat menyimpan kebijakan dan menerapkannya ke titik akhir Anda dengan [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)API.

Untuk memulai, tinjau prasyarat berikut.

## Prasyarat
<a name="inference-recommender-autoscaling-prereqs"></a>

Sebelum Anda mulai, Anda harus telah menyelesaikan pekerjaan rekomendasi inferensi yang sukses. Di bagian berikut, Anda dapat memberikan ID rekomendasi inferensi atau nama titik akhir SageMaker AI yang dibenchmark selama pekerjaan rekomendasi inferensi.

Untuk mengambil ID pekerjaan rekomendasi atau nama titik akhir, Anda dapat melihat detail pekerjaan rekomendasi inferensi di konsol SageMaker AI, atau Anda dapat menggunakan `EndpointName` bidang `RecommendationId` atau yang dikembalikan oleh API. [DescribeInferenceRecommendationsJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeInferenceRecommendationsJob.html)

## Buat rekomendasi konfigurasi penskalaan otomatis
<a name="inference-recommender-autoscaling-create"></a>

Untuk membuat kebijakan rekomendasi penskalaan otomatis, Anda dapat menggunakan. AWS SDK untuk Python (Boto3)

Contoh berikut menunjukkan bidang untuk [ GetScalingConfigurationRecommendation](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_GetScalingConfigurationRecommendation.html)API. Gunakan bidang berikut saat Anda memanggil API:
+ `InferenceRecommendationsJobName`— Masukkan nama pekerjaan rekomendasi inferensi Anda.
+ `RecommendationId`— Masukkan ID rekomendasi inferensi dari pekerjaan rekomendasi. Ini opsional jika Anda telah menentukan `EndpointName` bidang.
+ `EndpointName`— Masukkan nama titik akhir yang telah dipatokan selama pekerjaan rekomendasi inferensi. Ini opsional jika Anda telah menentukan `RecommendationId` bidang.
+ `TargetCpuUtilizationPerCore`— (Opsional) Masukkan nilai persentase berapa banyak pemanfaatan yang Anda inginkan sebuah instance pada titik akhir Anda untuk digunakan sebelum penskalaan otomatis. Nilai default jika Anda tidak menentukan bidang ini adalah 50%.
+ `ScalingPolicyObjective`— (Opsional) Objek tempat Anda menentukan pola lalu lintas yang diantisipasi.
  + `MinInvocationsPerMinute`— (Opsional) Jumlah minimum permintaan yang diharapkan ke titik akhir Anda per menit.
  + `MaxInvocationsPerMinute`— (Opsional) Jumlah maksimum permintaan yang diharapkan ke titik akhir Anda per menit.

```
{
    "InferenceRecommendationsJobName": "string", // Required
    "RecommendationId": "string", // Optional, provide one of RecommendationId or EndpointName
    "EndpointName": "string", // Optional, provide one of RecommendationId or EndpointName
    "TargetCpuUtilizationPerCore": number, // Optional
    "ScalingPolicyObjective": { // Optional
        "MinInvocationsPerMinute": number,
        "MaxInvocationsPerMinute": number
    }
}
```

Setelah mengirimkan permintaan, Anda akan menerima respons dengan kebijakan penskalaan otomatis yang ditentukan untuk setiap metrik. Lihat bagian berikut untuk informasi tentang menafsirkan respons.

## Tinjau hasil rekomendasi konfigurasi penskalaan otomatis Anda
<a name="inference-recommender-autoscaling-review"></a>

Contoh berikut menunjukkan respons dari [ GetScalingConfigurationRecommendation](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_GetScalingConfigurationRecommendation.html)API:

```
{
    "InferenceRecommendationsJobName": "string", 
    "RecommendationId": "string", // One of RecommendationId or EndpointName is shown
    "EndpointName": "string", 
    "TargetUtilizationPercentage": Integer,
    "ScalingPolicyObjective": { 
        "MinInvocationsPerMinute": Integer, 
        "MaxInvocationsPerMinute": Integer
    },
    "Metric": {
        "ModelLatency": Integer,
        "InvocationsPerInstance": Integer
    },
    "DynamicScalingConfiguration": {
        "MinCapacity": number,
        "MaxCapacity": number, 
        "ScaleInCooldown": number,
        "ScaleOutCooldown": number,
        "ScalingPolicies": [
            {
                "TargetTracking": {
                    "MetricSpecification": {
                        "Predefined" {
                            "PredefinedMetricType": "string"
                         },
                        "Customized": {
                            "MetricName": "string",
                            "Namespace": "string",
                            "Statistic": "string"
                         }
                    },
                    "TargetValue": Double
                } 
            }
        ]
    }
}
```

Bidang `InferenceRecommendationsJobName``EndpointName`, `RecommendationID` atau`TargetCpuUtilizationPerCore`,, dan `ScalingPolicyObjective` objek disalin dari permintaan awal Anda.

`Metric`Objek mencantumkan metrik yang dibenchmark dalam pekerjaan rekomendasi inferensi Anda, bersama dengan perhitungan nilai untuk setiap metrik ketika pemanfaatan instance akan sama dengan nilainya. `TargetCpuUtilizationPerCore` Hal ini berguna untuk mengantisipasi metrik kinerja pada titik akhir Anda saat menskalakan masuk dan keluar dengan kebijakan penskalaan otomatis yang direkomendasikan. Misalnya, pertimbangkan apakah pemanfaatan instans Anda adalah 50% dalam pekerjaan rekomendasi inferensi Anda dan `InvocationsPerInstance` nilai Anda pada awalnya. `4` Jika Anda menentukan `TargetCpuUtilizationPerCore` nilai menjadi 100% dalam permintaan rekomendasi penskalaan otomatis Anda, maka nilai `InvocationsPerInstance` metrik yang dikembalikan dalam respons adalah `2` karena Anda mengantisipasi mengalokasikan penggunaan instance dua kali lebih banyak.

`DynamicScalingConfiguration`Objek mengembalikan nilai yang harus Anda tentukan [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html#autoscaling-PutScalingPolicy-request-TargetTrackingScalingPolicyConfiguration)saat Anda memanggil [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)API. Ini termasuk nilai kapasitas minimum dan maksimum yang disarankan, waktu cooldown skala masuk dan skala yang disarankan, dan `ScalingPolicies` objek, yang berisi rekomendasi yang harus `TargetValue` Anda tentukan untuk setiap metrik.

# Jalankan uji beban khusus
<a name="inference-recommender-load-test"></a>

Pengujian beban Amazon SageMaker Inference Recommender melakukan tolok ukur ekstensif berdasarkan persyaratan produksi untuk latensi dan throughput, pola lalu lintas khusus, dan titik akhir tanpa server atau instans real-time (hingga 10) yang Anda pilih.

Bagian berikut menunjukkan cara membuat, mendeskripsikan, dan menghentikan uji beban secara terprogram menggunakan AWS SDK untuk Python (Boto3) dan AWS CLI, atau secara interaktif menggunakan Amazon SageMaker Studio Classic atau konsol AI. SageMaker 

## Buat pekerjaan uji beban
<a name="load-test-create"></a>

Buat uji beban secara terprogram menggunakan AWS SDK untuk Python (Boto3), dengan AWS CLI, atau secara interaktif menggunakan Studio Classic atau konsol AI. SageMaker Seperti rekomendasi inferensi Inference Recommender, tentukan nama pekerjaan untuk uji beban Anda, ARN peran AWS IAM, konfigurasi input, dan ARN paket model Anda sejak Anda mendaftarkan model Anda dengan registri model. Tes beban mengharuskan Anda juga menentukan pola lalu lintas dan kondisi penghentian.

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

Gunakan `CreateInferenceRecommendationsJob` API untuk membuat uji beban Inference Recommender. Tentukan `Advanced` untuk `JobType` bidang dan berikan: 
+ Nama pekerjaan untuk uji beban Anda (`JobName`). Nama pekerjaan harus unik di AWS Wilayah Anda dan di dalam AWS akun Anda.
+ Nama Sumber Daya Amazon (ARN) dari peran IAM yang memungkinkan Inference Recommender untuk melakukan tugas atas nama Anda. Tentukan ini untuk `RoleArn` bidang.
+ Kamus konfigurasi titik akhir (`InputConfig`) tempat Anda menentukan yang berikut:
  + Untuk`TrafficPattern`, tentukan fase atau pola lalu lintas tangga. Dengan pola lalu lintas fase, pengguna baru muncul setiap menit dengan kecepatan yang Anda tentukan. Dengan pola lalu lintas tangga, pengguna baru muncul pada interval waktu (atau *langkah*) pada tingkat yang Anda tentukan. Pilih salah satu cara berikut:
    + Untuk `TrafficType`, tentukan `PHASES`. Kemudian, untuk `Phases` array, tentukan `InitialNumberOfUsers` (berapa banyak pengguna bersamaan untuk memulai, dengan minimal 1 dan maksimum 3), `SpawnRate` (jumlah pengguna yang akan muncul dalam satu menit untuk fase pengujian beban tertentu, dengan minimal 0 dan maksimum 3), dan `DurationInSeconds` (berapa lama fase lalu lintas seharusnya, dengan minimum 120 dan maksimum 3600).
    + Untuk `TrafficType`, tentukan `STAIRS`. Kemudian, untuk `Stairs` array, tentukan `DurationInSeconds` (berapa lama fase lalu lintas seharusnya, dengan minimum 120 dan maksimum 3600), `NumberOfSteps` (berapa banyak interval yang digunakan selama fase), dan `UsersPerStep` (berapa banyak pengguna yang ditambahkan selama setiap interval). Perhatikan bahwa panjang setiap langkah adalah nilai dari`DurationInSeconds / NumberOfSteps`. Misalnya, jika Anda `600` dan Anda `DurationInSeconds` menentukan `5` langkah-langkahnya, maka setiap langkah berdurasi 120 detik.
**catatan**  
Seorang pengguna didefinisikan sebagai aktor yang dihasilkan sistem yang berjalan dalam satu lingkaran dan memanggil permintaan ke titik akhir sebagai bagian dari Inference Recommender. Untuk XGBoost wadah tipikal yang berjalan pada sebuah `ml.c5.large` instance, titik akhir dapat mencapai 30.000 pemanggilan per menit (500 tps) hanya dengan 15-20 pengguna.
  + Untuk`ResourceLimit`, tentukan `MaxNumberOfTests` (jumlah maksimum uji beban benchmarking untuk pekerjaan Inference Recommender, dengan minimal 1 dan maksimum 10) dan `MaxParallelOfTests` (jumlah maksimum uji beban benchmarking paralel untuk pekerjaan Inference Recommender, dengan minimal 1 dan maksimum 10).
  + Untuk`EndpointConfigurations`, Anda dapat menentukan salah satu dari berikut ini:
    + `InstanceType`Bidang, tempat Anda menentukan jenis instance tempat Anda ingin menjalankan pengujian beban.
    + The`ServerlessConfig`, di mana Anda menentukan nilai ideal Anda untuk `MaxConcurrency` dan `MemorySizeInMB` untuk titik akhir tanpa server. Untuk informasi selengkapnya, lihat dokumentasi [Inferensi Tanpa Server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).
+ Kamus kondisi berhenti (`StoppingConditions`), di mana jika salah satu kondisi terpenuhi, pekerjaan Inference Recommender berhenti. Untuk contoh ini, tentukan bidang berikut dalam kamus:
  + Untuk`MaxInvocations`, tentukan jumlah maksimum permintaan per menit yang diharapkan untuk titik akhir, dengan minimum 1 dan maksimum 30.000.
  + Untuk`ModelLatencyThresholds`, tentukan `Percentile` (ambang persentil latensi model) dan `ValueInMilliseconds` (nilai persentil latensi model dalam milidetik).
  + (Opsional) Untuk`FlatInvocations`, Anda dapat menentukan apakah akan melanjutkan uji beban ketika tingkat TPS (pemanggilan per menit) rata. Tingkat TPS yang diratakan biasanya berarti bahwa titik akhir telah mencapai kapasitas. Namun, Anda mungkin ingin terus memantau titik akhir dalam kondisi kapasitas penuh. Untuk melanjutkan uji beban ketika ini terjadi, tentukan nilai ini sebagai`Continue`. Jika tidak, nilai defaultnya adalah `Stop`.

```
# Create a low-level SageMaker service client.
import boto3
aws_region=<INSERT>
sagemaker_client=boto3.client('sagemaker', region=aws_region) 
                
# Provide a name to your recommendation based on load testing
load_test_job_name="<INSERT>"

# Provide the name of the sagemaker instance type
instance_type="<INSERT>"

# Provide the IAM Role that gives SageMaker permission to access AWS services 
role_arn='arn:aws:iam::<account>:role/*'

# Provide your model package ARN that was created when you registered your 
# model with Model Registry
model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*'

sagemaker_client.create_inference_recommendations_job(
                        JobName=load_test_job_name,
                        JobType="Advanced",
                        RoleArn=role_arn,
                        InputConfig={
                            'ModelPackageVersionArn': model_package_arn,
                            "JobDurationInSeconds": 7200,
                            'TrafficPattern' : {
                                # Replace PHASES with STAIRS to use the stairs traffic pattern
                                'TrafficType': 'PHASES',
                                'Phases': [
                                    {
                                        'InitialNumberOfUsers': 1,
                                        'SpawnRate': 1,
                                        'DurationInSeconds': 120
                                    },
                                    {
                                        'InitialNumberOfUsers': 1,
                                        'SpawnRate': 1,
                                        'DurationInSeconds': 120
                                    }
                                ]
                                # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern
                                # 'Stairs' : {
                                #   'DurationInSeconds': 240,
                                #   'NumberOfSteps': 2,
                                #   'UsersPerStep': 2
                                # }
                            },
                            'ResourceLimit': {
                                        'MaxNumberOfTests': 10,
                                        'MaxParallelOfTests': 3
                                },
                            "EndpointConfigurations" : [{
                                        'InstanceType': 'ml.c5.xlarge'
                                    },
                                    {
                                        'InstanceType': 'ml.m5.xlarge'
                                    },
                                    {
                                        'InstanceType': 'ml.r5.xlarge'
                                    }]
                                    # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint
                                    # "ServerlessConfig": {
                                    #     "MaxConcurrency": value, 
                                    #     "MemorySizeInMB": value 
                                    # }
                        },
                        StoppingConditions={
                            'MaxInvocations': 1000,
                            'ModelLatencyThresholds':[{
                                'Percentile': 'P95', 
                                'ValueInMilliseconds': 100
                            }],
                            # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 
                            'FlatInvocations': 'Stop'
                        }
                )
```

Lihat [Panduan Referensi Amazon SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) untuk daftar lengkap argumen opsional dan wajib yang dapat Anda berikan`CreateInferenceRecommendationsJob`.

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

Gunakan `create-inference-recommendations-job` API untuk membuat uji beban Inference Recommender. Tentukan `Advanced` untuk `JobType` bidang dan berikan: 
+ Nama pekerjaan untuk uji beban Anda (`job-name`). Nama pekerjaan harus unik di AWS Wilayah Anda dan di dalam AWS akun Anda.
+ Nama Sumber Daya Amazon (ARN) dari peran IAM yang memungkinkan Inference Recommender untuk melakukan tugas atas nama Anda. Tentukan ini untuk `role-arn` bidang.
+ Kamus konfigurasi titik akhir (`input-config`) tempat Anda menentukan yang berikut:
  + Untuk`TrafficPattern`, tentukan fase atau pola lalu lintas tangga. Dengan pola lalu lintas fase, pengguna baru muncul setiap menit dengan kecepatan yang Anda tentukan. Dengan pola lalu lintas tangga, pengguna baru muncul pada interval waktu (atau *langkah*) pada tingkat yang Anda tentukan. Pilih salah satu cara berikut:
    + Untuk `TrafficType`, tentukan `PHASES`. Kemudian, untuk `Phases` array, tentukan `InitialNumberOfUsers` (berapa banyak pengguna bersamaan untuk memulai, dengan minimal 1 dan maksimum 3), `SpawnRate` (jumlah pengguna yang akan muncul dalam satu menit untuk fase pengujian beban tertentu, dengan minimal 0 dan maksimum 3), dan `DurationInSeconds` (berapa lama fase lalu lintas seharusnya, dengan minimum 120 dan maksimum 3600).
    + Untuk `TrafficType`, tentukan `STAIRS`. Kemudian, untuk `Stairs` array, tentukan `DurationInSeconds` (berapa lama fase lalu lintas seharusnya, dengan minimum 120 dan maksimum 3600), `NumberOfSteps` (berapa banyak interval yang digunakan selama fase), dan `UsersPerStep` (berapa banyak pengguna yang ditambahkan selama setiap interval). Perhatikan bahwa panjang setiap langkah adalah nilai dari`DurationInSeconds / NumberOfSteps`. Misalnya, jika Anda `600` dan Anda `DurationInSeconds` menentukan `5` langkah-langkahnya, maka setiap langkah berdurasi 120 detik.
**catatan**  
Seorang pengguna didefinisikan sebagai aktor yang dihasilkan sistem yang berjalan dalam satu lingkaran dan memanggil permintaan ke titik akhir sebagai bagian dari Inference Recommender. Untuk XGBoost wadah tipikal yang berjalan pada sebuah `ml.c5.large` instance, titik akhir dapat mencapai 30.000 pemanggilan per menit (500 tps) hanya dengan 15-20 pengguna.
  + Untuk`ResourceLimit`, tentukan `MaxNumberOfTests` (jumlah maksimum uji beban benchmarking untuk pekerjaan Inference Recommender, dengan minimal 1 dan maksimum 10) dan `MaxParallelOfTests` (jumlah maksimum uji beban benchmarking paralel untuk pekerjaan Inference Recommender, dengan minimal 1 dan maksimum 10).
  + Untuk`EndpointConfigurations`, Anda dapat menentukan salah satu dari berikut ini:
    + `InstanceType`Bidang, tempat Anda menentukan jenis instance tempat Anda ingin menjalankan pengujian beban.
    + The`ServerlessConfig`, di mana Anda menentukan nilai ideal Anda untuk `MaxConcurrency` dan `MemorySizeInMB` untuk titik akhir tanpa server.
+ Kamus kondisi berhenti (`stopping-conditions`), di mana jika salah satu kondisi terpenuhi, pekerjaan Inference Recommender berhenti. Untuk contoh ini, tentukan bidang berikut dalam kamus:
  + Untuk`MaxInvocations`, tentukan jumlah maksimum permintaan per menit yang diharapkan untuk titik akhir, dengan minimum 1 dan maksimum 30.000.
  + Untuk`ModelLatencyThresholds`, tentukan `Percentile` (ambang persentil latensi model) dan `ValueInMilliseconds` (nilai persentil latensi model dalam milidetik).
  + (Opsional) Untuk`FlatInvocations`, Anda dapat menentukan apakah akan melanjutkan uji beban ketika tingkat TPS (pemanggilan per menit) rata. Tingkat TPS yang diratakan biasanya berarti bahwa titik akhir telah mencapai kapasitas. Namun, Anda mungkin ingin terus memantau titik akhir dalam kondisi kapasitas penuh. Untuk melanjutkan uji beban ketika ini terjadi, tentukan nilai ini sebagai`Continue`. Jika tidak, nilai defaultnya adalah `Stop`.

```
aws sagemaker create-inference-recommendations-job\
    --region <region>\
    --job-name <job-name>\
    --job-type ADVANCED\
    --role-arn arn:aws:iam::<account>:role/*\
    --input-config \"{
        \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*\",
        \"JobDurationInSeconds\": 7200,                                
        \"TrafficPattern\" : {
                # Replace PHASES with STAIRS to use the stairs traffic pattern
                \"TrafficType\": \"PHASES\",
                \"Phases\": [
                    {
                        \"InitialNumberOfUsers\": 1,
                        \"SpawnRate\": 60,
                        \"DurationInSeconds\": 300
                    }
                ]
                # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern
                # 'Stairs' : {
                #   'DurationInSeconds': 240,
                #   'NumberOfSteps': 2,
                #   'UsersPerStep': 2
                # }
            },
            \"ResourceLimit\": {
                \"MaxNumberOfTests\": 10,
                \"MaxParallelOfTests\": 3
            },
            \"EndpointConfigurations\" : [
                {
                    \"InstanceType\": \"ml.c5.xlarge\"
                },
                {
                    \"InstanceType\": \"ml.m5.xlarge\"
                },
                {
                    \"InstanceType\": \"ml.r5.xlarge\"
                }
                # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint
                # \"ServerlessConfig\": {
                #     \"MaxConcurrency\": value, 
                #     \"MemorySizeInMB\": value 
                # }
            ]
        }\"
    --stopping-conditions \"{
        \"MaxInvocations\": 1000,
        \"ModelLatencyThresholds\":[
                {
                    \"Percentile\": \"P95\", 
                    \"ValueInMilliseconds\": 100
                }
        ],
        # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 
        \"FlatInvocations\": \"Stop\"
    }\"
```

------
#### [ Amazon SageMaker Studio Classic ]

Buat tes beban dengan Studio Classic.

1. Di aplikasi Studio Classic Anda, pilih ikon beranda (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Di bilah sisi kiri Studio Classic, pilih **Deployment**.

1. Pilih **Inference recommended dari daftar** dropdown.

1. Pilih **Buat pekerjaan pemberi rekomendasi inferensi**. Tab baru berjudul **Buat lowongan pemberi rekomendasi inferensi terbuka**.

1. Pilih nama grup model Anda dari bidang **grup Model** dropdown. Daftar ini mencakup semua grup model yang terdaftar dengan registri model di akun Anda, termasuk model yang terdaftar di luar Studio Classic.

1. Pilih versi model dari bidang **versi model** dropdown.

1. Pilih **Lanjutkan**.

1. Berikan nama untuk pekerjaan di bidang **Nama**.

1. (Opsional) Berikan deskripsi pekerjaan Anda di bidang **Deskripsi**.

1. Pilih peran IAM yang memberikan izin Inference Recommender untuk mengakses layanan. AWS Anda dapat membuat peran dan melampirkan kebijakan terkelola `AmazonSageMakerFullAccess` IAM untuk mencapai hal ini, atau Anda dapat membiarkan Studio Classic membuat peran untuk Anda.

1. Pilih **Kondisi Berhenti** untuk memperluas bidang input yang tersedia. Berikan serangkaian kondisi untuk menghentikan rekomendasi penerapan. 

   1. Tentukan jumlah maksimum permintaan per menit yang diharapkan untuk titik akhir di bidang **Pemanggilan Maks Per** Menit.

   1. Tentukan ambang latensi model dalam mikrodetik di bidang Ambang **Latensi Model**. **Ambang Latensi Model** menggambarkan interval waktu yang dibutuhkan oleh model untuk merespons sebagaimana dilihat dari Inference Recommender. Interval tersebut mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah.

1. Pilih **Pola Lalu Lintas** untuk memperluas bidang input yang tersedia.

   1. Tetapkan jumlah awal pengguna virtual dengan menentukan bilangan bulat di bidang **Nomor Awal Pengguna**.

   1. Berikan bilangan bulat untuk bidang **Spawn** Rate. Tingkat spawn menetapkan jumlah pengguna yang dibuat per detik.

   1. Atur durasi untuk fase dalam detik dengan menentukan bilangan bulat di bidang **Durasi**.

   1. (Opsional) Tambahkan pola lalu lintas tambahan. Untuk melakukannya, pilih **Tambah**.

1. Pilih Pengaturan **tambahan** untuk menampilkan bidang **Durasi tes Maks**. Tentukan, dalam hitungan detik, waktu maksimum yang dapat diambil tes selama pekerjaan. Pekerjaan baru tidak dijadwalkan setelah durasi yang ditentukan. Ini membantu memastikan pekerjaan yang sedang berlangsung tidak dihentikan dan Anda hanya melihat pekerjaan yang sudah selesai.

1. Pilih **Lanjutkan**.

1. Pilih **Instans yang Dipilih**.

1. Di bidang **Instances for benchmarking**, pilih **Tambahkan instance** untuk diuji. Pilih hingga 10 instans untuk Inference Recommender untuk digunakan untuk pengujian beban.

1. Pilih **Pengaturan tambahan**.

   1. Berikan bilangan bulat yang menetapkan batas atas jumlah pengujian yang dapat dilakukan pekerjaan untuk **bidang jumlah tes Maks**. Perhatikan bahwa setiap konfigurasi titik akhir menghasilkan uji beban baru.

   1. Berikan bilangan bulat untuk bidang uji **paralel Max**. Pengaturan ini mendefinisikan batas atas pada jumlah tes beban yang dapat berjalan secara paralel.

1. Pilih **Kirim**.

   Tes beban bisa memakan waktu hingga 2 jam.
**Awas**  
Jangan tutup tab ini. Jika Anda menutup tab ini, Anda membatalkan tugas uji beban Inference Recommender.

------
#### [ SageMaker AI console ]

Buat uji beban khusus melalui konsol SageMaker AI dengan melakukan 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, lalu pilih **Inference**** recommended.

1. Pada halaman **lowongan pemberi rekomendasi inferensi, pilih **Buat** pekerjaan**.

1. Untuk **Langkah 1: Konfigurasi model**, lakukan hal berikut:

   1. Untuk **jenis Job**, pilih **Lowongan pemberi rekomendasi lanjutan**.

   1. Jika Anda menggunakan model yang terdaftar di registri model SageMaker AI, aktifkan sakelar **Pilih model dari registri model** dan lakukan hal berikut:

      1. Untuk daftar dropdown **grup Model**, pilih grup model di registri model SageMaker AI tempat model Anda berada.

      1. Untuk daftar dropdown **versi Model**, pilih versi model yang diinginkan.

   1. Jika Anda menggunakan model yang telah Anda buat di SageMaker AI, matikan sakelar **Pilih model dari registri model** dan lakukan hal berikut:

      1. Untuk bidang **Nama Model**, masukkan nama model SageMaker AI Anda.

   1. Untuk **peran IAM**, Anda dapat memilih peran AWS IAM yang ada yang memiliki izin yang diperlukan untuk membuat pekerjaan rekomendasi instans. Atau, jika Anda tidak memiliki peran yang ada, Anda dapat memilih **Buat peran baru** untuk membuka pop-up pembuatan peran, dan SageMaker AI menambahkan izin yang diperlukan ke peran baru yang Anda buat.

   1. Untuk **bucket S3 untuk benchmarking payload**, masukkan path Amazon S3 ke arsip payload sampel Anda, yang harus berisi contoh file payload yang digunakan Inference Recomder untuk membandingkan model Anda pada jenis instans yang berbeda.

   1. Untuk **jenis konten Payload, masukkan tipe** MIME dari data payload sampel Anda.

   1. Untuk **pola Lalu Lintas**, konfigurasikan fase untuk uji beban dengan melakukan hal berikut:

      1. Untuk **jumlah pengguna awal**, tentukan berapa banyak pengguna bersamaan yang ingin Anda mulai dengan (dengan minimal 1 dan maksimal 3).

      1. Untuk **tingkat Spawn**, tentukan jumlah pengguna yang akan muncul dalam satu menit untuk fase (dengan minimum 0 dan maksimum 3).

      1. Untuk **Durasi (detik)**, tentukan seberapa rendah fase lalu lintas dalam hitungan detik (dengan minimum 120 dan maksimum 3600).

   1. (Opsional) Jika Anda mematikan **tombol Pilih model dari registri model** dan menentukan model SageMaker AI, lalu untuk **konfigurasi Container**, lakukan hal berikut:

      1. Untuk daftar dropdown **Domain**, pilih domain pembelajaran mesin model, seperti visi komputer, pemrosesan bahasa alami, atau pembelajaran mesin.

      1. Untuk daftar dropdown **Framework**, pilih framework penampung Anda, seperti TensorFlow atau. XGBoost

      1. Untuk **versi Framework**, masukkan versi kerangka gambar kontainer Anda.

      1. Untuk daftar dropdown **nama model terdekat**, pilih model pra-terlatih yang sebagian besar cocok dengan model Anda.

      1. Untuk daftar tarik-turun **Tugas**, pilih tugas pembelajaran mesin yang diselesaikan model, seperti klasifikasi gambar atau regresi.

   1. (Opsional) Untuk **kompilasi Model menggunakan SageMaker Neo**, Anda dapat mengonfigurasi pekerjaan rekomendasi untuk model yang telah Anda kompilasi menggunakan SageMaker Neo. Untuk **konfigurasi input Data**, masukkan bentuk data input yang benar untuk model Anda dalam format yang mirip dengan`{'input':[1,1024,1024,3]}`.

   1. Pilih **Berikutnya**.

1. Untuk **Langkah 2: Contoh dan parameter lingkungan**, lakukan hal berikut:

   1. Untuk **Select instance untuk benchmarking**, pilih hingga 8 jenis instans yang ingin Anda benchmark.

   1. (Opsional) Untuk **rentang parameter Lingkungan**, Anda dapat menentukan parameter lingkungan yang membantu mengoptimalkan model Anda. Tentukan parameter sebagai pasangan **Kunci** dan **Nilai**.

   1. Pilih **Berikutnya**.

1. Untuk **Langkah 3: Parameter Job**, lakukan hal berikut:

   1. (Opsional) Untuk bidang **Nama Job**, masukkan nama untuk pekerjaan rekomendasi instans Anda. Saat Anda membuat pekerjaan, SageMaker AI menambahkan stempel waktu di akhir nama ini.

   1. (Opsional) Untuk kolom **Job description**, masukkan deskripsi untuk pekerjaan tersebut.

   1. (Opsional) Untuk daftar dropdown **kunci Enkripsi**, pilih AWS KMS kunci berdasarkan nama atau masukkan ARN untuk mengenkripsi data Anda.

   1. (Opsional) Untuk **jumlah maksimum tes**, masukkan jumlah tes yang ingin Anda jalankan selama pekerjaan rekomendasi.

   1. (Opsional) Untuk **tes paralel Max**, masukkan jumlah maksimum tes paralel yang ingin Anda jalankan selama pekerjaan rekomendasi.

   1. Untuk **durasi pengujian Maks**, masukkan jumlah detik maksimum yang Anda inginkan untuk dijalankan setiap pengujian.

   1. Untuk **pemanggilan Max per menit**, masukkan jumlah maksimum permintaan per menit yang dapat dicapai titik akhir sebelum menghentikan pekerjaan rekomendasi. Setelah mencapai batas ini, SageMaker AI mengakhiri pekerjaan.

   1. Untuk **ambang latensi Model P99 (ms)**, masukkan persentil latensi model dalam milidetik.

   1. Pilih **Berikutnya**.

1. Untuk **Langkah 4: Tinjau pekerjaan**, tinjau konfigurasi Anda, lalu pilih **Kirim**.

------

## Dapatkan hasil tes beban Anda
<a name="load-test-describe"></a>

Anda dapat mengumpulkan metrik secara terprogram di semua pengujian beban setelah pengujian beban selesai dengan AWS SDK untuk Python (Boto3), Studio Classic AWS CLI, atau konsol AI. SageMaker 

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

Kumpulkan metrik dengan `DescribeInferenceRecommendationsJob` API. Tentukan nama pekerjaan uji beban untuk `JobName` bidang:

```
load_test_response = sagemaker_client.describe_inference_recommendations_job(
                                                        JobName=load_test_job_name
                                                        )
```

Cetak objek respons.

```
load_test_response['Status']
```

Ini mengembalikan respon JSON mirip dengan contoh berikut. Perhatikan bahwa contoh ini menunjukkan jenis instance yang direkomendasikan untuk inferensi waktu nyata (untuk contoh yang menunjukkan rekomendasi inferensi tanpa server, lihat contoh setelah yang ini).

```
{
    'JobName': 'job-name', 
    'JobDescription': 'job-description', 
    'JobType': 'Advanced', 
    'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 
    'Status': 'COMPLETED', 
    'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 
    'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 
    'InputConfig': {
        'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 
        'JobDurationInSeconds': 7200, 
        'TrafficPattern': {
            'TrafficType': 'PHASES'
            }, 
        'ResourceLimit': {
            'MaxNumberOfTests': 100, 
            'MaxParallelOfTests': 100
            }, 
        'EndpointConfigurations': [{
            'InstanceType': 'ml.c5d.xlarge'
            }]
        }, 
    'StoppingConditions': {
        'MaxInvocations': 1000, 
        'ModelLatencyThresholds': [{
            'Percentile': 'P95', 
            'ValueInMilliseconds': 100}
            ]}, 
    'InferenceRecommendations': [{
        'Metrics': {
            'CostPerHour': 0.6899999976158142, 
            'CostPerInference': 1.0332434612791985e-05, 
            'MaximumInvocations': 1113, 
            'ModelLatency': 100000
            }, 
    'EndpointConfiguration': {
        'EndpointName': 'endpoint-name', 
        'VariantName': 'variant-name', 
        'InstanceType': 'ml.c5d.xlarge', 
        'InitialInstanceCount': 3
        }, 
    'ModelConfiguration': {
        'Compiled': False, 
        'EnvironmentParameters': []
        }
    }], 
    'ResponseMetadata': {
        'RequestId': 'request-id', 
        'HTTPStatusCode': 200, 
        'HTTPHeaders': {
            'x-amzn-requestid': 'x-amzn-requestid', 
            'content-type': 'content-type', 
            'content-length': '1199', 
            'date': 'Tue, 26 Oct 2021 19:57:42 GMT'
            }, 
        'RetryAttempts': 0}
    }
```

Beberapa baris pertama memberikan informasi tentang pekerjaan uji beban itu sendiri. Ini termasuk nama pekerjaan, peran ARN, pembuatan, dan waktu penghapusan. 

`InferenceRecommendations`Kamus berisi daftar rekomendasi inferensi Inference Recommender.

Kamus `EndpointConfiguration` bersarang berisi rekomendasi instance type (`InstanceType`) bersama dengan titik akhir dan nama varian (model pembelajaran AWS mesin yang diterapkan) yang digunakan selama pekerjaan rekomendasi. Anda dapat menggunakan nama endpoint dan varian untuk pemantauan di Amazon CloudWatch Events. Untuk informasi selengkapnya, lihat [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md).

Kamus `EndpointConfiguration` bersarang juga berisi rekomendasi instance count (`InitialInstanceCount`). Ini adalah jumlah instance yang harus Anda sediakan di titik akhir untuk memenuhi yang `MaxInvocations` ditentukan dalam. `StoppingConditions` Misalnya, jika `InstanceType` is `ml.m5.large` dan `InitialInstanceCount` is`2`, maka Anda harus menyediakan 2 `ml.m5.large` instance untuk titik akhir Anda sehingga dapat menangani TPS yang ditentukan dalam kondisi berhenti. `MaxInvocations`

Kamus `Metrics` bersarang berisi informasi tentang perkiraan biaya per jam (`CostPerHour`) untuk titik akhir real-time Anda dalam dolar AS, perkiraan biaya per inferensi (`CostPerInference`) untuk titik akhir waktu nyata Anda, jumlah maksimum `InvokeEndpoint` permintaan yang dikirim ke titik akhir, dan latensi model (`ModelLatency`), yang merupakan interval waktu (dalam mikrodetik) yang diambil model Anda untuk merespons AI. SageMaker Latensi model mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah.

Contoh berikut menunjukkan `InferenceRecommendations` bagian respons untuk pekerjaan uji beban yang dikonfigurasi untuk mengembalikan rekomendasi inferensi tanpa server:

```
"InferenceRecommendations": [ 
      { 
         "EndpointConfiguration": { 
            "EndpointName": "value",
            "InitialInstanceCount": value,
            "InstanceType": "value",
            "VariantName": "value",
            "ServerlessConfig": {
                "MaxConcurrency": value,
                "MemorySizeInMb": value
            }
         },
         "InvocationEndTime": value,
         "InvocationStartTime": value,
         "Metrics": { 
            "CostPerHour": value,
            "CostPerInference": value,
            "CpuUtilization": value,
            "MaxInvocations": value,
            "MemoryUtilization": value,
            "ModelLatency": value,
            "ModelSetupTime": value
         },
         "ModelConfiguration": { 
            "Compiled": "False",
            "EnvironmentParameters": [],
            "InferenceSpecificationName": "value"
         },
         "RecommendationId": "value"
      }
   ]
```

Anda dapat menafsirkan rekomendasi untuk inferensi tanpa server mirip dengan hasil untuk inferensi waktu nyata, dengan pengecualian`ServerlessConfig`, yang memberi tahu Anda nilai yang Anda tentukan untuk `MaxConcurrency` dan `MemorySizeInMB` saat menyiapkan uji beban. Rekomendasi tanpa server juga mengukur metrik`ModelSetupTime`, yang mengukur (dalam mikrodetik) waktu yang diperlukan untuk meluncurkan sumber daya komputasi pada titik akhir tanpa server. Untuk informasi selengkapnya tentang pengaturan titik akhir tanpa server, lihat dokumentasi Inferensi Tanpa [Server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).

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

Kumpulkan metrik dengan `describe-inference-recommendations-job` API. Tentukan nama pekerjaan uji beban untuk `job-name` bendera:

```
aws sagemaker describe-inference-recommendations-job --job-name <job-name>
```

Ini mengembalikan respons yang mirip dengan contoh berikut. Perhatikan bahwa contoh ini menunjukkan jenis instance yang direkomendasikan untuk inferensi waktu nyata (untuk contoh yang menunjukkan rekomendasi Inferensi Tanpa Server, lihat contoh setelah yang ini).

```
{
    'JobName': 'job-name', 
    'JobDescription': 'job-description', 
    'JobType': 'Advanced', 
    'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 
    'Status': 'COMPLETED', 
    'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 
    'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 
    'InputConfig': {
        'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 
        'JobDurationInSeconds': 7200, 
        'TrafficPattern': {
            'TrafficType': 'PHASES'
            }, 
        'ResourceLimit': {
            'MaxNumberOfTests': 100, 
            'MaxParallelOfTests': 100
            }, 
        'EndpointConfigurations': [{
            'InstanceType': 'ml.c5d.xlarge'
            }]
        }, 
    'StoppingConditions': {
        'MaxInvocations': 1000, 
        'ModelLatencyThresholds': [{
            'Percentile': 'P95', 
            'ValueInMilliseconds': 100
            }]
        }, 
    'InferenceRecommendations': [{
        'Metrics': {
        'CostPerHour': 0.6899999976158142, 
        'CostPerInference': 1.0332434612791985e-05, 
        'MaximumInvocations': 1113, 
        'ModelLatency': 100000
        }, 
        'EndpointConfiguration': {
            'EndpointName': 'endpoint-name', 
            'VariantName': 'variant-name', 
            'InstanceType': 'ml.c5d.xlarge', 
            'InitialInstanceCount': 3
            }, 
        'ModelConfiguration': {
            'Compiled': False, 
            'EnvironmentParameters': []
            }
        }], 
    'ResponseMetadata': {
        'RequestId': 'request-id', 
        'HTTPStatusCode': 200, 
        'HTTPHeaders': {
            'x-amzn-requestid': 'x-amzn-requestid', 
            'content-type': 'content-type', 
            'content-length': '1199', 
            'date': 'Tue, 26 Oct 2021 19:57:42 GMT'
            }, 
        'RetryAttempts': 0
        }
    }
```

Beberapa baris pertama memberikan informasi tentang pekerjaan uji beban itu sendiri. Ini termasuk nama pekerjaan, peran ARN, pembuatan, dan waktu penghapusan. 

`InferenceRecommendations`Kamus berisi daftar rekomendasi inferensi Inference Recommender.

Kamus `EndpointConfiguration` bersarang berisi rekomendasi instance type (`InstanceType`) bersama dengan titik akhir dan nama varian (model pembelajaran AWS mesin yang diterapkan) yang digunakan selama pekerjaan rekomendasi. Anda dapat menggunakan nama endpoint dan varian untuk pemantauan di Amazon CloudWatch Events. Untuk informasi selengkapnya, lihat [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md).

Kamus `Metrics` bersarang berisi informasi tentang perkiraan biaya per jam (`CostPerHour`) untuk titik akhir real-time Anda dalam dolar AS, perkiraan biaya per inferensi (`CostPerInference`) untuk titik akhir waktu nyata Anda, jumlah maksimum `InvokeEndpoint` permintaan yang dikirim ke titik akhir, dan latensi model (`ModelLatency`), yang merupakan interval waktu (dalam mikrodetik) yang diambil model Anda untuk merespons AI. SageMaker Latensi model mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah.

Contoh berikut menunjukkan `InferenceRecommendations` bagian respons untuk pekerjaan uji beban yang dikonfigurasi untuk mengembalikan rekomendasi inferensi tanpa server:

```
"InferenceRecommendations": [ 
      { 
         "EndpointConfiguration": { 
            "EndpointName": "value",
            "InitialInstanceCount": value,
            "InstanceType": "value",
            "VariantName": "value",
            "ServerlessConfig": {
                "MaxConcurrency": value,
                "MemorySizeInMb": value
            }
         },
         "InvocationEndTime": value,
         "InvocationStartTime": value,
         "Metrics": { 
            "CostPerHour": value,
            "CostPerInference": value,
            "CpuUtilization": value,
            "MaxInvocations": value,
            "MemoryUtilization": value,
            "ModelLatency": value,
            "ModelSetupTime": value
         },
         "ModelConfiguration": { 
            "Compiled": "False",
            "EnvironmentParameters": [],
            "InferenceSpecificationName": "value"
         },
         "RecommendationId": "value"
      }
   ]
```

Anda dapat menafsirkan rekomendasi untuk inferensi tanpa server mirip dengan hasil untuk inferensi waktu nyata, dengan pengecualian`ServerlessConfig`, yang memberi tahu Anda nilai yang Anda tentukan untuk `MaxConcurrency` dan `MemorySizeInMB` saat menyiapkan uji beban. Rekomendasi tanpa server juga mengukur metrik`ModelSetupTime`, yang mengukur (dalam mikrodetik) waktu yang diperlukan untuk meluncurkan sumber daya komputer pada titik akhir tanpa server. Untuk informasi selengkapnya tentang pengaturan titik akhir tanpa server, lihat dokumentasi Inferensi Tanpa [Server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).

------
#### [ Amazon SageMaker Studio Classic ]

Rekomendasi terisi di tab baru yang disebut **Rekomendasi inferensi** dalam Studio Classic. Diperlukan waktu hingga 2 jam agar hasilnya muncul. Tab ini berisi kolom **Hasil** dan **Detail**.

Kolom **Detail** memberikan informasi tentang pekerjaan uji beban, seperti nama yang diberikan untuk pekerjaan uji beban, saat pekerjaan dibuat (**Waktu pembuatan**), dan banyak lagi. Ini juga berisi informasi **Pengaturan**, seperti jumlah maksimum pemanggilan yang terjadi per menit dan informasi tentang Nama Sumber Daya Amazon yang digunakan.

Kolom **Results** menyediakan **tujuan Deployment** dan jendela **rekomendasi SageMaker AI** di mana Anda dapat menyesuaikan urutan tampilan hasil berdasarkan kepentingan penerapan. Ada tiga menu tarik-turun di mana Anda dapat memberikan tingkat kepentingan **Biaya**, **Latensi**, dan **Throughput** untuk kasus penggunaan Anda. Untuk setiap tujuan (biaya, latensi, dan throughput), Anda dapat menetapkan tingkat kepentingan: Kepentingan **Terendah, Kepentingan** **Rendah, Kepentingan** **sedang, Kepentingan** **tinggi, atau Kepentingan** **tertinggi**. 

Berdasarkan pilihan penting Anda untuk setiap tujuan, Inference Recommender menampilkan rekomendasi teratasnya di bidang **SageMakerrekomendasi** di sebelah kanan panel, bersama dengan perkiraan biaya per jam dan permintaan inferensi. Ini juga menyediakan Informasi tentang latensi model yang diharapkan, jumlah maksimum pemanggilan, dan jumlah instance.

Selain rekomendasi teratas yang ditampilkan, Anda juga dapat melihat informasi yang sama ditampilkan untuk semua instance yang diuji oleh Inference Recommender di bagian **Semua** berjalan.

------
#### [ SageMaker AI console ]

Anda dapat melihat hasil pekerjaan uji beban kustom di konsol SageMaker AI dengan melakukan 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, lalu pilih **Inference**** recommended.

1. Pada halaman **pekerjaan pemberi rekomendasi inferensi**, pilih nama pekerjaan rekomendasi inferensi Anda.

Pada halaman detail untuk pekerjaan Anda, Anda dapat melihat **rekomendasi Inferensi**, yang merupakan jenis instans yang direkomendasikan SageMaker AI untuk model Anda, seperti yang ditunjukkan pada tangkapan layar berikut.

![\[Tangkapan layar dari daftar rekomendasi inferensi di halaman detail pekerjaan di konsol SageMaker AI.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/inf-rec-instant-recs.png)


Di bagian ini, Anda dapat membandingkan jenis instans dengan berbagai faktor seperti **latensi Model**, **Biaya per jam, Biaya per** **inferensi**, dan **Pemanggilan** per menit.

Di halaman ini, Anda juga dapat melihat konfigurasi yang Anda tentukan untuk pekerjaan Anda. Di bagian **Monitor**, Anda dapat melihat CloudWatch metrik Amazon yang dicatat untuk setiap jenis instans. Untuk mempelajari lebih lanjut tentang menafsirkan metrik ini, lihat [Menafsirkan](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-interpret-results.html) hasil.

------

# Hentikan uji beban Anda
<a name="load-test-stop"></a>

Anda mungkin ingin menghentikan pekerjaan yang sedang berjalan jika Anda memulai pekerjaan secara tidak sengaja atau tidak perlu lagi menjalankan pekerjaan itu. Hentikan tugas uji beban Anda secara terprogram dengan `StopInferenceRecommendationsJob` API, atau melalui Studio Classic atau konsol SageMaker AI.

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

Tentukan nama pekerjaan uji beban untuk `JobName` bidang:

```
sagemaker_client.stop_inference_recommendations_job(
                                    JobName='<INSERT>'
                                    )
```

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

Tentukan nama pekerjaan uji beban untuk `job-name` bendera:

```
aws sagemaker stop-inference-recommendations-job --job-name <job-name>
```

------
#### [ Amazon SageMaker Studio Classic ]

Tutup tab tempat Anda memulai tugas pemuatan khusus untuk menghentikan uji beban Inference Recommender Anda.

------
#### [ SageMaker AI console ]

Untuk menghentikan pekerjaan uji beban Anda melalui 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, lalu pilih **Inference**** recommended.

1. Pada halaman **pekerjaan pemberi rekomendasi inferensi, pilih pekerjaan** uji beban Anda.

1. Pilih **Stop Job**

1. Di kotak dialog yang muncul, pilih **Konfirmasi**.

Setelah menghentikan pekerjaan Anda, **Status** pekerjaan harus berubah menjadi **Berhenti**.

------

# Memecahkan masalah kesalahan Inference Recommender
<a name="inference-recommender-troubleshooting"></a>

Bagian ini berisi informasi tentang cara memahami dan mencegah kesalahan umum, pesan kesalahan yang mereka hasilkan, dan panduan tentang cara mengatasi kesalahan ini.

## Cara memecahkan masalah
<a name="inference-recommender-troubleshooting-how-to"></a>

Anda dapat mencoba mengatasi kesalahan Anda dengan melalui langkah-langkah berikut:
+ Periksa apakah Anda telah mencakup semua prasyarat untuk menggunakan Inference Recommender. Lihat [Prasyarat Rekomendasi Inferensi.](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender-prerequisites.html)
+ Periksa apakah Anda dapat menerapkan model Anda dari Registri Model ke titik akhir dan dapat memproses muatan Anda tanpa kesalahan. Lihat [Menerapkan Model dari Registri](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-deploy.html).
+ Saat memulai pekerjaan Inference Recommender, Anda akan melihat titik akhir dibuat di konsol dan Anda dapat meninjau log. CloudWatch 

## Kesalahan umum
<a name="inference-recommender-troubleshooting-common"></a>

Tinjau tabel berikut untuk kesalahan Inference Recommender umum dan solusinya.


| Kesalahan | Solusi | 
| --- | --- | 
|  Tentukan `Domain` dalam Model Package versi 1. `Domain`adalah parameter wajib untuk pekerjaan itu.  |  Pastikan Anda menyediakan domain ML atau `OTHER` jika tidak dikenal.  | 
|  Arn peran yang diberikan tidak dapat diasumsikan dan `AWSSecurityTokenServiceException` terjadi kesalahan.  |  Pastikan peran eksekusi yang disediakan memiliki izin yang diperlukan yang ditentukan dalam prasyarat.  | 
|  Tentukan `Framework` dalam Model Package versi 1. `Framework`adalah parameter wajib untuk pekerjaan itu.  |  Pastikan Anda menyediakan Framework ML atau `OTHER` jika tidak diketahui.  | 
|  Pengguna pada akhir fase sebelumnya adalah 0 sedangkan pengguna awal fase saat ini adalah 1.  |  Pengguna di sini mengacu pada pengguna virtual atau utas yang digunakan untuk mengirim permintaan. Setiap fase dimulai dengan pengguna A dan diakhiri dengan pengguna B sehingga B > A. Antara fase berurutan, x\$11 dan x\$12, kita memerlukan abs (x\$12.a - x\$11.b) <= 3 dan >= 0.  | 
|  Total durasi Lalu Lintas (lintas) tidak boleh lebih dari durasi Job.  |  Total durasi semua Fase Anda tidak dapat melebihi durasi Job.  | 
|  Jenis instance burstable ml.t2.medium tidak diperbolehkan.  |  Inference Recommender tidak mendukung pengujian beban pada keluarga instans t2 karena instance burstable tidak memberikan kinerja yang konsisten.  | 
|  ResourceLimitExceeded saat memanggil CreateEndpoint operasi  |  Anda telah melampaui batas sumber daya SageMaker AI. Misalnya, Inference Recommender mungkin tidak dapat menyediakan endpoint untuk benchmarking jika akun telah mencapai kuota endpoint. Untuk informasi selengkapnya tentang batas dan kuota SageMaker AI, lihat [titik akhir dan kuota Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).  | 
|  ModelError saat memanggil InvokeEndpoint operasi  |  Kesalahan model dapat terjadi karena alasan berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/inference-recommender-troubleshooting.html)  | 
|  PayloadError saat memanggil InvokeEndpoint operasi  |  Kesalahan payload dapat terjadi karena alasan berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/inference-recommender-troubleshooting.html)  | 

## Periksa CloudWatch
<a name="inference-recommender-troubleshooting-check-cw"></a>

Saat memulai pekerjaan Inference Recommender, Anda akan melihat titik akhir dibuat di konsol. Pilih salah satu titik akhir dan lihat CloudWatch log untuk memantau kesalahan 4xx/5xx. Jika Anda memiliki pekerjaan Inference Recommender yang sukses, Anda akan dapat melihat nama titik akhir sebagai bagian dari hasil. Bahkan jika pekerjaan Inference Recommender Anda tidak berhasil, Anda masih dapat memeriksa CloudWatch log untuk titik akhir yang dihapus dengan mengikuti langkah-langkah di bawah ini:

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

1. Pilih Wilayah tempat Anda membuat pekerjaan Inference Recommender dari daftar dropdown **Region** di kanan atas.

1. Di panel navigasi CloudWatch, pilih **Log**, lalu pilih **Grup log**.

1. Cari grup log yang disebut`/aws/sagemaker/Endpoints/sm-epc-*`. Pilih grup log berdasarkan pekerjaan Inference Recommender terbaru Anda.

Anda juga dapat memecahkan masalah pekerjaan Anda dengan memeriksa log Inference Recommender. CloudWatch Log Inference Recommender, yang diterbitkan dalam grup `/aws/sagemaker/InferenceRecommendationsJobs` CloudWatch log, memberikan tampilan tingkat tinggi tentang kemajuan pekerjaan di aliran `<jobName>/execution` log. Anda dapat menemukan informasi terperinci tentang setiap konfigurasi titik akhir yang sedang diuji di aliran `<jobName>/Endpoint/<endpointName>` log.

**Ikhtisar aliran log Inference Recommender**
+ `<jobName>/execution`berisi informasi pekerjaan secara keseluruhan seperti konfigurasi titik akhir yang dijadwalkan untuk pembandingan, alasan lompatan pekerjaan kompilasi, dan alasan kegagalan validasi.
+ `<jobName>/Endpoint/<endpointName>`berisi informasi seperti kemajuan pembuatan sumber daya, konfigurasi pengujian, alasan berhenti uji beban, dan status pembersihan sumber daya.
+ `<jobName>/CompilationJob/<compilationJobName>`berisi informasi tentang pekerjaan kompilasi yang dibuat oleh Inference Recommender, seperti konfigurasi pekerjaan kompilasi dan status pekerjaan kompilasi.

**Buat alarm untuk pesan kesalahan Inference Recommender**

Inference Recommender mengeluarkan pernyataan log untuk kesalahan yang mungkin berguna saat pemecahan masalah. Dengan grup CloudWatch log dan filter metrik, Anda dapat mencari istilah dan pola dalam data log ini saat data dikirim CloudWatch. Kemudian, Anda dapat membuat CloudWatch alarm berdasarkan filter metrik grup log. Untuk informasi selengkapnya, lihat [Membuat CloudWatch alarm berdasarkan filter metrik grup log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_alarm_log_group_metric_filter.html).

## Periksa tolok ukur
<a name="inference-recommender-troubleshooting-check-benchmarks"></a>

Saat memulai pekerjaan Inference Recommender, Inference Recommender membuat beberapa tolok ukur untuk mengevaluasi kinerja model Anda pada jenis instans yang berbeda. Anda dapat menggunakan [ListInferenceRecommendationsJobSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListInferenceRecommendationsJobSteps.html)API untuk melihat detail untuk semua tolok ukur. Jika Anda memiliki tolok ukur yang gagal, Anda dapat melihat alasan kegagalan sebagai bagian dari hasil.

Untuk menggunakan [ListInferenceRecommendationsJobSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListInferenceRecommendationsJobSteps.html)API, berikan nilai berikut:
+ Untuk`JobName`, berikan nama pekerjaan Inference Recommender.
+ Untuk`StepType`, gunakan `BENCHMARK` untuk mengembalikan detail tentang tolok ukur pekerjaan.
+ Untuk`Status`, gunakan `FAILED` untuk mengembalikan detail hanya tentang tolok ukur yang gagal. Untuk daftar jenis status lainnya, lihat `Status` bidang di [ListInferenceRecommendationsJobSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListInferenceRecommendationsJobSteps.html)API.

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

# Provide the job name for the SageMaker Inference Recommender job
job_name = '<job-name>'

# Filter for benchmarks
step_type = 'BENCHMARK' 

# Filter for benchmarks that have a FAILED status
status = 'FAILED'

response = sagemaker_client.list_inference_recommendations_job_steps(
    JobName = job_name,
    StepType = step_type,
    Status = status
)
```

Anda dapat mencetak objek respons untuk melihat hasilnya. Contoh kode sebelumnya menyimpan respons dalam variabel yang disebut: `response`

```
print(response)
```

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

# Terapkan model dengan Inferensi Tanpa SageMaker Server Amazon
<a name="serverless-endpoints"></a>

Amazon SageMaker Serverless Inference adalah opsi inferensi yang dibuat khusus yang memungkinkan Anda menerapkan dan menskalakan model ML tanpa mengonfigurasi atau mengelola infrastruktur yang mendasarinya. Inferensi Tanpa Server On-Demand sangat ideal untuk beban kerja yang memiliki periode idle antara lonjakan lalu lintas dan dapat mentolerir start dingin. Titik akhir tanpa server secara otomatis meluncurkan sumber daya komputasi dan menskalakannya masuk dan keluar tergantung pada lalu lintas, sehingga tidak perlu memilih jenis instance atau mengelola kebijakan penskalaan. Ini menghilangkan beban berat yang tidak terdiferensiasi dalam memilih dan mengelola server. Inferensi Tanpa Server terintegrasi AWS Lambda untuk menawarkan ketersediaan tinggi, toleransi kesalahan bawaan, dan penskalaan otomatis. Dengan pay-per-use model, Inferensi Tanpa Server adalah opsi hemat biaya jika Anda memiliki pola lalu lintas yang jarang atau tidak dapat diprediksi. Selama saat tidak ada permintaan, Inferensi Tanpa Server menskalakan titik akhir Anda menjadi 0, membantu Anda meminimalkan biaya. [Untuk informasi selengkapnya tentang harga untuk Inferensi Tanpa Server sesuai permintaan, lihat Harga Amazon. SageMaker ](https://aws.amazon.com/sagemaker/pricing/)

Secara opsional, Anda juga dapat menggunakan Provisioned Concurrency dengan Serverless Inference. Inferensi Tanpa Server dengan konkurensi yang disediakan adalah opsi hemat biaya ketika Anda memiliki ledakan yang dapat diprediksi dalam lalu lintas Anda. Provisioned Concurrency memungkinkan Anda menerapkan model pada titik akhir tanpa server dengan kinerja yang dapat diprediksi, dan skalabilitas tinggi dengan menjaga titik akhir tetap hangat. SageMaker AI memastikan bahwa untuk jumlah Provisioned Concurrency yang Anda alokasikan, sumber daya komputasi diinisialisasi dan siap merespons dalam milidetik. Untuk Inferensi Tanpa Server dengan Konkurensi Terketentuan, Anda membayar kapasitas komputasi yang digunakan untuk memproses permintaan inferensi, ditagih oleh milidetik, dan jumlah data yang diproses. Anda juga membayar penggunaan Provisioned Concurrency, berdasarkan memori yang dikonfigurasi, durasi yang disediakan, dan jumlah konkurensi yang diaktifkan. [Untuk informasi selengkapnya tentang harga Inferensi Tanpa Server dengan Konkurensi yang Disediakan, lihat Harga Amazon. SageMaker ](https://aws.amazon.com/sagemaker/pricing/)

[Anda dapat mengintegrasikan Inferensi Tanpa Server dengan MLOps Pipelines untuk merampingkan alur kerja ML Anda, dan Anda dapat menggunakan titik akhir tanpa server untuk meng-host model yang terdaftar dengan Model Registry.](model-registry.md)

Inferensi Tanpa Server umumnya tersedia di 21 AWS Wilayah: AS Timur (Virginia N.), AS Timur (Ohio), AS Barat (California N.), AS Barat (Oregon), Afrika (Cape Town), Asia Pasifik (Hong Kong), Asia Pasifik (Mumbai), Asia Pasifik (Tokyo), Asia Pasifik (Seoul), Asia Pasifik (Osaka), Asia Pasifik (Singapura), Asia Pasifik (Sydney)), Kanada (Tengah), Eropa (Frankfurt), Eropa (Irlandia), Eropa (London), Eropa (Paris), Eropa (Stockholm), Eropa (Milan), Timur Tengah (Bahrain), Amerika Selatan (São Paulo). Untuk informasi selengkapnya tentang ketersediaan regional Amazon SageMaker AI, lihat [Daftar Layanan AWS Regional](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Cara kerjanya
<a name="serverless-endpoints-how-it-works"></a>

Diagram berikut menunjukkan alur kerja Inferensi Tanpa Server sesuai permintaan dan manfaat menggunakan titik akhir tanpa server.

![\[Diagram yang menunjukkan alur kerja Inferensi Tanpa Server.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/serverless-endpoints-how-it-works.png)


Saat Anda membuat titik akhir tanpa server sesuai permintaan, SageMaker AI menyediakan dan mengelola sumber daya komputasi untuk Anda. Kemudian, Anda dapat membuat permintaan inferensi ke titik akhir dan menerima prediksi model sebagai tanggapan. SageMaker AI menskalakan sumber daya komputasi naik dan turun sesuai kebutuhan untuk menangani lalu lintas permintaan Anda, dan Anda hanya membayar untuk apa yang Anda gunakan.

Untuk Provisioned Concurrency, Serverless Inference juga terintegrasi dengan Application Auto Scaling, sehingga Anda dapat mengelola Provisioned Concurrency berdasarkan metrik target atau jadwal. Untuk informasi selengkapnya, lihat [Secara otomatis menskalakan Konkurensi yang Disediakan untuk titik akhir tanpa server](serverless-endpoints-autoscale.md).

Bagian berikut memberikan rincian tambahan tentang Inferensi Tanpa Server dan cara kerjanya.

**Topics**
+ [Dukungan kontainer](#serverless-endpoints-how-it-works-containers)
+ [Ukuran memori](#serverless-endpoints-how-it-works-memory)
+ [Doa bersamaan](#serverless-endpoints-how-it-works-concurrency)
+ [Meminimalkan awal dingin](#serverless-endpoints-how-it-works-cold-starts)
+ [Pengecualian fitur](#serverless-endpoints-how-it-works-exclusions)

### Dukungan kontainer
<a name="serverless-endpoints-how-it-works-containers"></a>

Untuk wadah endpoint Anda, Anda dapat memilih wadah yang SageMaker disediakan AI atau membawanya sendiri. SageMaker AI menyediakan wadah untuk algoritme bawaan dan gambar Docker bawaan untuk beberapa kerangka kerja pembelajaran mesin yang paling umum, seperti Apache MXNet,,, dan Chainer. TensorFlow PyTorch Untuk daftar gambar yang tersedia, lihat SageMaker Gambar [Deep Learning Containers yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md). Jika Anda membawa wadah Anda sendiri, Anda harus memodifikasinya agar berfungsi dengan SageMaker AI. Untuk informasi lebih lanjut tentang membawa wadah Anda sendiri, lihat[Sesuaikan wadah inferensi Anda sendiri untuk Amazon AI SageMaker](adapt-inference-container.md).

Ukuran maksimum gambar kontainer yang dapat Anda gunakan adalah 10 GB. Untuk titik akhir tanpa server, kami sarankan untuk membuat hanya satu pekerja di wadah dan hanya memuat satu salinan model. Perhatikan bahwa ini tidak seperti titik akhir waktu nyata, di mana beberapa kontainer SageMaker AI dapat membuat pekerja untuk setiap vCPU untuk memproses permintaan inferensi dan memuat model di setiap pekerja.

Jika Anda sudah memiliki wadah untuk titik akhir real-time, Anda dapat menggunakan wadah yang sama untuk titik akhir tanpa server Anda, meskipun beberapa kemampuan dikecualikan. Untuk mempelajari lebih lanjut tentang kemampuan container yang tidak didukung dalam Inferensi Tanpa Server, lihat. [Pengecualian fitur](#serverless-endpoints-how-it-works-exclusions) Jika Anda memilih untuk menggunakan wadah yang sama, SageMaker AI akan menyimpan salinan gambar kontainer Anda hingga Anda menghapus semua titik akhir yang menggunakan gambar tersebut. SageMaker AI mengenkripsi gambar yang disalin saat istirahat dengan kunci milik AI. SageMaker AWS KMS 

### Ukuran memori
<a name="serverless-endpoints-how-it-works-memory"></a>

Endpoint tanpa server Anda memiliki ukuran RAM minimum 1024 MB (1 GB), dan ukuran RAM maksimum yang dapat Anda pilih adalah 6144 MB (6 GB). Ukuran memori yang dapat Anda pilih adalah 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB, atau 6144 MB. Inferensi Tanpa Server secara otomatis menetapkan sumber daya komputasi sebanding dengan memori yang Anda pilih. Jika Anda memilih ukuran memori yang lebih besar, wadah Anda memiliki akses ke lebih banyak vCPUs. Pilih ukuran memori endpoint Anda sesuai dengan ukuran model Anda. Umumnya, ukuran memori harus setidaknya sebesar ukuran model Anda. Anda mungkin perlu melakukan benchmark untuk memilih pilihan memori yang tepat untuk model Anda berdasarkan latensi SLAs Anda. Untuk panduan langkah demi langkah untuk benchmark, lihat [Memperkenalkan Toolkit Benchmarking Inferensi SageMaker Tanpa Server Amazon](https://aws.amazon.com/blogs/machine-learning/introducing-the-amazon-sagemaker-serverless-inference-benchmarking-toolkit/). Peningkatan ukuran memori memiliki harga yang berbeda; lihat [halaman harga Amazon SageMaker AI](https://aws.amazon.com/sagemaker/pricing/) untuk informasi lebih lanjut.

Terlepas dari ukuran memori yang Anda pilih, titik akhir tanpa server Anda memiliki 5 GB penyimpanan disk sementara yang tersedia. Untuk bantuan terkait masalah izin kontainer saat bekerja dengan penyimpanan, lihat[Pemecahan Masalah](serverless-endpoints-troubleshooting.md).

### Doa bersamaan
<a name="serverless-endpoints-how-it-works-concurrency"></a>

On-Demand Serverless Inference mengelola kebijakan dan kuota penskalaan yang telah ditentukan sebelumnya untuk kapasitas titik akhir Anda. Endpoint tanpa server memiliki kuota untuk berapa banyak pemanggilan bersamaan yang dapat diproses pada saat yang bersamaan. Jika titik akhir dipanggil sebelum selesai memproses permintaan pertama, maka ia menangani permintaan kedua secara bersamaan.

Total konkurensi yang dapat Anda bagikan di antara semua titik akhir tanpa server di akun Anda bergantung pada wilayah Anda:
+ Untuk Wilayah AS Timur (Ohio), Timur AS (Virginia N.), AS Barat (Oregon), Asia Pasifik (Singapura), Asia Pasifik (Sydney), Asia Pasifik (Tokyo), Eropa (Frankfurt), dan Eropa (Irlandia), total konkurensi yang dapat Anda bagikan antara semua titik akhir tanpa server per Wilayah di akun Anda adalah 1000.
+ Untuk Wilayah AS Barat (California N.), Afrika (Cape Town), Asia Pasifik (Hong Kong), Asia Pasifik (Mumbai), Asia Pasifik (Osaka), Asia Pasifik (Seoul), Kanada (Tengah), Eropa (London), Eropa (Milan), Eropa (Paris), Eropa (Stockholm), Timur Tengah (Bahrain), dan Amerika Selatan (São Paulo) Wilayah, total konkurensi per Wilayah di akun Anda adalah 500.

Anda dapat mengatur konkurensi maksimum untuk satu titik akhir hingga 200, dan jumlah total titik akhir tanpa server yang dapat Anda host di Wilayah adalah 50. Konkurensi maksimum untuk titik akhir individu mencegah titik akhir tersebut mengambil semua pemanggilan yang diizinkan untuk akun Anda, dan pemanggilan titik akhir apa pun di luar maksimum dibatasi.

**catatan**  
Konkurensi yang disediakan yang Anda tetapkan ke titik akhir tanpa server harus selalu kurang dari atau sama dengan konkurensi maksimum yang Anda tetapkan ke titik akhir tersebut.

Untuk mempelajari cara mengatur konkurensi maksimum untuk titik akhir Anda, lihat. [Buat konfigurasi titik akhir](serverless-endpoints-create-config.md) Untuk informasi selengkapnya tentang kuota dan batasan, lihat [titik akhir dan kuota Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html) di. *Referensi Umum AWS* Untuk meminta peningkatan batas layanan, hubungi [AWS Support](https://console.aws.amazon.com/support). Untuk petunjuk tentang cara meminta peningkatan batas layanan, lihat[Wilayah dan Kuota yang Didukung](regions-quotas.md).

### Meminimalkan awal dingin
<a name="serverless-endpoints-how-it-works-cold-starts"></a>

Jika titik akhir Inferensi Tanpa Server sesuai permintaan Anda tidak menerima lalu lintas untuk sementara waktu dan kemudian titik akhir Anda tiba-tiba menerima permintaan baru, perlu beberapa waktu bagi titik akhir Anda untuk memutar sumber daya komputasi untuk memproses permintaan. Ini disebut *awal yang dingin*. Karena penyediaan titik akhir tanpa server menghitung sumber daya sesuai permintaan, titik akhir Anda mungkin mengalami awal yang dingin. Cold start juga dapat terjadi jika permintaan bersamaan Anda melebihi penggunaan permintaan bersamaan saat ini. Waktu mulai dingin tergantung pada ukuran model Anda, berapa lama waktu yang dibutuhkan untuk mengunduh model Anda, dan waktu start-up wadah Anda.

Untuk memantau berapa lama waktu mulai dingin Anda, Anda dapat menggunakan CloudWatch metrik Amazon `OverheadLatency` untuk memantau titik akhir tanpa server Anda. Metrik ini melacak waktu yang diperlukan untuk meluncurkan sumber daya komputasi baru untuk titik akhir Anda. Untuk mempelajari selengkapnya tentang menggunakan CloudWatch metrik dengan titik akhir tanpa server, lihat. [Alarm dan log untuk melacak metrik dari titik akhir tanpa server](serverless-endpoints-monitoring.md)

Anda dapat meminimalkan start dingin dengan menggunakan Provisioned Concurrency. SageMaker AI menjaga titik akhir tetap hangat dan siap merespons dalam milidetik, untuk jumlah Konkurensi Tertentu yang Anda alokasikan.

### Pengecualian fitur
<a name="serverless-endpoints-how-it-works-exclusions"></a>

Beberapa fitur yang saat ini tersedia untuk Inferensi Real-Time SageMaker AI tidak didukung untuk Inferensi Tanpa Server, termasuk, paket model AWS pasar GPUs, pendaftar Docker pribadi, Titik Akhir Multi-Model, konfigurasi VPC, isolasi jaringan, pengambilan data, beberapa varian produksi, Monitor Model, dan saluran pipa inferensi.

Anda tidak dapat mengonversi titik akhir real-time berbasis instans menjadi titik akhir tanpa server. Jika Anda mencoba memperbarui titik akhir real-time Anda ke tanpa server, Anda menerima pesan. `ValidationError` Anda dapat mengonversi titik akhir tanpa server menjadi real-time, tetapi setelah Anda melakukan pembaruan, Anda tidak dapat mengembalikannya ke tanpa server.

## Memulai
<a name="serverless-endpoints-get-started"></a>

Anda dapat membuat, memperbarui, mendeskripsikan, dan menghapus titik akhir tanpa server menggunakan konsol SageMaker AI, SDK AWS SDKs Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-serverless-inference), dan. AWS CLI Anda dapat memanggil endpoint Anda menggunakan AWS SDKs, Amazon [ SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-serverless-inference), dan file. AWS CLI Untuk endpoint tanpa server dengan Provisioned Concurrency, Anda dapat menggunakan Application Auto Scaling untuk menskalakan Provisioned Concurrency secara otomatis berdasarkan metrik target atau jadwal. Untuk informasi selengkapnya tentang cara mengatur dan menggunakan titik akhir tanpa server, baca panduannya. [Operasi titik akhir tanpa server](serverless-endpoints-create-invoke-update-delete.md) Untuk informasi selengkapnya tentang penskalaan otomatis endpoint tanpa server dengan Provisioned Concurrency, lihat. [Secara otomatis menskalakan Konkurensi yang Disediakan untuk titik akhir tanpa server](serverless-endpoints-autoscale.md)

**catatan**  
 Application Auto Scaling untuk Inferensi Tanpa Server dengan Konkurensi yang Disediakan saat ini tidak didukung pada. AWS CloudFormation

### Contoh notebook dan blog
<a name="serverless-endpoints-get-started-nbs"></a>

[Untuk contoh notebook Jupyter yang menunjukkan alur kerja titik akhir end-to-end tanpa server, lihat contoh notebook Inferensi Tanpa Server.](https://github.com/aws/amazon-sagemaker-examples/tree/master/serverless-inference)

# Operasi titik akhir tanpa server
<a name="serverless-endpoints-create-invoke-update-delete"></a>

Tidak seperti titik akhir real-time SageMaker AI lainnya, Inferensi Tanpa Server mengelola sumber daya komputasi untuk Anda, mengurangi kompleksitas sehingga Anda dapat fokus pada model ML Anda alih-alih mengelola infrastruktur. Panduan berikut menyoroti kemampuan utama titik akhir tanpa server: cara membuat, memanggil, memperbarui, mendeskripsikan, atau menghapus titik akhir. Anda dapat menggunakan konsol SageMaker AI, [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-serverless-inference), atau AWS CLI untuk mengelola titik akhir tanpa server Anda. AWS SDKs

**Topics**
+ [Lengkapi prasyarat](serverless-endpoints-prerequisites.md)
+ [Pembuatan titik akhir tanpa server](serverless-endpoints-create.md)
+ [Memanggil titik akhir tanpa server](serverless-endpoints-invoke.md)
+ [Memperbarui titik akhir tanpa server](serverless-endpoints-update.md)
+ [Jelaskan titik akhir tanpa server](serverless-endpoints-describe.md)
+ [Menghapus titik akhir tanpa server](serverless-endpoints-delete.md)

# Lengkapi prasyarat
<a name="serverless-endpoints-prerequisites"></a>

Topik berikut menjelaskan prasyarat yang harus Anda selesaikan sebelum membuat titik akhir tanpa server. Prasyarat ini termasuk menyimpan artefak model Anda dengan benar, mengonfigurasi AWS IAM dengan izin yang benar, dan memilih gambar kontainer.

**Untuk menyelesaikan prasyarat**

1. **Siapkan AWS akun.** Pertama-tama Anda memerlukan AWS akun dan pengguna AWS Identity and Access Management administrator. Untuk petunjuk tentang cara mengatur AWS akun, lihat [Bagaimana cara membuat dan mengaktifkan AWS akun baru?](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) . Untuk petunjuk tentang cara mengamankan akun Anda dengan pengguna administrator IAM, lihat [Membuat pengguna admin IAM pertama dan grup pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) di Panduan Pengguna *IAM*.

1. **Buat bucket Amazon S3**. Anda menggunakan ember Amazon S3 untuk menyimpan artefak model Anda. Untuk mempelajari cara membuat bucket, lihat [Membuat bucket S3 pertama Anda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) di Panduan Pengguna *Amazon S3*.

1. **Unggah artefak model Anda ke bucket S3 Anda.** Untuk petunjuk tentang cara mengunggah model ke bucket, lihat [Mengunggah objek ke bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-an-object-bucket.html) di *Panduan Pengguna Amazon S3*.

1. **Buat peran IAM untuk Amazon SageMaker AI.** Amazon SageMaker AI membutuhkan akses ke bucket S3 yang menyimpan model Anda. Buat peran IAM dengan kebijakan yang memberikan akses baca SageMaker AI ke bucket Anda. Prosedur berikut menunjukkan cara membuat peran di konsol, tetapi Anda juga dapat menggunakan [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)API dari *Panduan Pengguna IAM*. Untuk informasi tentang memberikan izin lebih terperinci pada peran Anda berdasarkan kasus penggunaan Anda, lihat. [Cara menggunakan peran eksekusi SageMaker AI](sagemaker-roles.md#sagemaker-roles-createmodel-perms)

   1. Masuklah ke [konsol IAM](https://console.aws.amazon.com/iam/).

   1. Di tab navigasi, pilih **Peran**.

   1. Pilih **Buat Peran**.

   1. Untuk **Pilih jenis entitas tepercaya**, pilih **AWS layanan** dan kemudian pilih **SageMaker AI**.

   1. Pilih **Berikutnya: Izin** dan kemudian pilih **Berikutnya: Tag**.

   1. (Opsional) Tambahkan tag sebagai pasangan nilai kunci jika Anda ingin memiliki metadata untuk peran tersebut.

   1. Pilih **Berikutnya: Tinjauan**.

   1.  Untuk **nama Peran**, masukkan nama untuk peran baru yang unik di AWS akun Anda. Anda tidak dapat mengedit nama peran setelah membuat peran.

   1. (Opsional) Untuk **Deskripsi peran**, masukkan deskripsi.

   1. Pilih **Buat peran**.

1. **Lampirkan izin bucket S3 ke peran SageMaker AI Anda.** Setelah membuat peran IAM, lampirkan kebijakan yang memberikan izin SageMaker AI untuk mengakses bucket S3 yang berisi artefak model Anda.

   1. Di tab navigasi konsol IAM, pilih **Peran**.

   1. Dari daftar peran, cari peran yang Anda buat di langkah sebelumnya berdasarkan nama.

   1. Pilih peran Anda, lalu pilih **Lampirkan kebijakan**.

   1. Untuk **melampirkan izin**, pilih **Buat kebijakan**.

   1. Dalam tampilan **Buat kebijakan**, pilih tab **JSON**.

   1. Tambahkan pernyataan kebijakan berikut ke editor JSON. Pastikan untuk mengganti `<your-bucket-name>` dengan nama bucket S3 yang menyimpan artefak model Anda. Jika Anda ingin membatasi akses ke folder atau file tertentu di bucket, Anda juga dapat menentukan jalur folder Amazon S3, misalnya,. `<your-bucket-name>/<model-folder>`

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": "s3:GetObject",
                  "Resource": "arn:aws:s3:::<your-bucket-name>/*"
              }
          ]
      }
      ```

------

   1. Pilih **Berikutnya: Tanda**.

   1. (Opsional) Tambahkan tag dalam pasangan nilai kunci ke kebijakan.

   1. Pilih **Berikutnya: Tinjauan**.

   1. Untuk **Nama**, masukkan nama untuk kebijakan baru.

   1. (Opsional) Tambahkan **Deskripsi** untuk kebijakan.

   1. Pilih **Buat kebijakan**.

   1. Setelah membuat kebijakan, kembali ke **Peran** di [konsol IAM](https://console.aws.amazon.com/iam/) dan pilih peran SageMaker AI Anda.

   1. Pilih **Lampirkan kebijakan**.

   1. Untuk **izin Lampirkan**, cari kebijakan yang Anda buat berdasarkan nama. Pilih dan pilih **Lampirkan kebijakan**.

1. **Pilih gambar kontainer Docker bawaan atau bawa sendiri.** Wadah yang Anda pilih menyajikan inferensi pada titik akhir Anda. SageMaker AI menyediakan wadah untuk algoritme bawaan dan gambar Docker bawaan untuk beberapa kerangka kerja pembelajaran mesin yang paling umum, seperti Apache MXNet,,, dan Chainer. TensorFlow PyTorch Untuk daftar lengkap gambar yang tersedia, lihat SageMaker Gambar [Deep Learning Containers yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md).

   Jika tidak ada kontainer SageMaker AI yang ada yang memenuhi kebutuhan Anda, Anda mungkin perlu membuat wadah Docker Anda sendiri. Untuk informasi tentang cara membuat image Docker Anda dan membuatnya kompatibel dengan SageMaker AI, lihat[Wadah dengan kode inferensi khusus](your-algorithms-inference-main.md). Untuk menggunakan container Anda dengan titik akhir tanpa server, image container harus berada di repositori Amazon ECR dalam akun yang sama yang membuat endpoint. AWS 

1. **(Opsional) Daftarkan model Anda dengan Model Registry.** [SageMaker Model Registry](model-registry.md) membantu Anda membuat katalog dan mengelola versi model untuk digunakan di saluran pipa ML. Untuk informasi selengkapnya tentang mendaftarkan versi model Anda, lihat [Buat Grup Model](model-registry-model-group.md) dan[Daftarkan Versi Model](model-registry-version.md). [Untuk contoh alur kerja Registri Model dan Inferensi Tanpa Server, lihat contoh buku catatan berikut.](https://github.com/aws/amazon-sagemaker-examples/blob/main/serverless-inference/serverless-model-registry.ipynb)

1. **(Opsional) Bawa AWS KMS kunci.** Saat menyiapkan titik akhir tanpa server, Anda memiliki opsi untuk menentukan kunci KMS yang digunakan SageMaker AI untuk mengenkripsi gambar Amazon ECR Anda. Perhatikan bahwa kebijakan kunci untuk kunci KMS harus memberikan akses ke peran IAM yang Anda tentukan saat menyiapkan titik akhir Anda. Untuk mempelajari selengkapnya tentang kunci KMS, lihat [Panduan AWS Key Management Service Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html).

# Pembuatan titik akhir tanpa server
<a name="serverless-endpoints-create"></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.

Untuk membuat titik akhir tanpa server, Anda dapat menggunakan konsol Amazon SageMaker AI, the APIs, atau. AWS CLI[Anda dapat membuat titik akhir tanpa server menggunakan proses serupa sebagai titik akhir real-time.](realtime-endpoints.md)

**Topics**
+ [Buat model](serverless-endpoints-create-model.md)
+ [Buat konfigurasi titik akhir](serverless-endpoints-create-config.md)
+ [Buat titik akhir](serverless-endpoints-create-endpoint.md)

# Buat model
<a name="serverless-endpoints-create-model"></a>

Untuk membuat model Anda, Anda harus memberikan lokasi artefak model dan gambar kontainer Anda. Anda juga dapat menggunakan versi model dari [SageMaker Model Registry](model-registry.md). Contoh di bagian berikut menunjukkan cara membuat model menggunakan [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API, Model Registry, dan [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home).

## Untuk membuat model (menggunakan Model Registry)
<a name="serverless-endpoints-create-model-registry"></a>

[Model Registry](model-registry.md) adalah fitur SageMaker AI yang membantu Anda membuat katalog dan mengelola versi model Anda untuk digunakan di saluran pipa ML. Untuk menggunakan Registri Model dengan Inferensi Tanpa Server, Anda harus terlebih dahulu mendaftarkan versi model dalam grup model Registry Model. Untuk mempelajari cara mendaftarkan model di Model Registry, ikuti prosedur di [Buat Grup Model](model-registry-model-group.md) dan[Daftarkan Versi Model](model-registry-version.md).

Contoh berikut mengharuskan Anda untuk memiliki ARN dari versi model terdaftar dan menggunakan [AWS SDK for Python (Boto3) untuk memanggil API](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html). [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) Untuk Inferensi Tanpa Server, Registri Model saat ini hanya didukung oleh AWS SDK for Python (Boto3). Sebagai contoh, tentukan nilai-nilai berikut:
+ Untuk`model_name`, masukkan nama untuk model.
+ Untuk`sagemaker_role`, Anda dapat menggunakan peran default yang SageMaker dibuat AI atau peran SageMaker AI IAM yang disesuaikan dari Langkah 4 bagian[Lengkapi prasyarat](serverless-endpoints-prerequisites.md).
+ Untuk`ModelPackageName`, tentukan ARN untuk versi model Anda, yang harus didaftarkan ke grup model di Model Registry.

```
#Setup
import boto3
import sagemaker
region = boto3.Session().region_name
client = boto3.client("sagemaker", region_name=region)

#Role to give SageMaker AI permission to access AWS services.
sagemaker_role = sagemaker.get_execution_role()

#Specify a name for the model
model_name = "<name-for-model>"

#Specify a Model Registry model version
container_list = [
    {
        "ModelPackageName": <model-version-arn>
     }
 ]

#Create the model
response = client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    container_list
)
```

## Untuk membuat model (menggunakan API)
<a name="serverless-endpoints-create-model-api"></a>

Contoh berikut menggunakan [AWS SDK for Python (Boto3) untuk memanggil](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) API. [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) Tentukan nilai-nilai berikut ini:
+ Untuk `sagemaker_role,` Anda dapat menggunakan peran default yang SageMaker dibuat AI atau peran SageMaker AI IAM yang disesuaikan dari Langkah 4 bagian[Lengkapi prasyarat](serverless-endpoints-prerequisites.md).
+ Untuk`model_url`, tentukan URI Amazon S3 ke model Anda.
+ Untuk`container`, ambil wadah yang ingin Anda gunakan dengan jalur Amazon ECR-nya. Contoh ini menggunakan XGBoost wadah yang SageMaker disediakan AI. Jika Anda belum memilih wadah SageMaker AI atau membawanya sendiri, lihat Langkah 6 [Lengkapi prasyarat](serverless-endpoints-prerequisites.md) bagian untuk informasi selengkapnya.
+ Untuk`model_name`, masukkan nama untuk model.

```
#Setup
import boto3
import sagemaker
region = boto3.Session().region_name
client = boto3.client("sagemaker", region_name=region)

#Role to give SageMaker AI permission to access AWS services.
sagemaker_role = sagemaker.get_execution_role()

#Get model from S3
model_url = "s3://amzn-s3-demo-bucket/models/model.tar.gz"

#Get container image (prebuilt example)
from sagemaker import image_uris
container = image_uris.retrieve("xgboost", region, "0.90-1")

#Create model
model_name = "<name-for-model>"

response = client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    Containers = [{
        "Image": container,
        "Mode": "SingleModel",
        "ModelDataUrl": model_url,
    }]
)
```

## Untuk membuat model (menggunakan konsol)
<a name="serverless-endpoints-create-model-console"></a>

1. Masuk ke [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home).

1. Di tab navigasi, pilih **Inferensi**.

1. Selanjutnya, pilih **Model**.

1. Pilih **Buat model**.

1. Untuk **nama Model**, masukkan nama untuk model yang unik untuk akun Anda dan Wilayah AWS.

1. Untuk **peran IAM**, pilih peran IAM yang telah Anda buat (lihat[Lengkapi prasyarat](serverless-endpoints-prerequisites.md)) atau izinkan SageMaker AI membuatnya untuk Anda.

1. Dalam **definisi Container 1**, untuk **opsi input Container**, pilih **Menyediakan artefak model dan lokasi input**.

1. Untuk **Menyediakan artefak model dan opsi gambar inferensi**, pilih **Gunakan model tunggal**.

1. Untuk **Lokasi gambar kode inferensi**, masukkan jalur ECR Amazon ke wadah. Gambar harus berupa gambar pihak pertama yang SageMaker disediakan AI (mis. TensorFlow, XGBoost) atau gambar yang berada di repositori Amazon ECR dalam akun yang sama tempat Anda membuat titik akhir. Jika Anda tidak memiliki wadah, kembali ke Langkah 6 [Lengkapi prasyarat](serverless-endpoints-prerequisites.md) bagian untuk informasi lebih lanjut.

1. Untuk **Lokasi artefak model**, masukkan URI Amazon S3 ke model ML Anda. Misalnya, `s3://amzn-s3-demo-bucket/models/model.tar.gz`.

1. (Opsional) Untuk **Tag**, tambahkan pasangan nilai kunci untuk membuat metadata untuk model Anda.

1. Pilih **Buat model**.

# Buat konfigurasi titik akhir
<a name="serverless-endpoints-create-config"></a>

Setelah Anda membuat model, buat konfigurasi titik akhir. Anda kemudian dapat menerapkan model Anda menggunakan spesifikasi dalam konfigurasi titik akhir Anda. Dalam konfigurasi, Anda menentukan apakah Anda menginginkan titik akhir real-time atau tanpa server. Untuk membuat konfigurasi titik akhir tanpa server, Anda dapat menggunakan [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home), [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API, atau. AWS CLI Pendekatan API dan konsol diuraikan di bagian berikut.

## Untuk membuat konfigurasi titik akhir (menggunakan API)
<a name="serverless-endpoints-create-config-api"></a>

Contoh berikut menggunakan [AWS SDK for Python (Boto3) untuk memanggil](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) API. [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) Tentukan nilai-nilai berikut ini:
+ Untuk`EndpointConfigName`, pilih nama untuk konfigurasi titik akhir. Nama harus unik dalam akun Anda di Wilayah.
+ (Opsional) Untuk`KmsKeyId`, gunakan ID kunci, ARN kunci, nama alias, atau alias ARN untuk AWS KMS kunci yang ingin Anda gunakan. SageMaker AI menggunakan kunci ini untuk mengenkripsi gambar Amazon ECR Anda.
+ Untuk`ModelName`, gunakan nama model yang ingin Anda terapkan. Itu harus model yang sama yang Anda gunakan di [Buat model](serverless-endpoints-create-model.md) langkah.
+ Untuk `ServerlessConfig`:
  + Atur `MemorySizeInMB` ke `2048`. Untuk contoh ini, kami mengatur ukuran memori menjadi 2048 MB, tetapi Anda dapat memilih salah satu nilai berikut untuk ukuran memori Anda: 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB, atau 6144 MB. 
  + Atur `MaxConcurrency` ke `20`. Untuk contoh ini, kami menetapkan konkurensi maksimum menjadi 20. Jumlah maksimum pemanggilan bersamaan yang dapat Anda atur untuk titik akhir tanpa server adalah 200, dan nilai minimum yang dapat Anda pilih adalah 1.
  + (Opsional) Untuk menggunakan Provisioned Concurrency, atur `ProvisionedConcurrency` ke 10. Untuk contoh ini, kita mengatur Provisioned Concurrency ke 10. `ProvisionedConcurrency`Angka untuk titik akhir tanpa server harus lebih rendah dari atau sama dengan angka. `MaxConcurrency` Anda dapat membiarkannya kosong jika Anda ingin menggunakan titik akhir Inferensi Tanpa Server sesuai permintaan. Anda dapat menskalakan Konkurensi Ketentuan secara dinamis. Untuk informasi selengkapnya, lihat [Secara otomatis menskalakan Konkurensi yang Disediakan untuk titik akhir tanpa server](serverless-endpoints-autoscale.md).

```
response = client.create_endpoint_config(
   EndpointConfigName="<your-endpoint-configuration>",
   KmsKeyId="arn:aws:kms:us-east-1:123456789012:key/143ef68f-76fd-45e3-abba-ed28fc8d3d5e",
   ProductionVariants=[
        {
            "ModelName": "<your-model-name>",
            "VariantName": "AllTraffic",
            "ServerlessConfig": {
                "MemorySizeInMB": 2048,
                "MaxConcurrency": 20,
                "ProvisionedConcurrency": 10,
            }
        } 
    ]
)
```

## Untuk membuat konfigurasi titik akhir (menggunakan konsol)
<a name="serverless-endpoints-create-config-console"></a>

1. Masuk ke [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home).

1. Di tab navigasi, pilih **Inferensi**.

1. Selanjutnya, pilih **Konfigurasi titik akhir**.

1. Pilih **Buat konfigurasi titik akhir**.

1. Untuk **nama konfigurasi Endpoint**, masukkan nama yang unik dalam akun Anda di Wilayah.

1. Untuk **Jenis titik akhir**, pilih Tanpa **Server**.  
![\[Tangkapan layar dari opsi tipe titik akhir di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/serverless-endpoints-endpoint-config.png)

1. Untuk **varian Produksi**, pilih **Tambah model**.

1. Di bawah **Tambahkan model**, pilih model yang ingin Anda gunakan dari daftar model dan kemudian pilih **Simpan**.

1. Setelah menambahkan model Anda, di bawah **Tindakan**, pilih **Edit**.

1. Untuk **ukuran Memori**, pilih ukuran memori yang Anda inginkan dalam GB.  
![\[Tangkapan layar opsi ukuran memori di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/serverless-endpoints-endpoint-config-2.png)

1. Untuk **Max Concurrency**, masukkan pemanggilan bersamaan maksimum yang Anda inginkan untuk titik akhir. Nilai maksimum yang dapat Anda masukkan adalah 200 dan minimum adalah 1.

1. **(Opsional) Untuk menggunakan Provisioned Concurrency, masukkan jumlah pemanggilan bersamaan yang diinginkan di bidang pengaturan Konkurensi yang Disediakan.** Jumlah pemanggilan bersamaan yang disediakan harus kurang dari atau sama dengan jumlah pemanggilan bersamaan maksimum.

1. Pilih **Simpan**.

1. (Opsional) Untuk **Tag**, masukkan pasangan nilai kunci jika Anda ingin membuat metadata untuk konfigurasi titik akhir Anda.

1. Pilih **Buat konfigurasi titik akhir**.

# Buat titik akhir
<a name="serverless-endpoints-create-endpoint"></a>

Untuk membuat titik akhir tanpa server, Anda dapat menggunakan [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home), [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API, atau. AWS CLI Pendekatan API dan konsol diuraikan di bagian berikut. Setelah Anda membuat titik akhir Anda, dibutuhkan beberapa menit agar titik akhir tersedia.

## Untuk membuat titik akhir (menggunakan API)
<a name="serverless-endpoints-create-endpoint-api"></a>

Contoh berikut menggunakan [AWS SDK for Python (Boto3) untuk memanggil](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) API. [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) Tentukan nilai-nilai berikut ini:
+ Untuk`EndpointName`, masukkan nama untuk titik akhir yang unik dalam Wilayah di akun Anda.
+ Untuk`EndpointConfigName`, gunakan nama konfigurasi titik akhir yang Anda buat di bagian sebelumnya.

```
response = client.create_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-endpoint-config>"
)
```

## Untuk membuat titik akhir (menggunakan konsol)
<a name="serverless-endpoints-create-endpoint-console"></a>

1. Masuk ke [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home).

1. Di tab navigasi, pilih **Inferensi**.

1. Selanjutnya, pilih **Endpoints**.

1. Pilih **Buat titik akhir**.

1. Untuk **nama Endpoint**, masukkan nama yang unik dalam Wilayah di akun Anda.

1. Untuk **melampirkan konfigurasi titik akhir**, pilih **Gunakan konfigurasi titik akhir yang ada**.

1. Untuk **konfigurasi Endpoint**, pilih nama konfigurasi titik akhir yang Anda buat di bagian sebelumnya dan kemudian **pilih Pilih konfigurasi titik akhir**.

1. (Opsional) Untuk **Tag**, masukkan pasangan nilai kunci jika Anda ingin membuat metadata untuk titik akhir Anda.

1. Pilih **Buat titik akhir**.  
![\[Tangkapan layar halaman buat dan konfigurasikan titik akhir di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/serverless-endpoints-create.png)

# Memanggil titik akhir tanpa server
<a name="serverless-endpoints-invoke"></a>

Untuk melakukan inferensi menggunakan titik akhir tanpa server, Anda harus mengirim permintaan HTTP ke titik akhir. Anda dapat menggunakan [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)API atau AWS CLI, yang membuat `POST` permintaan untuk memanggil titik akhir Anda. Ukuran payload permintaan dan respons maksimum untuk pemanggilan tanpa server adalah 4 MB. Untuk titik akhir tanpa server:
+ Model harus diunduh dan server harus merespons dengan sukses `/ping` dalam waktu 3 menit.
+ Batas waktu penampung untuk menanggapi permintaan inferensi `/invocations` adalah 1 menit.

## Untuk memanggil titik akhir
<a name="serverless-endpoints-invoke-api"></a>

Contoh berikut menggunakan [AWS SDK for Python (Boto3) untuk memanggil](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) API. [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) Perhatikan bahwa tidak seperti panggilan API lainnya dalam panduan ini, untuk`InvokeEndpoint`, Anda harus menggunakan SageMaker Runtime Runtime sebagai klien. Tentukan nilai-nilai berikut ini:
+ Untuk`endpoint_name`, gunakan nama titik akhir tanpa server dalam layanan yang ingin Anda panggil.
+ Untuk`content_type`, tentukan tipe MIME data masukan Anda di badan permintaan (misalnya,`application/json`).
+ Untuk`payload`, gunakan payload permintaan Anda untuk inferensi. Payload Anda harus dalam byte atau objek seperti file.

```
runtime = boto3.client("sagemaker-runtime")

endpoint_name = "<your-endpoint-name>"
content_type = "<request-mime-type>"
payload = <your-request-body>

response = runtime.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType=content_type,
    Body=payload
)
```

# Memperbarui titik akhir tanpa server
<a name="serverless-endpoints-update"></a>

Sebelum memperbarui titik akhir Anda, buat konfigurasi titik akhir baru atau gunakan konfigurasi titik akhir yang ada. Konfigurasi titik akhir adalah tempat Anda menentukan perubahan untuk pembaruan Anda. Kemudian, Anda dapat memperbarui titik akhir Anda dengan [konsol SageMaker AI](https://console.aws.amazon.com/sagemaker/home), [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API, atau. AWS CLI[Proses untuk memperbarui titik akhir tanpa server sama dengan proses untuk memperbarui titik akhir real-time.](realtime-endpoints.md) Perhatikan bahwa saat memperbarui titik akhir, Anda dapat mengalami cold start saat membuat permintaan ke titik akhir karena SageMaker AI harus menginisialisasi ulang container dan model Anda.

Anda mungkin ingin memperbarui titik akhir tanpa server sesuai permintaan ke titik akhir tanpa server dengan konkurensi yang disediakan atau menyesuaikan nilai Konkurensi yang Disediakan untuk titik akhir tanpa server yang ada dengan konkurensi yang disediakan. Untuk kedua kasus tersebut, Anda harus membuat konfigurasi endpoint tanpa server baru dengan nilai yang diinginkan untuk Provisioned Concurrency, dan menerapkan `UpdateEndpoint` ke titik akhir tanpa server yang ada. Untuk informasi selengkapnya tentang membuat konfigurasi endpoint tanpa server baru dengan Provisioned Concurrency, lihat. [Buat konfigurasi titik akhir](serverless-endpoints-create-config.md)

Jika Anda ingin menghapus Provisioned Concurrency dari titik akhir tanpa server, Anda harus membuat konfigurasi titik akhir baru tanpa menentukan nilai apa pun untuk Provisioned Concurrency, dan kemudian menerapkan ke titik akhir. `UpdateEndpoint`

**catatan**  
Memperbarui titik akhir inferensi real-time ke titik akhir tanpa server sesuai permintaan atau titik akhir tanpa server dengan Provisioned Concurrency saat ini tidak didukung.

## Perbarui titik akhir
<a name="serverless-endpoints-update-endpoint"></a>

Setelah membuat konfigurasi titik akhir tanpa server baru, Anda dapat menggunakan [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)atau [konsol SageMaker AI](https://console.aws.amazon.com/sagemaker/) untuk memperbarui titik akhir tanpa server yang ada. Contoh cara memperbarui titik akhir Anda menggunakan AWS SDK untuk Python (Boto3) dan konsol SageMaker AI diuraikan di bagian berikut.

### Untuk memperbarui titik akhir (menggunakan Boto3)
<a name="serverless-endpoints-update-endpoint-api"></a>

Contoh berikut menggunakan [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)untuk memanggil metode [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_endpoint.html). Tentukan setidaknya parameter berikut saat memanggil metode:
+ Untuk`EndpointName`, gunakan nama titik akhir yang Anda perbarui.
+ Untuk`EndpointConfigName`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan untuk pembaruan.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<new-endpoint-config>",
)
```

### Untuk memperbarui titik akhir (menggunakan konsol)
<a name="serverless-endpoints-update-endpoint-console"></a>

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

1. Di tab navigasi, pilih **Inferensi**.

1. Selanjutnya, pilih **Endpoints**.

1. Dari daftar titik akhir, pilih titik akhir yang ingin Anda perbarui.

1. Pilih **Ubah** di bagian **pengaturan konfigurasi Endpoint**.

1. Untuk **Mengubah konfigurasi Endpoint**, pilih **Gunakan konfigurasi endpoint yang ada**.

1. Dari daftar konfigurasi titik akhir, pilih salah satu yang ingin Anda gunakan untuk pembaruan Anda.

1. Pilih **Pilih konfigurasi titik akhir**.

1. Pilih **Perbarui titik akhir**.

# Jelaskan titik akhir tanpa server
<a name="serverless-endpoints-describe"></a>

Anda mungkin ingin mengambil informasi tentang titik akhir Anda, termasuk detail seperti ARN titik akhir, status saat ini, konfigurasi penerapan, dan alasan kegagalan. Anda dapat menemukan informasi tentang titik akhir Anda menggunakan [konsol SageMaker AI](https://console.aws.amazon.com/sagemaker/home), [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API, atau. AWS CLI

## Untuk mendeskripsikan titik akhir (menggunakan API)
<a name="serverless-endpoints-describe-api"></a>

Contoh berikut menggunakan [AWS SDK for Python (Boto3) untuk memanggil](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#id309) API. [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) Untuk`EndpointName`, gunakan nama titik akhir yang ingin Anda periksa.

```
response = client.describe_endpoint(
    EndpointName="<your-endpoint-name>",
)
```

## Untuk mendeskripsikan titik akhir (menggunakan konsol)
<a name="serverless-endpoints-describe-console"></a>

1. Masuk ke [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home).

1. Di tab navigasi, pilih **Inferensi**.

1. Selanjutnya, pilih **Endpoints**.

1. Dari daftar titik akhir, pilih titik akhir yang ingin Anda periksa.

Halaman endpoint berisi informasi tentang endpoint Anda.

# Menghapus titik akhir tanpa server
<a name="serverless-endpoints-delete"></a>

Anda dapat menghapus titik akhir tanpa server menggunakan [konsol SageMaker AI](https://console.aws.amazon.com/sagemaker/home), [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html)API, atau. AWS CLI Contoh berikut menunjukkan cara menghapus titik akhir Anda melalui API dan konsol SageMaker AI.

## Untuk menghapus titik akhir (menggunakan API)
<a name="serverless-endpoints-delete-api"></a>

Contoh berikut menggunakan [AWS SDK for Python (Boto3) untuk memanggil](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) API. [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html) Untuk`EndpointName`, gunakan nama titik akhir tanpa server yang ingin Anda hapus.

```
response = client.delete_endpoint(
    EndpointName="<your-endpoint-name>",
)
```

## Untuk menghapus titik akhir (menggunakan konsol)
<a name="serverless-endpoints-delete-console"></a>

1. Masuk ke [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/home).

1. Di tab navigasi, pilih **Inferensi**.

1. Selanjutnya, pilih **Endpoints**.

1. Dari daftar titik akhir, pilih titik akhir yang ingin Anda hapus.

1. Pilih daftar drop-down **Tindakan**, lalu pilih **Hapus**.

1. Ketika diminta lagi, pilih **Hapus**.

Titik akhir Anda sekarang harus memulai proses penghapusan.

# Alarm dan log untuk melacak metrik dari titik akhir tanpa server
<a name="serverless-endpoints-monitoring"></a>

Untuk memantau titik akhir tanpa server, Anda dapat menggunakan alarm Amazon. CloudWatch CloudWatch adalah layanan yang mengumpulkan metrik secara real time dari AWS aplikasi dan sumber daya Anda. Alarm mengawasi metrik saat dikumpulkan dan memberi Anda kemampuan untuk menentukan ambang batas dan tindakan yang harus diambil jika ambang batas tersebut dilanggar. Misalnya, CloudWatch alarm Anda dapat mengirimi Anda pemberitahuan jika titik akhir Anda melanggar ambang kesalahan. Dengan mengatur CloudWatch alarm, Anda mendapatkan visibilitas ke kinerja dan fungsionalitas titik akhir Anda. Untuk informasi selengkapnya tentang CloudWatch alarm, lihat [Menggunakan CloudWatch alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) di * CloudWatch Panduan Pengguna Amazon*.

## Pemantauan CloudWatch dengan
<a name="serverless-endpoints-monitoring-metrics"></a>

Metrik di bawah ini adalah daftar lengkap metrik untuk titik akhir tanpa server. Metrik apa pun yang tidak tercantum di bawah ini tidak dipublikasikan untuk titik akhir tanpa server. Untuk informasi tentang metrik berikut, lihat [Memantau Amazon SageMaker AI dengan Amazon CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html).

### Metrik titik akhir umum
<a name="serverless-endpoints-monitoring-metrics-common"></a>

 CloudWatch Metrik ini sama dengan metrik yang diterbitkan untuk titik akhir waktu nyata.

`OverheadLatency`Metrik melacak semua latensi tambahan yang ditambahkan SageMaker AI yang mencakup waktu mulai dingin untuk meluncurkan sumber daya komputasi baru untuk titik akhir tanpa server Anda. Dibandingkan dengan titik akhir tanpa server sesuai permintaan, titik akhir tanpa server dengan `OverheadLatency` konkurensi penyediaan umumnya jauh lebih sedikit.

Endpoint tanpa server juga dapat menggunakan`Invocations4XXErrors`,,, `Invocations5XXErrors` `Invocations``ModelLatency`, `ModelSetupTime` dan metrik. `MemoryUtilization` Untuk mempelajari lebih lanjut tentang metrik ini, lihat[SageMaker Metrik pemanggilan titik akhir AI](monitoring-cloudwatch.md#cloudwatch-metrics-endpoint-invocation).

### Metrik titik akhir tanpa server yang umum
<a name="serverless-endpoints-monitoring-metrics-serverless"></a>

 CloudWatch Metrik ini diterbitkan untuk titik akhir tanpa server sesuai permintaan dan titik akhir tanpa server dengan Provisioned Concurrency.


| Nama Metrik | Deskripsi | Unit/Statistik | 
| --- | --- | --- | 
| ServerlessConcurrentExecutionsUtilization | Jumlah eksekusi bersamaan dibagi dengan konkurensi maksimum. | Satuan: Tidak adaStatistik yang valid: Rata-rata, Maks, Min | 

### Titik akhir tanpa server dengan metrik Konkurensi yang Disediakan
<a name="serverless-endpoints-monitoring-metrics-serverless-pc"></a>

 CloudWatch Metrik ini diterbitkan untuk titik akhir tanpa server dengan Provisioned Concurrency.


| Nama Metrik | Deskripsi | Unit/Statistik | 
| --- | --- | --- | 
| ServerlessProvisionedConcurrencyExecutions | Jumlah eksekusi bersamaan yang ditangani oleh titik akhir. | Unit: JumlahStatistik yang valid: Rata-rata, Maks, Min | 
| ServerlessProvisionedConcurrencyUtilization | Jumlah eksekusi bersamaan dibagi dengan Provisioned Concurrency yang dialokasikan. | Satuan: Tidak adaStatistik yang valid: Rata-rata, Maks, Min | 
| ServerlessProvisionedConcurrencyInvocations | Jumlah InvokeEndpoint permintaan yang ditangani oleh Provisioned Concurrency. | Unit: JumlahStatistik yang valid: Rata-rata, Maks, Min | 
| ServerlessProvisionedConcurrencySpilloverInvocations | Jumlah InvokeEndpoint permintaan yang tidak ditangani oleh Provisioned Concurrency, yang ditangani oleh Inferensi Tanpa Server sesuai permintaan. | Unit: JumlahStatistik yang valid: Rata-rata, Maks, Min | 

## Log
<a name="serverless-endpoints-monitoring-logs"></a>

Jika Anda ingin memantau log dari titik akhir untuk proses debug atau analisis kemajuan, Anda dapat menggunakan Amazon CloudWatch Logs. Grup log yang SageMaker disediakan AI yang dapat Anda gunakan untuk titik akhir tanpa server adalah. `/aws/sagemaker/Endpoints/[EndpointName]` Untuk informasi selengkapnya tentang penggunaan CloudWatch Log di SageMaker AI, lihat[CloudWatch Log untuk Amazon SageMaker AI](logging-cloudwatch.md). Untuk mempelajari lebih lanjut tentang CloudWatch Log, lihat [Apa itu CloudWatch Log Amazon?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) di *Panduan Pengguna CloudWatch Log Amazon*.

# Secara otomatis menskalakan Konkurensi yang Disediakan untuk titik akhir tanpa server
<a name="serverless-endpoints-autoscale"></a>

 Amazon SageMaker AI secara otomatis menskalakan atau keluar titik akhir tanpa server sesuai permintaan. Untuk endpoint tanpa server dengan Provisioned Concurrency, Anda dapat menggunakan Application Auto Scaling untuk meningkatkan atau menurunkan Provisioned Concurrency berdasarkan profil lalu lintas Anda, sehingga mengoptimalkan biaya. 

 Berikut ini adalah prasyarat untuk skala otomatis Provisioned Concurrency pada titik akhir tanpa server: 
+ [Daftarkan model](#serverless-endpoints-autoscale-register)
+ [Menentukan kebijakan penskalaan](#serverless-endpoints-autoscale-define)
+ [Menerapkan kebijakan penskalaan](#serverless-endpoints-autoscale-apply)

 Sebelum Anda dapat menggunakan penskalaan otomatis, Anda harus telah menerapkan model ke titik akhir tanpa server dengan Provisioned Concurrency. Model yang digunakan disebut sebagai [varian produksi](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). Lihat [Buat konfigurasi titik akhir](serverless-endpoints-create-config.md) dan [Buat titik akhir](serverless-endpoints-create-endpoint.md) untuk informasi selengkapnya tentang penerapan model ke titik akhir tanpa server dengan Provisioned Concurrency. Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda harus mengonfigurasi kebijakan penskalaan. Untuk informasi selengkapnya tentang cara menentukan kebijakan penskalaan, lihat[Menentukan kebijakan penskalaan](#serverless-endpoints-autoscale-define). Setelah mendaftarkan model Anda dan menentukan kebijakan penskalaan, terapkan kebijakan penskalaan ke model terdaftar. Untuk informasi tentang cara menerapkan kebijakan penskalaan, lihat[Menerapkan kebijakan penskalaan](#serverless-endpoints-autoscale-apply). 

 [Untuk detail tentang prasyarat dan komponen lain yang digunakan dengan penskalaan otomatis, lihat bagian dalam dokumentasi penskalaan otomatis AI. [Prasyarat penskalaan otomatis](endpoint-auto-scaling-prerequisites.md) SageMaker ](endpoint-auto-scaling.md) 

## Daftarkan model
<a name="serverless-endpoints-autoscale-register"></a>

 Untuk menambahkan penskalaan otomatis ke titik akhir tanpa server dengan Provisioned Concurrency, Anda harus terlebih dahulu mendaftarkan model Anda (varian produksi) menggunakan Application Auto Scaling API. AWS CLI 

### Daftarkan model (AWS CLI)
<a name="serverless-endpoints-autoscale-register-cli"></a>

 Untuk mendaftarkan model Anda, gunakan `register-scalable-target` AWS CLI perintah dengan parameter berikut: 
+  `--service-namespace` – Atur 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. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `--scalable-dimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 
+  `--min-capacity`— Jumlah minimum Provisioned Concurrency untuk model. Setel `--min-capacity` ke setidaknya 1. Itu harus sama dengan atau kurang dari nilai yang ditentukan untuk`--max-capacity`. 
+  `--max-capacity`— Jumlah maksimum Provisioned Concurrency yang harus diaktifkan melalui Application Auto Scaling. Setel `--max-capacity` ke minimal 1. Itu harus lebih besar dari atau sama dengan nilai yang ditentukan untuk`--min-capacity`. 

 Contoh berikut menunjukkan cara mendaftarkan model bernama `MyVariant` yang diskalakan secara dinamis untuk memiliki 1 hingga 10 nilai Konkurensi yang Disediakan: 

```
aws application-autoscaling register-scalable-target \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant \
    --min-capacity 1 \
    --max-capacity 10
```

### Daftarkan model (Application Auto Scaling API)
<a name="serverless-endpoints-autoscale-register-api"></a>

 Untuk mendaftarkan model Anda, gunakan aksi `RegisterScalableTarget` Application Auto Scaling API dengan parameter berikut: 
+  `ServiceNamespace` – Atur nilai ini ke `sagemaker`. 
+  `ResourceId`— Pengidentifikasi sumber daya untuk model (khususnya varian produksi). Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian produksi. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `ScalableDimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 
+  `MinCapacity`— Jumlah minimum Provisioned Concurrency untuk model. Setel `MinCapacity` ke setidaknya 1. Itu harus sama dengan atau kurang dari nilai yang ditentukan untuk`MaxCapacity`. 
+  `MaxCapacity`— Jumlah maksimum Provisioned Concurrency yang harus diaktifkan melalui Application Auto Scaling. Setel `MaxCapacity` ke minimal 1. Itu harus lebih besar dari atau sama dengan nilai yang ditentukan untuk`MinCapacity`. 

 Contoh berikut menunjukkan cara mendaftarkan model bernama `MyVariant` yang diskalakan secara dinamis untuk memiliki 1 hingga 10 nilai Konkurensi yang Disediakan: 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndPoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
    "MinCapacity": 1,
    "MaxCapacity": 10
}
```

## Menentukan kebijakan penskalaan
<a name="serverless-endpoints-autoscale-define"></a>

 Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda dapat mengonfigurasi kebijakan penskalaan pelacakan target. Tentukan kebijakan penskalaan sebagai blok JSON dalam file teks. Anda kemudian dapat menggunakan file teks tersebut saat menjalankan AWS CLI atau Application Auto Scaling API. Untuk menentukan kebijakan penskalaan pelacakan target dengan cepat untuk titik akhir tanpa server, gunakan metrik yang telah ditentukan sebelumnya. `SageMakerVariantProvisionedConcurrencyUtilization` 

```
{
    "TargetValue": 0.5,
    "PredefinedMetricSpecification": 
    {
        "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization"
    },
    "ScaleOutCooldown": 1,
    "ScaleInCooldown": 1
}
```

## Menerapkan kebijakan penskalaan
<a name="serverless-endpoints-autoscale-apply"></a>

 Setelah mendaftarkan model, Anda dapat menerapkan kebijakan penskalaan ke titik akhir tanpa server dengan Provisioned Concurrency. Lihat [Menerapkan kebijakan penskalaan pelacakan target](#serverless-endpoints-autoscale-apply-target) untuk menerapkan kebijakan penskalaan pelacakan target yang telah Anda tetapkan. Jika arus lalu lintas ke titik akhir tanpa server Anda memiliki rutinitas yang dapat diprediksi, alih-alih menerapkan kebijakan penskalaan pelacakan target, Anda mungkin ingin menjadwalkan tindakan penskalaan pada waktu tertentu. Untuk informasi selengkapnya tentang penjadwalan tindakan penskalaan, lihat. [Penskalaan terjadwal](#serverless-endpoints-autoscale-apply-scheduled) 

### Menerapkan kebijakan penskalaan pelacakan target
<a name="serverless-endpoints-autoscale-apply-target"></a>

 Anda dapat menggunakan Application Auto Scaling API AWS CLI atau Application Auto Scaling untuk menerapkan kebijakan penskalaan pelacakan target ke titik akhir tanpa server Anda dengan Provisioned Concurrency. Konsol Manajemen AWS

#### Menerapkan kebijakan penskalaan pelacakan target ()AWS CLI
<a name="serverless-endpoints-autoscale-apply-target-cli"></a>

 Untuk menerapkan kebijakan penskalaan pada model Anda, gunakan perintah `put-scaling-policy` AWS CLI; dengan parameter berikut: 
+  `--policy-name` – Nama kebijakan penskalaan. 
+  `--policy-type` – Atur 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. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `--service-namespace` – Atur nilai ini ke `sagemaker`. 
+  `--scalable-dimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 
+  `--target-tracking-scaling-policy-configuration`— Konfigurasi kebijakan penskalaan pelacakan target yang akan digunakan untuk model. 

 Contoh berikut menunjukkan cara menerapkan kebijakan penskalaan pelacakan target yang diberi nama `MyScalingPolicy` ke model bernama. `MyVariant` Konfigurasi kebijakan disimpan dalam file bernama`scaling-policy.json`. 

```
aws application-autoscaling put-scaling-policy \
    --policy-name MyScalingPolicy \
    --policy-type TargetTrackingScaling \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant \
    --target-tracking-scaling-policy-configuration file://[file-localtion]/scaling-policy.json
```

#### Menerapkan kebijakan penskalaan pelacakan target (Application Auto Scaling API)
<a name="serverless-endpoints-autoscale-apply-target-api"></a>

 Untuk menerapkan kebijakan penskalaan pada model Anda, gunakan tindakan `PutScalingPolicy` Application Auto Scaling API dengan parameter berikut: 
+  `PolicyName` – Nama kebijakan penskalaan. 
+  `PolicyType` – Atur nilai ini ke `TargetTrackingScaling`. 
+  `ResourceId`— Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `ServiceNamespace` – Atur nilai ini ke `sagemaker`. 
+  `ScalableDimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 
+  `TargetTrackingScalingPolicyConfiguration`— Konfigurasi kebijakan penskalaan pelacakan target yang akan digunakan untuk model. 

 Contoh berikut menunjukkan cara menerapkan kebijakan penskalaan pelacakan target yang diberi nama `MyScalingPolicy` ke model bernama. `MyVariant` Konfigurasi kebijakan disimpan dalam file bernama`scaling-policy.json`. 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "MyScalingPolicy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndpoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": 
    {
        "TargetValue": 0.5,
        "PredefinedMetricSpecification": 
        {
            "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization"
        }
    }
}
```

#### Menerapkan kebijakan penskalaan pelacakan target ()Konsol Manajemen AWS
<a name="serverless-endpoints-autoscale-apply-target-console"></a>

 Untuk menerapkan kebijakan penskalaan pelacakan target dengan: Konsol Manajemen AWS

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

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

1.  Pilih **Endpoint** untuk melihat daftar semua titik akhir Anda. 

1.  Pilih titik akhir yang ingin Anda terapkan kebijakan penskalaan. Halaman dengan pengaturan titik akhir akan muncul, dengan model (varian produksi) yang tercantum di bawah bagian Pengaturan **runtime endpoint**. 

1.  Pilih varian produksi yang ingin Anda terapkan kebijakan penskalaan, dan pilih **Konfigurasi penskalaan otomatis**. Kotak dialog **penskalaan otomatis varian Konfigurasi** muncul.   
![\[Tangkapan layar dari kotak dialog penskalaan otomatis varian konfigurasi di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/serverless-endpoints-variant-autoscaling.png)

1.  **Masukkan nilai Konkurensi Terketentuan minimum dan maksimum di bidang konkurensi **minimum yang disediakan dan konkurensi** yang **disediakan maksimum, masing-masing, di bagian penskalaan otomatis** Variant.** Minimum Provisioned Concurrency harus kurang dari atau sama dengan maksimum Provisioned Concurrency. 

1.  Masukkan nilai target di bidang **Nilai target** untuk metrik target,`SageMakerVariantProvisionedConcurrencyUtilization`. 

1.  (Opsional) Masukkan skala dalam pendinginan dan skala nilai pendinginan (dalam detik) di **Skala dalam pendinginan** dan **Skalakan bidang pendinginan** masing-masing. 

1.  (Opsional) Pilih **Nonaktifkan skala** jika Anda tidak ingin penskalaan otomatis menghapus instance saat lalu lintas menurun. 

1.  Pilih **Simpan**. 

### Penskalaan terjadwal
<a name="serverless-endpoints-autoscale-apply-scheduled"></a>

 Jika lalu lintas ke titik akhir tanpa server Anda dengan Provisioned Concurrency mengikuti pola rutin, Anda mungkin ingin menjadwalkan tindakan penskalaan pada waktu tertentu, untuk menskalakan atau memperkecil Provisioned Concurrency. Anda dapat menggunakan Application Auto Scaling AWS CLI atau Application Auto Scaling untuk menjadwalkan tindakan penskalaan. 

#### Penskalaan terjadwal ()AWS CLI
<a name="serverless-endpoints-autoscale-apply-scheduled-cli"></a>

 Untuk menerapkan kebijakan penskalaan pada model Anda, gunakan perintah `put-scheduled-action` AWS CLI; dengan parameter berikut: 
+  `--schedule-action-name`— Nama tindakan penskalaan. 
+  `--schedule`— Ekspresi cron yang menentukan waktu mulai dan akhir dari tindakan penskalaan dengan jadwal berulang. 
+  `--resource-id`— Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `--service-namespace` – Atur nilai ini ke `sagemaker`. 
+  `--scalable-dimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 
+  `--scalable-target-action`— Target tindakan penskalaan. 

 Contoh berikut menunjukkan cara menambahkan tindakan penskalaan bernama `MyScalingAction` ke model bernama `MyVariant` pada jadwal berulang. Pada jadwal yang ditentukan (setiap hari pukul 12:15 WIB), jika Konkurensi yang Disediakan saat ini di bawah nilai yang ditentukan untuk. `MinCapacity` Application Auto Scaling menskalakan Provisioned Concurrency ke nilai yang ditentukan oleh. `MinCapacity` 

```
aws application-autoscaling put-scheduled-action \
    --scheduled-action-name 'MyScalingAction' \
    --schedule 'cron(15 12 * * ? *)' \
    --service-namespace sagemaker \
    --resource-id endpoint/MyEndpoint/variant/MyVariant \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --scalable-target-action 'MinCapacity=10'
```

#### Penskalaan terjadwal (Application Auto Scaling API)
<a name="serverless-endpoints-autoscale-apply-scheduled-api"></a>

 Untuk menerapkan kebijakan penskalaan pada model Anda, gunakan tindakan `PutScheduledAction` Application Auto Scaling API dengan parameter berikut: 
+  `ScheduleActionName`— Nama tindakan penskalaan. 
+  `Schedule`— Ekspresi cron yang menentukan waktu mulai dan akhir dari tindakan penskalaan dengan jadwal berulang. 
+  `ResourceId`— Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `ServiceNamespace` – Atur nilai ini ke `sagemaker`. 
+  `ScalableDimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 
+  `ScalableTargetAction`— Target tindakan penskalaan. 

 Contoh berikut menunjukkan cara menambahkan tindakan penskalaan bernama `MyScalingAction` ke model bernama `MyVariant` pada jadwal berulang. Pada jadwal yang ditentukan (setiap hari pukul 12:15 WIB), jika Konkurensi yang Disediakan saat ini di bawah nilai yang ditentukan untuk. `MinCapacity` Application Auto Scaling menskalakan Provisioned Concurrency ke nilai yang ditentukan oleh. `MinCapacity` 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.PutScheduledAction
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ScheduledActionName": "MyScalingAction",
    "Schedule": "cron(15 12 * * ? *)",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndpoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
    "ScalableTargetAction": "MinCapacity=10"
        }
    }
}
```

# Bersihkan
<a name="serverless-endpoints-autoscale-cleanup"></a>

 Setelah Anda selesai menggunakan penskalaan otomatis untuk titik akhir tanpa server Anda dengan Provisioned Concurrency, Anda harus membersihkan sumber daya yang Anda buat. Ini melibatkan penghapusan kebijakan penskalaan dan membatalkan pendaftaran model dari Application Auto Scaling. Membersihkan memastikan bahwa Anda tidak mengeluarkan biaya yang tidak perlu untuk sumber daya yang tidak lagi Anda gunakan. 

## Menghapus kebijakan penskalaan
<a name="serverless-endpoints-autoscale-delete"></a>

 Anda dapat menghapus kebijakan penskalaan dengan Konsol Manajemen AWS, Application Auto Scaling AWS CLI API, atau Application Auto Scaling. Untuk informasi selengkapnya tentang menghapus kebijakan penskalaan dengan Konsol Manajemen AWS, lihat [Menghapus kebijakan penskalaan](endpoint-auto-scaling-delete.md) di dokumentasi penskalaan [otomatis SageMaker AI](endpoint-auto-scaling.md). 

### Menghapus kebijakan penskalaan ()AWS CLI
<a name="serverless-endpoints-autoscale-delete-cli"></a>

 Untuk menerapkan kebijakan penskalaan pada model Anda, gunakan perintah `delete-scaling-policy` AWS CLI; 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. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `--service-namespace` – Atur nilai ini ke `sagemaker`. 
+  `--scalable-dimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 

 Contoh berikut menghapus kebijakan penskalaan bernama `MyScalingPolicy` dari model bernama. `MyVariant` 

```
aws application-autoscaling delete-scaling-policy \
    --policy-name MyScalingPolicy \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant
```

### Menghapus kebijakan penskalaan (Application Auto Scaling API)
<a name="serverless-endpoints-autoscale-delete-api"></a>

 Untuk menghapus kebijakan penskalaan ke model Anda, gunakan tindakan `DeleteScalingPolicy` Application Auto Scaling API dengan parameter berikut: 
+  `PolicyName` – Nama kebijakan penskalaan. 
+  `ResourceId`— Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `ServiceNamespace` – Atur nilai ini ke `sagemaker`. 
+  `ScalableDimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 

 Contoh berikut menggunakan Application Auto Scaling API untuk menghapus kebijakan penskalaan bernama `MyScalingPolicy` dari model bernama. `MyVariant` 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "MyScalingPolicy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndpoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
}
```

## Deregister model
<a name="serverless-endpoints-autoscale-deregister"></a>

 Anda dapat membatalkan pendaftaran model dengan, Application Auto Scaling API Konsol Manajemen AWS AWS CLI, atau Application Auto Scaling. 

### Deregister model ()AWS CLI
<a name="serverless-endpoints-deregister-model-cli"></a>

 Untuk membatalkan pendaftaran model dari Application Auto Scaling, gunakan perintah; `deregister-scalable-target` AWS CLI dengan parameter berikut: 
+  `--resource-id`— Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `--service-namespace` – Atur nilai ini ke `sagemaker`. 
+  `--scalable-dimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 

 Contoh berikut membatalkan pendaftaran model bernama `MyVariant` dari Application Auto Scaling. 

```
aws application-autoscaling deregister-scalable-target \
    --service-namespace sagemaker \
    --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \
    --resource-id endpoint/MyEndpoint/variant/MyVariant
```

### Membatalkan pendaftaran model (Application Auto Scaling API)
<a name="serverless-endpoints-autoscale-deregister-api"></a>

 Untuk membatalkan pendaftaran model dari Application Auto Scaling, gunakan aksi Application Auto `DeregisterScalableTarget` Scaling API dengan parameter berikut: 
+  `ResourceId`— Pengidentifikasi sumber daya untuk varian. Untuk parameter ini, tipe sumber daya adalah `endpoint` dan pengidentifikasi unik adalah nama varian. Sebagai contoh, `endpoint/MyEndpoint/variant/MyVariant`. 
+  `ServiceNamespace` – Atur nilai ini ke `sagemaker`. 
+  `ScalableDimension` – Atur nilai ini ke `sagemaker:variant:DesiredProvisionedConcurrency`. 

 Contoh berikut menggunakan Application Auto Scaling API untuk membatalkan pendaftaran model bernama dari Application Auto `MyVariant` Scaling. 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.DeregisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/MyEndpoint/variant/MyVariant",
    "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency",
}
```

### Deregister model ()Konsol Manajemen AWS
<a name="serverless-endpoints-autoscale-deregister-console"></a>

 Untuk membatalkan pendaftaran model (varian produksi) dengan: Konsol Manajemen AWS

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

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

1.  Pilih **Endpoints** untuk melihat daftar endpoint Anda. 

1.  Pilih endpoint tanpa server yang menghosting varian produksi. Halaman dengan pengaturan titik akhir akan muncul, dengan varian produksi tercantum di bawah bagian Pengaturan **runtime Endpoint**. 

1.  Pilih varian produksi yang ingin Anda deregister, dan pilih Configure **auto** scaling. Kotak dialog **penskalaan otomatis varian Konfigurasi** muncul. 

1.  Pilih **Deregister auto scaling**. 

# Pemecahan Masalah
<a name="serverless-endpoints-troubleshooting"></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.

Jika Anda mengalami masalah dengan Inferensi Tanpa Server, lihat tips pemecahan masalah berikut.

## Masalah kontainer
<a name="serverless-endpoints-troubleshooting-containers"></a>

Jika kontainer yang Anda gunakan untuk titik akhir tanpa server sama dengan yang Anda gunakan pada titik akhir berbasis instance, penampung Anda mungkin tidak memiliki izin untuk menulis file. Hal ini dapat terjadi karena alasan berikut:
+ Titik akhir tanpa server Anda gagal dibuat atau diperbarui karena kegagalan pemeriksaan kesehatan ping.
+  CloudWatch Log Amazon untuk titik akhir menunjukkan bahwa penampung gagal menulis ke beberapa file atau direktori karena kesalahan izin.

Untuk memperbaiki masalah ini, Anda dapat mencoba menambahkan izin baca, tulis, dan jalankan untuk `other` pada file atau direktori dan kemudian membangun kembali wadah. Anda dapat melakukan langkah-langkah berikut untuk menyelesaikan proses ini:

1. Di Dockerfile yang Anda gunakan untuk membangun wadah Anda, tambahkan perintah berikut: `RUN chmod o+rwX <file or directory name>`

1. Membangun kembali wadah.

1. Unggah gambar kontainer baru ke Amazon ECR.

1. Cobalah untuk membuat atau memperbarui titik akhir tanpa server lagi.

# Inferensi asinkron
<a name="async-inference"></a>

Amazon SageMaker Asynchronous Inference adalah kemampuan dalam SageMaker AI yang mengantri permintaan masuk dan memprosesnya secara asinkron. Opsi ini sangat ideal untuk permintaan dengan ukuran muatan besar (hingga 1GB), waktu pemrosesan yang lama (hingga satu jam), dan persyaratan latensi mendekati waktu nyata. Inferensi Asinkron memungkinkan Anda menghemat biaya dengan menskalakan otomatis jumlah instans ke nol saat tidak ada permintaan untuk diproses, jadi Anda hanya membayar saat titik akhir memproses permintaan.

## Cara Kerjanya
<a name="async-inference-how-it-works"></a>

Membuat titik akhir inferensi asinkron mirip dengan membuat titik akhir inferensi waktu nyata. Anda dapat menggunakan model SageMaker AI yang ada dan hanya perlu menentukan `AsyncInferenceConfig` objek saat membuat konfigurasi titik akhir dengan `EndpointConfig` bidang di `CreateEndpointConfig` API. Diagram berikut menunjukkan arsitektur dan alur kerja Inferensi Asinkron.

![\[Diagram arsitektur Inferensi Asinkron menunjukkan bagaimana pengguna memanggil titik akhir.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/async-architecture.png)


Untuk memanggil titik akhir, Anda harus menempatkan payload permintaan di Amazon S3. Anda juga perlu memberikan pointer ke muatan ini sebagai bagian dari permintaan. `InvokeEndpointAsync` Setelah pemanggilan, SageMaker AI mengantri permintaan untuk diproses dan mengembalikan pengenal dan lokasi keluaran sebagai respons. Setelah diproses, SageMaker AI menempatkan hasilnya di lokasi Amazon S3. Anda dapat memilih untuk menerima pemberitahuan sukses atau kesalahan dengan Amazon SNS. Untuk informasi selengkapnya tentang cara mengatur notifikasi asinkron, lihat. [Periksa hasil prediksi](async-inference-check-predictions.md)

**catatan**  
Kehadiran objek konfigurasi inferensi asinkron (`AsyncInferenceConfig`) dalam konfigurasi titik akhir menyiratkan bahwa titik akhir hanya dapat menerima pemanggilan asinkron.

## Bagaimana Saya Memulai?
<a name="async-inference-how-to-get-started"></a>

Jika Anda adalah pengguna pertama kali Inferensi SageMaker Asinkron Amazon, kami sarankan Anda melakukan hal berikut:
+ Baca [Operasi titik akhir asinkron](async-inference-create-invoke-update-delete.md) untuk informasi tentang cara membuat, memanggil, memperbarui, dan menghapus titik akhir asinkron.
+ [Jelajahi [notebook contoh Inferensi Asinkron](https://github.com/aws/amazon-sagemaker-examples/blob/main/async-inference/Async-Inference-Walkthrough.ipynb) di aws/ repositori. amazon-sagemaker-examples](https://github.com/aws/amazon-sagemaker-examples) GitHub 

Perhatikan bahwa jika titik akhir Anda menggunakan salah satu fitur yang tercantum di [Pengecualian](deployment-guardrails-exclusions.md) halaman ini, Anda tidak dapat menggunakan Inferensi Asinkron.

# Operasi titik akhir asinkron
<a name="async-inference-create-invoke-update-delete"></a>

Panduan ini menunjukkan prasyarat yang harus Anda penuhi untuk membuat titik akhir asinkron, bersama dengan cara membuat, memanggil, dan menghapus titik akhir asinkron Anda. [Anda dapat membuat, memperbarui, menghapus, dan memanggil titik akhir asinkron dengan SDK dan AWS SDKs Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-asynchronous-inference)

**Topics**
+ [Lengkapi prasyarat](async-inference-create-endpoint-prerequisites.md)
+ [Cara membuat Endpoint Inferensi Asinkron](async-inference-create-endpoint.md)
+ [Memanggil Titik Akhir Asinkron](async-inference-invoke-endpoint.md)
+ [Memperbarui Titik Akhir Asinkron](async-inference-update-endpoint.md)
+ [Menghapus Endpoint Asynchronous](async-inference-delete-endpoint.md)

# Lengkapi prasyarat
<a name="async-inference-create-endpoint-prerequisites"></a>

Topik berikut menjelaskan prasyarat yang harus Anda selesaikan sebelum membuat titik akhir asinkron. Prasyarat ini termasuk menyimpan artefak model Anda dengan benar, mengonfigurasi AWS IAM dengan izin yang benar, dan memilih gambar kontainer.

**Untuk menyelesaikan prasyarat**

1. **Buat peran IAM untuk Amazon SageMaker AI.**

   Inferensi Asinkron memerlukan akses ke URI bucket Amazon S3 Anda. Untuk memfasilitasi ini, buat peran IAM yang dapat menjalankan SageMaker AI dan memiliki izin untuk mengakses Amazon S3 dan Amazon SNS. Dengan menggunakan peran ini, SageMaker AI dapat berjalan di bawah akun Anda dan mengakses bucket Amazon S3 dan topik Amazon SNS Anda.

   Anda dapat membuat peran IAM dengan menggunakan konsol IAM, AWS SDK untuk Python (Boto3), atau. AWS CLI Berikut ini adalah contoh cara membuat peran IAM dan melampirkan kebijakan yang diperlukan dengan konsol IAM.

   1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Di panel navigasi konsol IAM, pilih **Peran**, dan lalu pilih **Buat peran**.

   1. Untuk **Pilih jenis entitas tepercaya**, pilih **layanan AWS **.

   1. Pilih layanan yang ingin Anda perbolehkan untuk mengasumsikan peran ini. Dalam hal ini, pilih **SageMaker AI**. Kemudian, pilih **Selanjutnya: Izin**.
      + Ini secara otomatis membuat kebijakan IAM yang memberikan akses ke layanan terkait seperti Amazon S3, Amazon CloudWatch ECR, dan Log.

   1. Pilih **Selanjutnya: Tanda**.

   1. (Opsional) Tambahkan metadata ke dalam peran dengan melampirkan tanda sebagai pasangan nilai-kunci. Untuk informasi lebih lanjut tentang penggunaan tanda dan IAM, lihat [Penandaan sumber daya IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_tags.html).

   1. Pilih **Berikutnya: Tinjauan**.

   1. Ketik **nama Peran**. 

   1. Jika memungkinkan, ketikkan nama peran atau akhiran nama peran. Nama peran harus unik dalam AWS akun Anda. Grup tidak dibedakan berdasarkan huruf besar-kecil. Misalnya, Anda tidak dapat membuat peran dengan nama `PRODROLE` dan `prodrole`. Karena AWS sumber daya lain mungkin mereferensikan peran, Anda tidak dapat mengedit nama peran setelah dibuat.

   1. (Opsional) Untuk **Deskripsi peran**, ketikkan deskripsi untuk peran baru tersebut.

   1. Tinjau peran dan kemudian pilih **Buat peran**.

      Perhatikan peran SageMaker AI ARN. Untuk menemukan peran ARN menggunakan konsol, lakukan hal berikut:

      1. Pergi ke konsol IAM: [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

      1. Pilih **Peran**.

      1. Cari peran yang baru saja Anda buat dengan mengetikkan nama peran di bidang pencarian.

      1. Pilih peran.

      1. Peran ARN ada di bagian atas halaman **Ringkasan**.

1. **Tambahkan Izin Amazon SageMaker AI, Amazon S3, dan Amazon SNS ke Peran IAM Anda.**

   Setelah peran dibuat, berikan izin SageMaker AI, Amazon S3, dan secara opsional Amazon SNS ke peran IAM Anda.

   Pilih **Peran** di konsol IAM. Cari peran yang Anda buat dengan mengetikkan nama peran di kolom **Penelusuran**.

   1. Pilih peran Anda.

   1. Selanjutnya, pilih **Lampirkan Kebijakan**.

   1. Inferensi SageMaker Asinkron Amazon memerlukan izin untuk melakukan tindakan berikut:`"sagemaker:CreateModel"`,,, `"sagemaker:CreateEndpointConfig"` dan. `"sagemaker:CreateEndpoint"` `"sagemaker:InvokeEndpointAsync"` 

      Tindakan ini termasuk dalam `AmazonSageMakerFullAccess` kebijakan. Tambahkan kebijakan ini ke peran IAM Anda. Cari `AmazonSageMakerFullAccess` di bidang **Pencarian**. Pilih `AmazonSageMakerFullAccess`.

   1. Pilih **Lampirkan kebijakan**.

   1. Selanjutnya, pilih **Lampirkan Kebijakan** untuk menambahkan izin Amazon S3.

   1. Pilih **Buat kebijakan**.

   1. Pilih `JSON` tab.

   1. Tambahkan pernyataan kebijakan berikut:

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "s3:GetObject",
                      "s3:PutObject",
                      "s3:AbortMultipartUpload",
                      "s3:ListBucket"  
                  ],
                  "Effect": "Allow",
                  "Resource": "arn:aws:s3:::bucket_name/*"
              }
          ]
      }
      ```

------

   1. Pilih **Berikutnya: Tanda**.

   1. Ketik **nama Kebijakan**.

   1. Pilih **Buat kebijakan**.

   1. Ulangi langkah yang sama yang Anda selesaikan untuk menambahkan izin Amazon S3 untuk menambahkan izin Amazon SNS. Untuk pernyataan kebijakan, lampirkan yang berikut ini:

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "sns:Publish"
                  ],
                  "Effect": "Allow",
      "Resource": "arn:aws:sns:us-east-1:111122223333:SNS_Topic"
              }
          ]
      }
      ```

------

1. **Unggah data inferensi Anda (misalnya, model pembelajaran mesin, data sampel) ke **Amazon** S3.**

1. **Pilih gambar inferensi Docker bawaan atau buat Inference Docker Image Anda sendiri.**

   SageMaker AI menyediakan wadah untuk algoritme bawaan dan gambar Docker bawaan untuk beberapa kerangka kerja pembelajaran mesin yang paling umum, seperti Apache MXNet,,, dan Chainer. TensorFlow PyTorch Untuk daftar lengkap gambar SageMaker AI yang tersedia, lihat Gambar [Deep Learning Containers yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md). Jika Anda memilih untuk menggunakan kontainer yang disediakan SageMaker AI, Anda dapat meningkatkan batas waktu titik akhir dan ukuran payload dari default dengan menyetel variabel lingkungan dalam wadah. Untuk mempelajari cara mengatur variabel lingkungan yang berbeda untuk setiap kerangka kerja, lihat langkah Buat Model untuk membuat titik akhir asinkron.

   Jika tidak ada kontainer SageMaker AI yang ada yang memenuhi kebutuhan Anda dan Anda tidak memiliki wadah sendiri, Anda mungkin perlu membuat wadah Docker baru. Lihat [Wadah dengan kode inferensi khusus](your-algorithms-inference-main.md) untuk informasi tentang cara membuat gambar Docker Anda.

1. **Buat topik Amazon SNS (opsional)**

   Buat topik Amazon Simple Notification Service (Amazon SNS) yang mengirimkan notifikasi tentang permintaan yang telah selesai diproses. Amazon SNS adalah layanan notifikasi untuk aplikasi berorientasi pesan, dengan beberapa pelanggan meminta dan menerima pemberitahuan “push” dari pesan penting waktu melalui pilihan protokol transportasi, termasuk HTTP, Amazon SQS, dan email. Anda dapat menentukan topik Amazon SNS saat membuat `EndpointConfig` objek saat Anda menentukan `AsyncInferenceConfig` menggunakan API. `EndpointConfig` 

   Ikuti langkah-langkah untuk membuat dan berlangganan topik Amazon SNS.

   1. Menggunakan konsol Amazon SNS membuat topik. Untuk petunjuk, lihat [Membuat topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) di Panduan *Pengembang* *Layanan Pemberitahuan Sederhana Amazon*.

   1. Berlangganan topik tersebut. Untuk petunjuk, lihat [Berlangganan topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) di Panduan Pengembang *Layanan* *Pemberitahuan Sederhana Amazon*.

   1. Saat Anda menerima email yang meminta Anda mengonfirmasi langganan Anda ke topik tersebut, konfirmasikan langganan.

   1. Perhatikan topik Amazon Resource Name (ARN). Topik Amazon SNS yang Anda buat adalah sumber daya lain di AWS akun Anda, dan memiliki ARN yang unik. ARN dalam format berikut:

      ```
      arn:aws:sns:aws-region:account-id:topic-name
      ```

   Untuk informasi selengkapnya tentang Amazon SNS, lihat Panduan Pengembang [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html).

# Cara membuat Endpoint Inferensi Asinkron
<a name="async-inference-create-endpoint"></a>

Buat titik akhir asinkron dengan cara yang sama seperti Anda membuat titik akhir menggunakan layanan hosting AI: SageMaker 
+ Buat model di SageMaker AI dengan`CreateModel`.
+ Buat konfigurasi titik akhir dengan`CreateEndpointConfig`.
+ Buat titik akhir HTTPS dengan`CreateEndpoint`.

Untuk membuat titik akhir, pertama-tama Anda membuat model dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), di mana Anda menunjuk ke artefak model dan jalur registri Docker (Gambar). Anda kemudian membuat konfigurasi menggunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)tempat Anda menentukan satu atau beberapa model yang dibuat menggunakan `CreateModel` API untuk diterapkan dan sumber daya yang ingin disediakan oleh SageMaker AI. Buat titik akhir Anda dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)menggunakan konfigurasi titik akhir yang ditentukan dalam permintaan. Anda dapat memperbarui titik akhir asinkron dengan API. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) Kirim dan terima permintaan inferensi dari model yang dihosting di titik akhir dengan. `InvokeEndpointAsync` Anda dapat menghapus titik akhir Anda dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html)API.

Untuk daftar lengkap Gambar yang tersedia, lihat SageMaker Gambar [Deep Learning Containers yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md). Lihat [Wadah dengan kode inferensi khusus](your-algorithms-inference-main.md) untuk informasi tentang cara membuat gambar Docker Anda.

**Topics**
+ [Buat Model](async-inference-create-endpoint-create-model.md)
+ [Buat Konfigurasi Endpoint](async-inference-create-endpoint-create-endpoint-config.md)
+ [Buat Endpoint](async-inference-create-endpoint-create-endpoint.md)

# Buat Model
<a name="async-inference-create-endpoint-create-model"></a>

Contoh berikut menunjukkan cara membuat model menggunakan AWS SDK untuk Python (Boto3). Beberapa baris pertama mendefinisikan:
+ `sagemaker_client`: Objek klien SageMaker AI tingkat rendah yang memudahkan untuk mengirim dan menerima permintaan ke AWS layanan.
+ `sagemaker_role`: Variabel string dengan peran SageMaker AI IAM Amazon Resource Name (ARN).
+ `aws_region`: Variabel string dengan nama AWS wilayah Anda.

```
import boto3

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

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

# Role to give SageMaker permission to access AWS services.
sagemaker_role= "arn:aws:iam::<account>:role/*"
```

Selanjutnya, tentukan lokasi model pra-terlatih yang disimpan di Amazon S3. Dalam contoh ini, kami menggunakan XGBoost model pra-terlatih bernama`demo-xgboost-model.tar.gz`. URI Amazon S3 lengkap disimpan dalam variabel string: `model_url`

```
#Create a variable w/ the model S3 URI
s3_bucket = '<your-bucket-name>' # Provide the name of your S3 bucket
bucket_prefix='saved_models'
model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz"

#Specify S3 bucket w/ model
model_url = f"s3://{s3_bucket}/{model_s3_key}"
```

Tentukan wadah utama. Untuk wadah utama, Anda menentukan image Docker yang berisi kode inferensi, artefak (dari pelatihan sebelumnya), dan peta lingkungan khusus yang digunakan kode inferensi saat Anda menerapkan model untuk prediksi.

 Dalam contoh ini, kami menentukan gambar kontainer algoritma XGBoost bawaan: 

```
from sagemaker import image_uris

# Specify an AWS container image. 
container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')
```

Buat model di Amazon SageMaker AI dengan`CreateModel`. Tentukan hal 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.

```
model_name = '<The_name_of_the_model>'

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
    })
```

Lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)deskripsi di Panduan Referensi SageMaker API untuk daftar lengkap parameter API.

Jika Anda menggunakan wadah yang disediakan SageMaker AI, Anda dapat meningkatkan batas waktu server model dan ukuran payload dari nilai default ke maksimum yang didukung kerangka kerja dengan menyetel variabel lingkungan di langkah ini. Anda mungkin tidak dapat memanfaatkan batas waktu maksimum dan ukuran payload yang didukung Asynchronous Inference jika Anda tidak secara eksplisit mengatur variabel-variabel ini. Contoh berikut menunjukkan bagaimana Anda dapat mengatur variabel lingkungan untuk wadah PyTorch Inferensi berdasarkan TorchServe.

```
model_name = '<The_name_of_the_model>'

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
        'Environment': {
            'TS_MAX_REQUEST_SIZE': '100000000',
            'TS_MAX_RESPONSE_SIZE': '100000000',
            'TS_DEFAULT_RESPONSE_TIMEOUT': '1000'
        },
    })
```

Setelah Anda selesai membuat endpoint Anda, Anda harus menguji apakah Anda telah mengatur variabel lingkungan dengan benar dengan mencetaknya dari `inference.py` skrip Anda. Tabel berikut mencantumkan variabel lingkungan untuk beberapa kerangka kerja yang dapat Anda atur untuk mengubah nilai default.


| Kerangka Kerja | Variabel-variabel lingkungan | 
| --- | --- | 
|  PyTorch 1.8 (berdasarkan TorchServe)  |  'TS\$1MAX\$1REQUEST\$1SIZE': '100000000' 'TS\$1MAX\$1RESPONSE\$1SIZE': '100000000' 'TS\$1DEFAULT\$1RESPONSE\$1TIMEOUT': '1000'  | 
|  PyTorch 1.4 (berdasarkan MMS)  |  'MMS\$1MAX\$1REQUEST\$1SIZE': '1000000000' 'MMS\$1MAX\$1RESPONSE\$1SIZE': '1000000000' 'MMS\$1DEFAULT\$1RESPONSE\$1TIMEOUT': '900'  | 
|  HuggingFace Kontainer Inferensi (berdasarkan MMS)  |  'MMS\$1MAX\$1REQUEST\$1SIZE': '2000000000' 'MMS\$1MAX\$1RESPONSE\$1SIZE': '2000000000' 'MMS\$1DEFAULT\$1RESPONSE\$1TIMEOUT': '900'  | 

# Buat Konfigurasi Endpoint
<a name="async-inference-create-endpoint-create-endpoint-config"></a>

Setelah Anda memiliki model, buat konfigurasi titik akhir dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html). Layanan hosting Amazon SageMaker AI menggunakan konfigurasi ini untuk menyebarkan model. Dalam konfigurasi, Anda mengidentifikasi satu atau beberapa model, yang dibuat menggunakan dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), untuk menyebarkan sumber daya yang Anda inginkan untuk disediakan Amazon SageMaker AI. Tentukan `AsyncInferenceConfig` objek dan berikan lokasi keluaran Amazon S3 untuk. `OutputConfig` Anda dapat secara opsional menentukan topik [Amazon](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) SNS untuk mengirim pemberitahuan tentang hasil prediksi. Untuk informasi selengkapnya tentang topik Amazon SNS, lihat [Mengonfigurasi Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html).

Contoh berikut menunjukkan cara membuat konfigurasi endpoint menggunakan AWS SDK untuk Python (Boto3):

```
import datetime
from time import gmtime, strftime

# Create an endpoint config name. Here we create one based on the date  
# so it we can search endpoints based on creation time.
endpoint_config_name = f"XGBoostEndpointConfig-{strftime('%Y-%m-%d-%H-%M-%S', gmtime())}"

# The name of the model that you want to host. This is the name that you specified when creating the model.
model_name='<The_name_of_your_model>'

create_endpoint_config_response = sagemaker_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name, # You will specify this name in a CreateEndpoint request.
    # List of ProductionVariant objects, one for each model that you want to host at this endpoint.
    ProductionVariants=[
        {
            "VariantName": "variant1", # The name of the production variant.
            "ModelName": model_name, 
            "InstanceType": "ml.m5.xlarge", # Specify the compute instance type.
            "InitialInstanceCount": 1 # Number of instances to launch initially.
        }
    ],
    AsyncInferenceConfig={
        "OutputConfig": {
            # Location to upload response outputs when no location is provided in the request.
            "S3OutputPath": f"s3://{s3_bucket}/{bucket_prefix}/output"
            # (Optional) specify Amazon SNS topics
            "NotificationConfig": {
                "SuccessTopic": "arn:aws:sns:aws-region:account-id:topic-name",
                "ErrorTopic": "arn:aws:sns:aws-region:account-id:topic-name",
            }
        },
        "ClientConfig": {
            # (Optional) Specify the max number of inflight invocations per instance
            # If no value is provided, Amazon SageMaker will choose an optimal value for you
            "MaxConcurrentInvocationsPerInstance": 4
        }
    }
)

print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")
```

Dalam contoh yang disebutkan di atas, Anda menentukan kunci berikut `OutputConfig` untuk `AsyncInferenceConfig` bidang:
+ `S3OutputPath`: Lokasi untuk mengunggah output respons ketika tidak ada lokasi yang disediakan dalam permintaan.
+ `NotificationConfig`: (Opsional) Topik SNS yang memposting pemberitahuan kepada Anda saat permintaan inferensi berhasil (`SuccessTopic`) atau jika gagal (`ErrorTopic`).

Anda juga dapat menentukan argumen opsional berikut untuk `ClientConfig` di `AsyncInferenceConfig` bidang:
+ `MaxConcurrentInvocationsPerInstance`: (Opsional) Jumlah maksimum permintaan bersamaan yang dikirim oleh klien SageMaker AI ke wadah model.

# Buat Endpoint
<a name="async-inference-create-endpoint-create-endpoint"></a>

Setelah Anda memiliki konfigurasi model dan titik akhir, gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API untuk membuat titik akhir Anda. Nama titik akhir harus unik dalam AWS Wilayah di AWS akun Anda. 

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

```
# The name of the endpoint.The name must be unique within an AWS Region in your AWS account.
endpoint_name = '<endpoint-name>' 

# The name of the endpoint configuration associated with this endpoint.
endpoint_config_name='<endpoint-config-name>'

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

Saat Anda memanggil `CreateEndpoint` API, Inferensi SageMaker Asinkron Amazon mengirimkan pemberitahuan pengujian untuk memeriksa apakah Anda telah mengonfigurasi topik Amazon SNS. Inferensi SageMaker Asinkron Amazon juga mengirimkan pemberitahuan pengujian setelah panggilan ke dan. `UpdateEndpoint` `UpdateEndpointWeightsAndCapacities` Ini memungkinkan SageMaker AI memeriksa apakah Anda memiliki izin yang diperlukan. Pemberitahuan dapat diabaikan begitu saja. Pemberitahuan pengujian memiliki formulir berikut:

```
{
    "eventVersion":"1.0",
    "eventSource":"aws:sagemaker",
    "eventName":"TestNotification"
}
```

# Memanggil Titik Akhir Asinkron
<a name="async-inference-invoke-endpoint"></a>

Dapatkan kesimpulan dari model yang dihosting di titik akhir asinkron Anda dengan. `InvokeEndpointAsync` 

**catatan**  
Jika Anda belum melakukannya, unggah data inferensi Anda (misalnya, model pembelajaran mesin, data sampel) ke Amazon S3.

Tentukan bidang berikut dalam permintaan Anda:
+ Untuk`InputLocation`, tentukan lokasi data inferensi Anda.
+ Untuk`EndpointName`, tentukan nama titik akhir Anda.
+ (Opsional) Untuk`InvocationTimeoutSeconds`, Anda dapat mengatur batas waktu maksimal untuk permintaan. Anda dapat mengatur nilai ini hingga maksimum 3600 detik (satu jam) berdasarkan per permintaan. Jika Anda tidak menentukan bidang ini dalam permintaan Anda, secara default permintaan akan habis pada 15 menit.

```
# Create a low-level client representing Amazon SageMaker Runtime
sagemaker_runtime = boto3.client("sagemaker-runtime", region_name=<aws_region>)

# Specify the location of the input. Here, a single SVM sample
input_location = "s3://bucket-name/test_point_0.libsvm"

# The name of the endpoint. The name must be unique within an AWS Region in your AWS account. 
endpoint_name='<endpoint-name>'

# After you deploy a model into production using SageMaker AI hosting 
# services, your client applications use this API to get inferences 
# from the model hosted at the specified endpoint.
response = sagemaker_runtime.invoke_endpoint_async(
                            EndpointName=endpoint_name, 
                            InputLocation=input_location,
                            InvocationTimeoutSeconds=3600)
```

Anda menerima respons sebagai string JSON dengan ID permintaan Anda dan nama bucket Amazon S3 yang akan memiliki respons terhadap panggilan API setelah diproses.

# Memperbarui Titik Akhir Asinkron
<a name="async-inference-update-endpoint"></a>

Perbarui titik akhir asinkron dengan API. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) Saat Anda memperbarui titik akhir, SageMaker AI terlebih dahulu menyediakan dan beralih ke konfigurasi titik akhir baru yang Anda tentukan sebelum menghapus sumber daya yang disediakan di konfigurasi titik akhir sebelumnya. Jangan menghapus `EndpointConfig` dengan titik akhir yang aktif atau saat `CreateEndpoint` operasi `UpdateEndpoint` atau sedang dilakukan pada titik akhir. 

```
# The name of the endpoint. The name must be unique within an AWS Region in your AWS account.
endpoint_name='<endpoint-name>'

# The name of the endpoint configuration associated with this endpoint.
endpoint_config_name='<endpoint-config-name>'

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

Saat Amazon SageMaker AI menerima permintaan, ia menetapkan status titik akhir ke **Pembaruan**. Setelah memperbarui titik akhir asinkron, ia menetapkan status ke. **InService** Untuk memeriksa status titik akhir, gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API. Untuk daftar lengkap parameter yang dapat Anda tentukan saat memperbarui titik akhir, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API.

# Menghapus Endpoint Asynchronous
<a name="async-inference-delete-endpoint"></a>

Hapus titik akhir asinkron dengan cara yang mirip dengan cara Anda menghapus titik akhir yang dihosting SageMaker AI dengan API. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html) Tentukan nama titik akhir asinkron yang ingin Anda hapus. Saat Anda menghapus titik akhir, SageMaker AI membebaskan semua sumber daya yang digunakan saat titik akhir dibuat. Menghapus model tidak menghapus artefak model, kode inferensi, atau peran IAM yang Anda tentukan saat membuat model.

Hapus model SageMaker AI Anda dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html)API atau dengan konsol SageMaker AI.

------
#### [ Boto3 ]

```
import boto3 

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=<aws_region>)
sagemaker_client.delete_endpoint(EndpointName='<endpoint-name>')
```

------
#### [ SageMaker AI console ]

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

1. Perluas daftar **dropdown Inferensi**.

1. Pilih **Endpoint**.

1. Cari titik akhir di bilah **pencarian titik akhir** Pencarian.

1. Pilih titik akhir Anda.

1. Pilih **Hapus**.

------

Selain menghapus titik akhir asinkron, Anda mungkin ingin membersihkan sumber daya lain yang digunakan untuk membuat titik akhir, seperti repositori Amazon ECR (jika Anda membuat gambar inferensi kustom), model AI, dan konfigurasi titik akhir asinkron itu SageMaker sendiri. 

# Alarm dan log untuk melacak metrik dari titik akhir asinkron
<a name="async-inference-monitor"></a>

Anda dapat memantau SageMaker AI menggunakan Amazon CloudWatch, yang mengumpulkan data mentah dan memprosesnya menjadi metrik yang dapat dibaca, mendekati waktu nyata. Dengan Amazon CloudWatch, Anda dapat mengakses informasi historis dan mendapatkan perspektif yang lebih baik tentang kinerja aplikasi atau layanan web Anda. Untuk informasi selengkapnya tentang Amazon CloudWatch, lihat [Apa itu Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)

## Pemantauan CloudWatch dengan
<a name="async-inference-monitor-cloudwatch"></a>

Metrik di bawah ini adalah daftar lengkap metrik untuk titik akhir asinkron dan berada di namespace. `AWS/SageMaker` Metrik apa pun yang tidak tercantum di bawah ini tidak dipublikasikan jika titik akhir diaktifkan untuk inferensi asinkron. Metrik tersebut mencakup (tetapi tidak terbatas pada):
+ OverheadLatency
+ Invokasi
+ InvocationsPerInstance

### Metrik Titik Akhir Umum
<a name="async-inference-monitor-cloudwatch-common"></a>

Metrik ini sama dengan metrik yang diterbitkan untuk titik akhir waktu nyata hari ini. Untuk informasi selengkapnya tentang metrik lain di Amazon CloudWatch, lihat [Memantau SageMaker AI dengan Amazon CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html).


| Nama Metrik | Deskripsi | Unit/Statistik | 
| --- | --- | --- | 
| `Invocation4XXErrors` | Jumlah permintaan di mana model mengembalikan kode respons HTTP 4xx. Untuk setiap respons 4xx, 1 dikirim; jika tidak, 0 dikirim. | Satuan: Tidak adaStatistik yang valid: Rata-rata, Jumlah | 
| `Invocation5XXErrors` | Jumlah InvokeEndpoint permintaan di mana model mengembalikan kode respons HTTP 5xx. Untuk setiap respons 5xx, 1 dikirim; jika tidak, 0 dikirim. | Satuan: Tidak adaStatistik yang valid: Rata-rata, Jumlah | 
| `ModelLatency` | Interval waktu yang dibutuhkan oleh model untuk merespons seperti yang dilihat dari SageMaker AI. Interval ini mencakup waktu komunikasi lokal yang diambil untuk mengirim permintaan dan untuk mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah. | Unit: Mikrodetik Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel | 

### Metrik Titik Akhir Inferensi Asinkron
<a name="async-inference-monitor-cloudwatch-async"></a>

Metrik ini diterbitkan untuk titik akhir yang diaktifkan untuk inferensi asinkron. Metrik berikut diterbitkan dengan `EndpointName` dimensi:


| Nama Metrik | Deskripsi | Unit/Statistik | 
| --- | --- | --- | 
| `ApproximateBacklogSize` | Jumlah item dalam antrian untuk titik akhir yang saat ini sedang diproses atau belum diproses. | Unit: Jumlah Statistik yang valid: Rata-rata, Maks, Min  | 
| `ApproximateBacklogSizePerInstance` | Jumlah item dalam antrian dibagi dengan jumlah instance di belakang titik akhir. Metrik ini terutama digunakan untuk menyiapkan penskalaan otomatis aplikasi untuk titik akhir berkemampuan asinkron. | Unit: JumlahStatistik yang valid: Rata-rata, Maks, Min | 
| `ApproximateAgeOfOldestRequest` | Usia permintaan tertua dalam antrian. | Unit: detikStatistik yang valid: Rata-rata, Maks, Min | 
| `HasBacklogWithoutCapacity` | Nilai metrik ini adalah `1` ketika ada permintaan dalam antrian tetapi nol contoh di belakang titik akhir. Nilainya ada `0` di waktu lainnya. Anda dapat menggunakan metrik ini untuk menskalakan otomatis titik akhir Anda dari nol instance setelah menerima permintaan baru dalam antrian. | Unit: JumlahStatistik yang valid: Rata-rata | 

Metrik berikut diterbitkan dengan `VariantName` dimensi `EndpointName` dan:


| Nama Metrik | Deskripsi | Unit/Statistik | 
| --- | --- | --- | 
| `RequestDownloadFailures` | Ketika kegagalan inferensi terjadi karena masalah saat mengunduh permintaan dari Amazon S3. | Unit: JumlahStatistik yang valid: Jumlah | 
| `ResponseUploadFailures` | Ketika kegagalan inferensi terjadi karena masalah saat mengunggah respons ke Amazon S3. | Unit: JumlahStatistik yang valid: Jumlah | 
| `NotificationFailures` | Saat terjadi masalah, publikasi notifikasi. | Unit: JumlahStatistik yang valid: Jumlah | 
| `RequestDownloadLatency` | Total waktu untuk mengunduh payload permintaan. | Unit: MikrodetikStatistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel | 
| `ResponseUploadLatency` | Total waktu untuk mengunggah payload respons. | Unit: Mikrodetik Statistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel | 
| `ExpiredRequests` | Jumlah permintaan dalam antrian yang gagal karena mencapai permintaan TTL yang ditentukan. | Unit: JumlahStatistik yang valid: Jumlah | 
| `InvocationFailures` | Jika doa gagal karena alasan apa pun. | Unit: JumlahStatistik yang valid: Jumlah | 
| `InvocationsProcesssed` | Jumlah pemanggilan asinkron yang diproses oleh titik akhir. | Unit: JumlahStatistik yang valid: Jumlah | 
| `TimeInBacklog` | Total waktu permintaan antri sebelum diproses. Ini tidak termasuk waktu pemrosesan aktual (yaitu waktu pengunduhan, waktu unggah, latensi model). | Unit: MilidetikStatistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel | 
| `TotalProcessingTime` | Waktu permintaan inferensi diterima oleh SageMaker AI hingga saat permintaan selesai diproses. Ini termasuk waktu dalam backlog dan waktu untuk mengunggah dan mengirim pemberitahuan respons, jika ada. | Unit: MilidetikStatistik yang valid: Rata-rata, Jumlah, Min, Maks, Jumlah Sampel | 

Inferensi SageMaker Asinkron Amazon juga mencakup metrik tingkat host. Untuk informasi tentang metrik tingkat host, lihat [Pekerjaan SageMaker AI dan](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-jobs) Metrik Titik Akhir.

## Log
<a name="async-inference-monitor-logs"></a>

Selain [log wadah Model](https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html) yang dipublikasikan ke Amazon CloudWatch di akun Anda, Anda juga mendapatkan log platform baru untuk melacak dan men-debug permintaan inferensi.

Log baru diterbitkan di bawah Endpoint Log Group:

```
/aws/sagemaker/Endpoints/[EndpointName]
```

Nama log stream terdiri dari: 

```
[production-variant-name]/[instance-id]/data-log.
```

Baris log berisi ID inferensi permintaan sehingga kesalahan dapat dengan mudah dipetakan ke permintaan tertentu.

# Periksa hasil prediksi
<a name="async-inference-check-predictions"></a>

Ada beberapa cara Anda dapat memeriksa hasil prediksi dari titik akhir asinkron Anda. Beberapa opsi adalah:

1. Topik Amazon SNS.

1. Periksa output di bucket Amazon S3 Anda.

## Topik Amazon SNS
<a name="async-inference-check-predictions-sns-topic"></a>

Amazon SNS adalah layanan notifikasi untuk aplikasi berorientasi pesan, dengan beberapa pelanggan meminta dan menerima pemberitahuan “push” dari pesan penting waktu melalui pilihan protokol transportasi, termasuk HTTP, Amazon SQS, dan email. Amazon SageMaker Asynchronous Inference memposting pemberitahuan saat Anda membuat titik akhir dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)dan menentukan topik Amazon SNS.

**catatan**  
Untuk menerima notifikasi Amazon SNS, peran IAM Anda harus memiliki izin. `sns:Publish` Lihat informasi tentang persyaratan yang harus Anda penuhi untuk menggunakan Inferensi Asinkron. [Lengkapi prasyarat](async-inference-create-endpoint-prerequisites.md)

Untuk menggunakan Amazon SNS untuk memeriksa hasil prediksi dari titik akhir asinkron Anda, Anda harus terlebih dahulu membuat topik, berlangganan topik, mengonfirmasi langganan Anda ke topik, dan mencatat Nama Sumber Daya Amazon (ARN) dari topik tersebut. Untuk informasi terperinci tentang cara membuat, berlangganan, dan menemukan Amazon ARN dari topik Amazon SNS, lihat [Mengonfigurasi](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html) Amazon SNS.

Berikan ARN topik Amazon SNS di `AsyncInferenceConfig` bidang saat Anda membuat konfigurasi titik akhir. `CreateEndpointConfig` Anda dapat menentukan Amazon SNS `ErrorTopic` dan file. `SuccessTopic`

```
import boto3

sagemaker_client = boto3.client('sagemaker', region_name=<aws_region>)

sagemaker_client.create_endpoint_config(
    EndpointConfigName=<endpoint_config_name>, # You specify this name in a CreateEndpoint request.
    # List of ProductionVariant objects, one for each model that you want to host at this endpoint.
    ProductionVariants=[
        {
            "VariantName": "variant1", # The name of the production variant.
            "ModelName": "model_name", 
            "InstanceType": "ml.m5.xlarge", # Specify the compute instance type.
            "InitialInstanceCount": 1 # Number of instances to launch initially.
        }
    ],
    AsyncInferenceConfig={
        "OutputConfig": {
            # Location to upload response outputs when no location is provided in the request.
            "S3OutputPath": "s3://<bucket>/<output_directory>"
            "NotificationConfig": {
                "SuccessTopic": "arn:aws:sns:aws-region:account-id:topic-name",
                "ErrorTopic": "arn:aws:sns:aws-region:account-id:topic-name",
            }
        }
    }
)
```

Setelah membuat titik akhir dan memanggilnya, Anda menerima pemberitahuan dari topik Amazon SNS Anda. Misalnya, jika Anda berlangganan untuk menerima pemberitahuan email dari topik Anda, Anda menerima pemberitahuan email setiap kali Anda memanggil titik akhir Anda. Contoh berikut menunjukkan konten JSON dari notifikasi email pemanggilan yang berhasil.

```
{
   "awsRegion":"us-east-1",
   "eventTime":"2022-01-25T22:46:00.608Z",
   "receivedTime":"2022-01-25T22:46:00.455Z",
   "invocationStatus":"Completed",
   "requestParameters":{
      "contentType":"text/csv",
      "endpointName":"<example-endpoint>",
      "inputLocation":"s3://<bucket>/<input-directory>/input-data.csv"
   },
   "responseParameters":{
      "contentType":"text/csv; charset=utf-8",
      "outputLocation":"s3://<bucket>/<output_directory>/prediction.out"
   },
   "inferenceId":"11111111-2222-3333-4444-555555555555", 
   "eventVersion":"1.0",
   "eventSource":"aws:sagemaker",
   "eventName":"InferenceResult"
}
```

## Periksa Bucket S3 Anda
<a name="async-inference-check-predictions-s3-bucket"></a>

Ketika Anda memanggil endpoint dengan`InvokeEndpointAsync`, ia mengembalikan objek respon. Anda dapat menggunakan objek respons untuk mendapatkan URI Amazon S3 tempat output Anda disimpan. Dengan lokasi keluaran, Anda dapat menggunakan kelas sesi SageMaker Python SDK SageMaker AI untuk memeriksa output secara terprogram.

Berikut ini menyimpan kamus keluaran `InvokeEndpointAsync` sebagai variabel bernama respon. Dengan variabel respons, Anda kemudian mendapatkan URI keluaran Amazon S3 dan menyimpannya sebagai variabel string yang disebut. `output_location` 

```
import uuid
import boto3

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

# Specify the S3 URI of the input. Here, a single SVM sample
input_location = "s3://bucket-name/test_point_0.libsvm" 

response = sagemaker_runtime.invoke_endpoint_async(
    EndpointName='<endpoint-name>',
    InputLocation=input_location,
    InferenceId=str(uuid.uuid4()), 
    ContentType="text/libsvm" #Specify the content type of your data
)

output_location = response['OutputLocation']
print(f"OutputLocation: {output_location}")
```

Untuk informasi tentang jenis konten yang didukung, lihat[Format data umum untuk inferensi](cdf-inference.md).

Dengan lokasi keluaran Amazon S3, Anda kemudian dapat menggunakan [Kelas Sesi SageMaker AI SDK SageMaker Python](https://sagemaker.readthedocs.io/en/stable/api/utility/session.html?highlight=session) untuk membaca di file Amazon S3. Contoh kode berikut menunjukkan cara membuat function (`get_ouput`) yang berulang kali mencoba membaca file dari lokasi keluaran Amazon S3:

```
import sagemaker
import urllib, time
from botocore.exceptions import ClientError

sagemaker_session = sagemaker.session.Session()

def get_output(output_location):
    output_url = urllib.parse.urlparse(output_location)
    bucket = output_url.netloc
    key = output_url.path[1:]
    while True:
        try:
            return sagemaker_session.read_s3_file(
                                        bucket=output_url.netloc, 
                                        key_prefix=output_url.path[1:])
        except ClientError as e:
            if e.response['Error']['Code'] == 'NoSuchKey':
                print("waiting for output...")
                time.sleep(2)
                continue
            raise
            
output = get_output(output_location)
print(f"Output: {output}")
```

# Skala otomatis titik akhir asinkron
<a name="async-inference-autoscale"></a>

Amazon SageMaker AI mendukung penskalaan otomatis (penskalaan otomatis) titik akhir asinkron Anda. Penskalaan otomatis secara dinamis menyesuaikan jumlah instance yang disediakan untuk model sebagai respons terhadap perubahan beban kerja Anda. Tidak seperti model host lainnya yang didukung Amazon SageMaker AI, dengan Asynchronous Inference, Anda juga dapat menurunkan instans titik akhir asinkron menjadi nol. Permintaan yang diterima ketika tidak ada instance akan diantrian untuk diproses setelah titik akhir meningkat.

Untuk menskalakan otomatis titik akhir asinkron Anda, Anda harus minimal:
+ Daftarkan model yang digunakan (varian produksi).
+ Tentukan kebijakan penskalaan.
+ Terapkan kebijakan penskalaan otomatis.

Sebelum Anda dapat menggunakan penskalaan otomatis, Anda harus sudah menerapkan model ke titik akhir AI. SageMaker Model yang digunakan disebut sebagai [varian produksi](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). Lihat [Menerapkan Model ke Layanan SageMaker Hosting](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-model-deployment.html#ex1-deploy-model) untuk informasi selengkapnya tentang penerapan model ke titik akhir. Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda mengonfigurasi kebijakan penskalaan. Untuk informasi tentang cara menentukan kebijakan penskalaan, lihat [Menentukan kebijakan penskalaan.](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-define.html) Setelah mendaftarkan model Anda dan menentukan kebijakan penskalaan, terapkan kebijakan penskalaan ke model terdaftar. Untuk informasi tentang cara menerapkan kebijakan penskalaan, lihat [Menerapkan kebijakan penskalaan.](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-apply.html)

Untuk informasi selengkapnya tentang cara menentukan kebijakan penskalaan tambahan opsional yang meningkatkan titik akhir Anda setelah menerima permintaan setelah titik akhir Anda diturunkan menjadi nol, lihat. [Opsional: Tentukan kebijakan penskalaan yang meningkatkan skala dari nol untuk permintaan baru](#async-inference-autoscale-scale-up) Jika Anda tidak menentukan kebijakan opsional ini, titik akhir Anda hanya memulai penskalaan dari nol setelah jumlah permintaan backlog melebihi nilai pelacakan target.

 Untuk detail tentang prasyarat dan komponen lain yang digunakan dengan penskalaan otomatis, lihat bagian [Prasyarat](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-prerequisites.html) dalam dokumentasi penskalaan otomatis AI. SageMaker 

**catatan**  
Jika Anda melampirkan beberapa kebijakan penskalaan ke grup penskalaan otomatis yang sama, Anda mungkin mengalami konflik penskalaan. Ketika konflik terjadi, Amazon EC2 Auto Scaling memilih kebijakan yang menyediakan kapasitas terbesar untuk skala keluar dan skala. Untuk informasi selengkapnya tentang perilaku ini, lihat [Beberapa kebijakan penskalaan dinamis dalam dokumentasi EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html#multiple-scaling-policy-resolution) *Amazon*.

## Menentukan kebijakan penskalaan
<a name="async-inference-autoscale-define-async"></a>

Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda mengonfigurasi kebijakan penskalaan pelacakan target. Tentukan kebijakan penskalaan sebagai blok JSON dalam file teks. Anda menggunakan file teks tersebut saat menjalankan AWS CLI atau Application Auto Scaling API. Untuk informasi selengkapnya tentang sintaks konfigurasi kebijakan, lihat [https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)di Referensi API Application Auto Scaling.

Untuk titik akhir asinkron, SageMaker AI sangat menyarankan Anda membuat konfigurasi kebijakan untuk penskalaan pelacakan target untuk varian. Dalam contoh konfigurasi ini, kami menggunakan metrik khusus`CustomizedMetricSpecification`, yang disebut`ApproximateBacklogSizePerInstance`.

```
TargetTrackingScalingPolicyConfiguration={
        'TargetValue': 5.0, # The target value for the metric. Here the metric is: ApproximateBacklogSizePerInstance
        'CustomizedMetricSpecification': {
            'MetricName': 'ApproximateBacklogSizePerInstance',
            'Namespace': 'AWS/SageMaker',
            'Dimensions': [
                {'Name': 'EndpointName', 'Value': <endpoint_name> }
            ],
            'Statistic': 'Average',
        }
    }
```

## Tentukan kebijakan penskalaan yang menskalakan ke nol
<a name="async-inference-autoscale-define-async-zero"></a>

Berikut ini menunjukkan kepada Anda cara mendefinisikan dan mendaftarkan varian endpoint Anda dengan penskalaan otomatis aplikasi menggunakan. AWS SDK untuk Python (Boto3) Setelah mendefinisikan objek klien tingkat rendah yang mewakili aplikasi autoscaling dengan Boto3, kami menggunakan metode untuk mendaftarkan varian produksi. [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target) Kami menyetel `MinCapacity` ke 0 karena Inferensi Asinkron memungkinkan Anda untuk melakukan autoscale ke 0 ketika tidak ada permintaan untuk diproses.

```
# Common class representing application autoscaling for SageMaker 
client = boto3.client('application-autoscaling') 

# This is the format in which application autoscaling references the endpoint
resource_id='endpoint/' + <endpoint_name> + '/variant/' + <'variant1'> 

# Define and register your endpoint variant
response = client.register_scalable_target(
    ServiceNamespace='sagemaker', 
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount', # The number of EC2 instances for your Amazon SageMaker model endpoint variant.
    MinCapacity=0,
    MaxCapacity=5
)
```

Untuk penjelasan rinci tentang Application Autoscaling API, lihat dokumentasi [Application Scaling](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target) Boto3.

## Opsional: Tentukan kebijakan penskalaan yang meningkatkan skala dari nol untuk permintaan baru
<a name="async-inference-autoscale-scale-up"></a>

Anda mungkin memiliki kasus penggunaan di mana Anda memiliki permintaan atau periode sporadis dengan jumlah permintaan yang rendah. Jika titik akhir Anda telah diperkecil menjadi nol instans selama periode ini, maka titik akhir Anda tidak akan ditingkatkan lagi hingga jumlah permintaan dalam antrian melebihi target yang ditentukan dalam kebijakan penskalaan Anda. Hal ini dapat mengakibatkan waktu tunggu yang lama untuk permintaan dalam antrian. Bagian berikut menunjukkan cara membuat kebijakan penskalaan tambahan yang menskalakan titik akhir Anda dari nol instans setelah menerima permintaan baru dalam antrian. Titik akhir Anda akan dapat merespons permintaan baru dengan lebih cepat daripada menunggu ukuran antrian melebihi target.

Untuk membuat kebijakan penskalaan untuk titik akhir Anda yang meningkatkan skala dari nol instans, lakukan hal berikut:

1. Buat kebijakan penskalaan yang mendefinisikan perilaku yang diinginkan, yaitu untuk meningkatkan titik akhir Anda saat nol instance tetapi memiliki permintaan dalam antrian. Berikut ini menunjukkan cara menentukan kebijakan penskalaan yang disebut `HasBacklogWithoutCapacity-ScalingPolicy` menggunakan. AWS SDK untuk Python (Boto3) Ketika antrian lebih besar dari nol dan jumlah instans saat ini untuk titik akhir Anda juga nol, kebijakan akan menskalakan titik akhir Anda. Dalam semua kasus lain, kebijakan tidak memengaruhi penskalaan untuk titik akhir Anda.

   ```
   response = client.put_scaling_policy(
       PolicyName="HasBacklogWithoutCapacity-ScalingPolicy",
       ServiceNamespace="sagemaker",  # The namespace of the service that provides the resource.
       ResourceId=resource_id,  # Endpoint name
       ScalableDimension="sagemaker:variant:DesiredInstanceCount",  # SageMaker supports only Instance Count
       PolicyType="StepScaling",  # 'StepScaling' or 'TargetTrackingScaling'
       StepScalingPolicyConfiguration={
           "AdjustmentType": "ChangeInCapacity", # Specifies whether the ScalingAdjustment value in the StepAdjustment property is an absolute number or a percentage of the current capacity. 
           "MetricAggregationType": "Average", # The aggregation type for the CloudWatch metrics.
           "Cooldown": 300, # The amount of time, in seconds, to wait for a previous scaling activity to take effect. 
           "StepAdjustments": # A set of adjustments that enable you to scale based on the size of the alarm breach.
           [ 
               {
                 "MetricIntervalLowerBound": 0,
                 "ScalingAdjustment": 1
               }
             ]
       },    
   )
   ```

1. Buat CloudWatch alarm dengan metrik khusus`HasBacklogWithoutCapacity`. Saat dipicu, alarm memulai kebijakan penskalaan yang ditentukan sebelumnya. Untuk informasi lebih lanjut tentang `HasBacklogWithoutCapacity` metrik, lihat[Metrik Titik Akhir Inferensi Asinkron](async-inference-monitor.md#async-inference-monitor-cloudwatch-async).

   ```
   response = cw_client.put_metric_alarm(
       AlarmName=step_scaling_policy_alarm_name,
       MetricName='HasBacklogWithoutCapacity',
       Namespace='AWS/SageMaker',
       Statistic='Average',
       EvaluationPeriods= 2,
       DatapointsToAlarm= 2,
       Threshold= 1,
       ComparisonOperator='GreaterThanOrEqualToThreshold',
       TreatMissingData='missing',
       Dimensions=[
           { 'Name':'EndpointName', 'Value':endpoint_name },
       ],
       Period= 60,
       AlarmActions=[step_scaling_policy_arn]
   )
   ```

Anda sekarang harus memiliki kebijakan penskalaan dan CloudWatch alarm yang meningkatkan titik akhir Anda dari nol instance setiap kali antrian Anda memiliki permintaan yang tertunda.

# Pemecahan Masalah
<a name="async-inference-troubleshooting"></a>

Berikut ini FAQs dapat membantu Anda memecahkan masalah dengan titik akhir Inferensi SageMaker Asinkron Amazon Anda.

## T: Saya mengaktifkan penskalaan otomatis. Bagaimana saya bisa menemukan jumlah instance di belakang titik akhir pada titik tertentu?
<a name="async-troubleshooting-q1"></a>

Anda dapat menggunakan metode berikut untuk menemukan jumlah instance di belakang titik akhir Anda:
+ Anda dapat menggunakan SageMaker AI [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API untuk menjelaskan jumlah instance di belakang titik akhir pada titik waktu tertentu.
+ Anda bisa mendapatkan jumlah instans dengan melihat CloudWatch metrik Amazon Anda. Lihat [metrik untuk instans titik akhir Anda](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-jobs), seperti `CPUUtilization` atau `MemoryUtilization` dan periksa statistik jumlah sampel untuk periode 1 menit. Hitungannya harus sama dengan jumlah instance aktif. Tangkapan layar berikut menunjukkan grafik `CPUUtilization` metrik di CloudWatch konsol, di mana **Statistik** diatur ke`Sample count`, **Periode** diatur ke`1 minute`, dan jumlah yang dihasilkan adalah 5.

![\[CloudWatch konsol yang menampilkan grafik jumlah instance aktif untuk titik akhir.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/cloudwatch-sample-count.png)


## T: Apa variabel lingkungan umum yang dapat disetel untuk wadah SageMaker AI?
<a name="async-troubleshooting-q2"></a>

Tabel berikut menguraikan variabel lingkungan umum yang dapat disetel untuk wadah SageMaker AI menurut jenis kerangka kerja.

**TensorFlow**


| Variabel lingkungan | Deskripsi | 
| --- | --- | 
|  `SAGEMAKER_TFS_INSTANCE_COUNT`  |  Untuk model TensorFlow berbasis, `tensorflow_model_server` biner adalah bagian operasional yang bertanggung jawab untuk memuat model dalam memori, menjalankan input terhadap grafik model, dan menurunkan output. Biasanya, satu contoh biner ini diluncurkan untuk melayani model di titik akhir. Biner ini secara internal multi-threaded dan memunculkan beberapa utas untuk menanggapi permintaan inferensi. Dalam kasus tertentu, jika Anda mengamati bahwa CPU digunakan dengan baik (lebih dari 30% digunakan) tetapi memori kurang dimanfaatkan (kurang dari 10% penggunaan), meningkatkan parameter ini dapat membantu. Meningkatkan jumlah yang `tensorflow_model_servers` tersedia untuk melayani biasanya meningkatkan throughput dari titik akhir.  | 
|  `SAGEMAKER_TFS_FRACTIONAL_GPU_MEM_MARGIN`  |  Parameter ini mengatur fraksi memori GPU yang tersedia untuk menginisialisasi CUDA/cuDNN dan pustaka GPU lainnya. `0.2`berarti 20% dari memori GPU yang tersedia dicadangkan untuk menginisialisasi CUDA/cuDNN dan pustaka GPU lainnya, dan 80% dari memori GPU yang tersedia dialokasikan secara merata di seluruh proses TF. Memori GPU sudah dialokasikan sebelumnya kecuali `allow_growth` opsi diaktifkan.  | 
| `SAGEMAKER_TFS_INTER_OP_PARALLELISM` | Ini mengikat kembali ke `inter_op_parallelism_threads` variabel. Variabel ini menentukan jumlah utas yang digunakan oleh operasi non-pemblokiran independen. `0`berarti bahwa sistem memilih nomor yang sesuai. | 
| `SAGEMAKER_TFS_INTRA_OP_PARALLELISM` | Ini mengikat kembali ke `intra_op_parallelism_threads` variabel. Ini menentukan jumlah utas yang dapat digunakan untuk operasi tertentu seperti perkalian matriks dan pengurangan untuk percepatan. Nilai `0` berarti bahwa sistem memilih nomor yang sesuai. | 
| `SAGEMAKER_GUNICORN_WORKERS` | Ini mengatur jumlah proses pekerja yang diminta Gunicorn untuk menelurkan untuk menangani permintaan. Nilai ini digunakan dalam kombinasi dengan parameter lain untuk mendapatkan satu set yang memaksimalkan throughput inferensi. Selain itu, `SAGEMAKER_GUNICORN_WORKER_CLASS` mengatur jenis pekerja yang melahirkan, biasanya atau. `async` `gevent` | 
| `SAGEMAKER_GUNICORN_WORKER_CLASS` | Ini mengatur jumlah proses pekerja yang diminta Gunicorn untuk menelurkan untuk menangani permintaan. Nilai ini digunakan dalam kombinasi dengan parameter lain untuk mendapatkan satu set yang memaksimalkan throughput inferensi. Selain itu, `SAGEMAKER_GUNICORN_WORKER_CLASS` mengatur jenis pekerja yang melahirkan, biasanya atau. `async` `gevent` | 
| `OMP_NUM_THREADS` | Python secara internal menggunakan OpenMP untuk mengimplementasikan multithreading dalam proses. Biasanya, thread yang setara dengan jumlah core CPU muncul. Tetapi ketika diimplementasikan di atas Simultaneous Multi Threading (SMT), seperti Intel HypeThreading, proses tertentu mungkin kelebihan langganan inti tertentu dengan menelurkan utas dua kali lebih banyak daripada jumlah inti CPU yang sebenarnya. Dalam kasus tertentu, biner Python mungkin berakhir dengan pemijahan hingga empat kali lebih banyak utas daripada inti prosesor yang tersedia. Oleh karena itu, pengaturan ideal untuk parameter ini, jika Anda memiliki kelebihan langganan core yang tersedia menggunakan thread pekerja, adalah`1`, atau setengah jumlah core CPU pada CPU dengan SMT dihidupkan. | 
|  `TF_DISABLE_MKL` `TF_DISABLE_POOL_ALLOCATOR`  | Dalam beberapa kasus, mematikan MKL dapat mempercepat inferensi jika `TF_DISABLE_MKL` dan `TF_DISABLE_POOL_ALLOCATOR` disetel ke. `1` | 

**PyTorch**


| Variabel lingkungan | Deskripsi | 
| --- | --- | 
|  `SAGEMAKER_TS_MAX_BATCH_DELAY`  |  Ini adalah waktu tunda batch maksimum yang TorchServe menunggu untuk diterima.  | 
|  `SAGEMAKER_TS_BATCH_SIZE`  |  Jika TorchServe tidak menerima jumlah permintaan yang ditentukan `batch_size` sebelum timer habis, itu akan mengirimkan permintaan yang diterima ke handler model.  | 
|  `SAGEMAKER_TS_MIN_WORKERS`  |  Jumlah minimum pekerja yang TorchServe diizinkan untuk menurunkan skala.  | 
|  `SAGEMAKER_TS_MAX_WORKERS`  |  Jumlah maksimum pekerja yang TorchServe diizinkan untuk ditingkatkan.  | 
|  `SAGEMAKER_TS_RESPONSE_TIMEOUT`  |  Waktu tunda, setelah itu waktu inferensi habis tanpa adanya respons.  | 
|  `SAGEMAKER_TS_MAX_REQUEST_SIZE`  |  Ukuran muatan maksimum untuk TorchServe.  | 
|  `SAGEMAKER_TS_MAX_RESPONSE_SIZE`  |  Ukuran respons maksimum untuk TorchServe.  | 

**Server Multi Model (MMS)**


| Variabel lingkungan | Deskripsi | 
| --- | --- | 
|  `job_queue_size`  |  Parameter ini berguna untuk disetel ketika Anda memiliki skenario di mana jenis payload permintaan inferensi besar, dan karena ukuran payload yang lebih besar, Anda mungkin memiliki konsumsi memori heap yang lebih tinggi dari JVM di mana antrian ini sedang dipertahankan. Idealnya Anda mungkin ingin menjaga persyaratan memori heap JVM lebih rendah dan memungkinkan pekerja Python membagikan lebih banyak memori untuk penyajian model yang sebenarnya. JVM hanya untuk menerima permintaan HTTP, mengantri, dan mengirimkannya ke pekerja berbasis Python untuk inferensi. Jika Anda meningkatkan`job_queue_size`, Anda mungkin akhirnya meningkatkan konsumsi memori heap JVM dan akhirnya mengambil memori dari host yang bisa digunakan oleh pekerja Python. Karena itu, berhati-hatilah saat menyetel parameter ini juga.  | 
|  `default_workers_per_model`  |  Parameter ini untuk penyajian model backend dan mungkin berharga untuk disetel karena ini adalah komponen penting dari keseluruhan penyajian model, berdasarkan proses Python menelurkan utas untuk setiap Model. Jika komponen ini lebih lambat (atau tidak disetel dengan benar), penyetelan front-end mungkin tidak efektif.  | 

## T: Bagaimana cara memastikan wadah saya mendukung Inferensi Asinkron?
<a name="async-troubleshooting-q3"></a>

Anda dapat menggunakan wadah yang sama untuk Inferensi Asinkron yang Anda lakukan untuk Inferensi Waktu Nyata atau Transformasi Batch. Anda harus mengonfirmasi bahwa batas waktu tunggu dan ukuran muatan pada kontainer Anda diatur untuk menangani muatan yang lebih besar dan batas waktu yang lebih lama.

## T: Apa batas khusus untuk Inferensi Asinkron, dan dapatkah mereka disesuaikan?
<a name="async-troubleshooting-q4"></a>

Lihat batas berikut untuk Inferensi Asinkron:
+ Batas ukuran muatan: 1 GB
+ Batas waktu tunggu: Permintaan dapat memakan waktu hingga 60 menit.
+ Pesan antrian TimeToLive (TTL): 6 jam
+ Jumlah pesan yang dapat dimasukkan ke dalam Amazon SQS: Tidak terbatas. Namun, ada kuota 120.000 untuk jumlah pesan dalam penerbangan untuk antrian standar, dan 20.000 untuk antrian FIFO.

## T: Metrik apa yang terbaik untuk didefinisikan untuk penskalaan otomatis pada Inferensi Asinkron? Bisakah saya memiliki beberapa kebijakan penskalaan?
<a name="async-troubleshooting-q5"></a>

Secara umum, dengan Asynchronous Inference, Anda dapat menskalakan berdasarkan pemanggilan atau instance. Untuk metrik pemanggilan, ada baiknya untuk melihat metrik Anda`ApproximateBacklogSize`, yang merupakan metrik yang menentukan jumlah item dalam antrian Anda yang belum diproses. Anda dapat menggunakan metrik ini atau `InvocationsPerInstance` metrik Anda untuk memahami TPS apa yang mungkin membuat Anda terhambat. Pada tingkat instans, periksa jenis instans Anda dan pemanfaatan CPU/GPU-nya untuk menentukan kapan harus menskalakan. Jika instance tunggal di atas kapasitas 60-70%, ini sering merupakan pertanda baik bahwa Anda menjenuhkan perangkat keras Anda.

Kami tidak menyarankan memiliki beberapa kebijakan penskalaan, karena ini dapat bertentangan dan menyebabkan kebingungan di tingkat perangkat keras, menyebabkan penundaan saat penskalaan keluar.

## T: Mengapa titik akhir asinkron saya mengakhiri instance sebagai `Unhealthy` dan permintaan pembaruan dari penskalaan otomatis gagal?
<a name="async-troubleshooting-q6"></a>

Periksa apakah kontainer Anda dapat menangani permintaan ping dan memanggil secara bersamaan. SageMaker Permintaan pemanggilan AI memakan waktu sekitar 3 menit, dan dalam durasi ini, biasanya beberapa permintaan ping akhirnya gagal karena batas waktu yang menyebabkan SageMaker AI mendeteksi wadah Anda sebagai. `Unhealthy`

## T: Dapatkah `MaxConcurrentInvocationsPerInstance` bekerja untuk wadah model BYOC saya dengan pengaturan? ningx/gunicorn/flask
<a name="async-troubleshooting-q7"></a>

Ya. `MaxConcurrentInvocationsPerInstance`adalah fitur titik akhir asinkron. Ini tidak tergantung pada implementasi wadah khusus. `MaxConcurrentInvocationsPerInstance`mengontrol tingkat di mana permintaan pemanggilan dikirim ke wadah pelanggan. Jika nilai ini ditetapkan sebagai`1`, maka hanya 1 permintaan yang dikirim ke wadah sekaligus, tidak peduli berapa banyak pekerja yang ada di wadah pelanggan.

## T: Bagaimana cara men-debug kesalahan server model (500) pada titik akhir asinkron saya?
<a name="async-troubleshooting-q8"></a>

Kesalahan berarti bahwa wadah pelanggan mengembalikan kesalahan. SageMaker AI tidak mengontrol perilaku kontainer pelanggan. SageMaker AI hanya mengembalikan respons dari `ModelContainer` dan tidak mencoba lagi. Jika mau, Anda dapat mengonfigurasi pemanggilan untuk mencoba lagi pada kegagalan. Kami menyarankan Anda mengaktifkan pencatatan kontainer dan memeriksa log penampung Anda untuk menemukan akar penyebab kesalahan 500 dari model Anda. Periksa `MemoryUtilization` metrik yang sesuai `CPUUtilization` dan pada titik kegagalan juga. Anda juga dapat mengonfigurasi [S3 FailurePath](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AsyncInferenceOutputConfig.html#sagemaker-Type-AsyncInferenceOutputConfig-S3FailurePath) ke respons model di Amazon SNS sebagai bagian dari Pemberitahuan Kesalahan Async untuk menyelidiki kegagalan.

## T: Bagaimana saya bisa tahu jika `MaxConcurrentInvocationsPerInstance=1` berlaku? Apakah ada metrik yang bisa saya periksa?
<a name="async-troubleshooting-q9"></a>

Anda dapat memeriksa metrik`InvocationsProcesssed`, yang seharusnya sejajar dengan jumlah pemanggilan yang Anda harapkan akan diproses dalam satu menit berdasarkan konkurensi tunggal.

## T: Bagaimana saya bisa melacak keberhasilan dan kegagalan permintaan doa saya? Apa praktik terbaik?
<a name="async-troubleshooting-q10"></a>

Praktik terbaik adalah mengaktifkan Amazon SNS, yang merupakan layanan notifikasi untuk aplikasi berorientasi pesan, dengan beberapa pelanggan yang meminta dan menerima pemberitahuan “push” pesan kritis waktu dari pilihan protokol transportasi, termasuk HTTP, Amazon SQS, dan email. Inferensi asinkron memposting pemberitahuan saat Anda membuat titik akhir dengan `CreateEndpointConfig` dan menentukan topik Amazon SNS.

Untuk menggunakan Amazon SNS untuk memeriksa hasil prediksi dari titik akhir asinkron Anda, Anda harus terlebih dahulu membuat topik, berlangganan topik, mengonfirmasi langganan Anda ke topik, dan mencatat Nama Sumber Daya Amazon (ARN) dari topik tersebut. Untuk informasi terperinci tentang cara membuat, berlangganan, dan menemukan Amazon ARN dari topik Amazon SNS, lihat [Mengonfigurasi Amazon SNS di Panduan *Pengembang* Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html). [Untuk informasi selengkapnya tentang cara menggunakan Amazon SNS dengan Inferensi Asinkron, lihat Periksa hasil prediksi.](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-check-predictions.html)

## T: Dapatkah saya menentukan kebijakan penskalaan yang meningkatkan skala dari nol instans setelah menerima permintaan baru?
<a name="async-troubleshooting-q11"></a>

Ya. Inferensi Asinkron menyediakan mekanisme untuk menurunkan skala ke nol instance ketika tidak ada permintaan. Jika titik akhir Anda telah diperkecil menjadi nol instans selama periode ini, maka titik akhir Anda tidak akan ditingkatkan lagi hingga jumlah permintaan dalam antrian melebihi target yang ditentukan dalam kebijakan penskalaan Anda. Hal ini dapat mengakibatkan waktu tunggu yang lama untuk permintaan dalam antrian. Dalam kasus seperti itu, jika Anda ingin meningkatkan dari nol instance untuk permintaan baru yang kurang dari target antrian yang ditentukan, Anda dapat menggunakan kebijakan penskalaan tambahan yang disebut. `HasBacklogWithoutCapacity` Untuk informasi selengkapnya tentang cara mendefinisikan kebijakan penskalaan ini, lihat Menskalakan [otomatis titik akhir](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-autoscale.html#async-inference-autoscale-scale-up) asinkron.

## T: Saya mendapatkan kesalahan bahwa jenis instance tidak didukung untuk Inferensi Asinkron. Apa saja tipe instance yang didukung Asynchronous Inference?
<a name="async-troubleshooting-q12"></a>

[Untuk daftar lengkap instance yang didukung oleh Inferensi Asinkron per wilayah, lihat harga. SageMaker ](https://aws.amazon.com/sagemaker/pricing/) Periksa apakah instans yang diperlukan tersedia di wilayah Anda sebelum melanjutkan.

# Transformasi Batch untuk inferensi dengan Amazon AI SageMaker
<a name="batch-transform"></a>

Gunakan transformasi batch saat Anda perlu: 
+ Melakukan pemrosesan awal set data untuk menghilangkan derau atau bias dari set data Anda yang dapat mengganggu pelatihan atau inferensi.
+ Mendapatkan inferensi dari set data berukuran besar.
+ Menjalankan inferensi saat Anda tidak membutuhkan titik akhir persisten.
+ Mengaitkan catatan input dengan inferensi untuk membantu interpretasi hasil.

Untuk memfilter data input sebelum melakukan inferensi atau untuk mengaitkan catatan input dengan kesimpulan tentang catatan tersebut, lihat. [Mengaitkan Hasil Prediksi dengan Catatan Input](batch-transform-data-processing.md) Misalnya, Anda dapat memfilter data input untuk menyediakan konteks untuk membuat dan menafsirkan laporan tentang data keluaran.

**Topics**
+ [Gunakan transformasi batch untuk mendapatkan kesimpulan dari kumpulan data besar](#batch-transform-large-datasets)
+ [Mempercepat pekerjaan transformasi batch](#batch-transform-reduce-time)
+ [Gunakan transformasi batch untuk menguji varian produksi](#batch-transform-test-variants)
+ [Buku catatan sampel transformasi Batch](#batch-transform-notebooks)
+ [Mengaitkan Hasil Prediksi dengan Catatan Input](batch-transform-data-processing.md)
+ [Penyimpanan dalam Transformasi Batch](batch-transform-storage.md)
+ [Pemecahan masalah](batch-transform-errors.md)

## Gunakan transformasi batch untuk mendapatkan kesimpulan dari kumpulan data besar
<a name="batch-transform-large-datasets"></a>

Transformasi Batch secara otomatis mengelola pemrosesan kumpulan data besar dalam batas parameter yang ditentukan. Misalnya, memiliki file dataset,`input1.csv`, disimpan dalam bucket S3. Isi file input mungkin terlihat seperti contoh berikut.

```
Record1-Attribute1, Record1-Attribute2, Record1-Attribute3, ..., Record1-AttributeM
Record2-Attribute1, Record2-Attribute2, Record2-Attribute3, ..., Record2-AttributeM
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
...
RecordN-Attribute1, RecordN-Attribute2, RecordN-Attribute3, ..., RecordN-AttributeM
```

Saat pekerjaan transformasi batch dimulai, SageMaker AI memulai instance komputasi dan mendistribusikan inferensi atau beban kerja pra-pemrosesan di antara mereka. Batch Transform mempartisi objek Amazon S3 dalam input dengan kunci dan memetakan objek Amazon S3 ke instance. Ketika Anda memiliki beberapa file, satu contoh mungkin memproses`input1.csv`, dan contoh lain mungkin memproses file bernama`input2.csv`. Jika Anda memiliki satu file input tetapi menginisialisasi beberapa instance komputasi, hanya satu instance yang memproses file input. Sisa contoh menganggur.

Anda juga dapat membagi file input menjadi mini-batch. Misalnya, Anda dapat membuat mini-batch dari `input1.csv` dengan menyertakan hanya dua catatan.

```
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
Record4-Attribute1, Record4-Attribute2, Record4-Attribute3, ..., Record4-AttributeM
```

**catatan**  
SageMaker AI memproses setiap file input secara terpisah. Itu tidak menggabungkan mini-batch dari file input yang berbeda untuk memenuhi batas. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               )

Untuk membagi file input menjadi mini-batch saat Anda membuat pekerjaan transformasi batch, tetapkan nilai [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             )parameter ke. `Line` SageMaker AI menggunakan seluruh file input dalam satu permintaan ketika:
+ `SplitType`diatur ke`None`.
+ File input tidak dapat dibagi menjadi mini-batch.

. Perhatikan bahwa Batch Transform tidak mendukung input berformat CSV yang berisi karakter baris baru yang disematkan. Anda dapat mengontrol ukuran mini-batch dengan menggunakan parameter `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` dan`[MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)`. `MaxPayloadInMB`tidak boleh lebih besar dari 100 MB. Jika Anda menentukan `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)` parameter opsional, maka nilai juga `(MaxConcurrentTransforms * MaxPayloadInMB)` harus tidak melebihi 100 MB.

Jika pekerjaan transformasi batch berhasil memproses semua catatan dalam file input, itu akan membuat file output. File output memiliki nama dan ekstensi `.out` file yang sama. Untuk beberapa file input, seperti `input1.csv` dan`input2.csv`, file output diberi nama `input1.csv.out` dan`input2.csv.out`. Pekerjaan transformasi batch menyimpan file output di lokasi yang ditentukan di Amazon S3, seperti. `s3://amzn-s3-demo-bucket/output/` 

Prediksi dalam file output terdaftar dalam urutan yang sama dengan catatan yang sesuai dalam file input. File output`input1.csv.out`, berdasarkan file input yang ditunjukkan sebelumnya, akan terlihat seperti berikut ini.

```
Inference1-Attribute1, Inference1-Attribute2, Inference1-Attribute3, ..., Inference1-AttributeM
Inference2-Attribute1, Inference2-Attribute2, Inference2-Attribute3, ..., Inference2-AttributeM
Inference3-Attribute1, Inference3-Attribute2, Inference3-Attribute3, ..., Inference3-AttributeM
...
InferenceN-Attribute1, InferenceN-Attribute2, InferenceN-Attribute3, ..., InferenceN-AttributeM
```

Jika Anda mengatur [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             )ke`Line`, Anda dapat mengatur [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             )parameter `Line` untuk menggabungkan catatan output dengan pembatas baris. Ini tidak mengubah jumlah file output. Jumlah file output sama dengan jumlah file input, dan menggunakan `AssembleWith` tidak menggabungkan file. Jika Anda tidak menentukan `AssembleWith` parameter, catatan keluaran digabungkan dalam format biner secara default.

Ketika data input sangat besar dan ditransmisikan menggunakan HTTP chunked encoding, untuk mengalirkan data ke algoritma, diatur ke. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB)`0` Algoritma bawaan Amazon SageMaker AI tidak mendukung fitur ini.

Untuk informasi tentang penggunaan API untuk membuat pekerjaan transformasi batch, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)API. Untuk informasi selengkapnya tentang hubungan antara objek input dan output transformasi batch, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html). Untuk contoh cara menggunakan transformasi batch, lihat[(Opsional) Buat Prediksi dengan Batch Transform](ex1-model-deployment.md#ex1-batch-transform).

## Mempercepat pekerjaan transformasi batch
<a name="batch-transform-reduce-time"></a>

Jika Anda menggunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)API, Anda dapat mengurangi waktu yang diperlukan untuk menyelesaikan pekerjaan transformasi batch dengan menggunakan nilai optimal untuk parameter. Ini termasuk parameter seperti [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB), [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms), atau [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy). Nilai ideal untuk `MaxConcurrentTransforms` sama dengan jumlah pekerja komputasi dalam pekerjaan transformasi batch. 

Jika Anda menggunakan konsol SageMaker AI, tentukan nilai parameter optimal ini di bagian **Konfigurasi tambahan** pada halaman **konfigurasi pekerjaan transformasi Batch**. SageMaker AI secara otomatis menemukan pengaturan parameter optimal untuk algoritme bawaan. Untuk algoritme kustom, berikan nilai-nilai ini melalui titik akhir parameter [eksekusi](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests).

## Gunakan transformasi batch untuk menguji varian produksi
<a name="batch-transform-test-variants"></a>

Untuk menguji model atau pengaturan hyperparameter yang berbeda, buat pekerjaan transformasi terpisah untuk setiap varian model baru dan gunakan kumpulan data validasi. Untuk setiap tugas transformasi, tentukan nama model dan lokasi unik di Amazon S3 untuk file keluaran. Untuk menganalisis hasil, gunakan[Log dan Metrik Pipa Inferensi](inference-pipeline-logs-metrics.md).

## Buku catatan sampel transformasi Batch
<a name="batch-transform-notebooks"></a>

Untuk contoh notebook yang menggunakan batch transform, lihat Batch Transform [with PCA dan DBSCAN](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_batch_transform/introduction_to_batch_transform/batch_transform_pca_dbscan_movie_clusters.html) Movie Clusters. Notebook ini menggunakan transformasi batch dengan model analisis komponen utama (PCA) untuk mengurangi data dalam matriks tinjauan item pengguna. Ini kemudian menunjukkan penerapan pengelompokan spasial berbasis kepadatan aplikasi dengan algoritma noise (DBSCAN) untuk mengelompokkan film.

 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) Setelah membuat dan membuka instance notebook, pilih tab **SageMakerContoh** untuk melihat daftar semua contoh SageMaker AI. **Notebook contoh pemodelan topik yang menggunakan algoritma NTM terletak di bagian Fungsionalitas lanjutan.** Untuk membuka buku catatan, pilih tab **Use**, lalu pilih **Buat salinan**.

# Mengaitkan Hasil Prediksi dengan Catatan Input
<a name="batch-transform-data-processing"></a>

Saat membuat prediksi pada kumpulan data besar, Anda dapat mengecualikan atribut yang tidak diperlukan untuk prediksi. Setelah prediksi dibuat, Anda dapat mengaitkan beberapa atribut yang dikecualikan dengan prediksi tersebut atau dengan data masukan lainnya dalam laporan Anda. Dengan menggunakan transformasi batch untuk melakukan langkah-langkah pemrosesan data ini, Anda sering dapat menghilangkan preprocessing atau postprocessing tambahan. Anda dapat menggunakan file input dalam format JSON dan CSV saja. 

**Topics**
+ [Alur Kerja untuk Mengaitkan Inferensi dengan Catatan Input](#batch-transform-data-processing-workflow)
+ [Menggunakan Pemrosesan Data dalam Pekerjaan Transformasi Batch](#batch-transform-data-processing-steps)
+ [JSONPath Operator yang Didukung](#data-processing-operators)
+ [Contoh Transformasi Batch](#batch-transform-data-processing-examples)

## Alur Kerja untuk Mengaitkan Inferensi dengan Catatan Input
<a name="batch-transform-data-processing-workflow"></a>

Diagram berikut menunjukkan alur kerja untuk mengaitkan kesimpulan dengan catatan masukan.

![\[Alur kerja untuk mengaitkan kesimpulan dengan catatan masukan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/batch-transform-data-processing.png)


Untuk mengaitkan kesimpulan dengan data input, ada tiga langkah utama:

1. Filter data input yang tidak diperlukan untuk inferensi sebelum meneruskan data input ke pekerjaan transformasi batch. Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter                             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter                             )parameter untuk menentukan atribut mana yang akan digunakan sebagai input untuk model.

1. Kaitkan data input dengan hasil inferensi. Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-JoinSource                         ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-JoinSource                         )parameter untuk menggabungkan data input dengan inferensi.

1. Filter data gabungan untuk mempertahankan input yang diperlukan untuk menyediakan konteks untuk menafsirkan prediksi dalam laporan. Gunakan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-OutputFilter                             ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-OutputFilter                             )untuk menyimpan bagian tertentu dari dataset bergabung dalam file output.

## Menggunakan Pemrosesan Data dalam Pekerjaan Transformasi Batch
<a name="batch-transform-data-processing-steps"></a>

Saat membuat pekerjaan transformasi batch dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)memproses data:

1. Tentukan bagian input yang akan diteruskan ke model dengan `InputFilter` parameter dalam struktur `DataProcessing` data. 

1. Bergabunglah dengan data input mentah dengan data yang diubah dengan `JoinSource` parameter.

1. Tentukan bagian mana dari input yang digabungkan dan data yang diubah dari pekerjaan transformasi batch yang akan disertakan dalam file output dengan `OutputFilter` parameter.

1.  Pilih file berformat JSON- atau CSV untuk masukan: 
   + Untuk file input berformat JSON- atau JSON Line, SageMaker AI menambahkan `SageMakerOutput` atribut ke file input atau membuat file keluaran JSON baru dengan atribut and. `SageMakerInput` `SageMakerOutput` Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html). 
   + Untuk file input berformat CSV, data input yang digabungkan diikuti oleh data yang diubah dan outputnya adalah file CSV.

Jika Anda menggunakan algoritma dengan `DataProcessing` struktur, itu harus mendukung format yang Anda pilih untuk file input *dan* output. Misalnya, dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html)bidang `CreateTransformJob` API, Anda harus mengatur [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-Accept](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-Accept)parameter [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-ContentType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-ContentType)dan parameter ke salah satu nilai berikut:`text/csv`,`application/json`, atau`application/jsonlines`. Sintaks untuk menentukan kolom dalam file CSV dan menentukan atribut dalam file JSON berbeda. Menggunakan sintaks yang salah menyebabkan kesalahan. Untuk informasi selengkapnya, lihat [Contoh Transformasi Batch](#batch-transform-data-processing-examples). Untuk informasi selengkapnya tentang format file input dan output untuk algoritme bawaan, lihat[Algoritma bawaan dan model yang telah dilatih sebelumnya di Amazon SageMaker](algos.md).

Pembatas catatan untuk input dan output juga harus konsisten dengan input file yang Anda pilih. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType)Parameter menunjukkan cara membagi catatan dalam dataset input. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith                     ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith                     )Parameter menunjukkan cara memasang kembali catatan untuk output. Jika Anda mengatur format input dan output ke`text/csv`, Anda juga harus mengatur `AssembleWith` parameter `SplitType` dan ke`line`. Jika Anda mengatur format input dan output ke`application/jsonlines`, Anda dapat mengatur keduanya `SplitType` dan `AssembleWith` ke`line`.

Untuk file CSV, Anda tidak dapat menggunakan karakter baris baru yang disematkan. Untuk file JSON, nama atribut `SageMakerOutput` dicadangkan untuk output. File input JSON tidak dapat memiliki atribut dengan nama ini. Jika ya, data dalam file input mungkin akan ditimpa. 

## JSONPath Operator yang Didukung
<a name="data-processing-operators"></a>

Untuk memfilter dan menggabungkan data input dan inferensi, gunakan JSONPath subexpression. SageMaker AI hanya mendukung sebagian dari JSONPath operator yang ditentukan. Tabel berikut mencantumkan JSONPath operator yang didukung. Untuk data CSV, setiap baris diambil sebagai array JSON, jadi hanya berbasis indeks yang JSONPaths dapat diterapkan, misalnya,. `$[0]` `$[1:]` Data CSV juga harus mengikuti format [RFC](https://tools.ietf.org/html/rfc4180).


| JSONPath Operator | Deskripsi | Contoh | 
| --- | --- | --- | 
| \$1 |  Elemen root untuk query. Operator ini diperlukan di awal semua ekspresi jalur.  | \$1 | 
| .<name> |  Elemen anak bernotasi titik.  |  `$.id`  | 
| \$1 |  Wildcard. Gunakan sebagai pengganti nama atribut atau nilai numerik.  |  `$.id.*`  | 
| ['<name>' (,'<name>')] |  Sebuah elemen bertanda kurung atau beberapa elemen anak.  |  `$['id','SageMakerOutput']`  | 
| [<number> (,<number>)] |  Indeks atau array indeks. Nilai indeks negatif juga didukung. `-1`Indeks mengacu pada elemen terakhir dalam array.  |  `$[1]` , `$[1,3,5]`  | 
| [<start>:<end>] |  Operator irisan array. Metode array slice () mengekstrak bagian dari array dan mengembalikan array baru. Jika Anda menghilangkan*<start>*, SageMaker AI menggunakan elemen pertama dari array. Jika Anda menghilangkan*<end>*, SageMaker AI menggunakan elemen terakhir dari array.  |  `$[2:5]`, `$[:5]`, `$[2:]`  | 

Saat menggunakan notasi tanda kurung untuk menentukan beberapa elemen anak dari bidang tertentu, penyarangan tambahan anak dalam tanda kurung tidak didukung. Misalnya, `$.field1.['child1','child2']` didukung sementara `$.field1.['child1','child2.grandchild']` tidak. 

Untuk informasi selengkapnya tentang JSONPath operator, lihat [JsonPath](https://github.com/json-path/JsonPath)di GitHub.

## Contoh Transformasi Batch
<a name="batch-transform-data-processing-examples"></a>

Contoh berikut menunjukkan beberapa cara umum untuk menggabungkan data input dengan hasil prediksi.

**Topics**
+ [Contoh: Output Only Inferences](#batch-transform-data-processing-example-default)
+ [Contoh: Inferensi Output Bergabung dengan Data Input](#batch-transform-data-processing-example-all)
+ [Contoh: Inferensi Output Bergabung dengan Data Input dan Kecualikan Kolom ID dari Input (CSV)](#batch-transform-data-processing-example-select-csv)
+ [Contoh: Inferensi Keluaran Bergabung dengan Kolom ID dan Kecualikan Kolom ID dari Input (CSV)](#batch-transform-data-processing-example-select-json)

### Contoh: Output Only Inferences
<a name="batch-transform-data-processing-example-default"></a>

Secara default, [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-DataProcessing](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-DataProcessing)parameter tidak menggabungkan hasil inferensi dengan input. Ini hanya menghasilkan hasil inferensi.

Jika Anda ingin secara eksplisit menentukan untuk tidak menggabungkan hasil dengan input, gunakan Amazon [ SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) dan tentukan pengaturan berikut dalam panggilan transformator.

```
sm_transformer = sagemaker.transformer.Transformer(…)
sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")
```

Untuk menghasilkan inferensi menggunakan AWS SDK untuk Python, tambahkan kode berikut ke permintaan Anda. CreateTransformJob Kode berikut meniru perilaku default.

```
{
    "DataProcessing": {
        "InputFilter": "$",
        "JoinSource": "None",
        "OutputFilter": "$"
    }
}
```

### Contoh: Inferensi Output Bergabung dengan Data Input
<a name="batch-transform-data-processing-example-all"></a>

Jika Anda menggunakan [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) untuk menggabungkan data input dengan inferensi dalam file output, tentukan `accept` parameter `assemble_with` dan saat menginisialisasi objek transformator. Saat Anda menggunakan panggilan transformasi, tentukan `Input` `join_source` parameternya, dan tentukan `content_type` parameter `split_type` dan juga. `split_type`Parameter harus memiliki nilai yang sama dengan`assemble_with`, dan `content_type` parameter harus memiliki nilai yang sama dengan`accept`. Untuk informasi selengkapnya tentang parameter dan nilai yang diterima, lihat halaman [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) di *Amazon SageMaker AI Python* SDK.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, join_source="Input", split_type="Line", content_type="text/csv")
```

Jika Anda menggunakan AWS SDK untuk Python (Boto 3), gabungkan semua data input dengan inferensi dengan menambahkan kode berikut ke permintaan Anda. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html) Nilai untuk `Accept` dan `ContentType` harus cocok, dan nilai untuk `AssembleWith` dan juga `SplitType` harus cocok.

```
{
    "DataProcessing": {
        "JoinSource": "Input"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

Untuk file input JSON atau JSON Lines, hasilnya ada di `SageMakerOutput` kunci dalam file JSON input. Misalnya, jika input adalah file JSON yang berisi pasangan kunci-nilai`{"key":1}`, hasil transformasi data mungkin. `{"label":1}`

SageMaker AI menyimpan keduanya dalam file input di `SageMakerInput` kunci.

```
{
    "key":1,
    "SageMakerOutput":{"label":1}
}
```

**catatan**  
Hasil gabungan untuk JSON harus berupa objek pasangan kunci-nilai. Jika input bukan objek pasangan nilai kunci, SageMaker AI membuat file JSON baru. Dalam file JSON baru, data input disimpan dalam `SageMakerInput` kunci dan hasilnya disimpan sebagai `SageMakerOutput` nilai.

Untuk file CSV, misalnya, jika catatannya`[1,2,3]`, dan hasil labelnya`[1]`, maka file keluaran akan berisi`[1,2,3,1]`.

### Contoh: Inferensi Output Bergabung dengan Data Input dan Kecualikan Kolom ID dari Input (CSV)
<a name="batch-transform-data-processing-example-select-csv"></a>

Jika Anda menggunakan [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) untuk menggabungkan data input Anda dengan output inferensi sambil mengecualikan kolom ID dari input transformator, tentukan parameter yang sama dari contoh sebelumnya serta JSONPath subexpression untuk panggilan transformator dalam Anda. `input_filter` Misalnya, jika data masukan Anda menyertakan lima kolom dan yang pertama adalah kolom ID, gunakan permintaan transformasi berikut untuk memilih semua kolom kecuali kolom ID sebagai fitur. Transformator masih mengeluarkan semua kolom input yang bergabung dengan inferensi. Untuk informasi selengkapnya tentang parameter dan nilai yang diterima, lihat halaman [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) di *Amazon SageMaker AI Python* SDK.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input")
```

Jika Anda menggunakan AWS SDK untuk Python (Boto 3), tambahkan kode berikut ke permintaan Anda. `[ CreateTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)`

```
{
    "DataProcessing": {
        "InputFilter": "$[1:]",
        "JoinSource": "Input"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

Untuk menentukan kolom di SageMaker AI, gunakan indeks elemen array. Kolom pertama adalah indeks 0, kolom kedua adalah indeks 1, dan kolom keenam adalah indeks 5.

Untuk mengecualikan kolom pertama dari input, atur `[InputFilter](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-Type-DataProcessing-InputFilter )` ke`"$[1:]"`. Titik dua (`:`) memberitahu SageMaker AI untuk memasukkan semua elemen antara dua nilai, inklusif. Misalnya, `$[1:4]` menentukan kolom kedua hingga kelima.

Jika Anda menghilangkan angka setelah titik dua, misalnya`[5:]`, subset mencakup semua kolom dari kolom ke-6 melalui kolom terakhir. Jika Anda menghilangkan angka sebelum titik dua, misalnya`[:5]`, subset mencakup semua kolom dari kolom pertama (indeks 0) hingga kolom keenam.

### Contoh: Inferensi Keluaran Bergabung dengan Kolom ID dan Kecualikan Kolom ID dari Input (CSV)
<a name="batch-transform-data-processing-example-select-json"></a>

Jika Anda menggunakan [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable), Anda dapat menentukan output untuk menggabungkan hanya kolom input tertentu (seperti kolom ID) dengan inferensi dengan menentukan dalam panggilan transformator. `output_filter` `output_filter`Menggunakan JSONPath subexpression untuk menentukan kolom mana yang akan dikembalikan sebagai output setelah menggabungkan data input dengan hasil inferensi. Permintaan berikut menunjukkan bagaimana Anda dapat membuat prediksi sambil mengecualikan kolom ID dan kemudian menggabungkan kolom ID dengan kesimpulan. Perhatikan bahwa dalam contoh berikut, kolom terakhir (`-1`) dari output berisi kesimpulan. Jika Anda menggunakan file JSON, SageMaker AI menyimpan hasil inferensi di atribut. `SageMakerOutput` Untuk informasi selengkapnya tentang parameter dan nilai yang diterima, lihat halaman [Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer) di *Amazon SageMaker AI Python* SDK.

```
sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv")
sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input", output_filter="$[0,-1]")
```

Jika Anda menggunakan AWS SDK untuk Python (Boto 3), gabungkan hanya kolom ID dengan kesimpulan dengan menambahkan kode berikut ke permintaan Anda. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)

```
{
    "DataProcessing": {
        "InputFilter": "$[1:]",
        "JoinSource": "Input",
        "OutputFilter": "$[0,-1]"
    },
    "TransformOutput": {
        "Accept": "text/csv",
        "AssembleWith": "Line"
    },
    "TransformInput": {
        "ContentType": "text/csv",
        "SplitType": "Line"
    }
}
```

**Awas**  
Jika Anda menggunakan file input berformat JSON, file tersebut tidak dapat berisi nama atribut. `SageMakerOutput` Nama atribut ini dicadangkan untuk kesimpulan dalam file output. Jika file input berformat JSON Anda berisi atribut dengan nama ini, nilai dalam file input mungkin ditimpa dengan inferensi.

# Penyimpanan dalam Transformasi Batch
<a name="batch-transform-storage"></a>

Saat Anda menjalankan pekerjaan transformasi batch, Amazon SageMaker AI melampirkan volume penyimpanan Amazon Elastic Block Store ke instans Amazon EC2 yang memproses pekerjaan Anda. Volume menyimpan model Anda, dan ukuran volume penyimpanan ditetapkan pada 30 GB. Anda memiliki opsi untuk mengenkripsi model Anda saat istirahat dalam volume penyimpanan.

**catatan**  
Jika Anda memiliki model besar, Anda mungkin menemukan`InternalServerError`.

Untuk informasi selengkapnya tentang penyimpanan dan fitur Amazon EBS, lihat halaman berikut:
+ [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) di Panduan Pengguna Amazon EC2
+ [Volume Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes.html) di Panduan Pengguna Amazon EC2

**catatan**  
Instans G4dn hadir dengan penyimpanan SSD lokal mereka sendiri. [Untuk mempelajari lebih lanjut tentang instans G4dn, lihat halaman Instans Amazon EC2 G4.](https://aws.amazon.com/ec2/instance-types/g4/)

# Pemecahan masalah
<a name="batch-transform-errors"></a>

Jika Anda mengalami kesalahan di Amazon SageMaker AI Batch Transform, lihat tips pemecahan masalah berikut.

## Kesalahan batas waktu maks
<a name="batch-transform-errors-max-timeout"></a>

Jika Anda mendapatkan kesalahan batas waktu maksimal saat menjalankan pekerjaan transformasi batch, coba yang berikut ini:
+ Mulailah dengan catatan tunggal`[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)`, ukuran batch default (6 MB) atau lebih kecil yang Anda tentukan dalam `[MaxPayloadInMB](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)` parameter, dan kumpulan data sampel kecil. Setel parameter batas waktu maksimum `[InvocationsTimeoutInSeconds](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelClientConfig.html#sagemaker-Type-ModelClientConfig-InvocationsTimeoutInSeconds)` (yang memiliki maksimum 1 jam) hingga Anda menerima respons pemanggilan yang berhasil.
+ Setelah Anda menerima respons pemanggilan yang berhasil, tingkatkan `MaxPayloadInMB` (yang memiliki maksimum 100 MB) dan `InvocationsTimeoutInSeconds` parameter bersama-sama untuk menemukan ukuran batch maksimum yang dapat mendukung batas waktu model yang Anda inginkan. Anda dapat menggunakan rekaman tunggal atau multi-rekaman `BatchStrategy` dalam langkah ini.
**catatan**  
Melebihi `MaxPayloadInMB` batas menyebabkan kesalahan. Ini mungkin terjadi dengan kumpulan data besar jika tidak dapat dibagi, `SplitType` parameter disetel ke tidak ada, atau catatan individu dalam kumpulan data melebihi batas.
+ (Opsional) Setel `[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)` parameter, yang menentukan jumlah maksimum permintaan paralel yang dapat dikirim ke setiap instance dalam pekerjaan transformasi batch. Namun, nilai tidak `MaxConcurrentTransforms * MaxPayloadInMB` boleh melebihi 100 MB.

## Output tidak lengkap
<a name="batch-transform-errors-incomplete"></a>

SageMaker AI menggunakan [API Unggahan Multipart](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) Amazon S3 untuk mengunggah hasil dari pekerjaan transformasi batch ke Amazon S3. Jika terjadi kesalahan, hasil yang diunggah akan dihapus dari Amazon S3. Dalam beberapa kasus, seperti ketika terjadi pemadaman jaringan, unggahan multibagian yang tidak lengkap mungkin tetap ada di Amazon S3. Unggahan yang tidak lengkap mungkin juga terjadi jika Anda memiliki beberapa file input tetapi beberapa file tidak dapat diproses oleh SageMaker AI Batch Transform. File input yang tidak dapat diproses tidak akan memiliki file output yang sesuai di Amazon S3.

Untuk menghindari biaya penyimpanan, sebaiknya tambahkan [kebijakan bucket S3 ke aturan siklus hidup bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) S3. Kebijakan ini menghapus unggahan multibagian yang tidak lengkap yang mungkin disimpan di bucket S3. Untuk informasi lebih lanjut, lihat [Manajemen Siklus Aktif Objek](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).

## Job menunjukkan sebagai `failed`
<a name="batch-transform-errors-failed"></a>

Jika pekerjaan transformasi batch gagal memproses file input karena masalah dengan kumpulan data, SageMaker AI menandai pekerjaan tersebut sebagai`failed`. Jika file input berisi catatan buruk, tugas transformasi tidak membuat file output untuk file input itu karena hal itu mencegahnya mempertahankan urutan yang sama dalam data yang diubah seperti pada file input. Ketika kumpulan data Anda memiliki beberapa file input, pekerjaan transformasi terus memproses file input meskipun gagal memprosesnya. File yang diproses masih menghasilkan hasil yang dapat digunakan.

Jika Anda menggunakan algoritme Anda sendiri, Anda dapat menggunakan teks placeholder, seperti`ERROR`, ketika algoritme menemukan catatan buruk dalam file input. Misalnya, jika catatan terakhir dalam kumpulan data buruk, algoritme menempatkan teks placeholder untuk catatan itu di file output.

# Paralelisme model dan inferensi model besar
<a name="large-model-inference"></a>

 Amazon SageMaker AI mencakup wadah pembelajaran mendalam khusus (DLCs), perpustakaan, dan perkakas untuk paralelisme model dan inferensi model besar (LMI). Di bagian berikut, Anda dapat menemukan sumber daya untuk memulai dengan LMI di SageMaker AI. 

**Topics**
+ [Dokumentasi wadah inferensi model besar (LMI)](large-model-inference-container-docs.md)
+ [SageMaker Parameter titik akhir AI untuk inferensi model besar](large-model-inference-hosting.md)
+ [Menyebarkan model yang tidak terkompresi](large-model-inference-uncompressed.md)
+ [Menyebarkan model besar untuk inferensi dengan TorchServe](large-model-inference-tutorials-torchserve.md)

# Dokumentasi wadah inferensi model besar (LMI)
<a name="large-model-inference-container-docs"></a>

[Dokumentasi kontainer Large Model Inference (LMI) disediakan di situs dokumentasi](https://docs.djl.ai/master/docs/serving/serving/docs/lmi/index.html) Deep Java Library. 

Dokumentasi ini ditulis untuk pengembang, ilmuwan data, dan insinyur pembelajaran mesin yang perlu menerapkan dan mengoptimalkan model bahasa besar (LLMs) di Amazon SageMaker AI. Ini membantu Anda menggunakan wadah LMI, yang merupakan wadah Docker khusus untuk inferensi LLM, yang disediakan oleh. AWS Ini memberikan gambaran umum, panduan penerapan, panduan pengguna untuk pustaka inferensi yang didukung, dan tutorial lanjutan.

Dengan menggunakan dokumentasi kontainer LMI, Anda dapat:
+ Memahami komponen dan arsitektur wadah LMI
+ Pelajari cara memilih jenis instans dan backend yang sesuai untuk kasus penggunaan
+ Konfigurasikan dan terapkan LLMs pada SageMaker AI menggunakan kontainer LMI
+ Optimalkan kinerja dengan menggunakan fitur seperti kuantisasi, paralelisme tensor, dan batch kontinu
+ Benchmark dan sesuaikan titik akhir SageMaker AI Anda untuk throughput dan latensi yang optimal

# SageMaker Parameter titik akhir AI untuk inferensi model besar
<a name="large-model-inference-hosting"></a>

 Anda dapat menyesuaikan parameter berikut untuk memfasilitasi inferensi model besar latensi rendah (LMI) dengan AI: SageMaker 
+  **Ukuran volume Amazon EBS maksimum pada instance (`VolumeSizeInGB`)** — Jika ukuran model lebih besar dari 30 GB dan Anda menggunakan instance tanpa disk lokal, Anda harus meningkatkan parameter ini menjadi sedikit lebih besar dari ukuran model Anda. 
+  **Kuota batas waktu pemeriksaan Kesehatan (`ContainerStartupHealthCheckTimeoutInSeconds`)** — Jika wadah Anda diatur dengan benar dan CloudWatch log menunjukkan batas waktu pemeriksaan kesehatan, Anda harus menambah kuota ini sehingga wadah memiliki cukup waktu untuk menanggapi pemeriksaan kesehatan. 
+  **Kuota batas waktu unduhan model (`ModelDataDownloadTimeoutInSeconds`)** — Jika ukuran model Anda lebih besar dari 40 GB, maka Anda harus menambah kuota ini untuk memberikan waktu yang cukup untuk mengunduh model dari Amazon S3 ke instans. 

Cuplikan kode berikut menunjukkan cara mengkonfigurasi parameter yang disebutkan di atas secara terprogram. Ganti contoh *italicized placeholder text* dalam dengan informasi Anda sendiri. 

```
import boto3

aws_region = "aws-region"
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# The name of the endpoint. The name must be unique within an AWS Region in your AWS account.
endpoint_name = "endpoint-name"

# Create an endpoint config name.
endpoint_config_name = "endpoint-config-name"

# The name of the model that you want to host.
model_name = "the-name-of-your-model"

instance_type = "instance-type"

sagemaker_client.create_endpoint_config(
    EndpointConfigName = endpoint_config_name
    ProductionVariants=[
        {
            "VariantName": "variant1", # The name of the production variant.
            "ModelName": model_name,
            "InstanceType": instance_type, # Specify the compute instance type.
            "InitialInstanceCount": 1, # Number of instances to launch initially.
            "VolumeSizeInGB": 256, # Specify the size of the Amazon EBS volume.
            "ModelDataDownloadTimeoutInSeconds": 1800, # Specify the model download timeout in seconds.
            "ContainerStartupHealthCheckTimeoutInSeconds": 1800, # Specify the health checkup timeout in seconds
        },
    ],
)

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

 Untuk informasi selengkapnya tentang kunci`ProductionVariants`, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). 

Untuk contoh yang menunjukkan cara mencapai inferensi latensi rendah dengan model besar, lihat [Contoh Inferensi AI Generatif di Amazon SageMaker AI di](https://github.com/aws-samples/sagemaker-genai-hosting-examples/tree/main) repositori aws-samples. GitHub 

# Menyebarkan model yang tidak terkompresi
<a name="large-model-inference-uncompressed"></a>

 Saat menerapkan model ML, salah satu opsi adalah mengarsipkan dan mengompres artefak model ke dalam format. `tar.gz` Meskipun metode ini bekerja dengan baik untuk model kecil, mengompresi artefak model besar dengan ratusan miliar parameter dan kemudian mendekompresi pada titik akhir dapat memakan waktu yang signifikan. Untuk inferensi model yang besar, kami menyarankan Anda menerapkan model ML yang tidak terkompresi. Panduan ini menunjukkan bagaimana Anda dapat menerapkan model ML yang tidak terkompresi. 

 Untuk menerapkan model ML yang tidak terkompresi, unggah semua artefak model ke Amazon S3 dan atur di bawah awalan Amazon S3 yang umum. Awalan Amazon S3 adalah serangkaian karakter di awal nama kunci objek Amazon S3, dipisahkan dari sisa nama dengan pembatas. Untuk informasi selengkapnya tentang awalan Amazon S3, lihat [Mengatur objek](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) menggunakan awalan. 

 Untuk menerapkan dengan SageMaker AI, Anda harus menggunakan garis miring (/) sebagai pembatas. Anda harus memastikan bahwa hanya artefak yang terkait dengan model ML Anda yang diatur dengan awalan. Untuk model ML dengan artefak tunggal yang tidak terkompresi, awalan akan identik dengan nama kunci. Anda dapat memeriksa objek mana yang terkait dengan awalan Anda dengan: AWS CLI

```
aws s3 ls --recursive s3://bucket/prefix
```

 Setelah mengunggah artefak model ke Amazon S3 dan mengaturnya di bawah awalan umum, Anda dapat menentukan lokasinya sebagai bagian dari bidang saat Anda [ModelDataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDataSource.html)memanggil permintaan. [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) SageMaker AI akan secara otomatis mengunduh artefak model yang tidak terkompresi untuk `/opt/ml/model` inferensi. Untuk informasi selengkapnya tentang aturan yang digunakan SageMaker AI saat mengunduh artefak, lihat [ModelDataSourceS3](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3ModelDataSource.html). 

 Cuplikan kode berikut menunjukkan bagaimana Anda dapat menjalankan `CreateModel` API saat menerapkan model yang tidak terkompresi. Ganti *italicized user text* dengan informasi Anda sendiri. 

```
model_name = "model-name"
sagemaker_role = "arn:aws:iam::123456789012:role/SageMakerExecutionRole"
container = "123456789012.dkr.ecr.us-west-2.amazonaws.com/inference-image:latest"

create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        "Image": container,
        "ModelDataSource": {
            "S3DataSource": {
                "S3Uri": "s3://amzn-s3-demo-bucket/prefix/to/model/data/", 
                "S3DataType": "S3Prefix",
                "CompressionType": "None",
            },
        },
    },
)
```

 Contoh yang disebutkan di atas mengasumsikan bahwa artefak model Anda diatur di bawah awalan umum. Jika artefak model Anda adalah objek Amazon S3 tunggal yang tidak terkompresi, maka ubah `"S3Uri"` untuk menunjuk ke objek Amazon S3, dan ubah ke. `"S3DataType"` `"S3Object"` 

**catatan**  
 Saat ini Anda tidak dapat menggunakan `ModelDataSource` dengan AWS Marketplace, transformasi batch SageMaker AI, titik akhir Inferensi SageMaker Tanpa Server, dan titik akhir multi-model. SageMaker 

# Menyebarkan model besar untuk inferensi dengan TorchServe
<a name="large-model-inference-tutorials-torchserve"></a>

Tutorial ini menunjukkan cara menerapkan model besar dan menyajikan inferensi di Amazon SageMaker AI dengan on. TorchServe GPUs Contoh ini menerapkan model [OPT-30b](https://huggingface.co/facebook/opt-30b) ke sebuah instance. `ml.g5` Anda dapat memodifikasi ini untuk bekerja dengan model dan jenis instance lainnya. Ganti contoh `italicized placeholder text` dalam dengan informasi Anda sendiri.

TorchServe adalah platform terbuka yang kuat untuk inferensi model terdistribusi besar. Dengan mendukung perpustakaan populer seperti PyTorch, Pi asli, dan HuggingFace Accelerate PPy DeepSpeed, ia menawarkan penangan seragam APIs yang tetap konsisten di seluruh model besar terdistribusi dan skenario inferensi model non-terdistribusi. Untuk informasi lebih lanjut, [TorchServelihat dokumentasi inferensi model besar](https://pytorch.org/serve/large_model_inference.html#).

## Wadah pembelajaran mendalam dengan TorchServe
<a name="large-model-inference-tutorials-torchserve-dlcs"></a>

Untuk menerapkan model besar dengan TorchServe SageMaker AI, Anda dapat menggunakan salah satu wadah pembelajaran mendalam SageMaker AI (DLCs). Secara default, TorchServe diinstal di semua AWS PyTorch DLCs. Selama pemuatan model, TorchServe dapat menginstal perpustakaan khusus yang disesuaikan untuk model besar seperti PiPPy, Deepspeed, dan Accelerate.

Tabel berikut mencantumkan semua [SageMaker AI DLCs dengan TorchServe](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only).


| Kateogri DLC | Kerangka Kerja | Hardware | Contoh URL | 
| --- | --- | --- | --- | 
| [SageMaker Wadah Kerangka AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) |  PyTorch 2.0.0\$1  | CPU, GPU | 763104351884.dkr. ecr.us-east-1.amazonaws.com /pytorch-inferensi:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | 
| [SageMaker Wadah Graviton Kerangka AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-graviton-containers-sm-support-only) |  PyTorch 2.0.0\$1  | CPU | 763104351884.dkr. ecr.us-east-1.amazonaws.com /:2.0.1-cpu-py310-ubuntu20.04-sagemaker pytorch-inference-graviton | 
| [Wadah Inferensi StabilityAI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#stabilityai-inference-containers) |  PyTorch 2.0.0\$1  | GPU | 763104351884.dkr. ecr.us-east-1.amazonaws.com /:2.0.1-sgm0.1.0-gpu-py310-cu118-ubuntu20.04-sagemaker stabilityai-pytorch-inference | 
| [Wadah Neuron](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#neuron-containers) | PyTorch 1.13.1 | Neuronx | 763104351884.dkr. ecr.us-west-2.amazonaws.com /:1.13.1-neuron-py310-sdk2.12.0-ubuntu20.04 pytorch-inference-neuron | 

## Memulai
<a name="large-model-inference-tutorials-torchserve-getting-started"></a>

Sebelum menerapkan model Anda, selesaikan prasyarat. Anda juga dapat mengonfigurasi parameter model Anda dan menyesuaikan kode handler.

### Prasyarat
<a name="large-model-inference-tutorials-torchserve-getting-started-prereqs"></a>

Untuk memulai, pastikan Anda memiliki prasyarat berikut:

1. Pastikan Anda memiliki akses ke AWS akun. [Siapkan lingkungan Anda](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) sehingga AWS CLI dapat mengakses akun Anda melalui pengguna AWS IAM atau peran IAM. Kami merekomendasikan menggunakan peran IAM. Untuk tujuan pengujian di akun pribadi Anda, Anda dapat melampirkan kebijakan izin terkelola berikut ke peran IAM:
   + [Amazon EC2 ContainerRegistryFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess)
   + [Amazon EC2 FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2FullAccess)
   + [AWSServiceRoleForAmazonEKSNodegroup](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSServiceRoleForAmazonEKSNodegroup)
   + [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)
   + [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonS3FullAccess)

   *Untuk informasi selengkapnya tentang melampirkan kebijakan IAM ke peran, lihat [Menambahkan dan menghapus izin identitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) di Panduan Pengguna IAM.AWS *

1. Konfigurasikan dependensi Anda secara lokal, seperti yang ditunjukkan pada contoh berikut.

   1. Instal versi 2 dari AWS CLI:

      ```
      # Install the latest AWS CLI v2 if it is not installed
      !curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" !unzip awscliv2.zip
      #Follow the instructions to install v2 on the terminal
      !cat aws/README.md
      ```

   1. Instal SageMaker AI dan klien Boto3:

      ```
      # If already installed, update your client
      #%pip install sagemaker pip --upgrade --quiet
      !pip install -U sagemaker
      !pip install -U boto
      !pip install -U botocore
      !pip install -U boto3
      ```

### Konfigurasikan pengaturan dan parameter model
<a name="large-model-inference-tutorials-torchserve-getting-started-config"></a>

TorchServe digunakan [https://pytorch.org/docs/stable/elastic/run.html](https://pytorch.org/docs/stable/elastic/run.html)untuk mengatur lingkungan terdistribusi untuk pemrosesan paralel model. TorchServe memiliki kemampuan untuk mendukung banyak pekerja untuk model besar. Secara default, TorchServe menggunakan algoritma round-robin untuk menetapkan GPUs ke pekerja pada host. Dalam kasus inferensi model besar, jumlah yang GPUs ditugaskan untuk setiap pekerja dihitung secara otomatis berdasarkan jumlah yang GPUs ditentukan dalam `model_config.yaml` file. Variabel lingkungan`CUDA_VISIBLE_DEVICES`, yang menentukan perangkat GPU IDs yang terlihat pada waktu tertentu, diatur berdasarkan nomor ini.

Misalnya, misalkan ada 8 GPUs pada node dan satu pekerja membutuhkan 4 GPUs pada node (`nproc_per_node=4`). Dalam hal ini, TorchServe berikan empat GPUs untuk pekerja pertama (`CUDA_VISIBLE_DEVICES="0,1,2,3"`) dan empat GPUs untuk pekerja kedua (`CUDA_VISIBLE_DEVICES="4,5,6,7”`).

Selain perilaku default ini, TorchServe memberikan fleksibilitas bagi pengguna GPUs untuk menentukan pekerja. Misalnya, jika Anda mengatur variabel `deviceIds: [2,3,4,5]` dalam [file YAMAL konfigurasi model](https://github.com/pytorch/serve/blob/5ee02e4f050c9b349025d87405b246e970ee710b/model-archiver/README.md?plain=1#L164), dan mengatur`nproc_per_node=2`, kemudian TorchServe menetapkan `CUDA_VISIBLE_DEVICES=”2,3”` ke pekerja pertama dan pekerja `CUDA_VISIBLE_DEVICES="4,5”` kedua.

[Dalam `model_config.yaml` contoh berikut, kami mengonfigurasi parameter front-end dan back-end untuk model OPT-30b.](https://huggingface.co/facebook/opt-30b) Parameter front-end yang dikonfigurasi adalah`parallelType`,`deviceType`, `deviceIds ` dan. `torchrun` [Untuk informasi lebih rinci tentang parameter front-end yang dapat Anda konfigurasi, lihat dokumentasi. PyTorch GitHub ](https://github.com/pytorch/serve/blob/2bf505bae3046b0f7d0900727ec36e611bb5dca3/docs/configuration.md?plain=1#L267) Konfigurasi back-end didasarkan pada peta YAMM yang memungkinkan kustomisasi gaya bebas. Untuk parameter back-end, kita mendefinisikan DeepSpeed konfigurasi dan parameter tambahan yang digunakan oleh kode handler kustom.

```
# TorchServe front-end parameters
minWorkers: 1
maxWorkers: 1
maxBatchDelay: 100
responseTimeout: 1200
parallelType: "tp"
deviceType: "gpu"
# example of user specified GPU deviceIds
deviceIds: [0,1,2,3] # sets CUDA_VISIBLE_DEVICES

torchrun:
    nproc-per-node: 4

# TorchServe back-end parameters
deepspeed:
    config: ds-config.json
    checkpoint: checkpoints.json

handler: # parameters for custom handler code
    model_name: "facebook/opt-30b"
    model_path: "model/models--facebook--opt-30b/snapshots/ceea0a90ac0f6fae7c2c34bcb40477438c152546"
    max_length: 50
    max_new_tokens: 10
    manual_seed: 40
```

### Sesuaikan penangan
<a name="large-model-inference-tutorials-torchserve-getting-started-handlers"></a>

TorchServe menawarkan [penangan dasar](https://github.com/pytorch/serve/tree/master/ts/torch_handler/distributed) dan [utilitas penangan](https://github.com/pytorch/serve/tree/master/ts/handler_utils) untuk inferensi model besar yang dibangun dengan perpustakaan populer. [Contoh berikut menunjukkan bagaimana kelas handler kustom [TransformersSeqClassifierHandler](https://github.com/pytorch/serve/blob/ab69b69a59d6ca6074df7e6d4014f07eb48dedba/examples/large_models/deepspeed/custom_handler.py#L16C7-L16C39)meluas [BaseDeepSpeedHandler](https://github.com/pytorch/serve/blob/ab69b69a59d6ca6074df7e6d4014f07eb48dedba/ts/torch_handler/distributed/base_deepspeed_handler.py#L8)dan menggunakan utilitas handler.](https://github.com/pytorch/serve/blob/master/ts/handler_utils/distributed/deepspeed.py) Untuk contoh kode lengkap, lihat [`custom_handler.py`kode pada PyTorch GitHub dokumentasi](https://github.com/pytorch/serve/blob/master/examples/large_models/deepspeed/custom_handler.py).

```
class TransformersSeqClassifierHandler(BaseDeepSpeedHandler, ABC):
    """
    Transformers handler class for sequence, token classification and question answering.
    """

    def __init__(self):
        super(TransformersSeqClassifierHandler, self).__init__()
        self.max_length = None
        self.max_new_tokens = None
        self.tokenizer = None
        self.initialized = False

    def initialize(self, ctx: Context):
        """In this initialize function, the HF large model is loaded and
        partitioned using DeepSpeed.
        Args:
            ctx (context): It is a JSON Object containing information
            pertaining to the model artifacts parameters.
        """
        super().initialize(ctx)
        model_dir = ctx.system_properties.get("model_dir")
        self.max_length = int(ctx.model_yaml_config["handler"]["max_length"])
        self.max_new_tokens = int(ctx.model_yaml_config["handler"]["max_new_tokens"])
        model_name = ctx.model_yaml_config["handler"]["model_name"]
        model_path = ctx.model_yaml_config["handler"]["model_path"]
        seed = int(ctx.model_yaml_config["handler"]["manual_seed"])
        torch.manual_seed(seed)

        logger.info("Model %s loading tokenizer", ctx.model_name)

        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        self.tokenizer.pad_token = self.tokenizer.eos_token
        config = AutoConfig.from_pretrained(model_name)
        with torch.device("meta"):
            self.model = AutoModelForCausalLM.from_config(
                config, torch_dtype=torch.float16
            )
        self.model = self.model.eval()

        ds_engine = get_ds_engine(self.model, ctx)
        self.model = ds_engine.module
        logger.info("Model %s loaded successfully", ctx.model_name)
        self.initialized = True

    def preprocess(self, requests):
        """
        Basic text preprocessing, based on the user's choice of application mode.
        Args:
            requests (list): A list of dictionaries with a "data" or "body" field, each
                            containing the input text to be processed.
        Returns:
            tuple: A tuple with two tensors: the batch of input ids and the batch of
                attention masks.
        """

    def inference(self, input_batch):
        """
        Predicts the class (or classes) of the received text using the serialized transformers
        checkpoint.
        Args:
            input_batch (tuple): A tuple with two tensors: the batch of input ids and the batch
                                of attention masks, as returned by the preprocess function.
        Returns:
            list: A list of strings with the predicted values for each input text in the batch.
        """
        
    def postprocess(self, inference_output):
        """Post Process Function converts the predicted response into Torchserve readable format.
        Args:
            inference_output (list): It contains the predicted response of the input text.
        Returns:
            (list): Returns a list of the Predictions and Explanations.
        """
```

## Siapkan artefak model Anda
<a name="large-model-inference-tutorials-torchserve-artifacts"></a>

Sebelum menerapkan model Anda pada SageMaker AI, Anda harus mengemas artefak model Anda. Untuk model besar, kami menyarankan Anda menggunakan PyTorch [torch-model-archiver](https://github.com/pytorch/serve/blob/master/model-archiver/README.md)alat dengan argumen`--archive-format no-archive`, yang melewatkan artefak model kompresi. Contoh berikut menyimpan semua artefak model ke folder baru bernama`opt/`.

```
torch-model-archiver --model-name opt --version 1.0 --handler custom_handler.py --extra-files ds-config.json -r requirements.txt --config-file opt/model-config.yaml --archive-format no-archive
```

[Setelah `opt/` folder dibuat, unduh model OPT-30b ke folder menggunakan alat Download\$1model. PyTorch ](https://github.com/pytorch/serve/blob/master/examples/large_models/utils/Download_model.py)

```
cd opt
python path_to/Download_model.py --model_path model --model_name facebook/opt-30b --revision main
```

Terakhir, unggah artefak model ke ember Amazon S3. 

```
aws s3 cp opt {your_s3_bucket}/opt --recursive
```

Anda sekarang harus memiliki artefak model yang disimpan di Amazon S3 yang siap digunakan ke titik akhir AI. SageMaker 

## Terapkan model menggunakan SageMaker Python SDK
<a name="large-model-inference-tutorials-torchserve-deploy"></a>

Setelah menyiapkan artefak model Anda, Anda dapat menerapkan model Anda ke titik akhir SageMaker AI Hosting. Bagian ini menjelaskan cara menerapkan satu model besar ke titik akhir dan membuat prediksi respons streaming. Untuk informasi selengkapnya tentang respons streaming dari titik akhir, lihat [Memanggil titik akhir waktu nyata](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-test-endpoints.html).

Untuk menerapkan model Anda, selesaikan langkah-langkah berikut:

1. Buat sesi SageMaker AI, seperti yang ditunjukkan pada contoh berikut.

   ```
   import boto3
   import sagemaker
   from sagemaker import Model, image_uris, serializers, deserializers
   
   boto3_session=boto3.session.Session(region_name="us-west-2")
   smr = boto3.client('sagemaker-runtime-demo')
   sm = boto3.client('sagemaker')
   role = sagemaker.get_execution_role()  # execution role for the endpoint
   sess= sagemaker.session.Session(boto3_session, sagemaker_client=sm, sagemaker_runtime_client=smr)  # SageMaker AI session for interacting with different AWS APIs
   region = sess._region_name  # region name of the current SageMaker Studio Classic environment
   account = sess.account_id()  # account_id of the current SageMaker Studio Classic environment
   
   # Configuration:
   bucket_name = sess.default_bucket()
   prefix = "torchserve"
   output_path = f"s3://{bucket_name}/{prefix}"
   print(f'account={account}, region={region}, role={role}, output_path={output_path}')
   ```

1. Buat model yang tidak terkompresi di SageMaker AI, seperti yang ditunjukkan pada contoh berikut.

   ```
   from datetime import datetime
   
   instance_type = "ml.g5.24xlarge"
   endpoint_name = sagemaker.utils.name_from_base("ts-opt-30b")
   s3_uri = {your_s3_bucket}/opt
   
   model = Model(
       name="torchserve-opt-30b" + datetime.now().strftime("%Y-%m-%d-%H-%M-%S"),
       # Enable SageMaker uncompressed model artifacts
       model_data={
           "S3DataSource": {
                   "S3Uri": s3_uri,
                   "S3DataType": "S3Prefix",
                   "CompressionType": "None",
           }
       },
       image_uri=container,
       role=role,
       sagemaker_session=sess,
       env={"TS_INSTALL_PY_DEP_PER_MODEL": "true"},
   )
   print(model)
   ```

1. Menerapkan model ke instans Amazon EC2, seperti yang ditunjukkan pada contoh berikut.

   ```
   model.deploy(
       initial_instance_count=1,
       instance_type=instance_type,
       endpoint_name=endpoint_name,
       volume_size=512, # increase the size to store large model
       model_data_download_timeout=3600, # increase the timeout to download large model
       container_startup_health_check_timeout=600, # increase the timeout to load large model
   )
   ```

1. Inisialisasi kelas untuk memproses respons streaming, seperti yang ditunjukkan pada contoh berikut.

   ```
   import io
   
   class Parser:
       """
       A helper class for parsing the byte stream input. 
       
       The output of the model will be in the following format:
       ```
       b'{"outputs": [" a"]}\n'
       b'{"outputs": [" challenging"]}\n'
       b'{"outputs": [" problem"]}\n'
       ...
       ```
       
       While usually each PayloadPart event from the event stream will contain a byte array 
       with a full json, this is not guaranteed and some of the json objects may be split across
       PayloadPart events. For example:
       ```
       {'PayloadPart': {'Bytes': b'{"outputs": '}}
       {'PayloadPart': {'Bytes': b'[" problem"]}\n'}}
       ```
       
       This class accounts for this by concatenating bytes written via the 'write' function
       and then exposing a method which will return lines (ending with a '\n' character) within
       the buffer via the 'scan_lines' function. It maintains the position of the last read 
       position to ensure that previous bytes are not exposed again. 
       """
       
       def __init__(self):
           self.buff = io.BytesIO()
           self.read_pos = 0
           
       def write(self, content):
           self.buff.seek(0, io.SEEK_END)
           self.buff.write(content)
           data = self.buff.getvalue()
           
       def scan_lines(self):
           self.buff.seek(self.read_pos)
           for line in self.buff.readlines():
               if line[-1] != b'\n':
                   self.read_pos += len(line)
                   yield line[:-1]
                   
       def reset(self):
           self.read_pos = 0
   ```

1. Uji prediksi respons streaming, seperti yang ditunjukkan pada contoh berikut.

   ```
   import json
   
   body = "Today the weather is really nice and I am planning on".encode('utf-8')
   resp = smr.invoke_endpoint_with_response_stream(EndpointName=endpoint_name, Body=body, ContentType="application/json")
   event_stream = resp['Body']
   parser = Parser()
   for event in event_stream:
       parser.write(event['PayloadPart']['Bytes'])
       for line in parser.scan_lines():
           print(line.decode("utf-8"), end=' ')
   ```

Anda sekarang telah menerapkan model Anda ke titik akhir SageMaker AI dan harus dapat memanggilnya untuk tanggapan. Untuk informasi selengkapnya tentang titik akhir real-time SageMaker AI, lihat[Titik akhir model tunggal](realtime-single-model.md).

# Pagar pembatas penyebaran untuk memperbarui model dalam produksi
<a name="deployment-guardrails"></a>

Pagar pembatas penerapan adalah serangkaian opsi penerapan model di Inferensi SageMaker AI Amazon untuk memperbarui model pembelajaran mesin Anda dalam produksi. Dengan menggunakan opsi penerapan yang dikelola sepenuhnya, Anda dapat mengontrol sakelar dari model saat ini dalam produksi ke yang baru. Mode perpindahan lalu lintas dalam penerapan biru/hijau, seperti kenari dan linier, memberi Anda kontrol terperinci atas proses perpindahan lalu lintas dari model Anda saat ini ke yang baru selama pembaruan. Ada juga perlindungan bawaan seperti auto-rollback yang membantu Anda menangkap masalah lebih awal dan secara otomatis mengambil tindakan korektif sebelum berdampak signifikan pada produksi.

Pagar pembatas penyebaran memberikan manfaat berikut:
+ **Keamanan penerapan saat memperbarui lingkungan produksi.** Pembaruan regresif ke lingkungan produksi dapat menyebabkan downtime dan dampak bisnis yang tidak direncanakan, seperti peningkatan latensi model dan tingkat kesalahan yang tinggi. Pagar pembatas penerapan membantu Anda mengurangi risiko tersebut dengan menyediakan praktik terbaik dan pagar keselamatan operasional bawaan.
+ **Penyebaran yang dikelola sepenuhnya.** SageMaker AI menangani pengaturan dan mengatur penerapan ini dan mengintegrasikannya dengan mekanisme pembaruan titik akhir. Anda tidak perlu membangun dan memelihara mekanisme orkestrasi, pemantauan, atau rollback. Anda dapat memanfaatkan SageMaker AI untuk mengatur dan mengatur penerapan ini dan fokus pada pemanfaatan ML untuk aplikasi Anda.
+ **Visibilitas.** Anda dapat melacak kemajuan penerapan Anda melalui [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API atau melalui Amazon CloudWatch Events (untuk [titik akhir yang didukung](deployment-guardrails-exclusions.md)). Untuk mempelajari lebih lanjut tentang peristiwa di SageMaker AI, lihat bagian Perubahan status penerapan titik akhir di. [Peristiwa yang dikirimkan Amazon SageMaker AI ke Amazon EventBridge](automating-sagemaker-with-eventbridge.md) Perhatikan bahwa jika titik akhir Anda menggunakan salah satu fitur di [Pengecualian](deployment-guardrails-exclusions.md) halaman, Anda tidak dapat menggunakan CloudWatch Acara.

**catatan**  
Pagar pembatas penerapan hanya berlaku untuk [Inferensi asinkron](async-inference.md) dan [Inferensi waktu nyata](realtime-endpoints.md) tipe titik akhir.

## Cara memulai
<a name="deployment-guardrails-get-started"></a>

Kami mendukung dua jenis penerapan untuk memperbarui model dalam produksi: penerapan biru/hijau dan penerapan bergulir.
+ [Deployment Blue/Green](deployment-guardrails-blue-green.md): Anda dapat mengalihkan lalu lintas dari armada lama Anda (armada biru) ke armada baru (armada hijau) dengan pembaruan. Penerapan biru/hijau menawarkan [beberapa](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green.html) mode perpindahan lalu lintas. Mode perpindahan lalu lintas adalah konfigurasi yang menentukan bagaimana SageMaker AI merutekan lalu lintas titik akhir ke armada baru yang berisi pembaruan Anda. Mode perpindahan lalu lintas berikut memberi Anda berbagai tingkat kontrol atas proses pembaruan titik akhir:
  + [Gunakan sekaligus pergeseran lalu lintas](deployment-guardrails-blue-green-all-at-once.md)menggeser semua lalu lintas titik akhir Anda dari armada biru ke armada hijau. Setelah lalu lintas bergeser ke armada hijau, CloudWatch alarm Amazon Anda yang telah ditentukan sebelumnya mulai memantau armada hijau untuk jangka waktu tertentu (periode *pemanggangan*). Jika tidak ada alarm yang tersandung selama periode pemanggangan, maka SageMaker AI menghentikan armada biru.
  + [Gunakan perpindahan lalu lintas kenari](deployment-guardrails-blue-green-canary.md)menggeser satu bagian kecil dari lalu lintas Anda (*kenari*) ke armada hijau dan memantaunya untuk periode pemanggangan. Jika kenari berhasil di armada hijau, maka SageMaker AI menggeser sisa lalu lintas dari armada biru ke armada hijau sebelum mengakhiri armada biru.
  + [Gunakan perpindahan lalu lintas linier](deployment-guardrails-blue-green-linear.md)menyediakan lebih banyak penyesuaian atas jumlah langkah pergeseran lalu lintas dan persentase lalu lintas yang harus digeser untuk setiap langkah. Sementara pergeseran kenari memungkinkan Anda menggeser lalu lintas dalam dua langkah, pergeseran linier memperluas ini ke *n* langkah spasi linier.
+ [Gunakan penerapan bergulir](deployment-guardrails-rolling.md): Anda dapat memperbarui titik akhir Anda karena SageMaker AI secara bertahap menyediakan kapasitas dan mengalihkan lalu lintas ke armada baru dalam langkah-langkah ukuran batch yang Anda tentukan. Instans pada armada baru diperbarui dengan konfigurasi penyebaran baru, dan jika tidak ada CloudWatch alarm yang tersandung selama periode pemanggangan, maka SageMaker AI membersihkan instance pada armada lama. Opsi ini memberi Anda kontrol terperinci atas jumlah instans atau persentase kapasitas yang digeser selama setiap langkah.

Anda dapat membuat dan mengelola penyebaran Anda melalui [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)dan AWS Command Line Interface perintah. Lihat halaman penerapan individual untuk detail selengkapnya tentang cara mengatur penerapan Anda. Perhatikan bahwa jika titik akhir Anda menggunakan salah satu fitur yang tercantum di [Pengecualian](deployment-guardrails-exclusions.md) halaman, Anda tidak dapat menggunakan pagar pembatas penerapan.

Untuk mengikuti contoh terpandu yang menunjukkan cara menggunakan pagar pembatas penerapan, lihat contoh [notebook Jupyter kami untuk mode perpindahan lalu lintas kenari](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-inference-deployment-guardrails) dan linier.

# Konfigurasi dan Pemantauan Auto-Rollback
<a name="deployment-guardrails-configuration"></a>

 CloudWatch Alarm Amazon adalah prasyarat untuk menggunakan periode pemanggangan di pagar pembatas penyebaran. Anda hanya dapat menggunakan fungsionalitas auto-rollback di pagar pembatas penerapan jika Anda mengatur CloudWatch alarm yang dapat memantau titik akhir. Jika ada alarm Anda yang tersandar selama periode pemantauan yang ditentukan, SageMaker AI memulai pengembalian lengkap ke titik akhir lama untuk melindungi aplikasi Anda. Jika Anda tidak memiliki CloudWatch alarm yang diatur untuk memantau titik akhir Anda, fungsionalitas auto-rollback tidak berfungsi selama penerapan Anda.

Untuk mempelajari lebih lanjut tentang Amazon CloudWatch, lihat [Apa itu Amazon CloudWatch?](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) di *Panduan CloudWatch Pengguna Amazon*.

**catatan**  
Pastikan bahwa peran eksekusi IAM Anda memiliki izin untuk melakukan `cloudwatch:DescribeAlarms` tindakan pada alarm auto-rollback yang Anda tentukan.

## Contoh Alarm
<a name="deployment-guardrails-configuration-alarm-examples"></a>

Untuk membantu Anda memulai, kami memberikan contoh berikut untuk menunjukkan kemampuan CloudWatch alarm. Selain menggunakan atau memodifikasi contoh berikut, Anda dapat membuat alarm sendiri dan mengonfigurasi alarm untuk memantau berbagai metrik pada armada yang ditentukan untuk jangka waktu tertentu. Untuk melihat lebih banyak metrik dan dimensi SageMaker AI yang dapat Anda tambahkan ke alarm, lihat. [Metrik Amazon SageMaker AI di Amazon CloudWatch](monitoring-cloudwatch.md)

**Topics**
+ [Pantau kesalahan pemanggilan pada armada lama dan baru](#deployment-guardrails-configuration-alarm-examples-errors-both)
+ [Pantau latensi model pada armada baru](#deployment-guardrails-configuration-alarm-examples-latency-new)

### Pantau kesalahan pemanggilan pada armada lama dan baru
<a name="deployment-guardrails-configuration-alarm-examples-errors-both"></a>

 CloudWatch Alarm berikut memonitor tingkat kesalahan rata-rata titik akhir. Anda dapat menggunakan alarm ini dengan jenis pemindahan lalu lintas pagar pembatas penyebaran apa pun untuk memberikan pemantauan keseluruhan pada armada lama dan baru. Jika alarm tersandung, maka SageMaker AI memulai rollback ke armada lama.

Kesalahan pemanggilan yang berasal dari armada lama dan armada baru berkontribusi pada tingkat kesalahan rata-rata. Jika tingkat kesalahan rata-rata melebihi ambang batas yang ditentukan, maka alarm akan tersandung. Contoh khusus ini memantau kesalahan 4xx (kesalahan klien) pada armada lama dan baru selama durasi penerapan. Anda juga dapat memantau kesalahan 5xx (kesalahan server) dengan menggunakan metrik`Invocation5XXErrors`.

**catatan**  
Untuk jenis alarm ini, jika armada lama Anda tersandung alarm selama penyebaran, SageMaker AI menghentikan penyebaran Anda. Oleh karena itu, jika armada produksi Anda saat ini sudah menyebabkan kesalahan, pertimbangkan untuk menggunakan atau memodifikasi salah satu contoh berikut yang hanya memantau armada baru untuk kesalahan.

```
#Applied deployment type: all types
{
    "AlarmName": "EndToEndDeploymentHighErrorRateAlarm",
    "AlarmDescription": "Monitors the error rate of 4xx errors",
    "MetricName": "Invocation4XXErrors",
    "Namespace": "AWS/SageMaker",
    "Statistic": "Average",
    "Dimensions": [
        {
            "Name": "EndpointName",
            "Value": <your-endpoint-name>
        },
        {
            "Name": "VariantName",
            "Value": "AllTraffic"
        }
    ],
    "Period": 600,
    "EvaluationPeriods": 2,
    "Threshold": 1,
    "ComparisonOperator": "GreaterThanThreshold",
    "TreatMissingData": "notBreaching"
}
```

Pada contoh sebelumnya, perhatikan nilai untuk bidang berikut:
+ Untuk `AlarmName` dan`AlarmDescription`, masukkan nama dan deskripsi yang Anda pilih untuk alarm.
+ Untuk`MetricName`, gunakan nilai `Invocation4XXErrors` untuk memantau kesalahan 4xx pada titik akhir
+ Untuk`Namespace`, gunakan nilainya`AWS/SageMaker`. Anda juga dapat menentukan metrik kustom Anda sendiri, jika berlaku.
+ Untuk`Statistic`, gunakan`Average`. Ini berarti bahwa alarm mengambil tingkat kesalahan rata-rata selama periode evaluasi saat menghitung apakah tingkat kesalahan telah melebihi ambang batas.
+ Untuk dimensi`EndpointName`, gunakan nama titik akhir yang Anda perbarui sebagai nilainya.
+ Untuk dimensi`VariantName`, gunakan nilai `AllTraffic` untuk menentukan semua lalu lintas titik akhir.
+ Untuk`Period`, gunakan`600`. Ini mengatur periode evaluasi alarm menjadi 10 menit.
+ Untuk`EvaluationPeriods`, gunakan`2`. Nilai ini memberi tahu alarm untuk mempertimbangkan dua periode evaluasi terbaru saat menentukan status alarm.

### Pantau latensi model pada armada baru
<a name="deployment-guardrails-configuration-alarm-examples-latency-new"></a>

Contoh CloudWatch alarm berikut memantau latensi model armada baru selama penerapan Anda. Anda dapat menggunakan alarm ini untuk memantau hanya armada baru dan mengecualikan armada lama. Alarm berlangsung untuk seluruh penyebaran. Contoh ini memberi Anda end-to-end pemantauan armada baru yang komprehensif dan memulai rollback ke armada lama jika armada baru memiliki masalah waktu respons.

CloudWatch menerbitkan metrik dengan dimensi `EndpointConfigName:{New-Ep-Config}` setelah armada baru mulai menerima lalu lintas, dan metrik ini bertahan bahkan setelah penerapan selesai.

Anda dapat menggunakan contoh alarm berikut dengan jenis penerapan apa pun.

```
#Applied deployment type: all types
{
    "AlarmName": "NewEndpointConfigVersionHighModelLatencyAlarm",
    "AlarmDescription": "Monitors the model latency on new fleet",
    "MetricName": "ModelLatency",
    "Namespace": "AWS/SageMaker",
    "Statistic": "Average",
    "Dimensions": [
        {
            "Name": "EndpointName",
            "Value": <your-endpoint-name>
        },
        {
            "Name": "VariantName",
            "Value": "AllTraffic"
        },
        {
            "Name": "EndpointConfigName",
            "Value": <your-config-name>
    ],
    "Period": 300,
    "EvaluationPeriods": 2,
    "Threshold": 100000, # 100ms
    "ComparisonOperator": "GreaterThanThreshold",
    "TreatMissingData": "notBreaching"
}
```

Pada contoh sebelumnya, perhatikan nilai untuk bidang berikut:
+ Untuk`MetricName`, gunakan nilai `ModelLatency` untuk memantau waktu respons model.
+ Untuk`Namespace`, gunakan nilainya`AWS/SageMaker`. Anda juga dapat menentukan metrik kustom Anda sendiri, jika berlaku.
+ Untuk dimensi`EndpointName`, gunakan nama titik akhir yang Anda perbarui sebagai nilainya.
+ Untuk dimensi`VariantName`, gunakan nilai `AllTraffic` untuk menentukan semua lalu lintas titik akhir.
+ Untuk dimensi`EndpointConfigName`, nilai harus merujuk ke nama konfigurasi titik akhir untuk titik akhir baru atau yang diperbarui.

**catatan**  
Jika Anda ingin memantau armada lama Anda alih-alih armada baru, Anda dapat mengubah dimensi `EndpointConfigName` untuk menentukan nama konfigurasi armada lama Anda.

# Deployment Blue/Green
<a name="deployment-guardrails-blue-green"></a>

Saat memperbarui titik akhir, Amazon SageMaker AI secara otomatis menggunakan blue/green deployment to maximize the availability of your endpoints. In a blue/green deployment, SageMaker AI provisions a new fleet with the updates (the green fleet). Then, SageMaker AI shifts traffic from the old fleet (the blue fleet) to the green fleet. Once the green fleet operates smoothly for a set evaluation period (called the baking period), SageMaker AI terminates the blue fleet. With the additional capabilities in blue/green penerapan, Anda dapat memanfaatkan mode perpindahan lalu lintas dan pemantauan rollback otomatis untuk melindungi titik akhir Anda dari dampak produksi yang signifikan.

Daftar berikut menjelaskan fitur utama penerapan biru/hijau di AI: SageMaker 
+ **Mode perpindahan lalu lintas.** Mode perpindahan lalu lintas untuk pagar pembatas penyebaran memungkinkan Anda mengontrol volume lalu lintas dan jumlah langkah perpindahan lalu lintas antara armada biru dan armada hijau. Kemampuan ini memberi Anda kemampuan untuk mengevaluasi kinerja armada hijau secara progresif tanpa sepenuhnya berkomitmen untuk pergeseran lalu lintas 100%.
+ **Periode memanggang.** Periode pemanggangan adalah jumlah waktu yang ditetapkan untuk memantau armada hijau sebelum melanjutkan ke tahap penyebaran berikutnya. Jika salah satu alarm yang telah ditentukan sebelumnya tersandung selama periode pemanggangan apa pun, maka semua lalu lintas titik akhir kembali ke armada biru. Periode memanggang membantu Anda membangun kepercayaan pada pembaruan Anda sebelum membuat pergeseran lalu lintas permanen.
+ **Rollback otomatis.** Anda dapat menentukan CloudWatch alarm Amazon yang digunakan SageMaker AI untuk memantau armada hijau. Jika masalah dengan kode yang diperbarui tersandung salah satu alarm, SageMaker AI memulai pengembalian otomatis ke armada biru untuk menjaga ketersediaan sehingga meminimalkan risiko.

## Mode Pergeseran Lalu Lintas
<a name="deployment-guardrails-blue-green-traffic-modes"></a>

Berbagai mode perpindahan lalu lintas dalam blue/green deployments give you more granular control over traffic shifting between the blue fleet and the green fleet. The available traffic shifting modes for blue/green penyebaran semuanya sekaligus, kenari, dan linier. Tabel berikut menunjukkan perbandingan opsi.

**penting**  
Untuk blue/green deployments that involve multiple stage traffic shifting or baking periods, you are billed for both the fleets for the duration of the update, irrespective of the traffic to the fleet. This is in contrast to blue/green penyebaran dengan perpindahan lalu lintas sekaligus dan tidak ada periode pemanggangan, di mana Anda hanya ditagih untuk satu armada selama pembaruan.


| Nama | Apa itu? | Pro | Kontra | Rekomendasi | 
| --- | --- | --- | --- | --- | 
| Semua sekaligus | Menggeser semua lalu lintas ke armada baru dalam satu langkah. | Meminimalkan durasi pembaruan secara keseluruhan. | Pembaruan regresif memengaruhi 100% lalu lintas. | Gunakan opsi ini untuk meminimalkan waktu dan biaya pembaruan. | 
| Kenari | Lalu lintas bergeser dalam dua langkah. Langkah pertama (kenari) menggeser sebagian kecil lalu lintas diikuti oleh langkah kedua, yang menggeser sisa lalu lintas. | Membatasi radius ledakan pembaruan regresif hanya untuk armada kenari. | Kedua armada beroperasi secara paralel untuk seluruh penyebaran. | Gunakan opsi ini untuk menyeimbangkan antara meminimalkan radius ledakan pembaruan regresif dan meminimalkan waktu dua armada beroperasi. | 
| Linear | Sebagian tetap dari lalu lintas bergeser dalam jumlah yang telah ditentukan sebelumnya dari langkah dengan jarak yang sama. | Meminimalkan risiko pembaruan regresif dengan mengalihkan lalu lintas melalui beberapa langkah. | Durasi dan biaya pembaruan sebanding dengan jumlah langkah. | Gunakan opsi ini untuk meminimalkan risiko dengan menyebarkan penyebaran di beberapa langkah. | 

## Mulai
<a name="deployment-guardrails-blue-green-get-started"></a>

Setelah Anda menentukan konfigurasi penerapan yang diinginkan, SageMaker AI menangani penyediaan instance baru, menghentikan instans lama, dan mengalihkan lalu lintas untuk Anda. Anda dapat membuat dan mengelola penyebaran Anda melalui [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)dan AWS Command Line Interface perintah yang ada. Perhatikan bahwa jika titik akhir Anda menggunakan salah satu fitur yang tercantum di [Pengecualian](deployment-guardrails-exclusions.md) halaman, Anda tidak dapat menggunakan pagar pembatas penerapan. Lihat halaman penerapan individual untuk detail selengkapnya tentang cara mengatur penerapan Anda:
+ [Pembaruan Biru/Hijau dengan Pergeseran Lalu Lintas Sekaligus](deployment-guardrails-blue-green-all-at-once.md)
+ [Pembaruan Biru/Hijau dengan Pergeseran Lalu Lintas Canary](deployment-guardrails-blue-green-canary.md)
+ [Pembaruan Biru/Hijau dengan Pergeseran Lalu Lintas Linear](deployment-guardrails-blue-green-linear.md)

Untuk mengikuti contoh terpandu yang menunjukkan cara menggunakan pagar pembatas penerapan, lihat contoh [notebook Jupyter kami untuk mode perpindahan lalu lintas kenari](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-inference-deployment-guardrails) dan linier.

# Gunakan sekaligus pergeseran lalu lintas
<a name="deployment-guardrails-blue-green-all-at-once"></a>

Dengan pergeseran lalu lintas sekaligus, Anda dapat dengan cepat meluncurkan pembaruan titik akhir menggunakan pagar pengaman penerapan. blue/green deployment. You can use this traffic shifting option to minimize the update duration while still taking advantage of the availability guarantees of blue/green Fitur baking period membantu Anda memantau kinerja dan fungsionalitas instans baru Anda sebelum menghentikan instans lama Anda, memastikan bahwa armada baru Anda beroperasi penuh.

Diagram berikut menunjukkan bagaimana sekaligus pergeseran lalu lintas mengelola armada lama dan baru.

![\[Pergeseran lalu lintas 100% yang sukses dari armada lama ke armada baru.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/deployment-guardrails-blue-green-all-at-once.png)


Saat Anda menggunakan perpindahan lalu lintas sekaligus, SageMaker AI merutekan 100% lalu lintas ke armada baru (armada hijau). Setelah armada hijau mulai menerima lalu lintas, periode pemanggangan dimulai. Periode memanggang adalah jumlah waktu yang ditentukan di mana CloudWatch alarm Amazon yang telah ditentukan sebelumnya memantau kinerja armada hijau. Jika tidak ada alarm yang tersandung selama periode pemanggangan, SageMaker AI menghentikan armada lama (armada biru). Jika ada alarm yang tersandung selama periode pemanggangan, maka rollback otomatis dimulai dan 100% lalu lintas bergeser kembali ke armada biru.

## Prasyarat
<a name="deployment-guardrails-blue-green-all-at-once-prereqs"></a>

Sebelum menyiapkan penerapan dengan perpindahan lalu lintas sekaligus, Anda harus membuat CloudWatch alarm Amazon untuk menonton metrik dari titik akhir Anda. Jika ada alarm yang tersandung selama periode memanggang, lalu lintas kembali ke armada biru Anda. Untuk mempelajari cara mengatur CloudWatch alarm pada titik akhir, lihat halaman prasyarat. [Konfigurasi dan Pemantauan Auto-Rollback](deployment-guardrails-configuration.md) Untuk mempelajari lebih lanjut tentang CloudWatch alarm, lihat [Menggunakan CloudWatch alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) di * CloudWatch Panduan Pengguna Amazon*.

## Konfigurasikan Pergeseran Lalu Lintas Sekaligus
<a name="deployment-guardrails-blue-green-all-at-once-configure"></a>

Setelah Anda siap untuk penerapan dan telah menyiapkan CloudWatch alarm untuk titik akhir Anda, Anda dapat menggunakan SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API atau perintah [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) di untuk memulai penerapan. AWS Command Line Interface 

**Topics**
+ [Cara memperbarui titik akhir (API)](#deployment-guardrails-blue-green-all-at-once-configure-api-update)
+ [Cara memperbarui titik akhir dengan kebijakan pembaruan biru/hijau (API) yang ada](#deployment-guardrails-blue-green-all-at-once-configure-api-existing)
+ [Cara memperbarui titik akhir (CLI)](#deployment-guardrails-blue-green-all-at-once-configure-cli-update)

### Cara memperbarui titik akhir (API)
<a name="deployment-guardrails-blue-green-all-at-once-configure-api-update"></a>

Contoh berikut menunjukkan bagaimana Anda dapat memperbarui titik akhir Anda dengan pergeseran lalu lintas sekaligus menggunakan [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)di Amazon SageMaker API.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "ALL_AT_ONCE"
            },
            "TerminationWaitInSeconds": 600,
            "MaximumExecutionTimeoutInSeconds": 1800
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                },
            ]
        }
    }
)
```

Untuk mengonfigurasi opsi pemindahan lalu lintas sekaligus, lakukan hal berikut:
+ Untuk`EndpointName`, gunakan nama titik akhir yang ada yang ingin Anda perbarui.
+ Untuk`EndpointConfigName`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Di bawah `DeploymentConfig` dan `BlueGreenUpdatePolicy``TrafficRoutingConfiguration`, di, atur `Type` parameter ke`ALL_AT_ONCE`. Ini menentukan bahwa penyebaran menggunakan mode perpindahan lalu lintas sekaligus.
+ Untuk`TerminationWaitInSeconds`, gunakan`600`. Parameter ini memberi tahu SageMaker AI untuk menunggu jumlah waktu yang ditentukan (dalam detik) setelah armada hijau Anda sepenuhnya aktif sebelum menghentikan instance di armada biru. Dalam contoh ini, SageMaker AI menunggu selama 10 menit setelah periode pemanggangan terakhir sebelum menghentikan armada biru.
+ Untuk`MaximumExecutionTimeoutInSeconds`, gunakan`1800`. Parameter ini menetapkan jumlah waktu maksimum yang dapat dijalankan penerapan sebelum waktu habis. Pada contoh sebelumnya, penerapan Anda memiliki batas 30 menit untuk diselesaikan.
+ Di`AutoRollbackConfiguration`, di dalam `Alarms` bidang, Anda dapat menambahkan CloudWatch alarm berdasarkan nama. Buat satu `AlarmName: <your-cw-alarm>` entri untuk setiap alarm yang ingin Anda gunakan.

### Cara memperbarui titik akhir dengan kebijakan pembaruan biru/hijau (API) yang ada
<a name="deployment-guardrails-blue-green-all-at-once-configure-api-existing"></a>

Saat Anda menggunakan [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API untuk membuat titik akhir, Anda dapat menentukan konfigurasi penerapan yang akan digunakan kembali untuk pembaruan titik akhir di masa mendatang. Anda dapat menggunakan `DeploymentConfig` opsi yang sama seperti contoh UpdateEndpoint API sebelumnya. Tidak ada perubahan pada perilaku CreateEndpoint API. Menentukan konfigurasi penerapan tidak secara otomatis melakukan pembaruan biru/hijau di titik akhir Anda.

Opsi untuk menggunakan konfigurasi penerapan sebelumnya terjadi saat menggunakan [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API untuk memperbarui titik akhir Anda. Saat memperbarui titik akhir, Anda dapat menggunakan `RetainDeploymentConfig` opsi untuk menjaga konfigurasi penerapan yang Anda tentukan saat membuat titik akhir.

Saat memanggil [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API, atur `RetainDeploymentConfig` `True` untuk menjaga `DeploymentConfig` opsi dari konfigurasi titik akhir asli Anda.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### Cara memperbarui titik akhir (CLI)
<a name="deployment-guardrails-blue-green-all-at-once-configure-cli-update"></a>

[Jika Anda menggunakan AWS CLI, contoh berikut menunjukkan cara memulai penerapan biru/hijau sekaligus menggunakan perintah update-endpoint.](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html)

```
update-endpoint
--endpoint-name <your-endpoint-name> 
--endpoint-config-name <your-config-name> 
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "ALL_AT_ONCE"},
    "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

Untuk mengonfigurasi opsi pemindahan lalu lintas sekaligus, lakukan hal berikut:
+ Untuk`endpoint-name`, gunakan nama titik akhir yang ingin Anda perbarui.
+ Untuk`endpoint-config-name`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Untuk`deployment-config`, gunakan objek [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html)JSON.

**catatan**  
Jika Anda lebih suka menyimpan objek JSON Anda dalam sebuah file, lihat [Menghasilkan AWS CLI kerangka dan parameter input](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html) di *AWS CLI Panduan Pengguna*.

# Gunakan perpindahan lalu lintas kenari
<a name="deployment-guardrails-blue-green-canary"></a>

Dengan pergeseran lalu lintas kenari, Anda dapat menguji sebagian lalu lintas titik akhir Anda pada armada baru sementara armada lama melayani sisa lalu lintas. Langkah pengujian ini adalah pagar pembatas keselamatan yang memvalidasi fungsionalitas armada baru sebelum memindahkan semua lalu lintas Anda ke armada baru. Anda masih memiliki manfaat dari penyebaran biru/hijau, dan fitur kenari yang ditambahkan memungkinkan Anda memastikan bahwa armada baru (hijau) Anda dapat melayani inferensi sebelum membiarkannya menangani 100% lalu lintas.

Bagian dari armada hijau Anda yang menyala untuk menerima lalu lintas disebut kenari, dan Anda dapat memilih ukuran kenari ini. Perhatikan bahwa ukuran kenari harus kurang dari atau sama dengan 50% dari kapasitas armada baru. Setelah periode pemanggangan selesai dan tidak ada perjalanan CloudWatch alarm Amazon yang ditentukan sebelumnya, sisa lalu lintas bergeser dari armada lama (biru) ke armada hijau. Perpindahan lalu lintas kenari memberi Anda lebih banyak keamanan selama penerapan karena masalah apa pun dengan model yang diperbarui hanya memengaruhi kenari.

Diagram berikut menunjukkan bagaimana pergeseran lalu lintas kenari mengelola distribusi lalu lintas antara armada biru dan hijau.

![\[Lalu lintas kenari dua langkah yang sukses bergeser dari armada lama ke armada baru.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/deployment-guardrails-blue-green-canary.png)


Setelah SageMaker AI menyediakan armada hijau, SageMaker AI merutekan sebagian dari lalu lintas yang masuk (misalnya, 25%) ke kenari. Kemudian periode memanggang dimulai, di mana CloudWatch alarm Anda memantau kinerja armada hijau. Selama waktu ini, armada biru dan armada hijau sebagian aktif dan menerima lalu lintas. Jika ada alarm yang tersandung selama periode pemanggangan, maka SageMaker AI memulai rollback dan semua lalu lintas kembali ke armada biru. Jika tidak ada alarm yang tersandung, maka semua lalu lintas bergeser ke armada hijau dan ada periode pemanggangan terakhir. Jika periode pemanggangan terakhir selesai tanpa tersandung alarm, maka armada hijau melayani semua lalu lintas dan SageMaker AI menghentikan armada biru.

## Prasyarat
<a name="deployment-guardrails-blue-green-canary-prereqs"></a>

Sebelum menyiapkan penerapan dengan pemindahan lalu lintas kenari, Anda harus membuat CloudWatch alarm Amazon untuk memantau metrik dari titik akhir Anda. Alarm aktif selama periode pemanggangan, dan jika ada alarm yang tersandung, maka semua lalu lintas titik akhir kembali ke armada biru. Untuk mempelajari cara mengatur CloudWatch alarm pada titik akhir, lihat halaman prasyarat. [Konfigurasi dan Pemantauan Auto-Rollback](deployment-guardrails-configuration.md) Untuk mempelajari lebih lanjut tentang CloudWatch alarm, lihat [Menggunakan CloudWatch alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) di * CloudWatch Panduan Pengguna Amazon*.

## Konfigurasikan Pergeseran Lalu Lintas Canary
<a name="deployment-guardrails-blue-green-canary-configure"></a>

Setelah Anda siap untuk penerapan dan telah menyiapkan CloudWatch alarm Amazon untuk titik akhir Anda, Anda dapat menggunakan Amazon SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API atau perintah [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) di untuk memulai penerapan. AWS CLI 

**Topics**
+ [Cara memperbarui titik akhir (API)](#deployment-guardrails-blue-green-canary-configure-api-update)
+ [Cara memperbarui titik akhir dengan kebijakan pembaruan biru/hijau (API) yang ada](#deployment-guardrails-blue-green-canary-configure-api-existing)
+ [Cara memperbarui titik akhir (CLI)](#deployment-guardrails-blue-green-canary-configure-cli-update)

### Cara memperbarui titik akhir (API)
<a name="deployment-guardrails-blue-green-canary-configure-api-update"></a>

Contoh [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API berikut menunjukkan bagaimana Anda dapat memperbarui titik akhir dengan pergeseran lalu lintas kenari.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "CANARY",
                "CanarySize": {
                    "Type": "CAPACITY_PERCENT",
                    "Value": 30
                },
                "WaitIntervalInSeconds": 600
            },
            "TerminationWaitInSeconds": 600,
            "MaximumExecutionTimeoutInSeconds": 1800
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                }
            ]
        }
    }
)
```

Untuk mengonfigurasi opsi pemindahan lalu lintas kenari, lakukan hal berikut:
+ Untuk`EndpointName`, gunakan nama titik akhir yang ada yang ingin Anda perbarui.
+ Untuk`EndpointConfigName`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Di bawah `DeploymentConfig` dan `BlueGreenUpdatePolicy``TrafficRoutingConfiguration`, di, atur `Type` parameter ke`CANARY`. Ini menentukan bahwa penyebaran menggunakan perpindahan lalu lintas kenari.
+ Di `CanarySize` lapangan, Anda dapat mengubah ukuran kenari dengan memodifikasi `Type` dan `Value` parameter. Untuk`Type`, gunakan`CAPACITY_PERCENT`, artinya persentase armada hijau Anda yang ingin Anda gunakan sebagai kenari, dan kemudian atur `Value` ke`30`. Dalam contoh ini, Anda menggunakan 30% dari kapasitas armada hijau sebagai kenari. Perhatikan bahwa ukuran kenari harus sama dengan atau kurang dari 50% dari kapasitas armada hijau.
+ Untuk`WaitIntervalInSeconds`, gunakan`600`. Parameter memberitahu SageMaker AI untuk menunggu jumlah waktu yang ditentukan (dalam detik) antara setiap pergeseran interval. Interval ini adalah durasi periode memanggang kenari. Dalam contoh sebelumnya, SageMaker AI menunggu selama 10 menit setelah pergeseran kenari dan kemudian menyelesaikan pergeseran lalu lintas kedua dan terakhir.
+ Untuk`TerminationWaitInSeconds`, gunakan`600`. Parameter ini memberi tahu SageMaker AI untuk menunggu jumlah waktu yang ditentukan (dalam detik) setelah armada hijau Anda sepenuhnya aktif sebelum menghentikan instance di armada biru. Dalam contoh ini, SageMaker AI menunggu selama 10 menit setelah periode pemanggangan terakhir sebelum menghentikan armada biru.
+ Untuk`MaximumExecutionTimeoutInSeconds`, gunakan`1800`. Parameter ini menetapkan jumlah waktu maksimum yang dapat dijalankan penerapan sebelum waktu habis. Pada contoh sebelumnya, penerapan Anda memiliki batas 30 menit untuk diselesaikan.
+ Di`AutoRollbackConfiguration`, di dalam `Alarms` bidang, Anda dapat menambahkan CloudWatch alarm berdasarkan nama. Buat satu `AlarmName: <your-cw-alarm>` entri untuk setiap alarm yang ingin Anda gunakan.

### Cara memperbarui titik akhir dengan kebijakan pembaruan biru/hijau (API) yang ada
<a name="deployment-guardrails-blue-green-canary-configure-api-existing"></a>

Saat Anda menggunakan [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API untuk membuat titik akhir, Anda dapat secara opsional menentukan konfigurasi penerapan yang akan digunakan kembali untuk pembaruan titik akhir di masa mendatang. Anda dapat menggunakan `DeploymentConfig` opsi yang sama seperti contoh UpdateEndpoint API sebelumnya. Tidak ada perubahan pada perilaku CreateEndpoint API. Menentukan konfigurasi penerapan tidak secara otomatis melakukan pembaruan biru/hijau di titik akhir Anda.

Opsi untuk menggunakan konfigurasi penerapan sebelumnya terjadi saat menggunakan [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API untuk memperbarui titik akhir Anda. Saat memperbarui titik akhir, Anda dapat menggunakan `RetainDeploymentConfig` opsi untuk menjaga konfigurasi penerapan yang Anda tentukan saat membuat titik akhir.

Saat memanggil [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API, atur `RetainDeploymentConfig` `True` untuk menjaga `DeploymentConfig` opsi dari konfigurasi titik akhir asli Anda.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### Cara memperbarui titik akhir (CLI)
<a name="deployment-guardrails-blue-green-canary-configure-cli-update"></a>

[Jika Anda menggunakan AWS CLI, contoh berikut menunjukkan cara memulai penerapan kenari biru/hijau menggunakan perintah update-endpoint.](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html)

```
update-endpoint
--endpoint-name <your-endpoint-name>
--endpoint-config-name <your-config-name> 
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "CANARY",
    "CanarySize": {"Type": "CAPACITY_PERCENT", "Value": 30}, "WaitIntervalInSeconds": 600},
    "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

Untuk mengonfigurasi opsi pemindahan lalu lintas kenari, lakukan hal berikut:
+ Untuk`endpoint-name`, gunakan nama titik akhir yang ingin Anda perbarui.
+ Untuk`endpoint-config-name`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Untuk`deployment-config`, gunakan objek [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html)JSON.

**catatan**  
Jika Anda lebih suka menyimpan objek JSON Anda dalam sebuah file, lihat [Menghasilkan AWS CLI kerangka dan parameter input](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html) di *AWS CLI Panduan Pengguna*.

# Gunakan perpindahan lalu lintas linier
<a name="deployment-guardrails-blue-green-linear"></a>

Pergeseran lalu lintas linier memungkinkan Anda untuk secara bertahap mengalihkan lalu lintas dari armada lama Anda (armada biru) ke armada baru Anda (armada hijau). Dengan pergeseran lalu lintas linier, Anda dapat menggeser lalu lintas dalam beberapa langkah, meminimalkan kemungkinan gangguan pada titik akhir Anda. Opsi penyebaran biru/hijau ini memberi Anda kontrol paling terperinci atas pergeseran lalu lintas.

Anda dapat memilih jumlah instance atau persentase kapasitas armada hijau untuk diaktifkan selama setiap langkah. Setiap langkah linier seharusnya hanya antara 10-50% dari kapasitas armada hijau. Untuk setiap langkah, ada periode pemanggangan di mana CloudWatch alarm Amazon Anda yang telah ditentukan sebelumnya memantau metrik pada armada hijau. Setelah periode pemanggangan selesai dan tidak ada alarm, bagian aktif armada hijau Anda terus menerima lalu lintas dan langkah baru dimulai. Jika alarm tersandung selama salah satu periode memanggang, 100% lalu lintas titik akhir berputar kembali ke armada biru.

Diagram berikut menunjukkan bagaimana lalu lintas linier menggeser rute lalu lintas ke armada biru dan hijau.

![\[Pergeseran lalu lintas linier tiga langkah yang sukses dari armada lama ke armada baru.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/deployment-guardrails-blue-green-linear.png)


Setelah SageMaker AI menyediakan armada baru, bagian pertama dari armada hijau menyala dan menerima lalu lintas. SageMaker AI menonaktifkan porsi ukuran yang sama dari armada biru, dan periode pemanggangan dimulai. Jika ada alarm yang tersandung, semua lalu lintas titik akhir bergulir kembali ke armada biru. Jika periode memanggang selesai, maka langkah selanjutnya dimulai. Bagian lain dari armada hijau mengaktifkan dan menerima lalu lintas, bagian dari armada biru dinonaktifkan, dan periode pemanggangan lainnya dimulai. Proses yang sama berulang sampai armada biru dinonaktifkan sepenuhnya dan armada hijau sepenuhnya aktif dan menerima semua lalu lintas. Jika alarm berbunyi kapan saja, SageMaker AI menghentikan proses pergeseran dan 100% lalu lintas kembali ke armada biru.

## Prasyarat
<a name="deployment-guardrails-blue-green-linear-prereqs"></a>

Sebelum menyiapkan penerapan dengan pergeseran lalu lintas linier, Anda harus membuat CloudWatch alarm untuk memantau metrik dari titik akhir Anda. Alarm aktif selama periode pemanggangan, dan jika ada alarm yang tersandung, maka semua lalu lintas titik akhir kembali ke armada biru. Untuk mempelajari cara mengatur CloudWatch alarm pada titik akhir, lihat halaman prasyarat. [Konfigurasi dan Pemantauan Auto-Rollback](deployment-guardrails-configuration.md) Untuk mempelajari lebih lanjut tentang CloudWatch alarm, lihat [Menggunakan CloudWatch alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) di * CloudWatch Panduan Pengguna Amazon*.

## Konfigurasikan Pergeseran Lalu Lintas Linear
<a name="deployment-guardrails-blue-green-linear-configure"></a>

Setelah Anda siap untuk penerapan dan telah menyiapkan CloudWatch alarm untuk titik akhir Anda, Anda dapat menggunakan Amazon SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API atau perintah [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) di untuk memulai penerapan. AWS CLI 

**Topics**
+ [Cara memperbarui titik akhir (API)](#deployment-guardrails-blue-green-linear-configure-api-update)
+ [Cara memperbarui titik akhir dengan kebijakan pembaruan biru/hijau (API) yang ada](#deployment-guardrails-blue-green-linear-configure-api-existing)
+ [Cara memperbarui titik akhir (CLI)](#deployment-guardrails-blue-green-canary-configure-cli-update)

### Cara memperbarui titik akhir (API)
<a name="deployment-guardrails-blue-green-linear-configure-api-update"></a>

Contoh [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API berikut menunjukkan bagaimana Anda dapat memperbarui titik akhir dengan pergeseran lalu lintas linier.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "LINEAR",
                "LinearStepSize": {
                    "Type": "CAPACITY_PERCENT",
                    "Value": 20
                },
                "WaitIntervalInSeconds": 300
            },
            "TerminationWaitInSeconds": 300,
            "MaximumExecutionTimeoutInSeconds": 3600
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                }
            ]
        }
    }
)
```

Untuk mengonfigurasi opsi pemindahan lalu lintas linier, lakukan hal berikut:
+ Untuk`EndpointName`, gunakan nama titik akhir yang ada yang ingin Anda perbarui.
+ Untuk`EndpointConfigName`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Di bawah `DeploymentConfig` dan `BlueGreenUpdatePolicy``TrafficRoutingConfiguration`, di, atur `Type` parameter ke`LINEAR`. Ini menentukan bahwa penyebaran menggunakan pergeseran lalu lintas linier.
+ Di `LinearStepSize` lapangan, Anda dapat mengubah ukuran langkah dengan memodifikasi `Type` dan `Value` parameter. Untuk`Type`, gunakan`CAPACITY_PERCENT`, artinya persentase armada hijau Anda yang ingin Anda gunakan sebagai ukuran langkah, dan kemudian atur `Value` ke`20`. Dalam contoh ini, Anda mengaktifkan 20% dari kapasitas armada hijau untuk setiap langkah perpindahan lalu lintas. Perhatikan bahwa saat menyesuaikan ukuran langkah linier Anda, Anda hanya boleh menggunakan langkah yang 10-50% dari kapasitas armada hijau.
+ Untuk`WaitIntervalInSeconds`, gunakan`300`. Parameter memberitahu SageMaker AI untuk menunggu jumlah waktu yang ditentukan (dalam detik) antara setiap pergeseran lalu lintas. Interval ini adalah durasi periode pemanggangan antara setiap langkah linier. Dalam contoh sebelumnya, SageMaker AI menunggu selama 5 menit di antara setiap shift lalu lintas.
+ Untuk`TerminationWaitInSeconds`, gunakan`300`. Parameter ini memberi tahu SageMaker AI untuk menunggu jumlah waktu yang ditentukan (dalam detik) setelah armada hijau Anda sepenuhnya aktif sebelum menghentikan instance di armada biru. Dalam contoh ini, SageMaker AI menunggu selama 5 menit setelah periode pemanggangan terakhir sebelum menghentikan armada biru.
+ Untuk`MaximumExecutionTimeoutInSeconds`, gunakan`3600`. Parameter ini menetapkan jumlah waktu maksimum yang dapat dijalankan penerapan sebelum waktu habis. Pada contoh sebelumnya, penerapan Anda memiliki batas 1 jam untuk diselesaikan.
+ Di`AutoRollbackConfiguration`, di dalam `Alarms` bidang, Anda dapat menambahkan CloudWatch alarm berdasarkan nama. Buat satu `AlarmName: <your-cw-alarm>` entri untuk setiap alarm yang ingin Anda gunakan.

### Cara memperbarui titik akhir dengan kebijakan pembaruan biru/hijau (API) yang ada
<a name="deployment-guardrails-blue-green-linear-configure-api-existing"></a>

Saat Anda menggunakan [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API untuk membuat titik akhir, Anda dapat secara opsional menentukan konfigurasi penerapan yang akan digunakan kembali untuk pembaruan titik akhir di masa mendatang. Anda dapat menggunakan `DeploymentConfig` opsi yang sama seperti contoh UpdateEndpoint API sebelumnya. Tidak ada perubahan pada perilaku CreateEndpoint API. Menentukan konfigurasi penerapan tidak secara otomatis melakukan pembaruan biru/hijau di titik akhir Anda.

Opsi untuk menggunakan konfigurasi penerapan sebelumnya terjadi saat menggunakan [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API untuk memperbarui titik akhir Anda. Saat memperbarui titik akhir, Anda dapat menggunakan `RetainDeploymentConfig` opsi untuk menjaga konfigurasi penerapan yang Anda tentukan saat membuat titik akhir.

Saat memanggil [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API, atur `RetainDeploymentConfig` `True` untuk menjaga `DeploymentConfig` opsi dari konfigurasi titik akhir asli Anda.

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### Cara memperbarui titik akhir (CLI)
<a name="deployment-guardrails-blue-green-canary-configure-cli-update"></a>

[Jika Anda menggunakan AWS CLI, contoh berikut menunjukkan cara memulai penerapan linier biru/hijau menggunakan perintah update-endpoint.](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html)

```
update-endpoint
--endpoint-name <your-endpoint-name>
--endpoint-config-name <your-config-name> 
--deployment-config '{"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "LINEAR",
    "LinearStepSize": {"Type": "CAPACITY_PERCENT", "Value": 20}, "WaitIntervalInSeconds": 300},
    "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

Untuk mengonfigurasi opsi pemindahan lalu lintas linier, lakukan hal berikut:
+ Untuk`endpoint-name`, gunakan nama titik akhir yang ingin Anda perbarui.
+ Untuk`endpoint-config-name`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Untuk`deployment-config`, gunakan objek [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html)JSON.

**catatan**  
Jika Anda lebih suka menyimpan objek JSON Anda dalam sebuah file, lihat [Menghasilkan AWS CLI kerangka dan parameter input](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html) di *AWS CLI Panduan Pengguna*.

# Gunakan penerapan bergulir
<a name="deployment-guardrails-rolling"></a>

Saat memperbarui titik akhir, Anda dapat menentukan penerapan bergulir untuk secara bertahap mengalihkan lalu lintas dari armada lama ke armada baru. Anda dapat mengontrol ukuran langkah perpindahan lalu lintas, serta menentukan periode evaluasi untuk memantau instans baru untuk masalah sebelum menghentikan instance dari armada lama. Dengan penerapan bergulir, instance pada armada lama dibersihkan setelah setiap pergeseran lalu lintas ke armada baru, mengurangi jumlah instance tambahan yang diperlukan untuk memperbarui titik akhir Anda. Ini berguna terutama untuk contoh yang dipercepat yang banyak diminati.

Penerapan bergulir secara bertahap menggantikan penerapan versi model Anda sebelumnya dengan versi baru dengan memperbarui titik akhir Anda dalam ukuran batch yang dapat dikonfigurasi. Perilaku pergeseran lalu lintas dari penerapan bergulir mirip dengan [mode perpindahan lalu lintas linier](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green-linear.html) dalam blue/green penerapan, tetapi penerapan bergulir memberi Anda manfaat dari persyaratan kapasitas yang berkurang jika dibandingkan dengan penerapan. blue/green Dengan penerapan bergulir, lebih sedikit instans yang aktif pada satu waktu, dan Anda memiliki kontrol yang lebih terperinci atas berapa banyak instance yang ingin Anda perbarui di armada baru. Anda harus mempertimbangkan untuk menggunakan penerapan bergulir alih-alih blue/green penerapan jika Anda memiliki model besar atau titik akhir besar dengan banyak instance.

Daftar berikut menjelaskan fitur utama penerapan bergulir di Amazon SageMaker AI:
+ **Periode memanggang.**Periode pemanggangan adalah jumlah waktu yang ditetapkan untuk memantau armada baru sebelum melanjutkan ke tahap penyebaran berikutnya. Jika salah satu alarm yang telah ditentukan sebelumnya tersandung selama periode pemanggangan apa pun, maka semua lalu lintas titik akhir kembali ke armada lama. Periode memanggang membantu Anda membangun kepercayaan pada pembaruan Anda sebelum membuat pergeseran lalu lintas permanen.
+ **Ukuran batch bergulir.** Anda memiliki kontrol granular atas ukuran setiap batch untuk pergeseran lalu lintas, atau jumlah instance yang ingin Anda perbarui di setiap batch. Jumlah ini dapat berkisar antara 5-50% dari ukuran armada Anda. Anda dapat menentukan ukuran batch sebagai sejumlah instance atau sebagai persentase keseluruhan armada Anda.
+ **Rollback otomatis.**Anda dapat menentukan CloudWatch alarm Amazon yang digunakan SageMaker AI untuk memantau armada baru. Jika masalah dengan kode yang diperbarui tersandung salah satu alarm, SageMaker AI memulai pengembalian otomatis ke armada lama untuk menjaga ketersediaan, sehingga meminimalkan risiko.

**catatan**  
Jika titik akhir Anda menggunakan salah satu fitur yang tercantum di halaman [Pengecualian](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html), Anda tidak dapat menggunakan penerapan bergulir.

## Cara kerjanya
<a name="deployment-guardrails-rolling-how-it-works"></a>

Selama penyebaran bergulir, SageMaker AI menyediakan infrastruktur untuk mengalihkan lalu lintas dari armada lama ke armada baru tanpa harus menyediakan semua instance baru sekaligus. SageMaker AI menggunakan langkah-langkah berikut untuk mengalihkan lalu lintas:

1. SageMaker AI menyediakan batch pertama instance dalam armada baru.

1. Sebagian lalu lintas dialihkan dari instance lama ke batch pertama instance baru.

1. Setelah periode pemanggangan, jika tidak ada CloudWatch alarm Amazon yang tersandung, maka SageMaker AI membersihkan sejumlah contoh lama.

1. SageMaker AI terus menyediakan, menggeser, dan membersihkan instance dalam batch hingga penerapan selesai.

Jika alarm tersandung selama salah satu periode memanggang, lalu lintas digulung kembali ke armada lama dalam batch dengan ukuran yang Anda tentukan. Atau, Anda dapat menentukan penyebaran bergulir untuk menggeser 100% lalu lintas kembali ke armada lama jika alarm tersandung.

Diagram berikut menunjukkan perkembangan penerapan bergulir yang berhasil, seperti yang dijelaskan pada langkah-langkah sebelumnya.

![\[Langkah-langkah lalu lintas penyebaran bergulir berhasil bergeser dari yang lama ke armada baru.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/deployment-guardrails-rolling-diagram.png)


Untuk membuat penerapan bergulir, Anda hanya perlu menentukan konfigurasi penerapan yang Anda inginkan. Kemudian SageMaker AI menangani penyediaan instance baru, menghentikan instans lama, dan mengalihkan lalu lintas untuk Anda. Anda dapat membuat dan mengelola penyebaran Anda melalui [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)dan AWS Command Line Interface perintah yang ada.

## Prasyarat
<a name="deployment-guardrails-prereqs"></a>

Sebelum menyiapkan penerapan bergulir, Anda harus membuat CloudWatch alarm Amazon untuk menonton metrik dari titik akhir Anda. Jika ada alarm yang tersandung selama periode memanggang, maka lalu lintas mulai bergulir kembali ke armada lama Anda. [Untuk mempelajari cara mengatur CloudWatch alarm pada titik akhir, lihat halaman prasyarat Auto-Rollback Configuration and Monitoring.](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-configuration.html) Untuk mempelajari lebih lanjut tentang CloudWatch alarm, lihat [Menggunakan CloudWatch alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) di * CloudWatch Panduan Pengguna Amazon*.

Juga, tinjau halaman [Pengecualian](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) untuk memastikan bahwa titik akhir Anda memenuhi persyaratan untuk penerapan bergulir.

## Tentukan ukuran batch bergulir
<a name="deployment-guardrails-rolling-batch-size"></a>

Sebelum memperbarui titik akhir Anda, tentukan ukuran batch yang ingin Anda gunakan untuk memindahkan lalu lintas secara bertahap ke armada baru.

Untuk penerapan bergulir, Anda dapat menentukan ukuran batch yang 5-50% dari kapasitas armada Anda. Jika Anda memilih ukuran batch yang besar, penerapan selesai lebih cepat. Namun, perlu diingat bahwa titik akhir membutuhkan lebih banyak kapasitas saat memperbarui, kira-kira overhead ukuran batch. Jika Anda memilih ukuran batch yang lebih kecil, penerapan akan memakan waktu lebih lama, tetapi Anda menggunakan lebih sedikit kapasitas selama penerapan.

## Konfigurasikan penerapan bergulir
<a name="deployment-guardrails-rolling-configure"></a>

Setelah Anda siap untuk penerapan dan telah menyiapkan CloudWatch alarm untuk titik akhir Anda, Anda dapat menggunakan SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API atau perintah [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) di untuk memulai penerapan. AWS Command Line Interface 

**Cara memperbarui titik akhir**

Contoh berikut menunjukkan bagaimana Anda dapat memperbarui titik akhir Anda dengan penerapan bergulir menggunakan metode [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_endpoint.html) dari klien AI Boto3. SageMaker 

Untuk mengonfigurasi penerapan bergulir, gunakan contoh dan bidang berikut:
+ Untuk`EndpointName`, gunakan nama titik akhir yang ada yang ingin Anda perbarui.
+ Untuk`EndpointConfigName`, gunakan nama konfigurasi titik akhir yang ingin Anda gunakan.
+ Di `AutoRollbackConfiguration` objek, di dalam `Alarms` bidang, Anda dapat menambahkan CloudWatch alarm Anda dengan nama. Buat satu `AlarmName: <your-cw-alarm>` entri untuk setiap alarm yang ingin Anda gunakan.
+ Di bawah`DeploymentConfig`, untuk `RollingUpdatePolicy` objek, tentukan bidang berikut:
  + `MaximumExecutionTimeoutInSeconds`— Batas waktu untuk total penyebaran. Melebihi batas ini menyebabkan batas waktu. Nilai maksimum yang dapat Anda tentukan untuk bidang ini adalah 28800 detik, atau 8 jam.
  + `WaitIntervalInSeconds`— Lamanya periode pemanggangan, di mana SageMaker AI memantau alarm untuk setiap batch pada armada baru.
  + `MaximumBatchSize`— Tentukan `Type` batch yang ingin Anda gunakan (baik jumlah instance atau persentase keseluruhan armada Anda) dan`Value`, atau ukuran setiap batch.
  + `RollbackMaximumBatchSize`— Gunakan objek ini untuk menentukan strategi rollback jika alarm tersandung. Tentukan `Type` batch yang ingin Anda gunakan (baik jumlah instans atau persentase keseluruhan armada Anda)`Value`, dan, atau ukuran setiap batch. Jika Anda tidak menentukan bidang ini, atau jika Anda menetapkan nilainya menjadi 100% dari titik akhir Anda, maka SageMaker AI menggunakan strategi blue/green rollback dan memutar semua lalu lintas kembali ke armada lama saat alarm tersandung.

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                },
            ]
        },
        "RollingUpdatePolicy": { 
            "MaximumExecutionTimeoutInSeconds": number,
            "WaitIntervalInSeconds": number,
            "MaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
            "RollbackMaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
        }  
    }
)
```

Setelah memperbarui titik akhir Anda, Anda mungkin ingin memeriksa status penerapan bergulir Anda dan memeriksa kesehatan titik akhir Anda. Anda dapat meninjau status titik akhir Anda di konsol SageMaker AI, atau Anda dapat meninjau status titik akhir Anda dengan menggunakan API. [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)

Di `VariantStatus` objek yang dikembalikan oleh `DescribeEndpoint` API, `Status` bidang memberi tahu Anda penerapan atau status operasional titik akhir Anda saat ini. Untuk informasi lebih lanjut tentang kemungkinan status dan apa artinya, lihat [ProductionVariantStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantStatus.html).

Jika Anda mencoba melakukan penerapan bergulir dan status endpoint Anda adalah`UpdateRollbackFailed`, lihat bagian berikut untuk bantuan pemecahan masalah.

## Penanganan kegagalan
<a name="deployment-guardrails-rolling-failures"></a>

Jika penerapan bergulir Anda gagal dan rollback otomatis gagal juga, titik akhir Anda dapat dibiarkan dengan status. `UpdateRollbackFailed` Status ini berarti bahwa konfigurasi titik akhir yang berbeda diterapkan ke instance di belakang titik akhir Anda, dan titik akhir Anda dalam layanan dengan campuran konfigurasi titik akhir lama dan baru.

Anda dapat melakukan panggilan lain ke [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)API untuk mengembalikan titik akhir Anda ke status sehat. Tentukan konfigurasi titik akhir dan konfigurasi penerapan yang Anda inginkan (baik sebagai penerapan bergulir, penerapan biru/hijau, atau tidak keduanya) untuk memperbarui titik akhir Anda.

Anda dapat memanggil [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API untuk memeriksa kesehatan titik akhir Anda lagi, yang dikembalikan dalam `VariantStatus` objek sebagai `Status` bidang. Jika pembaruan Anda berhasil, titik akhir Anda `Status` kembali ke`InService`.

# Pengecualian
<a name="deployment-guardrails-exclusions"></a>

Saat melakukan blue/green or rolling deployment, your new endpoint configuration must have the same variant name as the old endpoint configuration. There are also feature-based exclusions that make your endpoint incompatible with deployment guardrails at this time. If your endpoint uses any of the following features, you cannot use deployment guardrails on your endpoint, and your endpoint will fall back to using a blue/green penyebaran dengan pergeseran lalu lintas sekaligus dan tidak ada periode pemanggangan akhir:
+ Kontainer Marketplace
+ Titik akhir yang menggunakan instance Inf1 (berbasis inferensia)

Jika Anda melakukan penerapan bergulir, ada pengecualian berbasis fitur tambahan:
+ Titik akhir inferensi tanpa server
+ Titik akhir inferensi multi-varian

# Tes bayangan
<a name="shadow-tests"></a>

 Dengan Amazon SageMaker AI, Anda dapat mengevaluasi perubahan apa pun pada infrastruktur penyajian model Anda dengan membandingkan kinerjanya dengan infrastruktur yang saat ini digunakan. Praktik ini dikenal sebagai pengujian bayangan. Pengujian bayangan dapat membantu Anda menangkap potensi kesalahan konfigurasi dan masalah kinerja sebelum berdampak pada pengguna akhir. Dengan SageMaker AI, Anda tidak perlu berinvestasi dalam membangun infrastruktur pengujian bayangan Anda, sehingga Anda dapat fokus pada pengembangan model. 

 Anda dapat menggunakan kemampuan ini untuk memvalidasi perubahan pada komponen apa pun dari varian produksi Anda, yaitu model, wadah, atau instance, tanpa dampak pengguna akhir. Ini berguna dalam situasi termasuk tetapi tidak terbatas pada hal-hal berikut: 
+  Anda sedang mempertimbangkan untuk mempromosikan model baru yang telah divalidasi secara offline ke produksi, tetapi ingin mengevaluasi metrik kinerja operasional seperti latensi dan tingkat kesalahan sebelum membuat keputusan ini. 
+  Anda sedang mempertimbangkan perubahan pada wadah infrastruktur penyajian Anda, seperti menambal kerentanan atau meningkatkan ke versi yang lebih baru, dan ingin menilai dampak dari perubahan ini sebelum promosi ke produksi. 
+  Anda sedang mempertimbangkan untuk mengubah instance HTML Anda dan ingin mengevaluasi kinerja instance baru dengan permintaan inferensi langsung. 

 Konsol SageMaker AI memberikan pengalaman terpandu untuk mengelola alur kerja pengujian bayangan. Anda dapat mengatur tes bayangan untuk durasi waktu yang telah ditentukan, memantau kemajuan pengujian melalui dasbor langsung, membersihkan setelah selesai, dan menindaklanjuti hasilnya. Pilih varian produksi yang ingin Anda uji, dan SageMaker AI secara otomatis menerapkan varian baru dalam mode bayangan dan merutekan salinan permintaan inferensi ke sana secara real time dalam titik akhir yang sama. Hanya tanggapan dari varian produksi yang dikembalikan ke aplikasi panggilan. Anda dapat memilih untuk membuang atau mencatat respons varian bayangan untuk perbandingan offline. Untuk informasi lebih lanjut tentang varian produksi dan bayangan, lihat[Validasi model dalam produksi](model-validation.md). 

 Lihat [Buat tes bayangan](shadow-tests-create.md) petunjuk tentang cara membuat tes bayangan. 

**catatan**  
 Fitur titik akhir tertentu dapat membuat titik akhir Anda tidak kompatibel dengan pengujian bayangan. Jika titik akhir Anda menggunakan salah satu fitur berikut, Anda tidak dapat menggunakan pengujian bayangan pada titik akhir Anda, dan permintaan Anda untuk menyiapkan pengujian bayangan akan menyebabkan kesalahan validasi.   
Inferensi tanpa server
Inferensi asinkron
Kontainer Marketplace
Titik akhir multi-kontainer
Titik akhir multi-model
Titik akhir yang menggunakan instance Inf1 (berbasis inferensia)

# Buat tes bayangan
<a name="shadow-tests-create"></a>

 Anda dapat membuat tes bayangan untuk membandingkan kinerja varian bayangan dengan varian produksi. Anda dapat menjalankan pengujian pada titik akhir yang ada yang menyajikan permintaan inferensi atau Anda dapat membuat titik akhir baru untuk menjalankan pengujian. 

 Untuk membuat tes bayangan, Anda perlu menentukan yang berikut: 
+  *Varian produksi* yang menerima dan menanggapi 100 persen permintaan inferensi yang masuk. 
+  *Varian bayangan* yang menerima persentase permintaan yang masuk, direplikasi dari varian produksi, tetapi tidak mengembalikan tanggapan apa pun. 

 Untuk setiap varian, Anda dapat menggunakan SageMaker AI untuk mengontrol model, jenis instans, dan jumlah instance. Anda dapat mengonfigurasi persentase permintaan masuk, yang dikenal sebagai persentase sampling lalu lintas, yang ingin direplikasi ke varian bayangan Anda. SageMaker AI mengelola replikasi permintaan ke varian bayangan Anda dan Anda dapat memodifikasi persentase pengambilan sampel lalu lintas saat pengujian dijadwalkan atau berjalan. Anda juga dapat mengaktifkan Pengambilan Data secara opsional untuk mencatat permintaan dan respons varian produksi dan bayangan Anda. 

**catatan**  
 SageMaker AI mendukung maksimal satu varian bayangan per titik akhir. Untuk titik akhir dengan varian bayangan, bisa ada maksimal satu varian produksi. 

 Anda dapat menjadwalkan tes untuk memulai kapan saja dan melanjutkan untuk durasi tertentu. Durasi default adalah 7 hari dan maksimum adalah 30 hari. Setelah pengujian selesai, titik akhir kembali ke keadaan sebelum memulai pengujian. Ini memastikan bahwa Anda tidak perlu membersihkan sumber daya secara manual setelah menyelesaikan tes. 

 Anda dapat memantau pengujian yang berjalan melalui dasbor di konsol SageMaker AI. Dasbor menyediakan perbandingan berdampingan metrik pemanggilan dan metrik instance antara varian produksi dan bayangan, bersama dengan tampilan tabel dengan statistik metrik yang relevan. Dasbor ini juga tersedia untuk pengujian yang diselesaikan. Setelah meninjau metrik, Anda dapat memilih untuk mempromosikan varian bayangan menjadi varian produksi baru atau mempertahankan varian produksi yang ada. Setelah Anda mempromosikan varian bayangan, itu merespons semua permintaan yang masuk. Untuk informasi selengkapnya, lihat [Promosikan varian bayangan](shadow-tests-complete.md#shadow-tests-complete-promote). 

 Prosedur berikut menjelaskan cara membuat tes bayangan melalui konsol SageMaker AI. Ada variasi dalam alur kerja tergantung pada apakah Anda ingin menggunakan titik akhir yang ada atau untuk membuat titik akhir baru untuk pengujian bayangan. 

**Topics**
+ [Prasyarat](#shadow-tests-create-prerequisites)
+ [Masukkan detail tes bayangan](#shadow-tests-create-console-shadow-test-details)
+ [Masukkan pengaturan uji bayangan](#shadow-tests-create-console-shadow-test-settings)

## Prasyarat
<a name="shadow-tests-create-prerequisites"></a>

 Sebelum membuat tes bayangan dengan konsol SageMaker AI, Anda harus memiliki model SageMaker AI yang siap digunakan. Untuk informasi selengkapnya tentang cara membuat model SageMaker AI, lihat[Terapkan model untuk inferensi waktu nyata](realtime-endpoints-deploy-models.md). 

 Anda dapat memulai dengan pengujian bayangan dengan titik akhir yang ada dengan varian produksi dan varian bayangan, titik akhir yang ada hanya dengan varian produksi, atau hanya model SageMaker AI yang ingin Anda bandingkan. Tes bayangan mendukung pembuatan titik akhir dan menambahkan varian sebelum pengujian Anda dimulai. 

**catatan**  
 Fitur titik akhir tertentu dapat membuat titik akhir Anda tidak kompatibel dengan pengujian bayangan. Jika titik akhir Anda menggunakan salah satu fitur berikut, Anda tidak dapat menggunakan pengujian bayangan pada titik akhir Anda, dan permintaan Anda untuk menyiapkan pengujian bayangan akan menyebabkan kesalahan validasi.   
Inferensi tanpa server
Inferensi asinkron
Kontainer Marketplace
Titik akhir multi-kontainer
Titik akhir multi-model
Titik akhir yang menggunakan instance Inf1 (berbasis inferensia)

## Masukkan detail tes bayangan
<a name="shadow-tests-create-console-shadow-test-details"></a>

 Untuk mulai membuat tes bayangan Anda, isi halaman **Enter shadow test details** dengan melakukan hal berikut: 

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

1.  Di panel navigasi kiri, pilih **Inferensi**, lalu pilih **Tes bayangan**. 

1.  Pilih **Buat tes bayangan**. 

1.  Di bawah **Nama**, masukkan nama untuk pengujian. 

1.  (Opsional) Di bawah **Deskripsi**, masukkan deskripsi untuk pengujian. 

1.  (Opsional) Tentukan **Tag** menggunakan pasangan **Kunci** dan **Nilai**. 

1.  Pilih **Berikutnya**. 

## Masukkan pengaturan uji bayangan
<a name="shadow-tests-create-console-shadow-test-settings"></a>

 Setelah mengisi halaman **Enter shadow test details**, isi halaman **Enter shadow test settings**. Jika Anda sudah memiliki titik akhir Inferensi SageMaker AI dan varian produksi, ikuti alur kerja **Use an existing endpoint**. Jika Anda belum memiliki endpoint, ikuti alur kerja **Create a new endpoint**. 

------
#### [ Use an existing endpoint ]

 Jika Anda ingin menggunakan endpoint yang ada untuk pengujian Anda, isi halaman **Enter shadow test settings** dengan melakukan hal berikut: 

1.  Pilih peran yang memiliki kebijakan `AmazonSageMakerFullAccess` IAM terlampir. 

1.  Pilih **Gunakan titik akhir yang ada**, lalu pilih salah satu titik akhir yang tersedia. 

1.  **(Opsional) Untuk mengenkripsi volume penyimpanan pada titik akhir Anda, pilih kunci KMS yang ada atau pilih **Masukkan ARN kunci KMS dari daftar tarik-turun di bawah Kunci** enkripsi.** Jika Anda memilih opsi kedua, bidang untuk memasukkan ARN kunci KMS muncul. Masukkan ARN kunci KMS di bidang itu. 

1.  Jika Anda memiliki beberapa varian produksi di belakang titik akhir itu, hapus yang tidak ingin Anda gunakan untuk pengujian. Anda dapat menghapus varian model dengan memilihnya dan kemudian memilih **Hapus**. 

1.  Jika Anda belum memiliki varian bayangan, tambahkan varian bayangan. Untuk menambahkan varian bayangan, lakukan hal berikut: 

   1.  Pilih **Tambahkan**. 

   1.  Pilih **varian Shadow**. 

   1.  Dalam kotak dialog **Add model**, pilih model yang ingin Anda gunakan untuk varian bayangan Anda. 

   1.  Pilih **Simpan**. 

1.  (Opsional) Pada langkah sebelumnya, varian bayangan ditambahkan dengan pengaturan default. Untuk mengubah pengaturan ini, pilih varian bayangan dan pilih **Edit**. Kotak dialog **Edit shadow varian** muncul. Untuk informasi selengkapnya tentang mengisi kotak dialog ini, lihat[Edit tes bayangan](shadow-tests-view-monitor-edit-individual.md). 

1.  Di bagian **Jadwal**, masukkan durasi tes dengan melakukan hal berikut: 

   1.  Pilih kotak di bawah **Durasi**. Kalender popup muncul. 

   1.  Pilih tanggal mulai dan berakhir dari kalender, atau masukkan tanggal mulai dan berakhir di bidang untuk **Tanggal mulai dan Tanggal** **akhir**, masing-masing. 

   1.  (Opsional) Untuk bidang **Waktu mulai** dan **Waktu akhir**, masukkan waktu mulai dan akhir, masing-masing, dalam format 24 jam. 

   1.  Pilih **Terapkan**. 

    Durasi minimum adalah 1 jam, dan durasi maksimum adalah 30 hari. 

1.  (Opsional) **Aktifkan pengambilan data** untuk menyimpan permintaan inferensi dan informasi respons dari titik akhir Anda ke bucket Amazon S3, lalu masukkan lokasi bucket Amazon S3. 

1.  Pilih **Buat tes bayangan**. 

------
#### [ Create a new endpoint ]

 Jika Anda tidak memiliki titik akhir yang ada, atau Anda ingin membuat titik akhir baru untuk pengujian Anda, isi halaman **Enter shadow test settings** dengan melakukan hal berikut: 

1.  Pilih peran yang memiliki kebijakan `AmazonSageMakerFullAccess` IAM terlampir. 

1.  Pilih **Buat titik akhir baru**. 

1.  Di bawah **Nama**, masukkan nama untuk titik akhir. 

1.  Tambahkan satu varian produksi dan satu varian bayangan ke titik akhir: 
   +  Untuk menambahkan varian produksi pilih **Tambah**, lalu pilih **varian Produksi**. Dalam kotak dialog **Add model**, pilih model yang ingin Anda gunakan untuk varian produksi Anda, lalu pilih **Simpan**. 
   +  Untuk menambahkan varian bayangan pilih **Tambah**, lalu pilih **varian Shadow**. Dalam kotak dialog **Tambah model**, pilih model yang ingin Anda gunakan untuk varian bayangan Anda, lalu pilih **Simpan**. 

1.  (Opsional) Pada langkah sebelumnya, varian bayangan ditambahkan dengan pengaturan default. Untuk mengubah pengaturan ini, pilih varian bayangan dan pilih **Edit**. Kotak dialog **Edit shadow varian** muncul. Untuk informasi selengkapnya tentang mengisi kotak dialog ini, lihat[Edit tes bayangan](shadow-tests-view-monitor-edit-individual.md). 

1.  Di bagian **Jadwal**, masukkan durasi tes dengan melakukan hal berikut: 

   1.  Pilih kotak di bawah **Durasi**. Kalender popup muncul. 

   1.  Pilih tanggal mulai dan berakhir dari kalender, atau masukkan tanggal mulai dan berakhir di bawah Tanggal **mulai dan Tanggal** **akhir**, masing-masing. 

   1.  (Opsional) Di bawah **Waktu mulai** dan **Waktu akhir**, masukkan waktu mulai dan akhir, masing-masing, dalam format 24 jam. 

   1.  Pilih **Terapkan**. 

    Durasi minimum adalah 1 jam, dan durasi maksimum adalah 30 hari. 

1.  (Opsional) **Aktifkan pengambilan data** untuk menyimpan permintaan inferensi dan informasi respons dari titik akhir Anda ke bucket Amazon S3, lalu masukkan lokasi bucket Amazon S3. 

1.  Pilih **Buat tes bayangan**. 

------

 Setelah menyelesaikan prosedur sebelumnya, Anda sekarang harus memiliki tes yang dijadwalkan untuk dimulai pada tanggal dan waktu mulai yang ditentukan. Anda dapat melihat kemajuan tes dari dasbor. Untuk informasi selengkapnya tentang melihat tes Anda dan tindakan yang dapat Anda lakukan, lihat[Cara melihat, memantau, dan mengedit tes bayangan](shadow-tests-view-monitor-edit.md). 

# Cara melihat, memantau, dan mengedit tes bayangan
<a name="shadow-tests-view-monitor-edit"></a>

 Anda dapat melihat status tes bayangan Anda, memantau kemajuan mereka dari dasbor, dan melakukan tindakan, seperti memulai atau menghentikan tes lebih awal atau menghapus tes. Topik berikut menunjukkan bagaimana Anda dapat melihat dan memodifikasi tes bayangan Anda menggunakan konsol SageMaker AI. 

**Topics**
+ [Lihat tes bayangan](shadow-tests-view-monitor-edit-list.md)
+ [Pantau tes bayangan](shadow-tests-view-monitor-edit-dashboard.md)
+ [Mulai tes bayangan lebih awal](shadow-tests-view-monitor-edit-start.md)
+ [Hapus tes bayangan](shadow-tests-view-monitor-edit-delete.md)
+ [Edit tes bayangan](shadow-tests-view-monitor-edit-individual.md)

# Lihat tes bayangan
<a name="shadow-tests-view-monitor-edit-list"></a>

 Anda dapat melihat status semua tes bayangan Anda di halaman **pengujian Shadow** di konsol SageMaker AI. 

 Untuk melihat pengujian Anda di konsol, lakukan hal berikut: 

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

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

1.  Pilih **tes Shadow** untuk melihat halaman yang mencantumkan semua tes bayangan Anda. Halaman akan terlihat seperti tangkapan layar berikut, dengan semua tes yang tercantum di bawah bagian **uji Bayangan**.   
![\[Daftar semua tes bayangan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/juxtaposer/shadow-test-landing-page.png)

 Anda dapat melihat status pengujian di konsol pada halaman **pengujian Bayangan** dengan memeriksa bidang **Status** untuk pengujian. 

 Berikut ini adalah status yang mungkin untuk tes: 
+  `Creating`— SageMaker AI sedang membuat tes Anda. 
+  `Created`— SageMaker AI telah selesai membuat tes Anda, dan itu akan dimulai pada waktu yang dijadwalkan. 
+  `Updating`— Saat Anda membuat perubahan pada pengujian Anda, pengujian Anda ditampilkan sebagai pembaruan. 
+  `Starting`— SageMaker AI memulai tes Anda. 
+  `Running`Tes Anda sedang berlangsung. 
+  `Stopping`— SageMaker AI menghentikan tes Anda. 
+  `Completed`Tes Anda telah selesai. 
+  `Cancelled`— Ketika Anda menyelesaikan tes Anda lebih awal, itu menunjukkan sebagai dibatalkan. 

# Pantau tes bayangan
<a name="shadow-tests-view-monitor-edit-dashboard"></a>

 Anda dapat melihat detail tes bayangan dan memantaunya saat sedang berlangsung atau setelah selesai. SageMaker AI menghadirkan dasbor langsung yang membandingkan metrik operasional seperti latensi model, dan tingkat kesalahan yang dikumpulkan, dari varian produksi dan bayangan. 

 Untuk melihat detail pengujian individual di konsol, lakukan hal berikut: 

1.  Pilih tes yang ingin Anda pantau dari bagian **uji Shadow** pada halaman **tes Shadow**. 

1.  **Dari daftar dropdown **Tindakan**, pilih Lihat.** Halaman ikhtisar dengan detail pengujian dan dasbor metrik muncul. 

Halaman ikhtisar memiliki tiga bagian berikut.

**Ringkasan**  
 Bagian ini merangkum kemajuan dan status tes. Ini juga menunjukkan statistik ringkasan metrik yang dipilih dari daftar dropdown **Select metric** di subbagian **Metrik**. Screenshot berikut menunjukkan bagian ini.   

![\[Bagian ringkasan dari halaman ikhtisar.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/juxtaposer/shadow-test-summary.png)

 Pada tangkapan layar sebelumnya, tab **Pengaturan**, dan **Detail** menunjukkan pengaturan yang Anda pilih, dan detail yang Anda masukkan saat membuat tes. 

**Analisis**  
 Bagian ini menampilkan dasbor metrik dengan grafik terpisah untuk metrik berikut:   
+ `Invocations`
+ `InvocationsPerInstance`
+ `ModelLatency`
+ `Invocation4XXErrors`
+ `Invocation5XXErrors`
+ `InvocationModelErrors`
+ `CPUUtilization`
+ `MemoryUtilization`
+ `DiskUtilization`
 Tiga metrik terakhir memantau penggunaan sumber daya runtime container model. Sisanya adalah CloudWatch metrik yang dapat Anda gunakan untuk menganalisis kinerja varian Anda. Secara umum, lebih sedikit kesalahan menunjukkan model yang lebih stabil. Latensi yang lebih rendah menunjukkan model yang lebih cepat atau infrastruktur yang lebih cepat. Untuk informasi selengkapnya tentang CloudWatch metrik, lihat[SageMaker Metrik pemanggilan titik akhir AI](monitoring-cloudwatch.md#cloudwatch-metrics-endpoint-invocation). Tangkapan layar berikut menunjukkan dasbor metrik.   

![\[Dasbor analisis metrik.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/juxtaposer/shadow-test-analysis.png)


**Lingkungan**  
 Bagian ini menunjukkan varian yang Anda bandingkan dalam pengujian. Jika Anda puas dengan kinerja varian bayangan, berdasarkan metrik yang disebutkan di atas, Anda dapat mempromosikan varian bayangan ke produksi, dengan memilih varian bayangan **Deploy**. Untuk detail selengkapnya tentang penerapan varian bayangan, lihat[Promosikan varian bayangan](shadow-tests-complete.md#shadow-tests-complete-promote). Anda juga dapat mengubah persentase sampling lalu lintas, dan melanjutkan pengujian, dengan memilih **Edit lalu lintas**. Untuk detail selengkapnya tentang mengedit varian bayangan, lihat[Edit tes bayangan](shadow-tests-view-monitor-edit-individual.md). Screenshot berikut menunjukkan bagian ini.   

![\[Bagian lingkungan dari halaman ikhtisar.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/juxtaposer/shadow-test-environment.png)


# Mulai tes bayangan lebih awal
<a name="shadow-tests-view-monitor-edit-start"></a>

 Anda dapat memulai tes Anda sebelum waktu mulai yang dijadwalkan. Jika durasi pengujian baru melebihi 30 hari, SageMaker AI secara otomatis menetapkan akhir tes menjadi 30 hari setelah waktu mulai yang baru. Tindakan ini segera memulai tes. Jika Anda ingin mengubah waktu mulai atau akhir tes, lihat[Edit tes bayangan](shadow-tests-view-monitor-edit-individual.md). 

 Untuk segera memulai pengujian Anda, sebelum waktu mulai yang dijadwalkan, melalui konsol, lakukan hal berikut: 

1.  Pilih tes yang ingin Anda mulai segera dari bagian **tes Shadow** pada halaman **tes Shadow**. 

1.  **Dari daftar dropdown **Tindakan**, pilih Mulai.** **Tes bayangan Mulai?** kotak dialog muncul. 

1.  Pilih **Mulai sekarang**. 

# Hapus tes bayangan
<a name="shadow-tests-view-monitor-edit-delete"></a>

 Anda dapat menghapus tes yang tidak lagi Anda butuhkan. Menghapus pengujian hanya akan menghapus metadata pengujian dan bukan titik akhir, varian, atau data yang diambil di Amazon S3. Jika Anda ingin titik akhir Anda berhenti berjalan, Anda harus menghapus titik akhir Anda. Untuk informasi selengkapnya tentang menghapus titik akhir, lihat [Hapus Titik Akhir dan Sumber Daya](realtime-endpoints-delete-resources.md) 

 Untuk menghapus tes melalui konsol, lakukan hal berikut: 

1.  Pilih tes yang ingin Anda hapus dari bagian **uji Shadow** pada halaman **tes Shadow**. 

1.  **Dari daftar dropdown **Tindakan**, pilih Hapus.** Kotak dialog **Delete shadow test** muncul. 

1.  Dalam **Untuk mengonfirmasi penghapusan, ketik *hapus* di bidang.** kotak teks, masukkan**delete**. 

1.  Pilih **Hapus**. 

# Edit tes bayangan
<a name="shadow-tests-view-monitor-edit-individual"></a>

 Anda dapat memodifikasi tes terjadwal dan dalam proses. Sebelum pengujian dimulai, Anda dapat mengubah deskripsi, konfigurasi varian bayangan, tanggal mulai, dan tanggal akhir pengujian. Anda juga dapat mengaktifkan atau mematikan pengambilan data. 

 Setelah pengujian dimulai, Anda hanya dapat mengubah deskripsi, persentase sampling lalu lintas untuk varian bayangan, dan tanggal akhir. 

 Untuk mengedit detail pengujian Anda melalui konsol, lakukan hal berikut: 

1.  Pilih tes yang ingin Anda edit dari bagian **tes Shadow** pada halaman **tes Shadow**. 

1.  **Dari daftar dropdown **Tindakan**, pilih Edit.** Halaman **detail tes Enter shadow** muncul. 

1.  (Opsional) Di bawah **Deskripsi**, masukkan deskripsi pengujian Anda. 

1.  Pilih **Berikutnya**. Halaman **pengaturan uji Enter shadow** muncul. 

1.  (Opsional) Untuk mengedit varian bayangan Anda, lakukan hal berikut: 

   1.  Pilih varian bayangan dan pilih **Edit**. Kotak dialog **Edit shadow varian** muncul. Jika pengujian Anda sudah dimulai, maka Anda hanya dapat mengubah persentase sampling lalu lintas. 

   1.  (Opsional) Di bawah **Nama**, masukkan nama baru untuk mengganti nama lama. 

   1.  (Opsional) Di bawah **sampel Lalu Lintas**, masukkan persentase sampling lalu lintas baru untuk menggantikan persentase sampling lalu lintas lama. 

   1.  (Opsional) Di bawah **Jenis instans**, pilih jenis instance baru dari daftar dropdown. 

   1.  (Opsional) Di bawah **Jumlah instans**, masukkan hitungan instans baru untuk menggantikan jumlah instans lama. 

   1.  Pilih **Terapkan**. 

    Anda tidak dapat mengubah model dalam varian bayangan Anda menggunakan prosedur di atas. Jika Anda ingin mengubah model, pertama-tama hapus varian bayangan dengan memilihnya dan memilih **Hapus**. Kemudian tambahkan varian bayangan baru. 

1.  (Opsional) Untuk mengedit durasi tes, lakukan hal berikut: 

   1.  Pilih kotak di bawah **Durasi** di bagian **Jadwal**. Kalender popup muncul. 

   1.  Jika tes Anda belum dimulai, Anda dapat mengubah tanggal mulai dan berakhir. Pilih tanggal mulai dan akhir yang baru dari kalender, atau masukkan tanggal mulai dan akhir yang baru di bawah Tanggal **mulai dan Tanggal** **akhir**, masing-masing. 

       Jika tes Anda sudah dimulai, Anda hanya dapat mengubah tanggal akhir. Masukkan tanggal akhir baru di bawah **Tanggal akhir**. 

   1.  (Opsional) Jika tes Anda belum dimulai, Anda dapat mengubah waktu mulai dan akhir. Masukkan waktu mulai dan akhir yang baru di bawah **Waktu mulai**, dan **Waktu akhir**, masing-masing, dalam format 24 jam. 

       Jika tes Anda sudah dimulai, Anda hanya dapat mengubah waktu akhir. Masukkan waktu akhir baru di bawah **Waktu akhir**, dalam format 24 jam. 

   1.  Pilih **Terapkan**. 

1.  (Opsional) Aktifkan atau matikan **Aktifkan pengambilan data**. 

1.  Pilih **Perbarui tes bayangan**. 

# Selesaikan tes bayangan
<a name="shadow-tests-complete"></a>

 Tes Anda secara otomatis selesai pada akhir durasi yang dijadwalkan, atau Anda dapat menghentikan tes yang sedang berlangsung lebih awal. Setelah pengujian Anda selesai, status pengujian di bagian **Tes bayangan** di halaman **pengujian Bayangan** ditampilkan sebagai **Selesai**. Kemudian Anda dapat meninjau dan menganalisis metrik akhir pengujian Anda. 

 Anda dapat menggunakan dasbor metrik untuk memutuskan apakah akan mempromosikan varian bayangan ke produksi. Untuk informasi selengkapnya tentang menganalisis dasbor metrik pengujian Anda, lihat[Pantau tes bayangan](shadow-tests-view-monitor-edit-dashboard.md). 

 Untuk petunjuk tentang cara menyelesaikan tes Anda sebelum akhir waktu penyelesaian yang dijadwalkan, lihat[Selesaikan tes bayangan lebih awal](#shadow-tests-complete-early). 

 Untuk petunjuk tentang mempromosikan varian bayangan Anda ke produksi, lihat[Promosikan varian bayangan](#shadow-tests-complete-promote). 

## Selesaikan tes bayangan lebih awal
<a name="shadow-tests-complete-early"></a>

 Salah satu alasan Anda mungkin ingin menyelesaikan tes bayangan yang sedang berlangsung adalah jika Anda telah memutuskan bahwa metrik untuk varian bayangan Anda terlihat bagus dan Anda ingin mempromosikannya ke produksi. Anda mungkin juga memutuskan untuk menyelesaikan tes jika satu atau lebih varian tidak berkinerja baik. 

 Untuk menyelesaikan tes Anda sebelum tanggal akhir yang dijadwalkan, lakukan hal berikut: 

1.  Pilih tes yang ingin Anda tandai selesai dari bagian **Tes bayangan** **di halaman tes Bayangan**. 

1.  Dari daftar dropdown **Tindakan**, pilih **Lengkap**, dan kotak dialog **Uji bayangan lengkap** muncul. 

1.  Di kotak dialog, pilih salah satu opsi berikut: 
   + **Ya, gunakan varian bayangan**
   + **Tidak, hapus varian bayangan**

1.  (Opsional) Di kotak teks **Komentar**, masukkan alasan Anda untuk menyelesaikan tes sebelum waktu akhir yang dijadwalkan. 

1. 

   1.  Jika Anda memutuskan untuk menerapkan varian bayangan, pilih **Lengkap dan lanjutkan untuk menerapkan**. Halaman **varian bayangan Deploy** muncul. Untuk petunjuk tentang cara mengisi halaman ini, lihat[Promosikan varian bayangan](#shadow-tests-complete-promote). 

   1.  Jika Anda memutuskan untuk menghapus varian bayangan, pilih **Konfirmasi**. 

## Promosikan varian bayangan
<a name="shadow-tests-complete-promote"></a>

 Jika Anda telah memutuskan bahwa Anda ingin mengganti varian produksi Anda dengan varian bayangan Anda, Anda dapat memperbarui titik akhir dan mempromosikan varian bayangan Anda untuk menanggapi permintaan inferensi. Ini menghapus varian produksi Anda saat ini dari produksi dan menggantinya dengan varian bayangan Anda. 

 Jika tes bayangan Anda masih dalam proses, Anda harus terlebih dahulu menyelesaikan tes Anda. Untuk menyelesaikan tes bayangan Anda sebelum akhir yang dijadwalkan, ikuti instruksi [Selesaikan tes bayangan lebih awal](#shadow-tests-complete-early) sebelum melanjutkan dengan bagian ini. 

 Saat Anda mempromosikan varian bayangan ke produksi, Anda memiliki opsi berikut untuk jumlah instance varian bayangan. 
+  Anda dapat mempertahankan jumlah dan jenis instans dari varian produksi. Jika Anda memilih opsi ini, maka varian bayangan Anda diluncurkan dalam produksi dengan jumlah instans saat ini, memastikan bahwa model Anda dapat terus memproses lalu lintas permintaan pada skala yang sama. 
+  Anda dapat mempertahankan jumlah instans dan jenis varian bayangan Anda. Jika Anda ingin menggunakan opsi ini, kami sarankan Anda menguji bayangan dengan pengambilan sampel lalu lintas 100 persen untuk memastikan bahwa varian bayangan dapat memproses lalu lintas permintaan pada skala saat ini. 
+  Anda dapat menggunakan nilai kustom untuk jumlah dan jenis instance. Jika Anda ingin menggunakan opsi ini, kami sarankan Anda menguji bayangan dengan pengambilan sampel lalu lintas 100 persen untuk memastikan bahwa varian bayangan dapat memproses lalu lintas permintaan pada skala saat ini. 

 Kecuali Anda memvalidasi jenis atau hitungan instans atau kedua varian bayangan, kami sangat menyarankan agar Anda mempertahankan jumlah dan jenis instance dari varian produksi saat mempromosikan varian bayangan Anda. 

 Untuk mempromosikan varian bayangan Anda, lakukan hal berikut: 

1.  Jika tes Anda telah selesai, lakukan hal berikut: 

   1.  Pilih tes dari bagian **uji Shadow** pada halaman **tes Shadow**. 

   1.  **Dari daftar dropdown **Tindakan**, pilih Lihat.** Dasbor muncul. 

   1.  Pilih **Menyebarkan varian bayangan** di bagian **Lingkungan**. Halaman **varian bayangan Deploy** muncul. 

    Jika tes Anda belum selesai, pastikan [Selesaikan tes bayangan lebih awal](#shadow-tests-complete-early) untuk menyelesaikannya. 

1.  Di bagian **Pengaturan varian**, pilih salah satu opsi berikut: 
   + **Pertahankan pengaturan produksi**
   + **Pertahankan pengaturan bayangan**
   + **Pengaturan contoh kustom**

    Jika Anda memilih **pengaturan instans kustom**, lakukan hal berikut: 

   1.  Pilih jenis instance dari daftar dropdown **tipe Instance**. 

   1.  Di bawah **hitungan Instance**, masukkan jumlah instance. 

1.  Di **Enter 'deploy' untuk mengonfirmasi kotak teks penyebaran**, masukkan. **deploy** 

1.  Pilih **Menyebarkan varian bayangan**. 

 Titik akhir Inferensi SageMaker AI Anda sekarang menggunakan varian bayangan sebagai varian produksi Anda, dan varian produksi Anda telah dihapus dari titik akhir. 

# Praktik terbaik
<a name="shadow-tests-best-practices"></a>

 Saat membuat eksperimen inferensi, ingatlah informasi berikut: 
+  **Persentase sampling lalu lintas** — Pengambilan sampel 100 persen dari permintaan inferensi memungkinkan Anda memvalidasi bahwa varian bayangan Anda dapat menangani lalu lintas produksi saat dipromosikan. Anda dapat memulai dengan persentase sampling lalu lintas yang lebih rendah dan dial up saat Anda mendapatkan kepercayaan pada varian Anda, tetapi praktik terbaik adalah memastikan bahwa Anda telah meningkatkan lalu lintas hingga 100 persen sebelum promosi. 
+  **Jenis instans** — Kecuali Anda menggunakan varian bayangan untuk mengevaluasi jenis atau ukuran instans alternatif, sebaiknya gunakan jenis, ukuran, dan hitungan instans yang sama sehingga Anda dapat yakin bahwa varian bayangan Anda dapat menangani volume permintaan inferensi setelah Anda mempromosikannya. 
+  **Penskalaan otomatis** — Untuk memastikan bahwa varian bayangan Anda dapat merespons lonjakan jumlah permintaan inferensi atau perubahan pola permintaan inferensi, kami sangat menyarankan Anda mengonfigurasi penskalaan otomatis pada varian bayangan Anda. Untuk mempelajari cara mengonfigurasi penskalaan otomatis, lihat. [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md) Jika Anda telah mengonfigurasi penskalaan otomatis, Anda juga dapat memvalidasi perubahan pada kebijakan penskalaan otomatis tanpa menimbulkan dampak bagi pengguna. 
+  **Pemantauan metrik** — Setelah Anda memulai eksperimen bayangan dan memiliki pemanggilan yang memadai, pantau dasbor metrik untuk memastikan bahwa metrik seperti latensi dan tingkat kesalahan berada dalam batas yang dapat diterima. Ini membantu Anda menangkap kesalahan konfigurasi lebih awal dan mengambil tindakan korektif. Untuk informasi tentang cara memantau metrik eksperimen inferensi yang sedang berlangsung, lihat. [Cara melihat, memantau, dan mengedit tes bayangan](shadow-tests-view-monitor-edit.md) 

# Akses kontainer melalui SSM
<a name="ssm-access"></a>

 Amazon SageMaker AI memungkinkan Anda terhubung dengan aman ke container Docker tempat model Anda digunakan untuk Inference menggunakan AWS Systems Manager (SSM). Ini memberi Anda akses tingkat shell ke wadah sehingga Anda dapat men-debug proses yang berjalan di dalam wadah dan mencatat perintah dan tanggapan dengan Amazon CloudWatch. Anda juga dapat mengatur AWS PrivateLink koneksi ke instance ML yang meng-host kontainer Anda untuk mengakses kontainer melalui SSM secara pribadi. 

**Awas**  
 Mengaktifkan akses SSM dapat memengaruhi kinerja titik akhir Anda. Kami merekomendasikan penggunaan fitur ini dengan titik akhir dev atau pengujian Anda dan bukan dengan titik akhir dalam produksi. Selain itu, SageMaker AI secara otomatis menerapkan patch keamanan, dan mengganti atau menghentikan instans titik akhir yang salah dalam 10 menit. Namun untuk titik akhir dengan varian produksi yang diaktifkan SSM, SageMaker AI menunda penambalan keamanan dan mengganti atau menghentikan instans titik akhir yang salah dalam sehari, untuk memungkinkan Anda melakukan debug. 

 Bagian berikut merinci bagaimana Anda dapat menggunakan fitur ini. 

## Daftar yang diizinkan
<a name="ssm-access-allowlist"></a>

 Anda harus menghubungi dukungan pelanggan, dan memasukkan akun Anda ke daftar yang diizinkan, untuk menggunakan fitur ini. Anda tidak dapat membuat titik akhir dengan akses SSM diaktifkan, jika akun Anda tidak diizinkan terdaftar untuk akses ini. 

## Aktifkan akses SSM
<a name="ssm-access-enable"></a>

 Untuk mengaktifkan akses SSM untuk kontainer yang ada pada titik akhir, perbarui titik akhir dengan konfigurasi titik akhir baru, dengan `EnableSSMAccess` parameter disetel ke `true` Contoh berikut menyediakan konfigurasi titik akhir sampel. 

```
{
    "EndpointConfigName": "endpoint-config-name",
    "ProductionVariants": [
        {
            "InitialInstanceCount": 1,
            "InitialVariantWeight": 1.0,
            "InstanceType": "ml.t2.medium",
            "ModelName": model-name,
            "VariantName": variant-name,
            "EnableSSMAccess": true,
        },
    ]
}
```

 [Untuk informasi selengkapnya tentang mengaktifkan akses SSM, lihat Mengaktifkan. SSMAccess](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html#API_EnableSSMAccess) 

## Konfigurasi IAM
<a name="ssm-access-iam"></a>

### Izin IAM titik akhir
<a name="ssm-access-iam-endpoint"></a>

 Jika Anda telah mengaktifkan akses SSM untuk instans titik akhir, SageMaker AI memulai dan mengelola [agen SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) saat memulai instance titik akhir. Untuk memungkinkan agen SSM berkomunikasi dengan layanan SSM, tambahkan kebijakan berikut ke peran eksekusi yang dijalankan endpoint. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"    
        }
    ]
 }
```

------

### Izin IAM pengguna
<a name="ssm-access-iam-user"></a>

 Tambahkan kebijakan berikut untuk memberikan izin sesi SSM pengguna IAM untuk terhubung ke target SSM. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

 Anda dapat membatasi titik akhir yang dapat dihubungkan oleh pengguna IAM, dengan kebijakan berikut. Ganti *italicized placeholder text* dengan informasi Anda sendiri. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	  
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": "arn:aws:sagemaker:us-east-2:111122223333:endpoint/endpoint-name"    
        }
    ]
}
```

------

## Akses SSM dengan AWS PrivateLink
<a name="ssm-access-privatelink"></a>

 Jika endpoint Anda berjalan dalam virtual private cloud (VPC) yang tidak terhubung ke internet publik, Anda dapat AWS PrivateLink menggunakannya untuk mengaktifkan SSM. AWS PrivateLink membatasi semua lalu lintas jaringan antara instans titik akhir Anda, SSM, dan Amazon EC2 ke jaringan Amazon. Untuk informasi selengkapnya tentang cara mengatur akses SSM AWS PrivateLink, lihat [Menyiapkan titik akhir VPC untuk](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html) Pengelola Sesi. 

## Logging dengan Amazon CloudWatch Logs
<a name="ssm-access-logging"></a>

 Untuk titik akhir yang diaktifkan akses SSM, Anda dapat mencatat kesalahan dari agen SSM dengan Amazon Logs. CloudWatch Untuk informasi selengkapnya tentang cara mencatat kesalahan dengan CloudWatch Log, lihat [Aktivitas sesi logging](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging.html). Log tersedia di aliran log SSM,`variant-name/ec2-instance-id/ssm`, di bawah grup log titik akhir. `/aws/sagemaker/endpoints/endpoint-name` Untuk informasi selengkapnya tentang cara melihat log, lihat [Melihat data log yang dikirim ke CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData). 

 Varian produksi di belakang titik akhir Anda dapat memiliki beberapa wadah model. Log untuk setiap wadah model dicatat dalam aliran log. Setiap log didahului oleh`[sagemaker ssm logs][container-name]`, di `container-name` mana nama yang Anda berikan ke wadah, atau nama default, seperti`container_0`, dan. `container_1` 

## Mengakses wadah model
<a name="ssm-access-container"></a>

 Untuk mengakses wadah model pada instance endpoint Anda, Anda memerlukan ID targetnya. ID target ada dalam salah satu format berikut: 
+  `sagemaker-endpoint:endpoint-name_variant-name_ec2-instance-id`untuk wadah pada titik akhir kontainer tunggal 
+  `sagemaker-endpoint:endpoint-name_variant-name_ec2-instance-id_container-name`untuk wadah pada titik akhir multi-kontainer 

 Contoh berikut menunjukkan bagaimana Anda dapat menggunakan AWS CLI untuk mengakses wadah model menggunakan ID target. 

```
aws ssm start-session --target sagemaker-endpoint:prod-image-classifier_variant1_i-003a121c1b21a90a9_container_1
```

 Jika Anda mengaktifkan logging, seperti yang disebutkan di[Logging dengan Amazon CloudWatch Logs](#ssm-access-logging), Anda dapat menemukan target IDs untuk semua kontainer yang terdaftar di awal aliran log SSM. 

**catatan**  
 Anda tidak dapat terhubung ke wadah algoritma 1P atau wadah model yang diperoleh dari SageMaker AI MarketPlace dengan SSM. Namun Anda dapat terhubung ke wadah pembelajaran mendalam (DLCs) yang disediakan oleh AWS atau wadah khusus apa pun yang Anda miliki. 
 Jika Anda telah mengaktifkan isolasi jaringan untuk wadah model yang mencegahnya melakukan panggilan jaringan keluar, Anda tidak dapat memulai sesi SSM untuk wadah tersebut. 
 Anda hanya dapat mengakses satu kontainer dari satu sesi SSM. Untuk mengakses wadah lain, meskipun berada di belakang titik akhir yang sama, mulailah sesi SSM baru dengan ID target titik akhir tersebut. 

# Server model untuk penerapan model dengan Amazon AI SageMaker
<a name="deploy-model-frameworks"></a>

Anda dapat menggunakan server model populer, seperti TorchServe, DJL Serving, dan Triton Inference Server, untuk menyebarkan model Anda di AI. SageMaker Topik berikut menjelaskan caranya.

**Topics**
+ [Menyebarkan model dengan TorchServe](deploy-models-frameworks-torchserve.md)
+ [Menyebarkan model dengan DJL Serving](deploy-models-frameworks-djl-serving.md)
+ [Penerapan model dengan Triton Inference Server](deploy-models-frameworks-triton.md)

# Menyebarkan model dengan TorchServe
<a name="deploy-models-frameworks-torchserve"></a>

TorchServe adalah server model yang direkomendasikan untuk PyTorch, sudah diinstal sebelumnya di AWS PyTorch Deep Learning Container (DLC). Alat canggih ini menawarkan pelanggan pengalaman yang konsisten dan ramah pengguna, memberikan kinerja tinggi dalam menerapkan beberapa PyTorch model di berbagai AWS instance, termasuk CPU, GPU, Neuron, dan Graviton, terlepas dari ukuran model atau distribusinya.

TorchServe mendukung beragam fitur canggih, termasuk batching dinamis, microbatching, A/B pengujian model, streaming, obor XLA, TensorRT, ONNX dan IPEX. Selain itu, ia dengan mulus mengintegrasikan PyTorch solusi model besar, PiPPy, memungkinkan penanganan model besar yang efisien. Selain itu, TorchServe memperluas dukungannya ke perpustakaan open-source populer seperti DeepSpeed, Accelerate, Fast Transformers, dan banyak lagi, memperluas kemampuannya lebih jauh. Dengan TorchServe, AWS pengguna dapat dengan percaya diri menerapkan dan melayani PyTorch model mereka, memanfaatkan keserbagunaan dan kinerja yang dioptimalkan di berbagai konfigurasi perangkat keras dan jenis model. Untuk informasi lebih rinci, Anda dapat merujuk ke [PyTorchdokumentasi](https://pytorch.org/serve/) dan [TorchServeseterusnya GitHub](https://github.com/pytorch/serve).

Tabel berikut mencantumkan yang AWS PyTorch DLCs didukung oleh TorchServe.


| Tipe instans | SageMaker Tautan AI PyTorch DLC | 
| --- | --- | 
| CPU dan GPU | [SageMaker PyTorch Kontainer AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) | 
| Neuron | [PyTorch Wadah neuron](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#neuron-containers) | 
| Graviton | [SageMaker Wadah AI PyTorch Graviton](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-graviton-containers-sm-support-only) | 

Bagian berikut menjelaskan pengaturan untuk membangun dan menguji PyTorch DLCs di Amazon SageMaker AI.

## Memulai
<a name="deploy-models-frameworks-torchserve-prereqs"></a>

Untuk memulai, pastikan Anda memiliki prasyarat berikut:

1. Pastikan Anda memiliki akses ke AWS akun. Siapkan lingkungan Anda sehingga AWS CLI dapat mengakses akun Anda melalui pengguna AWS IAM atau peran IAM. Kami merekomendasikan menggunakan peran IAM. Untuk tujuan pengujian di akun pribadi Anda, Anda dapat melampirkan kebijakan izin terkelola berikut ke peran IAM:
   + [Amazon EC2 ContainerRegistryFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess)
   + [Amazon EC2 FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2FullAccess)
   + [AWS ServiceRoleForAmazonEKSNodegroup](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSServiceRoleForAmazonEKSNodegroup)
   + [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)
   + [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonS3FullAccess)

1. Konfigurasikan dependensi Anda secara lokal, seperti yang ditunjukkan pada contoh berikut:

   ```
   from datetime import datetime
       import os
       import json
       import logging
       import time
       
       # External Dependencies:
       import boto3
       from botocore.exceptions import ClientError
       import sagemaker
       
       sess = boto3.Session()
       sm = sess.client("sagemaker")
       region = sess.region_name
       account = boto3.client("sts").get_caller_identity().get("Account")
       
       smsess = sagemaker.Session(boto_session=sess)
       role = sagemaker.get_execution_role()
       
       # Configuration:
       bucket_name = smsess.default_bucket()
       prefix = "torchserve"
       output_path = f"s3://{bucket_name}/{prefix}/models"
       print(f"account={account}, region={region}, role={role}")
   ```

1. Ambil gambar PyTorch DLC, seperti yang ditunjukkan pada contoh berikut.

   SageMaker Gambar AI PyTorch DLC tersedia di semua AWS wilayah. Untuk informasi selengkapnya, lihat [daftar gambar kontainer DLC](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only).

   ```
   baseimage = sagemaker.image_uris.retrieve(
           framework="pytorch",
           region="<region>",
           py_version="py310",
           image_scope="inference",
           version="2.0.1",
           instance_type="ml.g4dn.16xlarge",
       )
   ```

1. Buat ruang kerja lokal.

   ```
   mkdir -p workspace/
   ```

## Menambahkan paket
<a name="deploy-models-frameworks-torchserve-package"></a>

Bagian berikut menjelaskan cara menambahkan dan menginstal paket ke gambar PyTorch DLC Anda.

**Kasus penggunaan BYOC**

Langkah-langkah berikut menguraikan cara menambahkan paket ke gambar PyTorch DLC Anda. Untuk informasi selengkapnya tentang menyesuaikan container, lihat [Membangun Gambar Kustom AWS Deep Learning Containers](https://github.com/aws/deep-learning-containers/blob/master/custom_images.md).

1. Misalkan Anda ingin menambahkan paket ke image PyTorch docker DLC. Buat Dockerfile di bawah `docker` direktori, seperti yang ditunjukkan pada contoh berikut:

   ```
   mkdir -p workspace/docker
       cat workspace/docker/Dockerfile
       
       ARG BASE_IMAGE
       
       FROM $BASE_IMAGE
       
       #Install any additional libraries
       RUN pip install transformers==4.28.1
   ```

1. Buat dan publikasikan image docker yang disesuaikan dengan menggunakan skrip [build\$1and\$1push.sh](https://github.com/aws/amazon-sagemaker-examples/blob/main/inference/torchserve/mme-gpu/workspace/docker/build_and_push.sh) berikut.

   ```
   # Download script build_and_push.sh to workspace/docker
       ls workspace/docker
       build_and_push.sh  Dockerfile
       
       # Build and publish your docker image
       reponame = "torchserve"
       versiontag = "demo-0.1"
       
       ./build_and_push.sh {reponame} {versiontag} {baseimage} {region} {account}
   ```

**SageMaker Kasus penggunaan prainstal AI**

Contoh berikut menunjukkan cara menginstal paket ke wadah PyTorch DLC Anda. Anda harus membuat `requirements.txt` file secara lokal di bawah direktori`workspace/code`.

```
mkdir -p workspace/code
    cat workspace/code/requirements.txt
    
    transformers==4.28.1
```

## Buat artefak TorchServe model
<a name="deploy-models-frameworks-torchserve-artifacts"></a>

Dalam contoh berikut, kami menggunakan model [MNIST](https://github.com/pytorch/serve/tree/master/examples/image_classifier/mnist) yang telah dilatih sebelumnya. Kami membuat direktori`workspace/mnist`, menerapkan [mnist\$1handler.py](https://github.com/pytorch/serve/blob/master/examples/image_classifier/mnist/mnist_handler.py) dengan mengikuti [instruksi layanan TorchServe khusus](https://github.com/pytorch/serve/blob/master/docs/custom_service.md#custom-service), dan [mengkonfigurasi parameter model](https://github.com/pytorch/serve/tree/master/model-archiver#config-file) (seperti ukuran batch dan pekerja) di [model-config.yaml](https://github.com/aws/amazon-sagemaker-examples/blob/main/inference/torchserve/mme-gpu/workspace/lama/model-config.yaml). Kemudian, kami menggunakan TorchServe alat `torch-model-archiver` untuk membangun artefak model dan mengunggah ke Amazon S3.

1. Konfigurasikan parameter model di`model-config.yaml`.

   ```
   ls -al workspace/mnist-dev
       
       mnist.py
       mnist_handler.py
       mnist_cnn.pt
       model-config.yaml
       
       # config the model
       cat workspace/mnist-dev/model-config.yaml
       minWorkers: 1
       maxWorkers: 1
       batchSize: 4
       maxBatchDelay: 200
       responseTimeout: 300
   ```

1. Bangun artefak model dengan menggunakan [torch-model-archiver ](https://github.com/pytorch/serve/tree/master/model-archiver#torch-model-archiver-for-torchserve).

   ```
   torch-model-archiver --model-name mnist --version 1.0 --model-file workspace/mnist-dev/mnist.py --serialized-file workspace/mnist-dev/mnist_cnn.pt --handler workspace/mnist-dev/mnist_handler.py --config-file workspace/mnist-dev/model-config.yaml --archive-format tgz
   ```

   Jika Anda ingin menginstal paket, Anda harus menyertakan `code` direktori dalam `tar.gz` file.

   ```
   cd workspace
       torch-model-archiver --model-name mnist --version 1.0 --model-file mnist-dev/mnist.py --serialized-file mnist-dev/mnist_cnn.pt --handler mnist-dev/mnist_handler.py --config-file mnist-dev/model-config.yaml --archive-format no-archive
       
       cd mnist
       mv ../code .
       tar cvzf mnist.tar.gz .
   ```

1. Unggah `mnist.tar.gz` ke Amazon S3.

   ```
   # upload mnist.tar.gz to S3
       output_path = f"s3://{bucket_name}/{prefix}/models"
       aws s3 cp mnist.tar.gz {output_path}/mnist.tar.gz
   ```

## Menggunakan titik akhir model tunggal untuk diterapkan dengan TorchServe
<a name="deploy-models-frameworks-torchserve-single-model"></a>

[Contoh berikut menunjukkan cara membuat [titik akhir inferensi real-time model tunggal, menerapkan model ke titik akhir](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html), dan menguji titik akhir dengan menggunakan Amazon Python SDK. SageMaker ](https://sagemaker.readthedocs.io/en/stable/)

```
from sagemaker.model import Model
    from sagemaker.predictor import Predictor
    
    # create the single model endpoint and deploy it on SageMaker AI
    model = Model(model_data = f'{output_path}/mnist.tar.gz', 
                  image_uri = baseimage,
                  role = role,
                  predictor_cls = Predictor,
                  name = "mnist",
                  sagemaker_session = smsess)
                  
    endpoint_name = 'torchserve-endpoint-' + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime())
    predictor = model.deploy(instance_type='ml.g4dn.xlarge',
                             initial_instance_count=1,
                             endpoint_name = endpoint_name,
                             serializer=JSONSerializer(),
                             deserializer=JSONDeserializer())  
                             
    # test the endpoint
    import random
    import numpy as np
    dummy_data = {"inputs": np.random.rand(16, 1, 28, 28).tolist()}
    
    res = predictor.predict(dummy_data)
```

## Menggunakan titik akhir multi-model untuk diterapkan TorchServe
<a name="deploy-models-frameworks-torchserve-multi-model"></a>

[Titik akhir multi-model](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) adalah solusi yang dapat diskalakan dan hemat biaya untuk menampung sejumlah besar model di belakang satu titik akhir. Mereka meningkatkan pemanfaatan titik akhir dengan berbagi armada sumber daya yang sama dan melayani wadah untuk menampung semua model Anda. Mereka juga mengurangi overhead penerapan karena SageMaker AI mengelola model bongkar muat secara dinamis, serta penskalaan sumber daya berdasarkan pola lalu lintas. Titik akhir multi-model sangat berguna untuk pembelajaran mendalam dan model AI generatif yang membutuhkan daya komputasi yang dipercepat.

Dengan menggunakan TorchServe titik akhir multi-model SageMaker AI, Anda dapat mempercepat pengembangan Anda dengan menggunakan tumpukan penyajian yang Anda kenal sambil memanfaatkan pembagian sumber daya dan manajemen model yang disederhanakan yang disediakan oleh titik akhir multi-model SageMaker AI.

[Contoh berikut menunjukkan cara membuat endpoint multi-model, menerapkan model ke endpoint, dan menguji endpoint dengan menggunakan Amazon Python SDK. SageMaker ](https://sagemaker.readthedocs.io/en/stable/) Rincian tambahan dapat ditemukan dalam [contoh notebook](https://github.com/aws/amazon-sagemaker-examples/blob/main/inference/torchserve/mme-gpu/torchserve_multi_model_endpoint.ipynb) ini.

```
from sagemaker.multidatamodel import MultiDataModel
    from sagemaker.model import Model
    from sagemaker.predictor import Predictor
    
    # create the single model endpoint and deploy it on SageMaker AI
    model = Model(model_data = f'{output_path}/mnist.tar.gz', 
                  image_uri = baseimage,
                  role = role,
                  sagemaker_session = smsess)
                  
    endpoint_name = 'torchserve-endpoint-' + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime())
    mme = MultiDataModel(
        name = endpoint_name,
        model_data_prefix = output_path,
        model = model,
        sagemaker_session = smsess)
    
    mme.deploy(
        initial_instance_count = 1,
        instance_type = "ml.g4dn.xlarge",
        serializer=sagemaker.serializers.JSONSerializer(),
        deserializer=sagemaker.deserializers.JSONDeserializer())
    
    # list models
    list(mme.list_models())
    
    # create mnist v2 model artifacts
    cp mnist.tar.gz mnistv2.tar.gz
    
    # add mnistv2
    mme.add_model(mnistv2.tar.gz)
    
    # list models
    list(mme.list_models())
    
    predictor = Predictor(endpoint_name=mme.endpoint_name, sagemaker_session=smsess)
                             
    # test the endpoint
    import random
    import numpy as np
    dummy_data = {"inputs": np.random.rand(16, 1, 28, 28).tolist()}
    
    res = predictor.predict(date=dummy_data, target_model="mnist.tar.gz")
```

## Metrik-metrik
<a name="deploy-models-frameworks-torchserve-metrics"></a>

TorchServe mendukung metrik tingkat sistem dan tingkat model. Anda dapat mengaktifkan metrik dalam mode format log atau mode Prometheus melalui variabel lingkungan. `TS_METRICS_MODE` Anda dapat menggunakan file konfigurasi metrik TorchServe pusat `metrics.yaml` untuk menentukan jenis metrik yang akan dilacak, seperti jumlah permintaan, latensi, penggunaan memori, pemanfaatan GPU, dan banyak lagi. Dengan mengacu pada file ini, Anda dapat memperoleh wawasan tentang kinerja dan kesehatan model yang diterapkan dan secara efektif memantau perilaku TorchServe server secara real-time. Untuk informasi lebih rinci, lihat [dokumentasi TorchServe metrik](https://github.com/pytorch/serve/blob/master/docs/metrics.md#torchserve-metrics).

Anda dapat mengakses log TorchServe metrik yang mirip dengan format StatSD melalui filter log CloudWatch Amazon. Berikut ini adalah contoh log TorchServe metrik:

```
CPUUtilization.Percent:0.0|#Level:Host|#hostname:my_machine_name,timestamp:1682098185
    DiskAvailable.Gigabytes:318.0416717529297|#Level:Host|#hostname:my_machine_name,timestamp:1682098185
```

# Menyebarkan model dengan DJL Serving
<a name="deploy-models-frameworks-djl-serving"></a>

DJL Serving adalah solusi penyajian model berdiri sendiri universal berkinerja tinggi. Dibutuhkan model pembelajaran mendalam, beberapa model, atau alur kerja dan membuatnya tersedia melalui titik akhir HTTP.

Anda dapat menggunakan salah satu DJL Serving [Deep Learning Containers (DLCs)](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html) untuk melayani model Anda. AWS Untuk mempelajari tentang jenis model dan kerangka kerja yang didukung, lihat repositori [DJL Serving GitHub](https://github.com/deepjavalibrary/djl-serving).

DJL Serving menawarkan banyak fitur yang membantu Anda untuk menyebarkan model Anda dengan kinerja tinggi:
+ Kemudahan penggunaan - DJL Serving dapat melayani sebagian besar model tanpa modifikasi apa pun. Anda membawa artefak model Anda, dan DJL Serving dapat meng-host mereka.
+ Beberapa perangkat dan dukungan akselerator - DJL Serving mendukung penerapan model pada CPUs, GPUs, dan Inferentia. AWS 
+ Kinerja - DJL Serving menjalankan inferensi multithreaded dalam satu mesin virtual Java (JVM) untuk meningkatkan throughput.
+ Batching dinamis - DJL Serving mendukung batching dinamis untuk meningkatkan throughput.
+ Penskalaan otomatis - DJL Serving secara otomatis menskalakan pekerja naik atau turun berdasarkan beban lalu lintas.
+ Dukungan multi-engine - DJL Serving dapat secara bersamaan meng-host model menggunakan kerangka kerja yang berbeda (misalnya, PyTorch dan). TensorFlow
+ Model ensemble dan alur kerja - DJL Serving mendukung penerapan alur kerja kompleks yang terdiri dari beberapa model dan dapat mengeksekusi bagian dari alur kerja dan bagian lain pada. CPUs GPUs Model dalam alur kerja dapat memanfaatkan kerangka kerja yang berbeda.

Bagian berikut menjelaskan cara menyiapkan endpoint dengan DJL Serving on SageMaker AI.

## Memulai
<a name="deploy-models-frameworks-djl-prereqs"></a>

Untuk memulai, pastikan Anda memiliki prasyarat berikut:

1. Pastikan Anda memiliki akses ke AWS akun. Siapkan lingkungan Anda sehingga AWS CLI dapat mengakses akun Anda melalui pengguna AWS IAM atau peran IAM. Kami merekomendasikan menggunakan peran IAM. Untuk tujuan pengujian di akun pribadi Anda, Anda dapat melampirkan kebijakan izin terkelola berikut ke peran IAM:
   + [Amazon EC2 ContainerRegistryFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess)
   + [Amazon EC2 FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2FullAccess)
   + [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)
   + [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonS3FullAccess)

1. Pastikan Anda telah menyiapkan klien [docker](https://docs.docker.com/get-docker/) di sistem Anda.

1. Masuk ke Amazon Elastic Container Registry dan atur variabel lingkungan berikut:

   ```
   export ACCOUNT_ID=<your_account_id>
   export REGION=<your_region>
   aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
   ```

1. Tarik gambar docker.

   ```
   docker pull 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.22.1-deepspeed0.9.2-cu118
   ```

   Untuk semua gambar kontainer DJL Serving yang tersedia, lihat wadah inferensi [model besar dan wadah inferensi](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers) [CPU Serving DJL](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#djl-cpu-full-inference-containers). Saat memilih gambar dari tabel di tautan sebelumnya, ganti AWS wilayah di kolom URL contoh dengan wilayah tempat Anda berada. Tersedia di wilayah DLCs yang tercantum dalam tabel di bagian atas halaman [Available Deep Learning Containers Images](https://github.com/aws/deep-learning-containers/blob/master/available_images.md).

## Sesuaikan wadah Anda
<a name="deploy-models-frameworks-djl-byoc"></a>

Anda dapat menambahkan paket ke gambar DLC dasar untuk menyesuaikan wadah Anda. Misalkan Anda ingin menambahkan paket ke image `763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.22.1-deepspeed0.9.2-cu118` docker. Anda harus membuat dockerfile dengan gambar yang Anda inginkan sebagai gambar dasar, menambahkan paket yang diperlukan, dan mendorong gambar ke Amazon ECR.

Untuk menambahkan paket, selesaikan langkah-langkah berikut:

1. Tentukan instruksi untuk menjalankan pustaka atau paket yang Anda inginkan di dockerfile gambar dasar.

   ```
   FROM 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.22.1-deepspeed0.9.2-cu118
                           
   ## add custom packages/libraries
   RUN git clone https://github.com/awslabs/amazon-sagemaker-examples
   ```

1. Bangun image Docker dari dockerfile. Tentukan repositori Amazon ECR Anda, nama gambar dasar, dan tag untuk gambar. Jika Anda tidak memiliki repositori Amazon ECR, lihat Menggunakan [Amazon ECR dengan di AWS CLI](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html) *Panduan Pengguna Amazon ECR* untuk petunjuk tentang cara membuatnya.

   ```
   docker build -f Dockerfile -t <registry>/<image_name>:<image_tag>
   ```

1. Dorong gambar Docker ke repositori Amazon ECR Anda.

   ```
   docker push $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/<image_name>:<image_tag>
   ```

Anda sekarang harus memiliki gambar kontainer khusus yang dapat Anda gunakan untuk penyajian model. Untuk contoh penyesuaian kontainer lainnya, lihat [Membangun Gambar Kustom AWS Deep Learning Containers](https://github.com/aws/deep-learning-containers/blob/master/custom_images.md).

## Siapkan artefak model Anda
<a name="deploy-models-frameworks-djl-artifacts"></a>

Sebelum menerapkan model Anda di SageMaker AI, Anda harus mengemas artefak model Anda dalam sebuah `.tar.gz` file. DJL Serving menerima artefak berikut dalam arsip Anda:
+ Pos pemeriksaan model: File yang menyimpan bobot model Anda.
+ `serving.properties`: File konfigurasi yang dapat Anda tambahkan untuk setiap model. Tempatkan `serving.properties` di direktori yang sama dengan file model Anda.
+ `model.py`: Kode penangan inferensi. Ini hanya berlaku saat menggunakan mode Python. Jika Anda tidak menentukan`model.py`, djl-serving menggunakan salah satu penangan default.

Berikut ini adalah contoh `model.tar.gz` struktur:

```
 - model_root_dir # root directory
    - serving.properties            
    - model.py # your custom handler file for Python, if you choose not to use the default handlers provided by DJL Serving
    - model binary files # used for Java mode, or if you don't want to use option.model_id and option.s3_url for Python mode
```

DJL Serving mendukung mesin Java didukung oleh mesin DJL atau Python. Tidak semua artefak sebelumnya diperlukan; artefak yang diperlukan bervariasi berdasarkan mode yang Anda pilih. Misalnya, dalam mode Python, Anda hanya perlu menentukan `option.model_id` dalam `serving.properties` file; Anda tidak perlu menentukan pos pemeriksaan model di dalam wadah LMI. Dalam mode Java, Anda diminta untuk mengemas pos pemeriksaan model. Untuk detail selengkapnya tentang cara mengkonfigurasi `serving.properties` dan mengoperasikan dengan mesin yang berbeda, lihat [Mode Operasi Penyajian DJL](https://github.com/deepjavalibrary/djl-serving/blob/master/serving/docs/modes.md).

## Gunakan titik akhir model tunggal untuk menerapkan dengan DJL Serving
<a name="deploy-models-frameworks-djl-single-model"></a>

Setelah menyiapkan artefak model Anda, Anda dapat menerapkan model Anda ke titik akhir SageMaker AI. Bagian ini menjelaskan cara menerapkan model tunggal ke titik akhir dengan DJL Serving. Jika Anda menerapkan beberapa model, lewati bagian ini dan buka. [Gunakan titik akhir multi-model untuk menerapkan dengan DJL Serving](#deploy-models-frameworks-djl-mme)

Contoh berikut menunjukkan metode untuk membuat objek model menggunakan Amazon SageMaker Python SDK. Anda harus menentukan bidang berikut:
+ `image_uri`: Anda dapat mengambil salah satu gambar DJL Serving dasar seperti yang ditunjukkan dalam contoh ini, atau Anda dapat menentukan gambar Docker kustom dari repositori Amazon ECR Anda, jika Anda mengikuti instruksi di. [Sesuaikan wadah Anda](#deploy-models-frameworks-djl-byoc)
+ `model_s3_url`: Ini harus URI Amazon S3 yang menunjuk ke file Anda`.tar.gz`.
+ `model_name`: Tentukan nama untuk objek model.

```
import boto3
 import sagemaker
from sagemaker.model import Model
from sagemaker import image_uris, get_execution_role

aws_region = "aws-region"
sagemaker_session = sagemaker.Session(boto_session=boto3.Session(region_name=aws_region))
role = get_execution_role()

def create_model(model_name, model_s3_url):
    # Get the DJL DeepSpeed image uri
    image_uri = image_uris.retrieve(
        framework="djl-deepspeed",
        region=sagemaker_session.boto_session.region_name,
        version="0.20.0"
    )
    model = Model(
        image_uri=image_uri,
        model_data=model_s3_url,
        role=role,
        name=model_name,
        sagemaker_session=sagemaker_session,
    )
    return model
```

## Gunakan titik akhir multi-model untuk menerapkan dengan DJL Serving
<a name="deploy-models-frameworks-djl-mme"></a>

Jika Anda ingin menerapkan beberapa model ke titik akhir, SageMaker AI menawarkan titik akhir multi-model, yang merupakan solusi terukur dan hemat biaya untuk menerapkan sejumlah besar model. DJL Serving juga mendukung pemuatan beberapa model secara bersamaan dan menjalankan inferensi pada masing-masing model secara bersamaan. Kontainer Penyajian DJL mematuhi kontrak titik akhir multi-model SageMaker AI dan dapat digunakan untuk menyebarkan titik akhir multi-model.

Setiap artefak model individu perlu dikemas dengan cara yang sama seperti yang dijelaskan di bagian sebelumnya. [Siapkan artefak model Anda](#deploy-models-frameworks-djl-artifacts) Anda dapat mengatur konfigurasi khusus model dalam `serving.properties` file dan kode pengendali inferensi khusus model di. `model.py` Untuk titik akhir multi-model, model perlu diatur dengan cara berikut:

```
 root_dir
        |-- model_1.tar.gz
        |-- model_2.tar.gz
        |-- model_3.tar.gz
            .
            .
            .
```

Amazon SageMaker Python SDK menggunakan [MultiDataModel](https://sagemaker.readthedocs.io/en/stable/api/inference/multi_data_model.html)objek untuk membuat instance endpoint multi-model. URI Amazon S3 untuk direktori root harus diteruskan sebagai `model_data_prefix` argumen ke konstruktor. `MultiDataModel`

DJL Serving juga menyediakan beberapa parameter konfigurasi untuk mengelola persyaratan memori model, seperti `required_memory_mb` dan`reserved_memory_mb`, yang dapat dikonfigurasi untuk setiap model dalam file [serving.properties.](https://github.com/deepjavalibrary/djl-serving/blob/master/serving/docs/modes.md#servingproperties) Parameter ini berguna untuk menangani kesalahan memori dengan lebih anggun. Untuk semua parameter yang dapat dikonfigurasi, lihat [OutofMemory penanganan di djl-serving](https://github.com/deepjavalibrary/djl-serving/blob/master/serving/docs/out_of_memory_management.md).

Fitur penskalaan otomatis dari DJL Serving memudahkan untuk memastikan bahwa model diskalakan dengan tepat untuk lalu lintas masuk. Secara default, DJL Serving menentukan jumlah maksimum pekerja untuk model yang dapat didukung berdasarkan perangkat keras yang tersedia (seperti core CPU atau perangkat GPU). Anda dapat mengatur batas bawah dan atas untuk setiap model untuk memastikan bahwa tingkat lalu lintas minimum selalu dapat dilayani, dan bahwa satu model tidak mengkonsumsi semua sumber daya yang tersedia. Anda dapat mengatur properti berikut dalam file [serving.properties](https://github.com/deepjavalibrary/djl-serving/blob/master/serving/docs/modes.md#servingproperties):
+ `gpu.minWorkers`: Jumlah minimum pekerja untuk GPUs.
+ `gpu.maxWorkers`: Jumlah maksimum pekerja untuk GPUs.
+ `cpu.minWorkers`: Jumlah minimum pekerja untuk CPUs.
+ `cpu.maxWorkers`: Jumlah maksimum pekerja untuk CPUs.

[Untuk end-to-end contoh cara menerapkan endpoint multi-model pada SageMaker AI menggunakan container DJL Serving, lihat contoh notebook Multi-model-inference-demo.ipynb.](https://github.com/deepjavalibrary/djl-demo/blob/master/aws/sagemaker/Multi-Model-Inference-Demo.ipynb)

# Penerapan model dengan Triton Inference Server
<a name="deploy-models-frameworks-triton"></a>

[Triton Inference Server](https://github.com/triton-inference-server/server) adalah perangkat lunak penyajian inferensi open source yang merampingkan inferensi AI. Dengan Triton, Anda dapat menerapkan model apa pun yang dibangun dengan beberapa kerangka pembelajaran mendalam dan pembelajaran mesin, termasuk TensorRT,,, ONNX, OpenVINO, Python, RAPIDS FIL TensorFlow PyTorch, dan banyak lagi.

Kontainer SageMaker AI Triton membantu Anda menyebarkan Triton Inference Server pada platform SageMaker AI Hosting untuk melayani model terlatih dalam produksi. Ini mendukung berbagai mode di mana SageMaker AI beroperasi. Untuk daftar container Triton Inference Server yang tersedia di SageMaker AI, lihat [NVIDIA Triton Inference Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only) (hanya dukungan SM). 

Untuk contoh end-to-end notebook, kami sarankan untuk melihat [amazon-sagemaker-examples repositori](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-triton).

## Mode hosting
<a name="deploy-models-frameworks-triton-modes"></a>

Mode Hosting SageMaker AI berikut didukung oleh wadah Triton:
+ Titik akhir model tunggal
  + Ini adalah mode operasi default SageMaker AI. Dalam mode ini, wadah Triton dapat memuat satu model, atau model ansambel tunggal.
  + Nama model harus diteruskan sebagai properti lingkungan kontainer, yang merupakan bagian dari panggilan `CreateModel` SageMaker AI API. Variabel lingkungan yang digunakan untuk meneruskan nama model adalah`SAGEMAKER_TRITON_DEFAULT_MODEL_NAME`.
+ Titik akhir model tunggal dengan ansambel
  + Triton Inference Server mendukung *ansambel*, yang merupakan pipeline, atau DAG (grafik asiklik terarah) model. Sementara ansambel secara teknis terdiri dari beberapa model, dalam mode titik akhir model tunggal default, SageMaker AI dapat memperlakukan *ansambel dengan tepat* (meta-model yang mewakili pipa) sebagai model utama untuk dimuat, dan selanjutnya dapat memuat model terkait.
  + Nama model ansambel yang tepat harus digunakan untuk memuat model. Itu harus diteruskan sebagai properti lingkungan kontainer, yang merupakan bagian dari panggilan `CreateModel` SageMaker API. Variabel lingkungan yang digunakan untuk meneruskan nama model adalah`SAGEMAKER_TRITON_DEFAULT_MODEL_NAME`.
+ Titik akhir multi-model
  + Dalam mode ini, SageMaker AI dapat melayani beberapa model pada satu titik akhir. Anda dapat menggunakan mode ini dengan menentukan variabel lingkungan `‘MultiModel’: true` sebagai properti lingkungan kontainer, yang merupakan bagian dari panggilan `CreateModel` SageMaker API.
  + Secara default, tidak ada model yang dimuat saat instance dimulai. Untuk menjalankan permintaan inferensi terhadap model tertentu, tentukan `*.tar.gz` file model yang sesuai sebagai argumen ke `TargetModel` properti panggilan `InvokeEndpoint` SageMaker API.
+ Titik akhir multi-model dengan ansambel
  + Dalam mode ini, SageMaker AI berfungsi seperti yang dijelaskan untuk titik akhir multi-model. Namun, wadah SageMaker AI Triton dapat memuat beberapa model ansambel, yang berarti bahwa beberapa pipeline model dapat berjalan pada instance yang sama. SageMaker AI memperlakukan setiap ansambel sebagai satu model, dan ansambel yang tepat dari setiap model dapat dipanggil dengan menentukan arsip yang sesuai sebagai. `*.tar.gz` `TargetModel`
  + Untuk manajemen memori yang lebih baik selama memori dinamis `LOAD` dan`UNLOAD`, kami sarankan Anda menjaga ukuran ansambel kecil.

## Jenis muatan inferensi
<a name="deploy-models-frameworks-triton-payloads"></a>

Triton mendukung dua metode pengiriman muatan inferensi melalui jaringan - `json` dan `binary+json` (atau json yang dikodekan biner). Muatan JSON dalam kedua kasus mencakup tipe data, bentuk, dan tensor permintaan inferensi yang sebenarnya. Tensor permintaan harus berupa tensor biner.

Dengan `binary+json` formatnya, Anda harus menentukan panjang metadata permintaan di header untuk memungkinkan Triton mengurai muatan biner dengan benar. Dalam wadah SageMaker AI Triton, ini dilakukan dengan menggunakan `Content-Type` header khusus:. `application/vnd.sagemaker-triton.binary+json;json-header-size={}` Ini berbeda dengan menggunakan `Inference-Header-Content-Length` header pada Triton Inference Server yang berdiri sendiri karena header khusus tidak diizinkan di AI. SageMaker 

## Menggunakan config.pbtxt untuk mengatur konfigurasi model
<a name="deploy-models-frameworks-triton-config"></a>

Untuk Server Inferensi Triton pada SageMaker AI, setiap model harus menyertakan `config.pbtxt` file yang menentukan, setidaknya, konfigurasi berikut untuk model:
+ `name`: Meskipun ini opsional untuk model yang berjalan di luar SageMaker AI, kami menyarankan Anda selalu memberikan nama untuk model yang akan dijalankan di Triton SageMaker pada AI.
+ [`platform`dan/atau `backend`](https://github.com/triton-inference-server/backend/blob/main/README.md#backends): Menyetel backend sangat penting untuk menentukan jenis model. Beberapa backend memiliki klasifikasi lebih lanjut, seperti `tensorflow_savedmodel` atau. ` tensorflow_graphdef` Opsi tersebut dapat ditentukan sebagai bagian dari `platform` kunci selain `backend` kunci. Backend yang paling umum adalah`tensorrt`,,`onnxruntime`,`tensorflow`,,`pytorch`, `python` `dali``fil`, dan. `openvino`
+ `input`: Tentukan tiga atribut untuk input:`name`, `data_type` dan `dims` (bentuk).
+ `output`: Tentukan tiga atribut untuk output:`name`, `data_type` dan `dims` (bentuk).
+ `max_batch_size`: Atur ukuran batch ke nilai yang lebih besar dari atau sama dengan 1 yang menunjukkan ukuran batch maksimum yang harus digunakan Triton dengan model.

[Untuk detail lebih lanjut tentang konfigurasi`config.pbtxt`, lihat repositori Triton. GitHub ](https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md) Triton menyediakan beberapa konfigurasi untuk mengubah perilaku model. Beberapa opsi konfigurasi yang paling umum dan penting adalah:
+ [https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md#instance-groups](https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md#instance-groups): Grup instance membantu menentukan nomor dan lokasi untuk model tertentu. Mereka memiliki atribut`count`,`kind`, dan `gpus` (`kind`digunakan kapan`KIND_GPU`). `count`Atributnya setara dengan jumlah pekerja. Untuk penyajian model reguler, setiap pekerja memiliki salinan modelnya sendiri. Demikian pula, di Triton, `count` menentukan jumlah salinan model per perangkat. Misalnya, jika `instance_group` jenisnya`KIND_CPU`, maka CPU memiliki `count` jumlah salinan model.
**catatan**  
Pada instance GPU, `instance_group` konfigurasi berlaku per perangkat GPU. Misalnya, `count` jumlah salinan model ditempatkan pada setiap perangkat GPU kecuali Anda secara eksplisit menentukan perangkat GPU mana yang harus memuat model.
+ [https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md#dynamic-batcher](https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md#dynamic-batcher)dan [https://github.com/triton-inference-server/server/blob/main/docs/user_guide/architecture.md#stateful-models](https://github.com/triton-inference-server/server/blob/main/docs/user_guide/architecture.md#stateful-models): Batching dinamis digunakan untuk model stateless, dan batch urutan digunakan untuk model stateful (di mana Anda ingin merutekan permintaan ke instance model yang sama setiap saat). Penjadwal batching mengaktifkan antrian per model, yang membantu meningkatkan throughput, tergantung pada konfigurasi batching.
+ [https://github.com/triton-inference-server/server/blob/main/docs/user_guide/architecture.md#ensemble-models](https://github.com/triton-inference-server/server/blob/main/docs/user_guide/architecture.md#ensemble-models): Model ansambel mewakili *pipa* dari satu atau lebih model dan koneksi tensor input dan output antara model-model tersebut. Itu dapat dikonfigurasi dengan menentukan `platform` sebagai`ensemble`. Konfigurasi ansambel hanyalah representasi dari pipa model. Pada SageMaker AI, semua model di bawah ansambel diperlakukan sebagai tanggungan model ansambel dan dihitung sebagai model tunggal untuk SageMaker metrik AI, seperti. `LoadedModelCount`

## Menerbitkan metrik Triton default ke Amazon CloudWatch
<a name="deploy-models-frameworks-triton-metrics"></a>

NVIDIA Triton Inference Container memaparkan metrik pada port 8002 (dapat dikonfigurasi) untuk model yang berbeda dan GPUs yang digunakan di Triton Inference Server. Untuk detail lengkap metrik default yang tersedia, lihat GitHub halaman untuk metrik [Triton Inference](https://github.com/triton-inference-server/server/blob/main/docs/user_guide/metrics.md) Server. Metrik ini dalam format Prometheus dan dapat dikikis menggunakan konfigurasi scraper Prometheus.

Dimulai dengan versi v23.07 dan seterusnya, wadah SageMaker AI Triton mendukung penerbitan metrik ini ke Amazon CloudWatch dengan menentukan beberapa variabel lingkungan. Untuk mengikis metrik Prometheus, wadah SageMaker AI Triton memanfaatkan agen Amazon. CloudWatch 

Variabel lingkungan yang diperlukan yang harus Anda tentukan untuk mengumpulkan metrik adalah sebagai berikut:


| Variabel lingkungan | Deskripsi | Nilai contoh | 
| --- | --- | --- | 
|  `SAGEMAKER_TRITON_ALLOW_METRICS`  |  Tentukan opsi ini untuk memungkinkan Triton mempublikasikan metrik ke titik akhir Prometheus-nya.  | “benar” | 
|  `SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH`  |  Tentukan opsi ini untuk memulai pra-pemeriksaan yang diperlukan untuk menerbitkan metrik ke Amazon. CloudWatch  | “benar” | 
|  `SAGEMAKER_TRITON_CLOUDWATCH_LOG_GROUP`  |  Tentukan opsi ini untuk menunjuk ke grup log tempat metrik ditulis.  | "/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesTest" | 
|  `SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE`  |  Tentukan opsi ini untuk menunjuk ke namespace metrik tempat Anda ingin melihat dan memplot metrik.  | "/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesPublicTest" | 
|  `SAGEMAKER_TRITON_METRICS_PORT`  |  Tentukan ini sebagai 8002, atau port lainnya. Jika SageMaker AI belum memblokir port yang ditentukan, itu digunakan. Jika tidak, port lain yang tidak diblokir dipilih secara otomatis.  | “8002" | 

Saat menerbitkan metrik dengan Triton di SageMaker AI, ingatlah batasan berikut:
+ Meskipun Anda dapat menghasilkan metrik khusus melalui backend C-API dan Python (v23.05 dan seterusnya), metrik ini saat ini tidak didukung untuk dipublikasikan ke Amazon. CloudWatch
+ Dalam mode titik akhir multi-model SageMaker AI (MME), Triton berjalan di lingkungan yang mengharuskan ruang nama model diaktifkan karena setiap model (kecuali model ansambel) diperlakukan seolah-olah berada di repositori model mereka sendiri. Saat ini, ini menciptakan batasan untuk metrik. Saat ruang nama model diaktifkan, Triton tidak membedakan metrik antara dua model dengan nama yang sama milik ansambel yang berbeda. Sebagai solusinya, pastikan setiap model yang digunakan memiliki nama yang unik. Ini juga membuatnya lebih mudah untuk mencari metrik Anda. CloudWatch

## Variabel-variabel lingkungan
<a name="deploy-models-frameworks-triton-variables"></a>

Tabel berikut mencantumkan variabel lingkungan yang didukung untuk Triton pada SageMaker AI.


| Variabel lingkungan | Deskripsi | Tipe | Kemungkinan nilai | 
| --- | --- | --- | --- | 
| `SAGEMAKER_MULTI_MODEL` | Memungkinkan Triton beroperasi dalam mode titik akhir multi-model SageMaker AI. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_DEFAULT_MODEL_NAME` | Tentukan model yang akan dimuat dalam mode model tunggal SageMaker AI (default). Untuk mode ansambel, tentukan nama ansambel yang tepat. | String | *<model\$1name>*seperti yang ditentukan dalam config.pbtxt | 
| `SAGEMAKER_TRITON_PING_MODE` | `'ready'`adalah mode default dalam mode model tunggal SageMaker AI, dan `'live'` merupakan default dalam mode titik akhir multi-model SageMaker AI. | String | `ready`, `live` | 
| `SAGEMAKER_TRITON_DISABLE_MODEL_NAMESPACING` | Dalam wadah SageMaker AI Triton, ini diatur ke secara `true` default. | Boolean | `true`, `false` | 
| `SAGEMAKER_BIND_TO_PORT` | Sementara di SageMaker AI, port default adalah 8080. Anda dapat menyesuaikan ke port yang berbeda dalam skenario multi-kontainer. | String | *<port\$1number>* | 
| `SAGEMAKER_SAFE_PORT_RANGE` | Ini diatur oleh platform SageMaker AI saat menggunakan mode multi-kontainer. | String | *<port\$11>*–*<port\$12>* | 
| `SAGEMAKER_TRITON_ALLOW_GRPC` | Meskipun SageMaker AI tidak mendukung GRPC saat ini, jika Anda menggunakan Triton di depan proxy terbalik khusus, Anda dapat memilih untuk mengaktifkan GRPC. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_GRPC_PORT` | Port default untuk GRPC adalah 8001, tetapi Anda dapat mengubahnya. | String | *<port\$1number>* | 
| `SAGEMAKER_TRITON_THREAD_COUNT` | Anda dapat mengatur jumlah thread handler permintaan HTTP default. | String | *<number>* | 
| `SAGEMAKER_TRITON_LOG_VERBOSE` | `true`secara default pada SageMaker AI, tetapi Anda dapat menonaktifkan opsi ini secara selektif. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_LOG_INFO` | `false`secara default pada SageMaker AI. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_LOG_WARNING` | `false`secara default pada SageMaker AI. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_LOG_ERROR` | `false`secara default pada SageMaker AI. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_SHM_DEFAULT_BYTE_SIZE` | Tentukan ukuran shm untuk backend Python, dalam byte. Nilai defaultnya adalah 16 MB tetapi dapat ditingkatkan. | String | *<number>* | 
| `SAGEMAKER_TRITON_SHM_GROWTH_BYTE_SIZE` | Tentukan ukuran pertumbuhan shm untuk backend Python, dalam byte. Nilai default adalah 1 MB tetapi dapat ditingkatkan untuk memungkinkan peningkatan yang lebih besar. | String | *<number>* | 
| `SAGEMAKER_TRITON_TENSORFLOW_VERSION` | Nilai default-nya adalah `2`. Triton tidak lagi mendukung Tensorflow 2 dari Triton v23.04. Anda dapat mengonfigurasi variabel ini untuk versi sebelumnya. | String | *<number>* | 
| `SAGEMAKER_TRITON_MODEL_LOAD_GPU_LIMIT` | Batasi persentase memori GPU maksimum yang digunakan untuk pemuatan model, memungkinkan sisanya digunakan untuk permintaan inferensi. | String | *<number>* | 
| `SAGEMAKER_TRITON_ALLOW_METRICS` | `false`secara default pada SageMaker AI. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_METRICS_PORT` | Port default adalah 8002. | String | *<number>* | 
| `SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH` | `false`secara default pada SageMaker AI. Setel variabel ini `true` untuk memungkinkan mendorong metrik default Triton ke Amazon. CloudWatch Jika opsi ini diaktifkan, Anda bertanggung jawab atas CloudWatch biaya saat metrik dipublikasikan ke akun Anda. | Boolean | `true`, `false` | 
| `SAGEMAKER_TRITON_CLOUDWATCH_LOG_GROUP` | Diperlukan jika Anda telah mengaktifkan penerbitan metrik. CloudWatch | String | *<cloudwatch\$1log\$1group\$1name>* | 
| `SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE` | Diperlukan jika Anda telah mengaktifkan penerbitan metrik. CloudWatch | String | *<cloudwatch\$1metric\$1namespace>* | 
| `SAGEMAKER_TRITON_ADDITIONAL_ARGS` | Menambahkan argumen tambahan saat memulai Triton Server. | String | *<additional\$1args>* | 

# Penerapan model di tepi dengan SageMaker Edge Manager
<a name="edge"></a>

**Awas**  
 SageMaker Edge Manager dihentikan pada 26 April 2024. Untuk informasi selengkapnya tentang melanjutkan penerapan model Anda ke perangkat edge, lihat[SageMaker Edge Manager akhir hidup](edge-eol.md). 

Amazon SageMaker Edge Manager menyediakan manajemen model untuk perangkat edge sehingga Anda dapat mengoptimalkan, mengamankan, memantau, dan memelihara model pembelajaran mesin pada armada perangkat edge seperti kamera pintar, robot, komputer pribadi, dan perangkat seluler.

## Mengapa Menggunakan Edge Manager?
<a name="edge-what-it-is"></a>

Banyak kasus penggunaan machine learning (ML) memerlukan menjalankan model ML pada armada perangkat edge, yang memungkinkan Anda mendapatkan prediksi secara real-time, menjaga privasi pengguna akhir, dan menurunkan biaya konektivitas jaringan. Dengan meningkatnya ketersediaan perangkat keras tepi berdaya rendah yang dirancang untuk ML, sekarang dimungkinkan untuk menjalankan beberapa model jaringan saraf kompleks pada perangkat edge. 

Namun, mengoperasikan model ML pada perangkat edge sangat menantang, karena perangkat, tidak seperti instance cloud, memiliki komputasi, memori, dan konektivitas yang terbatas. Setelah model dikerahkan, Anda perlu terus memantau model, karena penyimpangan model dapat menyebabkan kualitas model membusuk dari waktu ke waktu. Memantau model di seluruh armada perangkat Anda sulit karena Anda perlu menulis kode khusus untuk mengumpulkan sampel data dari perangkat Anda dan mengenali kecondongan dalam prediksi. Selain itu, model sering dikodekan dengan keras ke dalam aplikasi. Untuk memperbarui model, Anda harus membangun kembali dan memperbarui seluruh aplikasi atau firmware perangkat, yang dapat mengganggu operasi Anda.

Dengan SageMaker Edge Manager, Anda dapat mengoptimalkan, menjalankan, memantau, dan memperbarui model pembelajaran mesin di seluruh armada perangkat di edge.

## Bagaimana Cara Kerjanya?
<a name="edge-how-it-works"></a>

Pada tingkat tinggi, ada lima komponen utama dalam alur kerja SageMaker Edge Manager: menyusun model dengan SageMaker Neo, mengemas model yang dikompilasi NEO, menerapkan model ke perangkat Anda, menjalankan model pada mesin inferensi SageMaker AI (agen Edge Manager), dan memelihara model di perangkat.

![\[Lima komponen utama dalam alur kerja SageMaker Edge Manager.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/smith_overview.png)


SageMaker Edge Manager menggunakan SageMaker Neo untuk mengoptimalkan model Anda untuk perangkat keras target dalam satu klik, lalu menandatangani model Anda secara kriptografis sebelum penerapan. Dengan menggunakan SageMaker Edge Manager, Anda dapat mengambil sampel data input dan output model dari perangkat edge dan mengirimkannya ke cloud untuk pemantauan dan analisis, dan melihat dasbor yang melacak dan melaporkan secara visual tentang pengoperasian model yang digunakan dalam konsol SageMaker AI.

SageMaker Edge Manager memperluas kemampuan yang sebelumnya hanya tersedia di cloud hingga edge, sehingga pengembang dapat terus meningkatkan kualitas model dengan menggunakan Amazon SageMaker Model Monitor untuk deteksi drift, kemudian memberi label ulang data dengan AI Ground SageMaker Truth dan melatih kembali model dalam AI. SageMaker 

## Bagaimana Cara Menggunakan SageMaker Edge Manager?
<a name="edge-how-to-use"></a>

Jika Anda adalah pengguna pertama kali SageMaker Edge Manager, kami sarankan Anda melakukan hal berikut:

1. **Baca bagian [Memulai](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manager-getting-started.html) - Bagian** ini memandu Anda melalui pengaturan pekerjaan pengemasan tepi pertama Anda dan membuat armada pertama Anda.

1. **Jelajahi contoh notebook Edge Manager Jupyter - Contoh notebook** [disimpan di [amazon-sagemaker-examples](https://github.com/aws/amazon-sagemaker-examples) GitHub repositori di folder sagemaker\$1edge\$1manager.](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker_edge_manager)

# Langkah Pertama dengan Amazon SageMaker AI Edge Manager
<a name="edge-manager-getting-started"></a>

Panduan ini menunjukkan cara menyelesaikan langkah-langkah yang diperlukan untuk mendaftar, menyebarkan, dan mengelola armada perangkat, dan cara memenuhi prasyarat Amazon SageMaker AI Edge Manager. 

**Topics**
+ [Mengatur](edge-getting-started-step1.md)
+ [Siapkan Model Anda untuk Deployment](edge-getting-started-step2.md)
+ [Mendaftar dan Mengautentikasi Armada Perangkat Anda](edge-getting-started-step3.md)
+ [Unduh dan Atur Edge Manager](edge-getting-started-step4.md)
+ [Jalankan Agen](edge-getting-started-step5.md)

# Mengatur
<a name="edge-getting-started-step1"></a>

Sebelum Anda mulai menggunakan SageMaker Edge Manager untuk mengelola model pada armada perangkat Anda, Anda harus terlebih dahulu membuat Peran IAM untuk SageMaker AI dan. AWS IoT Anda juga ingin membuat setidaknya satu bucket Amazon S3 di mana Anda akan menyimpan model pra-terlatih Anda, output dari pekerjaan kompilasi SageMaker Neo Anda, serta data input dari perangkat edge Anda.

## Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk [https://aws.amazon.com.rproxy.govskope.cake/](https://aws.amazon.com/) dan memilih **Akun Saya**.

## Buat pengguna dengan akses administratif
<a name="create-an-admin"></a>

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

**Amankan Anda Pengguna root akun AWS**

1.  Masuk ke [Konsol Manajemen AWS](https://console.aws.amazon.com/)sebagai pemilik akun dengan memilih **pengguna Root** dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

   Untuk bantuan masuk dengan menggunakan pengguna root, lihat [Masuk sebagai pengguna root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) di *AWS Sign-In Panduan Pengguna*.

1. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

   Untuk petunjuk, lihat [Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) di Panduan Pengguna *IAM*.

**Buat pengguna dengan akses administratif**

1. Aktifkan Pusat Identitas IAM.

   Untuk mendapatkan petunjuk, silakan lihat [Mengaktifkan AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) di *Panduan Pengguna AWS IAM Identity Center *.

1. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

   Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat [Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) di *Panduan AWS IAM Identity Center Pengguna*.

**Masuk sebagai pengguna dengan akses administratif**
+ Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

  Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat [Masuk ke portal AWS akses](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) di *Panduan AWS Sign-In Pengguna*.

**Tetapkan akses ke pengguna tambahan**

1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

   Untuk petunjuknya, lihat [Membuat set izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) di *Panduan AWS IAM Identity Center Pengguna*.

1. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

   Untuk petunjuk, lihat [Menambahkan grup](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) di *Panduan AWS IAM Identity Center Pengguna*.

## Buat peran dan penyimpanan
<a name="edge-getting-started-step1-create-role"></a>

SageMaker Edge Manager memerlukan akses ke URI bucket Amazon S3 Anda. Untuk memfasilitasi ini, buat peran IAM yang dapat menjalankan SageMaker AI dan memiliki izin untuk mengakses Amazon S3. Dengan menggunakan peran ini, SageMaker AI dapat berjalan di bawah akun Anda dan akses ke bucket Amazon S3 Anda.

Anda dapat membuat peran IAM dengan menggunakan konsol IAM, AWS SDK for Python (Boto3), atau. AWS CLI Berikut ini adalah contoh cara membuat peran IAM, melampirkan kebijakan yang diperlukan dengan konsol IAM, dan membuat bucket Amazon S3.

1. **Buat peran IAM untuk Amazon SageMaker AI.**

   1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Di panel navigasi konsol IAM, pilih **Peran**, dan lalu pilih **Buat peran**.

   1. Untuk **Pilih jenis entitas tepercaya**, pilih **layanan AWS **.

   1. Pilih layanan yang ingin Anda perbolehkan untuk mengasumsikan peran ini. Dalam hal ini, pilih **SageMaker AI**. Kemudian, pilih **Selanjutnya: Izin**.
      + Ini secara otomatis membuat kebijakan IAM yang memberikan akses ke layanan terkait seperti Amazon S3, Amazon CloudWatch ECR, dan Log.

   1. Pilih **Selanjutnya: Tanda**.

   1. (Opsional) Tambahkan metadata ke dalam peran dengan melampirkan tanda sebagai pasangan nilai-kunci. Untuk informasi lebih lanjut tentang penggunaan tanda dan IAM, lihat [Penandaan sumber daya IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_tags.html).

   1. Pilih **Berikutnya: Tinjauan**.

   1. Ketik **nama Peran**. 

   1. Jika memungkinkan, ketikkan nama peran atau akhiran nama peran. Nama peran harus unik dalam AWS akun Anda. Grup tidak dibedakan berdasarkan huruf besar-kecil. Misalnya, Anda tidak dapat membuat peran dengan nama `PRODROLE` dan `prodrole`. Karena AWS sumber daya lain mungkin mereferensikan peran, Anda tidak dapat mengedit nama peran setelah dibuat.

   1. (Opsional) Untuk **Deskripsi peran**, ketikkan deskripsi untuk peran baru tersebut.

   1. Tinjau peran dan kemudian pilih **Buat peran**.

      Perhatikan ARN Peran SageMaker AI, yang Anda gunakan untuk membuat pekerjaan kompilasi dengan SageMaker Neo dan pekerjaan pengemasan dengan Edge Manager. Untuk mengetahui peran ARN menggunakan konsol, lakukan hal berikut:

      1. Pergi ke IAMconsole: [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

      1. Pilih **Peran**.

      1. Cari peran yang baru saja Anda buat dengan mengetikkan nama peran di bidang pencarian.

      1. Pilih peran.

      1. Peran ARN ada di bagian atas halaman **Ringkasan**.

1. **Buat peran IAM untuk AWS IoT.**

   Peran AWS IoT IAM yang Anda buat digunakan untuk mengotorisasi objek benda Anda. Anda juga menggunakan peran IAM ARN untuk membuat dan mendaftarkan armada perangkat dengan SageMaker objek klien AI.

   Konfigurasikan peran IAM di AWS akun Anda untuk diambil oleh penyedia kredensi atas nama perangkat di armada perangkat Anda. Kemudian, lampirkan kebijakan untuk mengizinkan perangkat Anda berinteraksi dengan AWS IoT layanan.

   Buat peran AWS IoT baik secara terprogram atau dengan konsol IAM, mirip dengan apa yang Anda lakukan saat membuat peran untuk AI. SageMaker 

   1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Di panel navigasi konsol IAM, pilih **Peran**, dan lalu pilih **Buat peran**.

   1. Untuk **Pilih jenis entitas tepercaya**, pilih **layanan AWS **.

   1. Pilih layanan yang ingin Anda perbolehkan untuk mengasumsikan peran ini. Dalam hal ini, pilih **IoT**. Pilih **IoT sebagai Kasus** **Penggunaan**.

   1. Pilih **Berikutnya: Izin**.

   1. Pilih **Selanjutnya: Tanda**.

   1. (Opsional) Tambahkan metadata ke dalam peran dengan melampirkan tanda sebagai pasangan nilai-kunci. Untuk informasi lebih lanjut tentang penggunaan tanda dan IAM, lihat [Penandaan sumber daya IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_tags.html).

   1. Pilih **Berikutnya: Tinjauan**.

   1. Ketik **nama Peran**. Nama peran harus dimulai dengan`SageMaker AI`.

   1. (Opsional) Untuk **Deskripsi peran**, ketikkan deskripsi untuk peran baru tersebut.

   1. Tinjau peran dan kemudian pilih **Buat peran**.

   1. Setelah peran dibuat, pilih **Peran** di konsol IAM. Cari peran yang Anda buat dengan mengetikkan nama peran di kolom **Pencarian**.

   1. Pilih peran Anda.

   1. Selanjutnya, pilih **Lampirkan Kebijakan**.

   1. Cari `AmazonSageMakerEdgeDeviceFleetPolicy` di bidang **Pencarian**. Pilih `AmazonSageMakerEdgeDeviceFleetPolicy`.

   1. Pilih **Lampirkan kebijakan**.

   1. Tambahkan pernyataan kebijakan berikut ke hubungan kepercayaan:

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
              "Effect": "Allow",
              "Principal": {"Service": "credentials.iot.amazonaws.com"},
              "Action": "sts:AssumeRole"
            },
            {
              "Effect": "Allow",
              "Principal": {"Service": "sagemaker.amazonaws.com"},
              "Action": "sts:AssumeRole"
            }
        ]
      }
      ```

------

      Kebijakan kepercayaan adalah [dokumen kebijakan JSON](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_grammar) di mana Anda menentukan prinsip yang Anda percayai untuk mengambil peran tersebut. Untuk informasi selengkapnya tentang kebijakan kepercayaan, lihat [Istilah dan konsep peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html).

   1. Perhatikan AWS IoT peran ARN. Anda menggunakan ARN AWS IoT Peran untuk membuat dan mendaftarkan armada perangkat. Untuk menemukan peran IAM ARN dengan konsol:

      1. Pergi ke konsol IAM: [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

      1. Pilih **Peran**.

      1. Cari peran yang Anda buat dengan mengetikkan nama peran di bidang **Pencarian**.

      1. Pilih peran.

      1. Peran ARN ada di halaman Ringkasan.

1. **Buat bucket Amazon S3**.

   SageMaker Neo dan Edge Manager mengakses model yang telah dikompilasi sebelumnya dan model yang dikompilasi dari bucket Amazon S3. Edge Manager juga menyimpan data sampel dari armada perangkat Anda di Amazon S3.

   1. Buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

   1. Pilih **Buat bucket**.

   1. Dalam **nama Bucket**, masukkan nama untuk bucket Anda.

   1. Di **Wilayah**, pilih AWS Wilayah tempat Anda ingin ember berada.

   1. Di **pengaturan Bucket untuk Blokir Akses Publik**, pilih pengaturan yang ingin Anda terapkan ke bucket.

   1. Pilih **Buat bucket**.

   Untuk informasi selengkapnya tentang membuat bucket Amazon S3, lihat [Memulai Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html).

# Siapkan Model Anda untuk Deployment
<a name="edge-getting-started-step2"></a>

Di bagian ini Anda akan membuat objek SageMaker AI dan AWS IoT klien, mengunduh model pembelajaran mesin yang telah dilatih sebelumnya, mengunggah model Anda ke bucket Amazon S3 Anda, mengkompilasi model Anda untuk perangkat target Anda SageMaker dengan Neo, dan mengemas model Anda sehingga dapat digunakan dengan agen Edge Manager.

1. **Impor pustaka dan buat objek klien.**

   Tutorial ini menggunakan AWS SDK untuk Python (Boto3) untuk membuat klien untuk berinteraksi dengan SageMaker AI, Amazon S3, dan. AWS IoT

   Impor Boto3, tentukan Wilayah Anda, dan inisialisasi objek klien yang Anda butuhkan seperti yang ditunjukkan pada contoh berikut:

   ```
   import boto3
   import json
   import time
   
   AWS_REGION = 'us-west-2'# Specify your Region
   bucket = 'bucket-name'
   
   sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)
   iot_client = boto3.client('iot', region_name=AWS_REGION)
   ```

   Tentukan variabel dan tetapkan peran ARN yang Anda buat SageMaker untuk AI AWS IoT dan sebagai string:

   ```
   # Replace with the role ARN you created for SageMaker
   sagemaker_role_arn = "arn:aws:iam::<account>:role/*"
   
   # Replace with the role ARN you created for AWS IoT. 
   # Note: The name must start with 'SageMaker'
   iot_role_arn = "arn:aws:iam::<account>:role/SageMaker*"
   ```

1. **Latih model pembelajaran mesin.**

   Lihat [Train a Model with Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) untuk informasi selengkapnya tentang cara melatih model pembelajaran mesin menggunakan SageMaker AI. Anda dapat mengunggah model yang dilatih secara lokal secara opsional langsung ke bucket Amazon S3 URI.

   Jika Anda belum memiliki model, Anda dapat menggunakan model pra-terlatih untuk langkah selanjutnya dalam tutorial ini. Misalnya, Anda dapat menyimpan model MobileNet V2 dari TensorFlow kerangka kerja. MobileNet V2 adalah model klasifikasi gambar yang dioptimalkan untuk aplikasi seluler. Untuk informasi lebih lanjut tentang MobileNet V2, lihat [MobileNet GitHub README](https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet).

   Ketik berikut ini ke Notebook Jupyter Anda untuk menyimpan model V2 yang telah dilatih sebelumnya MobileNet :

   ```
   # Save the MobileNet V2 model to local storage
      import tensorflow as tf
      model = tf.keras.applications.MobileNetV2()
      model.save(“mobilenet_v2.h5”)
   ```
**catatan**  
Jika Anda belum TensorFlow menginstal, Anda dapat melakukannya dengan menjalankan `pip install tensorflow=2.4`
Gunakan TensorFlow versi 2.4 atau lebih rendah untuk tutorial ini.

   Model akan disimpan ke dalam `mobilenet_v2.h5` file. Sebelum mengemas model, Anda harus terlebih dahulu mengkompilasi model Anda menggunakan SageMaker Neo. Lihat [Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](neo-supported-devices-edge.md) untuk memeriksa apakah versi Anda TensorFlow (atau kerangka kerja pilihan lainnya) saat ini didukung oleh SageMaker Neo.

   SageMaker Neo membutuhkan model untuk disimpan sebagai file TAR terkompresi. Kemas ulang sebagai file TAR terkompresi (\$1.tar.gz):

   ```
   # Package MobileNet V2 model into a TAR file 
      import tarfile
      
      tarfile_name='mobilenet-v2.tar.gz'
      
      with tarfile.open(tarfile_name, mode='w:gz') as archive:
          archive.add('mobilenet-v2.h5')
   ```

1. **Unggah model Anda ke Amazon S3.**

   Setelah Anda memiliki model pembelajaran mesin, simpan di ember Amazon S3. *Contoh berikut menggunakan AWS CLI perintah untuk mengunggah model ke bucket Amazon S3 yang Anda buat sebelumnya di direktori bernama models.* Ketik berikut ini ke Notebook Jupyter Anda:

   ```
   !aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
   ```

1. **Kompilasi model Anda dengan SageMaker Neo.**

   Kompilasi model pembelajaran mesin Anda dengan SageMaker Neo untuk perangkat edge. Anda perlu mengetahui URI bucket Amazon S3 tempat Anda menyimpan model terlatih, kerangka kerja pembelajaran mesin yang Anda gunakan untuk melatih model, bentuk input model, dan perangkat target Anda.

   Untuk model MobileNet V2, gunakan yang berikut ini:

   ```
   framework = 'tensorflow'
   target_device = 'jetson_nano'
   data_shape = '{"data":[1,3,224,224]}'
   ```

   SageMaker Neo membutuhkan bentuk input model tertentu dan format model berdasarkan kerangka pembelajaran mendalam yang Anda gunakan. Untuk informasi selengkapnya tentang cara menyimpan model Anda, lihat[Bentuk data input apa yang diharapkan SageMaker Neo?](neo-compilation-preparing-model.md#neo-job-compilation-expected-inputs). Untuk informasi selengkapnya tentang perangkat dan kerangka kerja yang didukung oleh Neo, lihat[Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](neo-supported-devices-edge.md).

   Gunakan `CreateCompilationJob` API untuk membuat pekerjaan kompilasi dengan SageMaker Neo. Berikan nama untuk pekerjaan kompilasi, ARN Peran SageMaker AI, URI Amazon S3 tempat model Anda disimpan, bentuk input model, nama kerangka kerja, URI Amazon S3 tempat Anda SageMaker ingin AI menyimpan model yang dikompilasi, dan target perangkat edge Anda.

   ```
   # Specify the path where your model is stored
   model_directory = 'models'
   s3_model_uri = 's3://{}/{}/{}'.format(bucket, model_directory, tarfile_name)
   
   # Store compiled model in S3 within the 'compiled-models' directory
   compilation_output_dir = 'compiled-models'
   s3_output_location = 's3://{}/{}/'.format(bucket, compilation_output_dir)
   
   # Give your compilation job a name
   compilation_job_name = 'getting-started-demo'
   
   sagemaker_client.create_compilation_job(CompilationJobName=compilation_job_name,
                                           RoleArn=sagemaker_role_arn,
                                           InputConfig={
                                               'S3Uri': s3_model_uri,
                                               'DataInputConfig': data_shape,
                                               'Framework' : framework.upper()},
                                           OutputConfig={
                                               'S3OutputLocation': s3_output_location,
                                               'TargetDevice': target_device},
                                           StoppingCondition={'MaxRuntimeInSeconds': 900})
   ```

1. **Package model kompilasi Anda.**

   Pekerjaan pengemasan membutuhkan model yang SageMaker dikompilasi Neo dan membuat perubahan apa pun yang diperlukan untuk menerapkan model dengan mesin inferensi, agen Edge Manager. Untuk mengemas model Anda, buat pekerjaan pengemasan tepi dengan `create_edge_packaging` API atau konsol SageMaker AI.

   Anda perlu memberikan nama yang Anda gunakan untuk pekerjaan kompilasi Neo Anda, nama untuk pekerjaan pengemasan, peran ARN (lihat [Mengatur](edge-getting-started-step1.md) bagian), nama untuk model, versi model, dan URI bucket Amazon S3 untuk output pekerjaan pengemasan. Perhatikan bahwa nama pekerjaan pengemasan Edge Manager peka huruf besar/kecil. Berikut ini adalah contoh cara membuat pekerjaan pengemasan menggunakan API.

   ```
   edge_packaging_name='edge-packaging-demo'
   model_name="sample-model"
   model_version="1.1"
   ```

   Tentukan URI Amazon S3 tempat Anda ingin menyimpan model paket.

   ```
   # Output directory where you want to store the output of the packaging job
   packaging_output_dir = 'packaged_models'
   packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)
   ```

   Gunakan `CreateEdgePackagingJob` untuk mengemas model yang dikompilasi NEO Anda. Berikan nama untuk pekerjaan pengemasan tepi Anda dan nama yang Anda berikan untuk pekerjaan kompilasi Anda (dalam contoh ini, itu disimpan dalam variabel`compilation_job_name`). Juga berikan nama untuk model Anda, versi untuk model Anda (ini digunakan untuk membantu Anda melacak versi model apa yang Anda gunakan), dan URI S3 tempat Anda ingin SageMaker AI menyimpan model yang dikemas.

   ```
   sagemaker_client.create_edge_packaging_job(
                       EdgePackagingJobName=edge_packaging_name,
                       CompilationJobName=compilation_job_name,
                       RoleArn=sagemaker_role_arn,
                       ModelName=model_name,
                       ModelVersion=model_version,
                       OutputConfig={
                           "S3OutputLocation": packaging_s3_output
                           }
                       )
   ```

# Mendaftar dan Mengautentikasi Armada Perangkat Anda
<a name="edge-getting-started-step3"></a>

Di bagian ini Anda akan membuat objek AWS IoT benda Anda, membuat armada perangkat, mendaftarkan armada perangkat Anda sehingga dapat berinteraksi dengan cloud, membuat sertifikat X.509 untuk mengautentikasi perangkat Anda AWS IoT Core, mengaitkan alias peran dengan AWS IoT yang dihasilkan saat Anda membuat armada Anda, dapatkan titik akhir AWS khusus akun Anda untuk penyedia kredensi, dapatkan file Amazon Root CA resmi, dan unggah file Amazon CA ke Amazon S3.

1. **Buat AWS IoT sesuatu.**

   SageMaker Edge Manager memanfaatkan AWS IoT Core layanan untuk memfasilitasi koneksi antara perangkat edge dan titik akhir di AWS cloud. Anda dapat memanfaatkan AWS IoT fungsionalitas yang ada setelah mengatur perangkat agar berfungsi dengan Edge Manager.

   Untuk menghubungkan perangkat Anda AWS IoT, Anda perlu membuat *objek AWS IoT benda*, membuat dan mendaftarkan sertifikat klien dengan AWS IoT, dan membuat dan mengonfigurasi peran IAM untuk perangkat Anda.

   Pertama, buat AWS IoT benda benda dengan AWS IoT klien (`iot_client`) yang Anda buat sebelumnya dengan Boto3. Contoh berikut menunjukkan cara membuat dua benda benda:

   ```
   iot_thing_name = 'sample-device'
   iot_thing_type = 'getting-started-demo'
   
   iot_client.create_thing_type(
       thingTypeName=iot_thing_type
   )
   
   # Create an AWS IoT thing objects
   iot_client.create_thing(
       thingName=iot_thing_name,
       thingTypeName=iot_thing_type
   )
   ```

1. **Buat armada perangkat Anda.**

   Buat armada perangkat dengan objek klien SageMaker AI yang ditentukan pada langkah sebelumnya. Anda juga dapat menggunakan konsol SageMaker AI untuk membuat armada perangkat.

   ```
   import time
   device_fleet_name="demo-device-fleet" + str(time.time()).split('.')[0]
   device_name="sagemaker-edge-demo-device" + str(time.time()).split('.')[0]
   ```

   Tentukan peran IoT Anda ARN. Ini memungkinkan AWS IoT memberikan kredensil sementara ke perangkat.

   ```
   device_model_directory='device_output'
   s3_device_fleet_output = 's3://{}/{}'.format(bucket, device_model_directory)
   
   sagemaker_client.create_device_fleet(
       DeviceFleetName=device_fleet_name,
       RoleArn=iot_role_arn, # IoT Role ARN specified in previous step
       OutputConfig={
           'S3OutputLocation': s3_device_fleet_output
       }
   )
   ```

   Alias AWS IoT peran dibuat saat Anda membuat armada perangkat. Alias peran ini dikaitkan dengan AWS IoT penggunaan `iot_client` objek di langkah selanjutnya.

1. **Daftarkan armada perangkat Anda.**

   Untuk berinteraksi dengan cloud, Anda perlu mendaftarkan perangkat Anda ke SageMaker Edge Manager. Dalam contoh ini, Anda mendaftarkan satu perangkat dengan armada yang Anda buat. Untuk mendaftarkan perangkat, Anda perlu memberikan nama perangkat dan nama AWS IoT benda seperti yang ditunjukkan pada contoh berikut:

   ```
   # Device name should be 36 characters
   device_name = "sagemaker-edge-demo-device" + str(time.time()).split('.')[0]
   
   sagemaker_client.register_devices(
       DeviceFleetName=device_fleet_name,
       Devices=[
           {
               "DeviceName": device_name,
               "IotThingName": iot_thing_name
           }
       ]
   )
   ```

1. **Buat sertifikat X.509.**

   Setelah membuat objek AWS IoT benda, Anda harus membuat sertifikat perangkat X.509 untuk objek benda Anda. Sertifikat ini mengautentikasi perangkat Anda ke AWS IoT Core.

   Gunakan berikut ini untuk membuat kunci pribadi, kunci publik, dan file sertifikat X.509 menggunakan AWS IoT client defined () `iot_client` sebelumnya.

   ```
   # Creates a 2048-bit RSA key pair and issues an X.509 # certificate 
   # using the issued public key.
   create_cert = iot_client.create_keys_and_certificate(
       setAsActive=True 
   )
   
   # Get certificate from dictionary object and save in its own
   with open('./device.pem.crt', 'w') as f:
       for line in create_cert['certificatePem'].split('\n'):
           f.write(line)
           f.write('\n')
   # Get private key from dictionary object and save in its own 
   with open('./private.pem.key', 'w') as f:
       for line in create_cert['keyPair']['PrivateKey'].split('\n'):
           f.write(line)
           f.write('\n')
   # Get a private key from dictionary object and save in its own 
   with open('./public.pem.key', 'w') as f:
       for line in create_cert['keyPair']['PublicKey'].split('\n'):
           f.write(line)
           f.write('\n')
   ```

1. **Kaitkan alias peran dengan AWS IoT.**

   Saat Anda membuat armada perangkat dengan SageMaker AI (`sagemaker_client.create_device_fleet()`), alias peran dibuat untuk Anda. Alias AWS IoT peran menyediakan mekanisme untuk perangkat yang terhubung untuk mengautentikasi AWS IoT menggunakan sertifikat X.509, dan kemudian mendapatkan AWS kredensil berumur pendek dari peran IAM yang terkait dengan alias peran. AWS IoT Alias peran memungkinkan Anda untuk mengubah peran perangkat tanpa harus memperbarui perangkat. Gunakan `DescribeDeviceFleet` untuk mendapatkan nama alias peran dan ARN.

   ```
   # Print Amazon Resource Name (ARN) and alias that has access 
   # to AWS Internet of Things (IoT).
   sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name)
   
   # Store iot role alias string in a variable
   # Grabs role ARN
   full_role_alias_name = sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name)['IotRoleAlias']
   start_index = full_role_alias_name.find('SageMaker') # Find beginning of role name  
   role_alias_name = full_role_alias_name[start_index:]
   ```

   Gunakan `iot_client` untuk memfasilitasi mengaitkan alias peran yang dihasilkan dari pembuatan armada perangkat dengan: AWS IoT

   ```
   role_alias = iot_client.describe_role_alias(
                       roleAlias=role_alias_name)
   ```

   Untuk informasi selengkapnya tentang alias peran IAM, lihat Alias [peran memungkinkan akses ke layanan yang tidak](https://docs.aws.amazon.com/iot/latest/developerguide/audit-chk-role-alias-unused-svcs.html) digunakan.

   Anda membuat dan mendaftarkan sertifikat dengan AWS IoT sebelumnya untuk otentikasi perangkat Anda berhasil. Sekarang, Anda perlu membuat dan melampirkan kebijakan ke sertifikat untuk mengotorisasi permintaan token keamanan.

   ```
   alias_policy = {
     "Version": "2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Action": "iot:AssumeRoleWithCertificate",
       "Resource": role_alias['roleAliasDescription']['roleAliasArn']
     }
   }
   
   policy_name = 'aliaspolicy-'+ str(time.time()).split('.')[0]
   aliaspolicy = iot_client.create_policy(policyName=policy_name,
                                          policyDocument=json.dumps(alias_policy))
   
   # Attach policy
   iot_client.attach_policy(policyName=policy_name,
                               target=create_cert['certificateArn'])
   ```

1. **Dapatkan titik akhir AWS khusus akun Anda untuk penyedia kredensional.**

   Perangkat Edge membutuhkan titik akhir untuk mengasumsikan kredensil. Dapatkan titik akhir AWS khusus akun Anda untuk penyedia kredensi.

   ```
   # Get the unique endpoint specific to your AWS account that is making the call.
   iot_endpoint = iot_client.describe_endpoint(
       endpointType='iot:CredentialProvider'
   )
   
   endpoint="https://{}/role-aliases/{}/credentials".format(iot_endpoint['endpointAddress'],role_alias_name)
   ```

1. **Dapatkan file CA root Amazon resmi dan unggah ke bucket Amazon S3.**

   Gunakan yang berikut ini di Notebook Jupyter Anda atau AWS CLI (jika Anda menggunakan terminal Anda, hapus '\$1' fungsi sihir):

   ```
   !wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

   Gunakan titik akhir untuk membuat permintaan HTTPS ke penyedia kredensi untuk mengembalikan token keamanan. Contoh perintah berikut menggunakan`curl`, tetapi Anda dapat menggunakan klien HTTP apa pun.

   ```
   !curl --cert device.pem.crt --key private.pem.key --cacert AmazonRootCA1.pem $endpoint
   ```

   Jika sertifikat diverifikasi, unggah kunci dan sertifikat ke URI bucket Amazon S3 Anda:

   ```
   !aws s3 cp private.pem.key s3://{bucket}/authorization-files/
   !aws s3 cp device.pem.crt s3://{bucket}/authorization-files/
   !aws s3 cp AmazonRootCA1.pem s3://{bucket}/authorization-files/
   ```

   Bersihkan direktori kerja Anda dengan memindahkan kunci dan sertifikat Anda ke direktori yang berbeda:

   ```
   # Optional - Clean up working directory
   !mkdir authorization-files
   !mv private.pem.key device.pem.crt AmazonRootCA1.pem authorization-files/
   ```

# Unduh dan Atur Edge Manager
<a name="edge-getting-started-step4"></a>

Agen Edge Manager adalah mesin inferensi untuk perangkat edge Anda. Gunakan agen untuk membuat prediksi dengan model yang dimuat ke perangkat tepi Anda. Agen juga mengumpulkan metrik model dan menangkap data pada interval tertentu.



Di bagian ini Anda akan mengatur perangkat Anda dengan agen. Untuk melakukannya, pertama-tama salin artefak rilis dan tandatangani sertifikat root dari bucket rilis secara lokal ke mesin Anda. Setelah Anda membuka zip artefak rilis, unggah ke Amazon S3. Selanjutnya, tentukan dan simpan file konfigurasi untuk agen. Template disediakan untuk Anda salin dan tempel. Terakhir, salin artefak rilis, file konfigurasi, dan kredensil ke perangkat Anda.

1. **Unduh agen SageMaker Edge Manager.**

   Agen dirilis dalam format biner untuk sistem operasi yang didukung. Contoh ini menjalankan inferensi pada Jetson Nano yang menggunakan sistem operasi Linux dan memiliki arsitektur. ARM64 Untuk informasi selengkapnya tentang apa yang digunakan oleh sistem operasi dan arsitektur perangkat yang didukung, lihat[Perangkat, Arsitektur Chip, dan Sistem yang Didukung](neo-supported-devices-edge-devices.md).

   Ambil versi binari terbaru dari bucket rilis SageMaker Edge Manager dari Wilayah us-west-2.

   ```
   !aws s3 ls s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/ | sort -r
   ```

   Ini mengembalikan artefak rilis yang diurutkan berdasarkan versinya.

   ```
                              PRE 1.20210512.96da6cc/
                              PRE 1.20210305.a4bc999/
                              PRE 1.20201218.81f481f/
                              PRE 1.20201207.02d0e97/
   ```

   Versi ini memiliki format berikut:`<MAJOR_VERSION>.<YYYY-MM-DD>.<SHA-7>`. Ini terdiri dari tiga komponen:
   + `<MAJOR_VERSION>`: Versi rilis. Versi rilis saat ini diatur ke`1`.
   + `<YYYY-MM-DD>`: Cap waktu pelepasan artefak.
   + <SHA-7>: ID komit repositori tempat rilis dibuat.

   Salin file TAR zip secara lokal atau ke perangkat Anda secara langsung. Contoh berikut menunjukkan cara menyalin artefak rilis terbaru pada saat dokumen ini dirilis.

   ```
   !aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/1.20201218.81f481f/1.20201218.81f481f.tgz ./
   ```

   Setelah Anda memiliki artefak, unzip file TAR zip. Berikut ini membuka ritsleting file TAR dan menyimpannya dalam direktori bernama: `agent_demo`

   ```
   !mkdir agent_demo
   !tar -xvzf 1.20201218.81f481f.tgz -C ./agent_demo
   ```

   Unggah artefak rilis agen ke bucket Amazon S3 Anda. Contoh kode berikut menyalin konten di dalamnya `agent_demo` dan mengunggahnya ke direktori dalam bucket Amazon S3 Anda yang disebut: `agent_demo`

   ```
   !aws s3 cp --recursive ./agent_demo s3://{bucket}/agent_demo
   ```

   Anda juga memerlukan sertifikat root penandatanganan dari ember rilis:

   ```
   !aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Certificates/us-west-2/us-west-2.pem ./
   ```

   Unggah sertifikat root penandatanganan ke bucket Amazon S3 Anda:

   ```
   !aws s3 cp us-west-2.pem s3://{bucket}/authorization-files/
   ```

1. **Tentukan file konfigurasi agen SageMaker Edge Manager.**

   Pertama, tentukan file konfigurasi agen sebagai berikut:

   ```
   sagemaker_edge_config = {
       "sagemaker_edge_core_device_name": "device_name",
       "sagemaker_edge_core_device_fleet_name": "device_fleet_name",
       "sagemaker_edge_core_capture_data_buffer_size": 30,
       "sagemaker_edge_core_capture_data_push_period_seconds": 4,
       "sagemaker_edge_core_folder_prefix": "demo_capture",
       "sagemaker_edge_core_region": "us-west-2",
       "sagemaker_edge_core_root_certs_path": "/agent_demo/certificates",
       "sagemaker_edge_provider_aws_ca_cert_file": "/agent_demo/iot-credentials/AmazonRootCA1.pem",
       "sagemaker_edge_provider_aws_cert_file": "/agent_demo/iot-credentials/device.pem.crt",
       "sagemaker_edge_provider_aws_cert_pk_file": "/agent_demo/iot-credentials/private.pem.key",
       "sagemaker_edge_provider_aws_iot_cred_endpoint": "endpoint",
       "sagemaker_edge_provider_provider": "Aws",
       "sagemaker_edge_provider_s3_bucket_name": bucket,
       "sagemaker_edge_core_capture_data_destination": "Cloud"
   }
   ```

   Ganti yang berikut ini:
   + `"device_name"`dengan nama perangkat Anda (string ini disimpan di langkah sebelumnya dalam variabel bernama`device_name`).
   + `"device_fleet_name`"dengan nama armada perangkat Anda (string ini disimpan langkah sebelumnya dalam variabel bernama`device_fleet_name`)
   + `"endpoint"`dengan titik akhir AWS khusus akun Anda untuk penyedia kredensional (string ini disimpan di langkah sebelumnya dalam variabel bernama). `endpoint`

   Selanjutnya, simpan sebagai file JSON:

   ```
   edge_config_file = open("sagemaker_edge_config.json", "w")
   json.dump(sagemaker_edge_config, edge_config_file, indent = 6)
   edge_config_file.close()
   ```

   Unggah file konfigurasi ke bucket Amazon S3 Anda:

   ```
   !aws s3 cp sagemaker_edge_config.json s3://{bucket}/
   ```

1. **Salin artefak rilis, file konfigurasi, dan kredensional ke perangkat Anda.**

   Instruksi berikut dilakukan pada perangkat tepi itu sendiri.
**catatan**  
Anda harus terlebih dahulu menginstal Python, the AWS SDK untuk Python (Boto3), dan AWS CLI on your edge device. 

   Buka terminal di perangkat Anda. Buat folder untuk menyimpan artefak rilis, kredensialmu, dan file konfigurasi.

   ```
   mkdir agent_demo
   cd agent_demo
   ```

   Salin konten artefak rilis yang disimpan di bucket Amazon S3 ke perangkat:

   ```
   # Copy release artifacts 
   aws s3 cp s3://<bucket-name>/agent_demo/ ./ --recursive
   ```

   (Isi artefak rilis disimpan dalam direktori yang disebut `agent_demo` pada langkah sebelumnya). Ganti `<bucket-name>` dan `agent_demo` dengan nama bucket Amazon S3 Anda dan jalur file ke artefak rilis Anda, masing-masing.

   Buka `/bin` direktori dan buat file biner dapat dieksekusi:

   ```
   cd bin
   
   chmod +x sagemaker_edge_agent_binary
   chmod +x sagemaker_edge_agent_client_example
   
   cd agent_demo
   ```

   Buat direktori untuk menyimpan AWS IoT kredensil Anda dan salin kredensional Anda dari bucket Amazon S3 ke perangkat edge Anda (gunakan yang sama pada yang Anda tentukan dalam variabel: `bucket`

   ```
   mkdir iot-credentials
   cd iot-credentials
   
   aws s3 cp s3://<bucket-name>/authorization-files/AmazonRootCA1.pem ./
   aws s3 cp s3://<bucket-name>/authorization-files/device.pem.crt ./
   aws s3 cp s3://<bucket-name>/authorization-files/private.pem.key ./
   
   cd ../
   ```

   Buat direktori untuk menyimpan sertifikat root penandatanganan model Anda:

   ```
   mkdir certificates
   
   cd certificates
   
   aws s3 cp s3://<bucket-name>/authorization-files/us-west-2.pem ./
   
   cd agent_demo
   ```

   Salin file konfigurasi Anda ke perangkat Anda:

   ```
   #Download config file from S3
   aws s3 cp s3://<bucket-name>/sagemaker_edge_config.json ./
   
   cd agent_demo
   ```

   `agent_demo`Direktori Anda di perangkat edge Anda akan terlihat mirip dengan yang berikut ini:

   ```
   ├──agent_demo
   |    ├── bin
   |        ├── sagemaker_edge_agent_binary
   |        └── sagemaker_edge_agent_client_example
   |    ├── sagemaker_edge_config.json
   |    ├── certificates
   |        └──us-west-2.pem
   |    ├── iot-credentials
   |        ├── AmazonRootCA1.pem
   |        ├── device.pem.crt
   |        └── private.pem.key
   |    ├── docs
   |        ├── api
   |        └── examples
   |    ├── ATTRIBUTIONS.txt
   |    ├── LICENSE.txt  
   |    └── RELEASE_NOTES.md
   ```

# Jalankan Agen
<a name="edge-getting-started-step5"></a>

Pada bagian ini Anda akan menjalankan agen sebagai biner menggunakan gRPC, dan memeriksa apakah perangkat dan armada Anda bekerja dan mengumpulkan data sampel.

1. **Luncurkan agen.**

   Agen SageMaker Edge Manager dapat dijalankan sebagai proses mandiri dalam bentuk biner executable Executable dan Linkable Format (ELF) yang dapat dieksekusi atau dapat dihubungkan sebagai Dynamic Shared Object (.dll). Berjalan sebagai biner yang dapat dieksekusi mandiri adalah mode yang disukai dan didukung di Linux.

   Contoh ini menggunakan gRPC untuk menjalankan agen. gRPC adalah kerangka kerja Remote Procedure Call (RPC) berkinerja tinggi open source yang dapat berjalan di lingkungan apa pun. [Untuk informasi selengkapnya tentang gRPC, lihat dokumentasi gRPC.](https://grpc.io/docs/)

   Untuk menggunakan gRPC, lakukan langkah-langkah berikut: 

   1. Tentukan layanan dalam file.proto.

   1. Hasilkan kode server dan klien menggunakan compiler buffer protokol.

   1. Gunakan Python (atau bahasa lain yang didukung oleh gRPC) gRPC API untuk menulis server untuk layanan Anda.

   1. Gunakan Python (atau bahasa lain yang didukung oleh gRPC) gRPC API untuk menulis klien untuk layanan Anda. 

   Artefak rilis yang Anda unduh berisi aplikasi gRPC yang siap untuk Anda jalankan agen. Contoh ini terletak di dalam `/bin` direktori artefak rilis Anda. `sagemaker_edge_agent_binary`Biner executable ada di direktori ini.

   Untuk menjalankan agen dengan contoh ini, berikan path ke file socket Anda (.sock) dan file JSON .config:

   ```
   ./bin/sagemaker_edge_agent_binary -a /tmp/sagemaker_edge_agent_example.sock -c sagemaker_edge_config.json
   ```

1. **Periksa perangkat Anda.**

   Periksa apakah perangkat Anda terhubung dan mengambil sampel data. Melakukan pemeriksaan berkala, secara manual atau otomatis, memungkinkan Anda untuk memeriksa apakah perangkat atau armada Anda berfungsi dengan baik.

   Berikan nama armada tempat perangkat berada dan pengidentifikasi perangkat unik. Dari mesin lokal Anda, jalankan yang berikut ini:

   ```
   sagemaker_client.describe_device(
       DeviceName=device_name,
       DeviceFleetName=device_fleet_name
   )
   ```

   Untuk model yang diberikan, Anda dapat melihat nama, versi model, waktu sampel terbaru, dan kapan inferensi terakhir dibuat.

   ```
   { 
     "DeviceName": "sample-device",
     "DeviceFleetName": "demo-device-fleet",
     "IoTThingName": "sample-thing-name-1",
     "RegistrationTime": 1600977370,
     "LatestHeartbeat": 1600977370,
     "Models":[
       {
           "ModelName": "mobilenet_v2.tar.gz", 
           "ModelVersion": "1.1",
           "LatestSampleTime": 1600977370,
           "LatestInference": 1600977370 
       }
     ]
   }
   ```

   Stempel waktu yang disediakan oleh `LastetHeartbeat` menunjukkan sinyal terakhir yang diterima dari perangkat. `LatestSampleTime`dan `LatestInference` jelaskan cap waktu dari sampel data terakhir dan inferensi, masing-masing.

1. **Periksa armada Anda.**

   Periksa apakah armada Anda bekerja sama`GetDeviceFleetReport`. Berikan nama armada milik perangkat tersebut.

   ```
   sagemaker_client.get_device_fleet_report(
       DeviceFleetName=device_fleet_name
   )
   ```

   Untuk model tertentu, Anda dapat melihat nama, versi model, waktu sampel terbaru, dan kapan inferensi terakhir dibuat, bersama dengan URI bucket Amazon S3 tempat sampel data disimpan.

   ```
   # Sample output
   {
    "DeviceFleetName": "sample-device-fleet",
    "DeviceFleetArn": "arn:aws:sagemaker:us-west-2:9999999999:device-fleet/sample-fleet-name",
    "OutputConfig": {
                 "S3OutputLocation": "s3://fleet-bucket/package_output",
     },
    "AgentVersions":[{"Version": "1.1", "AgentCount": 2}]}
    "DeviceStats": {"Connected": 2, "Registered": 2}, 
    "Models":[{
               "ModelName": "sample-model", 
               "ModelVersion": "1.1",
               "OfflineDeviceCount": 0,
               "ConnectedDeviceCount": 2,
               "ActiveDeviceCount": 2, 
               "SamplingDeviceCount": 100
               }]
   }
   ```

# Pengaturan untuk Perangkat dan Armada di SageMaker Edge Manager
<a name="edge-device-fleet"></a>

Armada adalah kumpulan perangkat yang dikelompokkan secara logis yang dapat Anda gunakan untuk mengumpulkan dan menganalisis data. Anda dapat menggunakan SageMaker Edge Manager untuk mengoperasikan model pembelajaran mesin pada armada kamera pintar, speaker pintar, robot, dan perangkat tepi lainnya.

Buat armada dan daftarkan perangkat Anda secara terprogram dengan AWS SDK untuk Python (Boto3) atau melalui konsol SageMaker AI.

**Topics**
+ [Buat Armada](edge-device-fleet-create.md)
+ [Daftarkan Perangkat](edge-device-fleet-register.md)
+ [Periksa Status](edge-device-fleet-check-status.md)

# Buat Armada
<a name="edge-device-fleet-create"></a>

[Anda dapat membuat armada secara terprogram dengan AWS SDK untuk Python (Boto3) atau melalui konsol SageMaker https://console.aws.amazon.com AI/sagemaker.](https://console.aws.amazon.com/sagemaker/)

## Buat Armada (Boto3)
<a name="edge-device-fleet-create-boto3"></a>

Gunakan `CreateDeviceFleet` API untuk membuat armada. Tentukan nama untuk armada, ARN AWS IoT Peran Anda untuk `RoleArn` bidang, serta URI Amazon S3 tempat perangkat menyimpan data sampel.

Anda dapat secara opsional menyertakan deskripsi armada, tag, dan ID AWS KMS Kunci.

```
import boto3

# Create SageMaker client so you can interact and manage SageMaker resources
sagemaker_client = boto3.client("sagemaker", region_name="aws-region")

sagemaker_client.create_device_fleet(
    DeviceFleetName="sample-fleet-name",
    RoleArn="arn:aws:iam::999999999:role/rolename", # IoT Role ARN
    Description="fleet description",
    OutputConfig={
        S3OutputLocation="s3://bucket/",
        KMSKeyId: "1234abcd-12ab-34cd-56ef-1234567890ab",
    },
        Tags=[
        {
            "Key": "string", 
            "Value" : "string"
         }
     ],
)
```

Alias AWS IoT Peran dibuat untuk Anda saat Anda membuat armada perangkat. Alias AWS IoT peran menyediakan mekanisme untuk perangkat yang terhubung untuk mengautentikasi AWS IoT menggunakan sertifikat X.509 dan kemudian mendapatkan AWS kredensil berumur pendek dari peran IAM yang terkait dengan alias peran. AWS IoT 

Gunakan `DescribeDeviceFleet` untuk mendapatkan nama alias peran dan ARN.

```
# Print Amazon Resource Name (ARN) and alias that has access 
# to AWS Internet of Things (IoT).
sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name)['IotRoleAlias']
```

Gunakan `DescribeDeviceFleet` API untuk mendapatkan deskripsi armada yang Anda buat.

```
sagemaker_client.describe_device_fleet(
    DeviceFleetName="sample-fleet-name"
)
```

Secara default, ia mengembalikan nama armada, armada perangkat ARN, Amazon S3 bucket URI, peran IAM, alias peran yang dibuat, stempel waktu saat armada dibuat AWS IoT, dan stempel waktu kapan armada terakhir dimodifikasi.

```
{ "DeviceFleetName": "sample-fleet-name",
  "DeviceFleetArn": "arn:aws:sagemaker:us-west-2:9999999999:device-fleet/sample-fleet-name",
  "IAMRole": "arn:aws:iam::999999999:role/rolename",
  "Description": "this is a sample fleet",
  "IoTRoleAlias": "arn:aws:iot:us-west-2:9999999999:rolealias/SagemakerEdge-sample-fleet-name"
  "OutputConfig": {
              "S3OutputLocation": "s3://bucket/folder",
              "KMSKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
   },
   "CreationTime": "1600977370",
   "LastModifiedTime": "1600977370"}
```

## Buat Armada (Konsol)
<a name="edge-device-fleet-create-console"></a>

Anda dapat membuat pekerjaan pengemasan Edge Manager menggunakan konsol Amazon SageMaker AI di [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/).

1. Di konsol SageMaker AI, pilih **Edge Manager** lalu pilih **armada perangkat Edge**.

1. Pilih **Buat armada perangkat**.  
![\[Lokasi armada perangkat Buat di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/create-device-button-edited.png)

1. Masukkan nama untuk armada perangkat di bidang **Nama armada perangkat**. Pilih **Berikutnya**.  
![\[Lokasi tombol Berikutnya di bagian Properti armada perangkat di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/create-device-fleet-filled.png)

1. Pada halaman **konfigurasi Output**, tentukan URI bucket Amazon S3 tempat Anda ingin menyimpan data sampel dari armada perangkat. Anda dapat secara opsional menambahkan kunci enkripsi juga dengan memilih AWS KMS kunci yang ada dari daftar dropdown atau dengan memasukkan ARN kunci. Pilih **Kirim**.  
![\[Contoh halaman konfigurasi Output di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/create-device-fleet-output-filled.png)

1. Pilih nama armada perangkat Anda untuk diarahkan ke detail armada perangkat. Halaman ini menampilkan nama armada perangkat, ARN, deskripsi (jika Anda memberikannya), tanggal armada dibuat, terakhir kali armada diubah, URI bucket Amazon S3, ID kunci (jika disediakan) AWS KMS , alias (jika disediakan) AWS IoT , dan peran IAM. Jika Anda menambahkan tag, tag akan muncul di bagian **Tag armada perangkat**.

# Daftarkan Perangkat
<a name="edge-device-fleet-register"></a>

**penting**  
Pendaftaran perangkat diperlukan untuk menggunakan bagian mana pun dari SageMaker Edge Manager.

[Anda dapat membuat armada secara terprogram dengan AWS SDK untuk Python (Boto3) atau melalui konsol SageMaker AI di /sagemaker. https://console.aws.amazon.com](https://console.aws.amazon.com/sagemaker/)

## Daftarkan Perangkat (Boto3)
<a name="edge-device-fleet-register-boto3"></a>

Untuk mendaftarkan perangkat Anda, pertama-tama buat dan daftarkan objek AWS IoT benda dan konfigurasikan peran IAM. SageMaker Edge Manager memanfaatkan AWS IoT Core layanan untuk memfasilitasi koneksi antara perangkat edge dan cloud. Anda dapat memanfaatkan AWS IoT fungsionalitas yang ada setelah mengatur perangkat agar berfungsi dengan Edge Manager.

Untuk menghubungkan perangkat Anda ke AWS IoT Anda perlu membuat objek AWS IoT benda, membuat dan mendaftarkan sertifikat klien dengan AWS IoT, dan membuat dan mengkonfigurasi peran IAM untuk perangkat Anda.

Lihat [Panduan Memulai](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manager-getting-started.html) untuk contoh mendalam atau [layanan Jelajahi AWS IoT Core dalam](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs-first-thing.html) tutorial langsung.

Gunakan `RegisterDevices` API untuk mendaftarkan perangkat Anda. Berikan nama armada yang Anda inginkan perangkat menjadi bagiannya, serta nama untuk perangkat tersebut. Anda secara opsional dapat menambahkan deskripsi ke perangkat, tag, dan nama AWS IoT benda yang terkait dengan perangkat.

```
sagemaker_client.register_devices(
    DeviceFleetName="sample-fleet-name",
    Devices=[
        {          
            "DeviceName": "sample-device-1",
            "IotThingName": "sample-thing-name-1",
            "Description": "Device #1"
        }
     ],
     Tags=[
        {
            "Key": "string", 
            "Value" : "string"
         }
     ],
)
```

## Daftarkan Perangkat (Konsol)
<a name="edge-device-fleet-register-console"></a>

Anda dapat mendaftarkan perangkat Anda menggunakan konsol SageMaker AI di [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/).

1. Di konsol SageMaker AI, pilih **Edge Inference** lalu pilih **perangkat Edge**.

1. Pilih **Daftarkan perangkat**.  
![\[Lokasi Daftarkan perangkat di bagian Perangkat Tepi konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/register-device-button.png)

1. Di bagian **Properti perangkat**, masukkan nama armada yang dimiliki perangkat di bawah bidang **Nama armada perangkat**. Pilih **Berikutnya**.  
![\[Bagian Properti perangkat di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/register-devices-empty.png)

1. Di bagian **Sumber perangkat**, tambahkan perangkat Anda satu per satu. Anda harus menyertakan **Nama Perangkat** untuk setiap perangkat di armada Anda. Anda secara opsional dapat memberikan deskripsi (di bidang **Deskripsi**) dan nama objek Internet of Things (IoT) (di bidang nama **IoT**). Pilih **Kirim** setelah Anda menambahkan semua perangkat Anda.  
![\[Bagian Sumber perangkat di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/register-devices-device-source.png)

   Halaman **Perangkat** menampilkan nama perangkat yang telah Anda tambahkan, armada yang dimilikinya, kapan terdaftar, detak jantung terakhir, dan deskripsi dan AWS IoT nama, jika Anda memberikannya.

   Pilih perangkat untuk melihat detail perangkat, termasuk nama perangkat, armada, ARN, deskripsi, nama IoT Thing, saat perangkat terdaftar, dan detak jantung terakhir.

# Periksa Status
<a name="edge-device-fleet-check-status"></a>

Periksa apakah perangkat atau armada Anda terhubung dan mengambil sampel data. Melakukan pemeriksaan berkala, secara manual atau otomatis, memungkinkan Anda untuk memeriksa apakah perangkat atau armada Anda berfungsi dengan baik.

Gunakan konsol Amazon S3 di [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)untuk secara interaktif memilih armada untuk pemeriksaan status. Anda juga dapat menggunakan AWS SDK untuk Python (Boto3). Berikut ini menjelaskan berbeda APIs dari Boto3 yang dapat Anda gunakan untuk memeriksa status perangkat atau armada Anda. Gunakan API yang paling sesuai dengan kasus penggunaan Anda.
+ **Periksa perangkat individual.**

  Untuk memeriksa status perangkat individual, gunakan `DescribeDevice` API. Daftar yang berisi satu atau beberapa model disediakan jika model telah diterapkan ke perangkat.

  ```
  sagemaker_client.describe_device(
      DeviceName="sample-device-1",
      DeviceFleetName="sample-fleet-name"
  )
  ```

  Menjalankan `DescribeDevice` pengembalian:

  ```
  { "DeviceName": "sample-device".
    "Description": "this is a sample device",
    "DeviceFleetName": "sample-device-fleet",
    "IoTThingName": "SampleThing",
    "RegistrationTime": 1600977370,
    "LatestHeartbeat": 1600977370,
    "Models":[
          {
           "ModelName": "sample-model", 
           "ModelVersion": "1.1",
           "LatestSampleTime": 1600977370,
           "LatestInference": 1600977370 
          }
     ]
  }
  ```
+ **Periksa armada perangkat.**

  Untuk memeriksa status armada, gunakan `GetDeviceFleetReport` API. Berikan nama armada perangkat untuk mendapatkan ringkasan armada.

  ```
  sagemaker_client.get_device_fleet_report(
      DeviceFleetName="sample-fleet-name"
  )
  ```
+ **Periksa detak jantung.**

  Setiap perangkat dalam armada secara berkala menghasilkan sinyal, atau “detak jantung”. Detak jantung dapat digunakan untuk memeriksa apakah perangkat berkomunikasi dengan Edge Manager. Jika stempel waktu detak jantung terakhir tidak diperbarui, perangkat mungkin gagal.

  Periksa detak jantung terakhir dengan dibuat oleh perangkat dengan `DescribeDevice` API. Tentukan nama perangkat dan armada tempat perangkat tepi berada.

  ```
  sagemaker_client.describe_device(
      DeviceName="sample-device-1",
      DeviceFleetName="sample-fleet-name"
  )
  ```

# Cara Package Model
<a name="edge-packaging-job"></a>

SageMaker Pekerjaan pengemasan Edge Manager mengambil model yang SageMaker dikompilasi Amazon Neo dan membuat perubahan apa pun yang diperlukan untuk menerapkan model dengan mesin inferensi, agen Edge Manager.

**Topics**
+ [Prasyarat lengkap](edge-packaging-job-prerequisites.md)
+ [Package a Model (Amazon SageMaker AI Console)](edge-packaging-job-console.md)
+ [Package a Model (Boto3)](edge-packaging-job-boto3.md)

# Prasyarat lengkap
<a name="edge-packaging-job-prerequisites"></a>

Untuk mengemas model, Anda harus melakukan hal berikut:

1. **Kompilasi model pembelajaran mesin Anda dengan SageMaker AI Neo.**

   Jika Anda belum melakukannya, kompilasi model Anda dengan SageMaker Neo. Untuk informasi selengkapnya tentang cara mengkompilasi model Anda, lihat [Mengompilasi dan Menerapkan Model](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) dengan Neo. Jika Anda adalah pengguna pertama kali SageMaker Neo, lakukan [Memulai dengan Perangkat Neo Edge](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html).

1. **Dapatkan nama pekerjaan kompilasi Anda.**

   Berikan nama nama pekerjaan kompilasi yang Anda gunakan saat Anda menyusun model Anda dengan SageMaker Neo. Buka konsol SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)dan pilih **pekerjaan Kompilasi** untuk menemukan daftar kompilasi yang telah dikirimkan ke AWS akun Anda. Nama-nama pekerjaan kompilasi yang dikirimkan ada di kolom **Nama**.

1. **Dapatkan IAM ARN Anda.**

   Anda memerlukan Nama Sumber Daya Amazon (ARN) dari peran IAM yang dapat Anda gunakan untuk mengunduh dan mengunggah model dan menghubungi Neo. SageMaker 

   Gunakan salah satu metode berikut untuk mendapatkan ARN IAM Anda:
   + **Secara terprogram dengan AI SageMaker Python SDK**

     ```
     import sagemaker
     
     # Initialize SageMaker Session object so you can interact with AWS resources
     sess = sagemaker.Session()
     
     # Get the role ARN 
     role = sagemaker.get_execution_role()
     
     print(role)
     >> arn:aws:iam::<your-aws-account-id>:role/<your-role-name>
     ```

     Untuk informasi selengkapnya tentang penggunaan SageMaker Python SDK, lihat AI [SageMaker Python](https://sagemaker.readthedocs.io/en/stable/index.html) SDK API.
   + **Menggunakan konsol AWS Identity and Access Management (IAM)**

     Arahkan ke konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Di bagian **Sumber Daya** IAM, pilih **Peran** untuk melihat daftar peran di AWS akun Anda. Pilih atau buat peran yang memiliki`AmazonSageMakerFullAccess`,`AWSIoTFullAccess`, dan`AmazonS3FullAccess`.

     Untuk informasi lebih lanjut tentang IAM, lihat [Apa itu IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)?

1. **Memiliki URI bucket S3.**

   Anda harus memiliki setidaknya satu URI bucket Amazon Simple Storage Service (Amazon S3) untuk menyimpan model yang dikompilasi NEO, output dari pekerjaan pengemasan Edge Manager, dan data sampel dari armada perangkat Anda.

   Gunakan salah satu metode berikut untuk membuat bucket Amazon S3:
   + **Secara terprogram dengan AI SageMaker Python SDK**

     Anda dapat menggunakan bucket Amazon S3 default selama sesi berlangsung. Bucket default dibuat berdasarkan format berikut:`sagemaker-{region}-{aws-account-id}`. Untuk membuat bucket default dengan SageMaker Python SDK, gunakan yang berikut ini:

     ```
     import sagemaker
     
     session=sagemaker.create_session()
     
     bucket=session.default_bucket()
     ```
   + **Menggunakan konsol Amazon S3**

     Buka konsol Amazon S3 di [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)dan lihat [Bagaimana cara membuat Bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)? untuk step-by-step instruksi.

# Package a Model (Amazon SageMaker AI Console)
<a name="edge-packaging-job-console"></a>

Anda dapat membuat pekerjaan pengemasan SageMaker Edge Manager menggunakan konsol SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/). Sebelum melanjutkan, pastikan Anda sudah puas[Prasyarat lengkap](edge-packaging-job-prerequisites.md).

1. Di konsol SageMaker AI, pilih **Edge Inference** lalu pilih **Create edge packaging jobs**, seperti yang ditunjukkan pada gambar berikut.  
![\[Lokasi pekerjaan Create edge packaging di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/pre-edge-packaging-button-edited.png)

1. Pada halaman **Properti Job**, masukkan nama untuk pekerjaan pengemasan Anda di bawah **nama pekerjaan pengemasan Edge**. Perhatikan bahwa nama pekerjaan pengemasan Edge Manager peka huruf besar/kecil. Beri nama model Anda dan berikan versi: masukkan ini di bawah **Nama model** dan **versi Model**, masing-masing.

1. Selanjutnya, pilih **peran IAM**. Anda dapat memilih peran atau membiarkan AWS membuat peran untuk Anda. Anda dapat secara opsional menentukan **ARN kunci sumber daya** **dan** tag pekerjaan.

1. Pilih **Berikutnya**.   
![\[Contoh bagian Properti Job di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/create-edge-packaging-job-filled.png)

1. Tentukan nama pekerjaan kompilasi yang Anda gunakan saat mengkompilasi model Anda dengan SageMaker Neo di bidang **Nama pekerjaan Kompilasi**. Pilih **Berikutnya**.  
![\[Contoh bagian Sumber model di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/create-edge-packaging-job-model-source-filled.png)

1. Pada halaman **konfigurasi Output**, masukkan URI bucket Amazon S3 tempat Anda ingin menyimpan output dari pekerjaan pengemasan.  
![\[Contoh halaman konfigurasi Output di konsol.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/smith/create-device-fleet-output-filled.png)

   Kolom **Status** pada halaman pekerjaan **pengemasan Edge** harus dibaca **DALAM PROSES**. Setelah pekerjaan pengemasan selesai, status diperbarui menjadi **SELESAI**.

   Memilih pekerjaan pengemasan mengarahkan Anda ke pengaturan pekerjaan itu. Bagian **Pengaturan Job** menampilkan nama pekerjaan, ARN, status, waktu pembuatan, waktu modifikasi terakhir, durasi pekerjaan pengemasan, dan peran ARN.

   Bagian **konfigurasi Input** menampilkan lokasi artefak model, konfigurasi input data, dan kerangka pembelajaran mesin model.

   Bagian **konfigurasi Output** menampilkan lokasi output dari pekerjaan pengemasan, perangkat target yang modelnya dikompilasi, dan tag apa pun yang Anda buat.

1. Pilih nama armada perangkat Anda untuk diarahkan ke detail armada perangkat. Halaman ini menampilkan nama armada perangkat, ARN, deskripsi (jika Anda memberikannya), tanggal armada dibuat, terakhir kali armada diubah, URI bucket Amazon S3, ID kunci (jika disediakan) AWS KMS , alias (jika disediakan) AWS IoT , dan peran IAM. Jika Anda menambahkan tag, tag akan muncul di bagian **Tag armada perangkat**.

# Package a Model (Boto3)
<a name="edge-packaging-job-boto3"></a>

Anda dapat membuat pekerjaan pengemasan SageMaker Edge Manager dengan AWS SDK untuk Python (Boto3). Sebelum melanjutkan, pastikan Anda sudah puas[Prasyarat lengkap](edge-packaging-job-prerequisites.md).

Untuk meminta pekerjaan pengemasan tepi, gunakan`CreateEdgePackagingJob`. Anda perlu memberikan nama untuk pekerjaan pengemasan tepi Anda, nama pekerjaan kompilasi SageMaker Neo Anda, nama sumber daya Amazon (ARN) peran Anda, nama untuk model Anda, versi untuk model Anda, dan URI bucket Amazon S3 tempat Anda ingin menyimpan output dari pekerjaan pengemasan Anda. Perhatikan bahwa nama pekerjaan pengemasan Edge Manager dan nama pekerjaan kompilasi SageMaker Neo peka huruf besar/kecil.

```
# Import AWS SDK for Python (Boto3)
import boto3

# Create Edge client so you can submit a packaging job
sagemaker_client = boto3.client("sagemaker", region_name='aws-region')

sagemaker_client.create_edge_packaging_job(
    EdgePackagingJobName="edge-packaging-name",
    CompilationJobName="neo-compilation-name",
    RoleArn="arn:aws:iam::99999999999:role/rolename",
    ModelName="sample-model-name",
    ModelVersion="model-version",
    OutputConfig={
        "S3OutputLocation": "s3://your-bucket/",
    }
)
```

Anda dapat memeriksa status pekerjaan pengemasan tepi menggunakan `DescribeEdgePackagingJob` dan memberikan nama pekerjaan pengemasan tepi peka huruf besar/kecil:

```
response = sagemaker_client.describe_edge_packaging_job(
                                    EdgePackagingJobName="edge-packaging-name")
```

Ini mengembalikan kamus yang dapat digunakan untuk polling status pekerjaan pengemasan:

```
# Optional - Poll every 30 sec to check completion status
import time

while True:
    response = sagemaker_client.describe_edge_packaging_job(
                                         EdgePackagingJobName="edge-packaging-name")
    
    if response['EdgePackagingJobStatus'] == 'Completed':
        break
    elif response['EdgePackagingJobStatus'] == 'Failed':
        raise RuntimeError('Packaging job failed')
    print('Packaging model...')
    time.sleep(30)
print('Done!')
```

Untuk daftar pekerjaan pengemasan, gunakan`ListEdgePackagingJobs`. Anda dapat menggunakan API ini untuk mencari pekerjaan pengemasan tertentu. Berikan sebagian nama untuk memfilter nama pekerjaan pengemasan`NameContains`, nama sebagian `ModelNameContains` untuk memfilter pekerjaan di mana nama model berisi nama yang Anda berikan. Juga tentukan dengan kolom mana yang akan diurutkan`SortBy`, dan dengan arah mana untuk mengurutkan `SortOrder` (salah satu `Ascending` atau`Descending`).

```
sagemaker_client.list_edge_packaging_jobs(
    "NameContains": "sample",
    "ModelNameContains": "sample",
    "SortBy": "column-name",
    "SortOrder": "Descending"
)
```

Untuk menghentikan pekerjaan pengemasan, gunakan `StopEdgePackagingJob` dan berikan nama pekerjaan pengemasan tepi Anda.

```
sagemaker_client.stop_edge_packaging_job(
        EdgePackagingJobName="edge-packaging-name"
)
```

Untuk daftar lengkap Edge Manager APIs, lihat dokumentasi [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html).

# Agen Manajer Edge
<a name="edge-device-fleet-about"></a>

Agen Edge Manager adalah mesin inferensi untuk perangkat edge Anda. Gunakan agen untuk membuat prediksi dengan model yang dimuat ke perangkat tepi Anda. Agen juga mengumpulkan metrik model dan menangkap data pada interval tertentu. Data sampel disimpan di bucket Amazon S3 Anda.

Ada dua metode untuk menginstal dan menyebarkan agen Edge Manager ke perangkat edge Anda:

1. Unduh agen sebagai biner dari ember rilis Amazon S3. Untuk informasi selengkapnya, lihat [Unduh dan Atur Agen Edge Manager Secara Manual](edge-device-fleet-manual.md).

1. Gunakan konsol AWS IoT Greengrass V2 atau AWS CLI untuk menyebarkan`aws.greengrass.SageMakerEdgeManager`. Lihat [Buat Komponen AWS IoT Greengrass V2](edge-greengrass-custom-component.md).

# Unduh dan Atur Agen Edge Manager Secara Manual
<a name="edge-device-fleet-manual"></a>

Unduh agen Edge Manager berdasarkan sistem operasi, arsitektur, dan AWS Wilayah Anda. Agen diperbarui secara berkala, sehingga Anda memiliki opsi untuk memilih agen Anda berdasarkan tanggal dan versi rilis. Setelah Anda memiliki agen, buat file konfigurasi JSON. Tentukan nama benda IoT perangkat, nama armada, kredenal perangkat, dan pasangan nilai kunci lainnya. Lihat [Menjalankan agen Edge Manager](#edge-device-fleet-running-agent) untuk lengkap daftar kunci yang harus Anda tentukan dalam file konfigurasi. Anda dapat menjalankan agen sebagai biner yang dapat dieksekusi atau menautkannya sebagai objek bersama dinamis (DSO).

## Bagaimana agen bekerja
<a name="edge-device-fleet-how-agent-works"></a>

Agen berjalan pada CPU perangkat Anda. Agen menjalankan inferensi pada kerangka kerja dan perangkat keras perangkat target yang Anda tentukan selama pekerjaan kompilasi. Misalnya, jika Anda mengkompilasi model untuk Jetson Nano, agen mendukung GPU dalam [Deep Learning Runtime (DLR) yang](https://github.com/neo-ai/neo-ai-dlr) disediakan.

Agen dirilis dalam format biner untuk sistem operasi yang didukung. Periksa apakah sistem operasi Anda didukung dan memenuhi persyaratan OS minimum dalam tabel berikut:

------
#### [ Linux ]

**Versi:** Ubuntu 18.04

**Format Biner yang Didukung:** x86-64 bit (biner ELF) dan ARMv8 64 bit (biner ELF)

------
#### [ Windows ]

**Versi:** Windows 10 versi 1909

**Format Biner yang Didukung:** x86-32 bit (DLL) dan x86-64 bit (DLL)

------

## Menginstal agen Edge Manager
<a name="edge-device-fleet-installation"></a>

Untuk menggunakan agen Edge Manager, Anda harus terlebih dahulu mendapatkan artefak rilis dan sertifikat root. Artefak rilis disimpan dalam ember Amazon S3 di `us-west-2` Wilayah. Untuk mengunduh artefak, tentukan sistem operasi Anda (`<OS>`) dan file. `<VERSION>`

Berdasarkan sistem operasi Anda, ganti `<OS>` dengan salah satu dari berikut ini:


| Windows 32-bit | Windows 64-bit | Linux x86-64 | Linux ARMv8 | 
| --- | --- | --- | --- | 
| jendela-x86 | jendela-x64 | linux-x64 | linux-armv8 | 

`VERSION`Ini dipecah menjadi tiga komponen:`<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>`, di mana:
+ `<MAJOR_VERSION>`: Versi rilis. Versi rilis saat ini diatur ke`1`.
+ `<YYYY-MM-DD>`: Cap waktu pelepasan artefak.
+ `<SHA-7>`: ID komit repositori tempat rilis dibuat.

Anda harus memberikan `<MAJOR_VERSION>` dan cap waktu dalam `YYYY-MM-DD` format. Kami menyarankan Anda menggunakan stempel waktu rilis artefak terbaru.

Jalankan yang berikut ini di baris perintah Anda untuk mendapatkan cap waktu terbaru. Ganti `<OS>` dengan sistem operasi Anda:

```
aws s3 ls s3://sagemaker-edge-release-store-us-west-2-<OS>/Releases/ | sort -r
```

Misalnya, jika Anda memiliki OS Windows 32-bit, jalankan:

```
aws s3 ls s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/ | sort -r
```

Ini mengembalikan:

```
2020-12-01 23:33:36 0 

                    PRE 1.20201218.81f481f/
                    PRE 1.20201207.02d0e97/
```

Output kembali dalam contoh ini menunjukkan dua artefak rilis. File artefak rilis pertama mencatat bahwa versi rilis memiliki versi rilis utama`1`, cap waktu `20201218` (dalam YYYY-MM-DD format), dan ID komit `81f481f` SHA-7.

**catatan**  
Perintah sebelumnya mengasumsikan Anda telah mengonfigurasi file. AWS Command Line Interface Untuk informasi selengkapnya, tentang cara mengonfigurasi pengaturan yang AWS CLI digunakan untuk berinteraksi AWS, lihat [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-configure.html).

Berdasarkan sistem operasi Anda, gunakan perintah berikut untuk menginstal artefak:

------
#### [ Windows 32-bit ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/<VERSION>.zip .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Windows 64-bit ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/<VERSION>.zip .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Linux x86-64 ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/<VERSION>.tgz .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Linux ARMv8 ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/<VERSION>.tgz .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/sha256_hex.shasum .
```

------

Anda juga harus mengunduh sertifikat root. Sertifikat ini memvalidasi artefak model yang ditandatangani AWS sebelum memuatnya ke perangkat edge Anda.

Ganti `<OS>` yang sesuai dengan platform Anda dari daftar sistem operasi yang didukung dan ganti `<REGION>` dengan AWS Wilayah Anda.

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-<OS>/Certificates/<REGION>/<REGION>.pem .
```

## Menjalankan agen Edge Manager
<a name="edge-device-fleet-running-agent"></a>

Anda dapat menjalankan agen SageMaker AI Edge Manager sebagai proses mandiri dalam bentuk biner executable Executable and Linkable Format (ELF) yang dapat dieksekusi atau Anda dapat menautkannya sebagai objek bersama dinamis (.dll). Linux mendukung menjalankannya sebagai biner yang dapat dieksekusi mandiri dan merupakan mode yang disukai. Windows mendukung menjalankannya sebagai objek bersama (.dll).

Di Linux, kami menyarankan Anda menjalankan biner melalui layanan yang merupakan bagian dari sistem inisialisasi (`init`) Anda. Jika Anda ingin menjalankan biner secara langsung, Anda dapat melakukannya di terminal seperti yang ditunjukkan pada contoh berikut. Jika Anda memiliki OS modern, tidak ada instalasi lain yang diperlukan sebelum menjalankan agen, karena semua persyaratan dibangun secara statis ke dalam executable. Ini memberi Anda fleksibilitas untuk menjalankan agen di terminal, sebagai layanan, atau di dalam wadah.

Untuk menjalankan agen, pertama buat file konfigurasi JSON. Tentukan pasangan kunci-nilai berikut:
+ `sagemaker_edge_core_device_name`: Nama perangkat. Nama perangkat ini harus didaftarkan bersama dengan armada perangkat di konsol SageMaker Edge Manager.
+ `sagemaker_edge_core_device_fleet_name`: Nama armada tempat perangkat tersebut berada.
+ `sagemaker_edge_core_region`: AWS Wilayah yang terkait dengan perangkat, armada, dan ember Amazon S3. Ini sesuai dengan Wilayah tempat perangkat terdaftar dan tempat bucket Amazon S3 dibuat (diharapkan sama). Model itu sendiri dapat dikompilasi dengan SageMaker Neo di Wilayah yang berbeda, konfigurasi ini tidak terkait dengan kompilasi model Wilayah.
+ `sagemaker_edge_core_root_certs_path`: Jalur folder absolut ke root certificate. Ini digunakan untuk memvalidasi perangkat dengan AWS akun yang relevan.
+ `sagemaker_edge_provider_aws_ca_cert_file`: Jalur absolut ke sertifikat Amazon Root CA (AmazonRootCA1.pem). Ini digunakan untuk memvalidasi perangkat dengan AWS akun yang relevan. `AmazonCA`adalah sertifikat yang dimiliki oleh AWS.
+ `sagemaker_edge_provider_aws_cert_file`: Jalur absolut untuk AWS IoT menandatangani root certificate (`*.pem.crt`).
+ `sagemaker_edge_provider_aws_cert_pk_file`: Jalur absolut ke kunci AWS IoT pribadi. (`*.pem.key`).
+ `sagemaker_edge_provider_aws_iot_cred_endpoint`: Titik akhir AWS IoT kredensial (.iot. *identifier* *region*.amazonaws.com). Endpoint ini digunakan untuk validasi kredensi. Lihat [Menghubungkan perangkat AWS IoT untuk](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html) informasi selengkapnya.
+ `sagemaker_edge_provider_provider`: Ini menunjukkan implementasi antarmuka penyedia yang digunakan. Antarmuka penyedia berkomunikasi dengan layanan jaringan akhir untuk unggahan, detak jantung, dan validasi pendaftaran. Secara default ini diatur ke`"Aws"`. Kami mengizinkan implementasi khusus dari antarmuka penyedia. Ini dapat diatur ke `None` tanpa penyedia atau `Custom` untuk implementasi khusus dengan jalur objek bersama yang relevan yang disediakan.
+ `sagemaker_edge_provider_provider_path`: Menyediakan jalur absolut ke objek bersama implementasi penyedia. (.so atau berkas .dll). File .dll atau .so `"Aws"` penyedia disediakan dengan rilis agen. Bidang ini wajib.
+ `sagemaker_edge_provider_s3_bucket_name`: Nama bucket Amazon S3 Anda (bukan URI bucket Amazon S3). Bucket harus memiliki `sagemaker` string dalam namanya.
+ `sagemaker_edge_log_verbose`(Boolean.): Opsional. Ini menetapkan log debug. Pilih salah satu `True` atau`False`.
+ `sagemaker_edge_telemetry_libsystemd_path`: Hanya untuk Linux, `systemd` mengimplementasikan metrik penghitung kerusakan agen. Setel jalur absolut libsystemd untuk mengaktifkan metrik penghitung kerusakan. Anda dapat menemukan jalur libsystemd default dapat ditemukan dengan menjalankan `whereis libsystemd` di terminal perangkat.
+ `sagemaker_edge_core_capture_data_destination`: Tujuan untuk mengunggah data pengambilan. Pilih salah satu `"Cloud"` atau`"Disk"`. Default diatur ke `"Disk"`. Mengaturnya untuk `"Disk"` menulis tensor input dan output dan data tambahan ke sistem file lokal di lokasi pilihan Anda. Saat menulis untuk `"Cloud"` menggunakan nama bucket Amazon S3 yang disediakan dalam konfigurasi. `sagemaker_edge_provider_s3_bucket_name`
+ `sagemaker_edge_core_capture_data_disk_path`: Atur jalur absolut dalam sistem file lokal, di mana file data pengambilan `"Disk"` ditulis kapan tujuannya. Bidang ini tidak digunakan ketika `"Cloud"` ditentukan sebagai tujuan.
+ `sagemaker_edge_core_folder_prefix`: Awalan induk di Amazon S3 tempat data yang diambil disimpan saat Anda `"Cloud"` menentukan sebagai tujuan data pengambilan (. `sagemaker_edge_core_capture_data_disk_path)` Data yang diambil disimpan dalam sub-folder di bawah `sagemaker_edge_core_capture_data_disk_path` if `"Disk"` ditetapkan sebagai tujuan data.
+ `sagemaker_edge_core_capture_data_buffer_size`(Nilai integer): Ukuran buffer melingkar data tangkapan. Ini menunjukkan jumlah maksimum permintaan yang disimpan dalam buffer.
+ `sagemaker_edge_core_capture_data_batch_size`(Nilai integer): Ukuran batch data pengambilan. Ini menunjukkan ukuran batch permintaan yang ditangani dari buffer. Nilai ini harus kurang dari`sagemaker_edge_core_capture_data_buffer_size`. Maksimal setengah ukuran buffer direkomendasikan untuk ukuran batch.
+ `sagemaker_edge_core_capture_data_push_period_seconds`(Nilai integer): Periode push data capture dalam hitungan detik. Sejumlah permintaan dalam buffer ditangani ketika ada permintaan ukuran batch di buffer, atau ketika periode waktu ini telah selesai (mana yang lebih dulu). Konfigurasi ini menetapkan periode waktu tersebut.
+ `sagemaker_edge_core_capture_data_base64_embed_limit`: Batas untuk mengunggah data tangkapan dalam byte. Nilai integer.

File konfigurasi Anda akan terlihat mirip dengan contoh berikut (dengan nilai spesifik Anda ditentukan). Contoh ini menggunakan AWS penyedia default (`"Aws"`) dan tidak menentukan unggahan berkala.

```
{
    "sagemaker_edge_core_device_name": "device-name",
    "sagemaker_edge_core_device_fleet_name": "fleet-name",
    "sagemaker_edge_core_region": "region",
    "sagemaker_edge_core_root_certs_path": "<Absolute path to root certificates>",
    "sagemaker_edge_provider_provider": "Aws",
    "sagemaker_edge_provider_provider_path" : "/path/to/libprovider_aws.so",
    "sagemaker_edge_provider_aws_ca_cert_file": "<Absolute path to Amazon Root CA certificate>/AmazonRootCA1.pem",
    "sagemaker_edge_provider_aws_cert_file": "<Absolute path to AWS IoT signing root certificate>/device.pem.crt",
    "sagemaker_edge_provider_aws_cert_pk_file": "<Absolute path to AWS IoT private key.>/private.pem.key",
    "sagemaker_edge_provider_aws_iot_cred_endpoint": "https://<AWS IoT Endpoint Address>",
    "sagemaker_edge_core_capture_data_destination": "Cloud",
    "sagemaker_edge_provider_s3_bucket_name": "sagemaker-bucket-name",
    "sagemaker_edge_core_folder_prefix": "Amazon S3 folder prefix",
    "sagemaker_edge_core_capture_data_buffer_size": 30,
    "sagemaker_edge_core_capture_data_batch_size": 10,
    "sagemaker_edge_core_capture_data_push_period_seconds": 4000,
    "sagemaker_edge_core_capture_data_base64_embed_limit": 2,
    "sagemaker_edge_log_verbose": false
}
```

Artefak rilis mencakup executable biner yang disebut `sagemaker_edge_agent_binary` dalam direktori. `/bin` Untuk menjalankan biner, gunakan `-a` bendera untuk membuat deskriptor file soket (.sock) di direktori yang Anda pilih dan tentukan jalur file konfigurasi agen JSON yang Anda buat dengan bendera. `-c`

```
./sagemaker_edge_agent_binary -a <ADDRESS_TO_SOCKET> -c <PATH_TO_CONFIG_FILE>
```

Contoh berikut menunjukkan cuplikan kode dengan direktori dan jalur file yang ditentukan:

```
./sagemaker_edge_agent_binary -a /tmp/sagemaker_edge_agent_example.sock -c sagemaker_edge_config.json
```

Dalam contoh ini, deskriptor file soket bernama `sagemaker_edge_agent_example.sock` dibuat di `/tmp` direktori dan menunjuk ke file konfigurasi yang ada di direktori kerja yang sama dengan agen yang dipanggil`sagemaker_edge_config.json`.

# Model Package dan Edge Manager Agent Deployment dengan AWS IoT Greengrass
<a name="edge-greengrass"></a>

SageMaker Edge Manager mengintegrasikan AWS IoT Greengrass versi 2 untuk menyederhanakan akses, pemeliharaan, dan penerapan agen dan model Edge Manager ke perangkat Anda. Tanpa AWS IoT Greengrass V2, menyiapkan perangkat dan armada untuk menggunakan SageMaker Edge Manager mengharuskan Anda menyalin agen Edge Manager secara manual dari bucket rilis Amazon S3. Anda menggunakan agen untuk membuat prediksi dengan model yang dimuat ke perangkat tepi Anda. Dengan integrasi AWS IoT Greengrass V2 dan SageMaker Edge Manager, Anda dapat menggunakan komponen AWS IoT Greengrass V2. Komponen adalah modul perangkat lunak pra-bangun yang dapat menghubungkan perangkat edge Anda ke AWS layanan atau layanan pihak ketiga melalui AWS IoT Greengrass.

Anda harus menginstal perangkat lunak AWS IoT Greengrass Core ke perangkat Anda jika Anda ingin menggunakan AWS IoT Greengrass V2 untuk menyebarkan agen Edge Manager dan model Anda. Untuk informasi selengkapnya tentang persyaratan perangkat dan cara mengatur perangkat, lihat [Menyiapkan perangkat AWS IoT Greengrass inti](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html) dalam AWS IoT Greengrass dokumentasi.

Anda menggunakan tiga komponen berikut untuk menyebarkan agen Edge Manager:
+ *Komponen publik pra-bangun: SageMaker AI mempertahankan komponen* Edge Manager publik.
+ *Komponen pribadi yang dibuat secara otomatis*: Komponen pribadi dibuat secara otomatis saat Anda mengemas model pembelajaran mesin dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html)API dan menentukan bidang `GreengrassV2Component` Edge Manager API. `PresetDeploymentType`
+ *Komponen khusus*: Ini adalah aplikasi inferensi yang bertanggung jawab untuk memproses dan membuat kesimpulan di perangkat Anda. Anda harus membuat komponen ini. Lihat [Buat komponen kustom Hello World](edge-greengrass-custom-component.md#edge-greengrass-create-custom-component-how) di dokumentasi SageMaker Edge Manager atau [Buat AWS IoT Greengrass komponen kustom](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-components.html) dalam AWS IoT Greengrass dokumentasi untuk informasi selengkapnya tentang cara membuat komponen kustom.

# Prasyarat lengkap untuk menyebarkan agen Edge Manager
<a name="edge-greengrass-prerequisites"></a>

SageMaker Edge Manager menggunakan AWS IoT Greengrass V2 untuk menyederhanakan penerapan agen Edge Manager, model pembelajaran mesin Anda, dan aplikasi inferensi Anda ke perangkat Anda dengan menggunakan komponen. Untuk mempermudah mempertahankan peran AWS IAM Anda, Edge Manager memungkinkan Anda untuk menggunakan kembali alias AWS IoT peran yang ada. Jika Anda belum memilikinya, Edge Manager menghasilkan alias peran sebagai bagian dari pekerjaan pengemasan Edge Manager. Anda tidak perlu lagi mengaitkan alias peran yang dihasilkan dari pekerjaan pengemasan SageMaker Edge Manager dengan AWS IoT peran Anda. 

Sebelum Anda mulai, Anda harus menyelesaikan prasyarat berikut:

1. Instal perangkat lunak AWS IoT Greengrass inti. Untuk informasi lebih lanjut, lihat [Menginstal perangkat lunak AWS IoT Greengrass Inti](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html#install-greengrass-v2).

1. Mengatur AWS IoT Greengrass V2. Untuk informasi selengkapnya, lihat [Menginstal perangkat lunak AWS IoT Greengrass Inti dengan penyediaan sumber daya manual](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html).
**catatan**  
Pastikan nama AWS IoT benda semuanya huruf kecil dan tidak mengandung karakter kecuali (opsional) tanda hubung (). `‐`
Peran IAM harus dimulai dengan `SageMaker*`

1. Lampirkan izin dan kebijakan sebaris berikut ke peran IAM yang dibuat selama penyiapan AWS IoT Greengrass V2.
   + Arahkan ke konsol [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)IAM.
   + Cari peran yang Anda buat dengan mengetikkan nama peran di kolom **Pencarian**.
   + Pilih peran Anda.
   + Selanjutnya, pilih **Lampirkan kebijakan**.
   + Cari **AmazonSageMakerEdgeDeviceFleetPolicy**.
   + Pilih **AmazonSageMakerFullAccess**(Ini adalah langkah opsional yang memudahkan Anda untuk menggunakan kembali peran IAM ini dalam kompilasi dan pengemasan model).
   + Tambahkan izin yang diperlukan ke kebijakan izin peran, jangan lampirkan kebijakan sebaris ke pengguna IAM.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
           {
             "Sid":"GreengrassComponentAccess",
             "Effect":"Allow",
             "Action":[
                 "greengrass:CreateComponentVersion",
                 "greengrass:DescribeComponent"
             ],
             "Resource":"*"
            }
         ]
     }
     ```

------
   + Pilih **Lampirkan kebijakan**.
   + Pilih **Hubungan kepercayaan**.
   + Pilih **Edit trust relationship** (Edit Hubungan Kepercayaan).
   + Ganti konten dengan yang berikut ini.

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "credentials.iot.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
         },
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "sagemaker.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
         }
       ]
     }
     ```

------

1. Buat armada perangkat Edge Manager. Untuk informasi tentang cara membuat armada, lihat[Pengaturan untuk Perangkat dan Armada di SageMaker Edge Manager](edge-device-fleet.md).

1. Daftarkan perangkat Anda dengan nama yang sama dengan nama AWS IoT benda Anda yang dibuat selama pengaturan AWS IoT Greengrass V2.

1. Buat setidaknya satu AWS IoT Greengrass komponen pribadi khusus. Komponen ini adalah aplikasi yang menjalankan inferensi pada perangkat. Untuk informasi selengkapnya, lihat [Buat komponen kustom Hello World](edge-greengrass-custom-component.md#edge-greengrass-create-custom-component-how)

**catatan**  
 SageMaker Edge Manager dan AWS IoT Greengrass integrasi hanya berfungsi untuk AWS IoT Greengrass v2.
Baik nama AWS IoT benda Anda dan nama perangkat Edge Manager harus sama.
SageMaker Edge Manager tidak memuat AWS IoT sertifikat lokal dan memanggil titik akhir penyedia AWS IoT kredensi secara langsung. Sebagai gantinya, SageMaker Edge Manager menggunakan AWS IoT Greengrass v2 TokenExchangeService dan mengambil kredensi sementara dari titik akhir TES.

# Buat Komponen AWS IoT Greengrass V2
<a name="edge-greengrass-custom-component"></a>

AWS IoT Greengrass menggunakan *komponen*, modul perangkat lunak yang digunakan dan berjalan pada perangkat AWS IoT Greengrass inti. Anda membutuhkan (minimal) tiga komponen:

1. * AWS IoT Greengrass Komponen Edge Manager Agent publik* yang menyebarkan agentbinary Edge Manager.

1. *Komponen model yang* dibuat secara otomatis saat Anda mengemas model pembelajaran mesin dengan AWS SDK untuk Python (Boto3) API atau dengan konsol SageMaker AI. Untuk informasi, lihat [Buat komponen yang dibuat secara otomatis](#edge-greengrass-autogenerate-component-how).

1. *Komponen pribadi dan kustom* untuk mengimplementasikan aplikasi klien agen Edge Manager, dan melakukan pra-pemrosesan dan pasca-pemrosesan hasil inferensi. Untuk informasi selengkapnya tentang cara membuat komponen kustom, lihat [Buat komponen yang dibuat secara otomatis](#edge-greengrass-autogenerate-component-how) atau [Membuat AWS IoT Greengrass komponen kustom](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-components.html).

## Buat komponen yang dibuat secara otomatis
<a name="edge-greengrass-autogenerate-component-how"></a>

Buat komponen model dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html)API dan tentukan `GreengrassV2Component` bidang API pekerjaan pengemasan SageMaker Edge Manager`PresetDeploymentType`. Saat Anda memanggil `CreateEdgePackagingJob` API, Edge Manager mengambil model SageMaker AI Neo yang dikompilasi di Amazon S3 dan membuat komponen model. Komponen model secara otomatis disimpan di akun Anda. Anda dapat melihat salah satu komponen Anda dengan menavigasi ke konsol. AWS IoT [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/greengrass/) **Pilih **Greengrass** dan kemudian pilih Perangkat inti.** Halaman ini memiliki daftar perangkat AWS IoT Greengrass inti yang terkait dengan akun Anda. Jika nama komponen model tidak ditentukan dalam`PresetDeploymentConfig`, nama default yang dihasilkan terdiri dari `"SagemakerEdgeManager"` dan nama pekerjaan pengemasan agen Edge Manager Anda. Contoh berikut menunjukkan cara menentukan ke Edge Manager untuk membuat komponen AWS IoT Greengrass V2 dengan `CreateEdgePackagingJob` API.

```
import sagemaker
import boto3

# Create a SageMaker client object to make it easier to interact with other AWS services.
sagemaker_client = boto3.client('sagemaker', region=<YOUR_REGION>)

# Replace with your IAM Role ARN
sagemaker_role_arn = "arn:aws:iam::<account>:role/*"

# Replace string with the name of your already created S3 bucket.
bucket = 'amzn-s3-demo-bucket-edge-manager'

# Specify a name for your edge packaging job.
edge_packaging_name = "edge_packag_job_demo" 

# Replace the following string with the name you used for the SageMaker Neo compilation job.
compilation_job_name = "getting-started-demo" 

# The name of the model and the model version.
model_name = "sample-model" 
model_version = "1.1"

# Output directory in S3 where you want to store the packaged model.
packaging_output_dir = 'packaged_models' 
packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)

# The name you want your Greengrass component to have.
component_name = "SagemakerEdgeManager" + edge_packaging_name

sagemaker_client.create_edge_packaging_job(
                    EdgePackagingJobName=edge_packaging_name,
                    CompilationJobName=compilation_job_name,
                    RoleArn=sagemaker_role_arn,
                    ModelName=model_name,
                    ModelVersion=model_version,
                    OutputConfig={
                        "S3OutputLocation": packaging_s3_output,
                        "PresetDeploymentType":"GreengrassV2Component",
                        "PresetDeploymentConfig":"{\"ComponentName\":\"sample-component-name\", \"ComponentVersion\":\"1.0.2\"}"
                        }
                    )
```

Anda juga dapat membuat komponen yang dibuat secara otomatis dengan konsol SageMaker AI. Ikuti langkah 1-6 di [Package a Model (Amazon SageMaker AI Console)](edge-packaging-job-console.md)

Masukkan URI bucket Amazon S3 tempat Anda ingin menyimpan output pekerjaan pengemasan dan kunci enkripsi opsional.

Lengkapi yang berikut ini untuk membuat komponen model:

1. Pilih **Penerapan prasetel**.

1. Tentukan nama komponen untuk bidang **Nama komponen**.

1. Secara opsional, berikan deskripsi komponen, versi komponen, OS platform, atau arsitektur platform untuk **deskripsi Komponen**, **versi Komponen**, **OS Platform**, dan **arsitektur Platform**.

1. Pilih **Kirim**.

## Buat komponen kustom Hello World
<a name="edge-greengrass-create-custom-component-how"></a>

Komponen aplikasi khusus digunakan untuk melakukan inferensi pada perangkat tepi. Komponen bertanggung jawab untuk memuat model ke SageMaker Edge Manager, memanggil agen Edge Manager untuk inferensi, dan membongkar model saat komponen dimatikan. Sebelum Anda membuat komponen Anda, pastikan agen dan aplikasi dapat berkomunikasi dengan Edge Manager. Untuk melakukan ini, konfigurasikan [gRPC](https://grpc.io/). Agen Edge Manager menggunakan metode yang didefinisikan dalam Protobuf Buffers dan server gRPC untuk menjalin komunikasi dengan aplikasi klien di perangkat edge dan cloud.

Untuk menggunakan gRPC, Anda harus:

1. Buat rintisan gRPC menggunakan file.proto yang disediakan saat Anda mengunduh agen Edge Manager dari bucket rilis Amazon S3.

1. Tulis kode klien dengan bahasa yang Anda inginkan.

Anda tidak perlu mendefinisikan layanan dalam file.proto. File.proto layanan disertakan dalam file TAR terkompresi saat Anda mengunduh biner rilis agen Edge Manager dari bucket rilis Amazon S3.

Instal gRPC dan alat lain yang diperlukan di mesin host Anda dan buat `agent_pb2_grpc.py` rintisan gRPC dan dengan Python. `agent_pb2.py` Pastikan Anda memiliki `agent.proto` direktori lokal Anda.

```
%%bash
pip install grpcio
pip install grpcio-tools
python3 -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. agent.proto
```

Kode sebelumnya menghasilkan klien gRPC dan antarmuka server dari definisi layanan.proto Anda. Dengan kata lain, itu menciptakan model gRPC dengan Python. Direktori API berisi spesifikasi Protobuf untuk berkomunikasi dengan agen.

Selanjutnya, gunakan gRPC API untuk menulis klien dan server untuk layanan Anda (2). Contoh skrip berikut,`edge_manager_python_example.py`, menggunakan Python untuk memuat, daftar, dan membongkar `yolov3` model ke perangkat edge.

```
import grpc
from PIL import Image
import agent_pb2
import agent_pb2_grpc
import os


model_path = '<PATH-TO-SagemakerEdgeManager-COMPONENT>' 
                    
agent_socket = 'unix:///tmp/aws.greengrass.SageMakerEdgeManager.sock'

agent_channel = grpc.insecure_channel(agent_socket, options=(('grpc.enable_http_proxy', 0),))

agent_client = agent_pb2_grpc.AgentStub(agent_channel)


def list_models():
    return agent_client.ListModels(agent_pb2.ListModelsRequest())


def list_model_tensors(models):
    return {
        model.name: {
            'inputs': model.input_tensor_metadatas,
            'outputs': model.output_tensor_metadatas
        }
        for model in list_models().models
    }


def load_model(model_name, model_path):
    load_request = agent_pb2.LoadModelRequest()
    load_request.url = model_path
    load_request.name = model_name
    return agent_client.LoadModel(load_request)


def unload_model(name):
    unload_request = agent_pb2.UnLoadModelRequest()
    unload_request.name = name
    return agent_client.UnLoadModel(unload_request)


def predict_image(model_name, image_path):
    image_tensor = agent_pb2.Tensor()
    image_tensor.byte_data = Image.open(image_path).tobytes()
    image_tensor_metadata = list_model_tensors(list_models())[model_name]['inputs'][0]
    image_tensor.tensor_metadata.name = image_tensor_metadata.name
    image_tensor.tensor_metadata.data_type = image_tensor_metadata.data_type
    for shape in image_tensor_metadata.shape:
        image_tensor.tensor_metadata.shape.append(shape)
    predict_request = agent_pb2.PredictRequest()
    predict_request.name = model_name
    predict_request.tensors.append(image_tensor)
    predict_response = agent_client.Predict(predict_request)
    return predict_response

def main():
    try:
        unload_model('your-model')
    except:
        pass
  
    print('LoadModel...', end='')
    try:
        load_model('your-model', model_path)
        print('done.')
    except Exception as e:
        print()
        print(e)
        print('Model already loaded!')
        
    print('ListModels...', end='')
    try:
        print(list_models())
        print('done.')
        
    except Exception as e:
        print()
        print(e)
        print('List model failed!')
       
    print('Unload model...', end='')
    try:
        unload_model('your-model')
        print('done.')
    except Exception as e:
        print()
        print(e)
        print('unload model failed!')

if __name__ == '__main__':
    main()
```

Pastikan `model_path` menunjuk ke nama AWS IoT Greengrass komponen yang berisi model jika Anda menggunakan contoh kode klien yang sama.

Anda dapat membuat komponen Hello World AWS IoT Greengrass V2 Anda setelah Anda membuat stub gRPC Anda dan Anda memiliki kode Hello World Anda siap. Untuk melakukannya:
+ Unggah bucket Anda `edge_manager_python_example.py``agent_pb2_grpc.py`,, dan `agent_pb2.py` ke Amazon S3 Anda dan catat jalur Amazon S3 mereka.
+ Buat komponen pribadi di konsol AWS IoT Greengrass V2 dan tentukan resep untuk komponen Anda. Tentukan URI Amazon S3 ke aplikasi Hello World dan rintisan gRPC Anda dalam resep berikut.

  ```
  ---
  RecipeFormatVersion: 2020-01-25
  ComponentName: com.sagemaker.edgePythonExample
  ComponentVersion: 1.0.0
  ComponentDescription: Sagemaker Edge Manager Python example
  ComponentPublisher: Amazon Web Services, Inc.
  ComponentDependencies:
    aws.greengrass.SageMakerEdgeManager:
      VersionRequirement: '>=1.0.0'
      DependencyType: HARD
  Manifests:
    - Platform:
        os: linux
        architecture: "/amd64|x86/"
      Lifecycle:
        install: |-
          apt-get install python3-pip
          pip3 install grpcio
          pip3 install grpcio-tools
          pip3 install protobuf
          pip3 install Pillow
        run:
          script: |- 
            python3 {artifacts:path}/edge_manager_python_example.py
      Artifacts:
        - URI: <code-s3-path>
        - URI: <pb2-s3-path>
        - URI: <pb2-grpc-s3-path>
  ```

Untuk informasi rinci tentang membuat resep Hello World, lihat [Membuat komponen pertama Anda](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html#create-first-component) dalam AWS IoT Greengrass dokumentasi.

# Menerapkan komponen ke perangkat Anda
<a name="edge-greengrass-deploy-components"></a>

Terapkan komponen Anda dengan AWS IoT konsol atau dengan. AWS CLI

## Untuk men-deploy komponen Anda (konsol)
<a name="collapsible-section-gg-deploy-console"></a>

Terapkan AWS IoT Greengrass komponen Anda dengan AWS IoT konsol.

1. Di AWS IoT Greengrass konsol di menu [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/greengrass/)navigasi, pilih **Deployment**.

1. Pada halaman **Komponen**, pada tab **Komponen publik**, pilih `aws.greengrass.SageMakerEdgeManager`.

1. Pada halaman `aws.greengrass.SageMakerEdgeManager` pilih **Deploy**.

1. Dari`Add to deployment`, pilih salah satu dari berikut ini:

   1. Untuk menggabungkan komponen ini ke deployment yang ada pada perangkat target Anda, pilih **Tambahkan ke deployment yang ada**, lalu pilih deployment yang ingin Anda revisi.

   1. Untuk membuat deployment baru di perangkat target Anda, pilih **Buat deployment baru**. Jika Anda memiliki deployment yang ada di perangkat, dengan memilih langkah ini Anda akan menggantikan deployment yang ada.

1. Di halaman **Tentukan target**, lakukan hal berikut:

   1. Di bawah informasi **Deployment**, masukkan atau ubah nama yang ramah untuk deployment Anda.

   1. Di bawah **Target deployment**, pilih target untuk deployment Anda, dan pilih **Selanjutnya**. Anda tidak dapat mengubah target deployment jika Anda merevisi deployment yang ada.

1. Pada halaman **Pilih komponen**, di bawah **Komponen saya**, pilih:
   + com. *<CUSTOM-COMPONENT-NAME>*
   + `aws.greengrass.SageMakerEdgeManager`
   + SagemakerEdgeManager.*<YOUR-PACKAGING-JOB>*

1. Pada halaman **Configure components**, pilih **com.greengrass. SageMakerEdgeManager**, dan lakukan hal berikut.

   1. Pilih **Konfigurasi komponen**.

   1. Di bawah **Pembaruan konfigurasi**, di **Konfigurasi untuk menggabungkan**, masukkan konfigurasi berikut.

      ```
      {
          "DeviceFleetName": "device-fleet-name",
          "BucketName": "bucket-name"
      }
      ```

      Ganti *`device-fleet-name`* dengan nama armada perangkat edge yang Anda buat, dan ganti *`bucket-name`* dengan nama bucket Amazon S3 yang terkait dengan armada perangkat Anda.

   1. Pilih **Konfirmasi** dan kemudian pilih **Selanjutnya**.

1. Pada halaman **Konfigurasikan pengaturan lanjutan**, simpan pengaturan konfigurasi default tersebut, dan pilih **Selanjutnya**.

1. Di halaman **Tinjau**, pilih **Deploy**.

## Untuk men-deploy komponen Anda (AWS CLI)
<a name="collapsible-section-gg-deploy-cli"></a>

1. Buat ` deployment.json` file untuk menentukan konfigurasi penerapan untuk komponen SageMaker Edge Manager Anda. File ini akan terlihat seperti contoh berikut.

   ```
   {
     "targetArn":"targetArn",
     "components": {
       "aws.greengrass.SageMakerEdgeManager": {
         "componentVersion": 1.0.0,
         "configurationUpdate": {
           "merge": {
             "DeviceFleetName": "device-fleet-name",
             "BucketName": "bucket-name"
           }
         }
       },
       "com.greengrass.SageMakerEdgeManager.ImageClassification": {
         "componentVersion": 1.0.0,
         "configurationUpdate": {
         }
       }, 
       "com.greengrass.SageMakerEdgeManager.ImageClassification.Model": {
         "componentVersion": 1.0.0,
         "configurationUpdate": {
         }
       }, 
     }
   }
   ```
   + Di kolom `targetArn`, ganti *`targetArn`* dengan Amazon Resource Name (ARN) dari grup objek atau objek yang ditargetkan untuk deployment tersebut, dalam format berikut:
     + Objek: `arn:aws:iot:region:account-id:thing/thingName`
     + Grup objek: `arn:aws:iot:region:account-id:thinggroup/thingGroupName`
   + Di `merge` bidang, ganti *`device-fleet-name`* dengan nama armada perangkat edge yang Anda buat, dan ganti *`bucket-name`* dengan nama bucket Amazon S3 yang terkait dengan armada perangkat Anda.
   + Ganti versi komponen untuk setiap komponen dengan versi terbaru yang tersedia.

1. Jalankan perintah berikut untuk men-deploy komponen pada perangkat:

   ```
   aws greengrassv2 create-deployment \
       --cli-input-json file://path/to/deployment.json
   ```

Deployment ini dapat memakan waktu beberapa menit hingga selesai. Pada langkah berikutnya, periksa log komponen untuk memverifikasi bahwa deployment tersebut berhasil diselesaikan dan untuk melihat hasil inferensi.

Untuk informasi selengkapnya tentang penerapan komponen ke perangkat individual atau grup perangkat, lihat [Menerapkan AWS IoT Greengrass komponen ke](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-deployments.html) perangkat.

# Menerapkan Paket Model Langsung dengan SageMaker Edge Manager Deployment API
<a name="edge-deployment-plan-api"></a>

SageMaker Edge Manager menyediakan API penerapan yang dapat Anda gunakan untuk menerapkan model ke target perangkat tanpa. AWS IoT Greengrass Ini berguna dalam situasi di mana Anda ingin memperbarui model secara independen dari pembaruan firmware atau mekanisme penyebaran aplikasi. Anda dapat menggunakan API untuk mengintegrasikan penerapan edge Anda ke dalam CI/CD alur kerja untuk menerapkan model secara otomatis setelah Anda memvalidasi model untuk akurasi. API juga memiliki opsi rollback dan peluncuran bertahap yang nyaman bagi Anda untuk memastikan model bekerja dengan baik di lingkungan tertentu sebelum peluncuran yang lebih luas.

Untuk menggunakan API penerapan Edge Manager, pertama-tama kompilasi dan paket model Anda. Untuk informasi tentang cara mengkompilasi dan mengemas model Anda, lihat[Siapkan Model Anda untuk Deployment](edge-getting-started-step2.md). Bagian berikut dari panduan ini menunjukkan bagaimana Anda dapat membuat penerapan tepi menggunakan SageMaker API, setelah Anda mengkompilasi dan mengemas model Anda.

**Topics**
+ [Buat rencana penyebaran tepi](#create-edge-deployment-plan)
+ [Mulai penyebaran tepi](#start-edge-deployment-stage)
+ [Periksa status penyebaran](#describe-edge-deployment-status)

## Buat rencana penyebaran tepi
<a name="create-edge-deployment-plan"></a>

Anda dapat membuat rencana penerapan tepi dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentPlan.html)API. Rencana penyebaran dapat memiliki beberapa tahap. Anda dapat mengonfigurasi setiap tahap untuk meluncurkan penerapan ke subset perangkat edge (berdasarkan persentase, atau berdasarkan nama perangkat). Anda juga dapat mengonfigurasi bagaimana kegagalan peluncuran ditangani pada setiap tahap.

Cuplikan kode berikut menunjukkan bagaimana Anda dapat membuat rencana penyebaran tepi dengan 1 tahap untuk menerapkan model yang dikompilasi dan paket ke 2 perangkat tepi tertentu:

```
import boto3

client = boto3.client("sagemaker")

client.create_edge_deployment_plan(
    EdgeDeploymentPlanName="edge-deployment-plan-name",
    DeviceFleetName="device-fleet-name",
    ModelConfigs=[
        {
            "EdgePackagingJobName": "edge-packaging-job-name",
            "ModelHandle": "model-handle"
        }
    ],
    Stages=[
        {
            "StageName": "stage-name",
            "DeviceSelectionConfig": {
                "DeviceSubsetType": "SELECTION",
                "DeviceNames": ["device-name-1", "device-name-2"]
            },
            "DeploymentConfig": {
                "FailureHandlingPolicy": "ROLLBACK_ON_FAILURE"
            }
        }
    ]
)
```

Alih-alih perangkat tertentu, jika Anda ingin menyebarkan ke model ke persentase perangkat di armada Anda, maka tetapkan nilai `DeviceSubsetType` to `"PERCENTAGE"` dan ganti `"DeviceNames": ["device-name-1", "device-name-2"]` dengan contoh `"Percentage": desired-percentage` di atas.

Tahapan dapat ditambahkan setelah rencana penerapan dibuat dengan [CreateEdgeDeploymentStage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentStage.html)API, jika Anda ingin mulai meluncurkan tahapan baru setelah memvalidasi keberhasilan peluncuran pengujian Anda. [Untuk informasi selengkapnya tentang tahapan penerapan, lihatDeploymentStage.](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeploymentStage.html)

## Mulai penyebaran tepi
<a name="start-edge-deployment-stage"></a>

Setelah membuat rencana penerapan dan tahapan penerapan, Anda dapat memulai penerapan dengan API. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartEdgeDeploymentStage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartEdgeDeploymentStage.html)

```
client.start_edge_deployment_stage(
    EdgeDeploymentPlanName="edge-deployment-plan-name",
    StageName="stage-name"
)
```

## Periksa status penyebaran
<a name="describe-edge-deployment-status"></a>

Anda dapat memeriksa status penerapan tepi dengan [DescribeEdgeDeploymentPlan](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEdgeDeploymentPlan.html)API.

```
client.describe_edge_deployment_plan(
    EdgeDeploymentPlanName="edge-deployment-plan-name"
)
```

# Kelola Model
<a name="edge-manage-model"></a>

Agen Edge Manager dapat memuat beberapa model sekaligus dan membuat kesimpulan dengan model yang dimuat pada perangkat edge. Jumlah model yang dapat dimuat agen ditentukan oleh memori yang tersedia pada perangkat. Agen memvalidasi tanda tangan model dan memuat ke dalam memori semua artefak yang dihasilkan oleh pekerjaan pengemasan tepi. Langkah ini mengharuskan semua sertifikat yang diperlukan yang dijelaskan dalam langkah-langkah sebelumnya untuk diinstal bersama dengan sisa instalasi biner. Jika tanda tangan model tidak dapat divalidasi, maka pemuatan model gagal dengan kode pengembalian dan alasan yang sesuai.

SageMaker Agen Edge Manager menyediakan daftar Manajemen Model APIs yang menerapkan bidang kontrol dan bidang data APIs pada perangkat tepi. Seiring dengan dokumentasi ini, kami sarankan untuk melalui implementasi klien sampel yang menunjukkan penggunaan kanonik dari yang dijelaskan di bawah ini. APIs

`proto`File tersedia sebagai bagian dari artefak rilis (di dalam tarball rilis). Dalam dokumen ini, kami mencantumkan dan menjelaskan penggunaan yang APIs tercantum dalam `proto` file ini.

**catatan**  
Ada one-to-one pemetaan untuk ini APIs pada rilis Windows dan kode contoh untuk aplikasi yang diterapkan di C \$1 dibagikan dengan artefak rilis untuk Windows. Petunjuk di bawah ini adalah untuk menjalankan Agen sebagai proses mandiri, berlaku untuk artefak rilis untuk Linux.

Ekstrak arsip berdasarkan OS Anda. `VERSION`Dimana dipecah menjadi tiga komponen:`<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>`. Lihat [Menginstal agen Edge Manager](edge-device-fleet-manual.md#edge-device-fleet-installation) untuk informasi tentang cara mendapatkan versi rilis (`<MAJOR_VERSION>`), cap waktu artefak rilis (`<YYYY-MM-DD>`), dan ID komit repositori () `SHA-7`

------
#### [ Linux ]

Arsip zip dapat diekstraksi dengan perintah:

```
tar -xvzf <VERSION>.tgz
```

------
#### [ Windows ]

Arsip zip dapat diekstraksi dengan UI atau perintah:

```
unzip <VERSION>.tgz
```

------

Hirarki artefak rilis (setelah mengekstrak `tar/zip` arsip) ditunjukkan di bawah ini. `proto`File agen tersedia di bawah`api/`.

```
0.20201205.7ee4b0b
├── bin
│         ├── sagemaker_edge_agent_binary
│         └── sagemaker_edge_agent_client_example
└── docs
├── api
│         └── agent.proto
├── attributions
│         ├── agent.txt
│         └── core.txt
└── examples
└── ipc_example
├── CMakeLists.txt
├── sagemaker_edge_client.cc
├── sagemaker_edge_client_example.cc
├── sagemaker_edge_client.hh
├── sagemaker_edge.proto
├── README.md
├── shm.cc
├── shm.hh
└── street_small.bmp
```

**Topics**
+ [Model Beban](#edge-manage-model-loadmodel)
+ [Model Bongkar](#edge-manage-model-unloadmodel)
+ [Daftar Model](#edge-manage-model-listmodels)
+ [Jelaskan Model](#edge-manage-model-describemodel)
+ [Tangkap Data](#edge-manage-model-capturedata)
+ [Dapatkan Status Capture](#edge-manage-model-getcapturedata)
+ [Memprediksi](#edge-manage-model-predict)

## Model Beban
<a name="edge-manage-model-loadmodel"></a>

Agen Edge Manager mendukung pemuatan beberapa model. API ini memvalidasi tanda tangan model dan memuat ke dalam memori semua artefak yang dihasilkan oleh operasi. `EdgePackagingJob` Langkah ini mengharuskan semua sertifikat yang diperlukan untuk diinstal bersama dengan instalasi biner agen lainnya. Jika tanda tangan model tidak dapat divalidasi maka langkah ini gagal dengan kode pengembalian yang sesuai dan pesan kesalahan di log.

```
// perform load for a model
// Note:
// 1. currently only local filesystem paths are supported for loading models.
// 2. multiple models can be loaded at the same time, as limited by available device memory
// 3. users are required to unload any loaded model to load another model.
// Status Codes:
// 1. OK - load is successful
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
// 4. NOT_FOUND - model doesn't exist at the url
// 5. ALREADY_EXISTS - model with the same name is already loaded
// 6. RESOURCE_EXHAUSTED - memory is not available to load the model
// 7. FAILED_PRECONDITION - model is not compiled for the machine.
//
rpc LoadModel(LoadModelRequest) returns (LoadModelResponse);
```

------
#### [ Input ]

```
//
// request for LoadModel rpc call
//
message LoadModelRequest {
  string url = 1;
  string name = 2;  // Model name needs to match regex "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$"
}
```

------
#### [ Output ]

```
//
//
// response for LoadModel rpc call
//
message LoadModelResponse {
  Model model = 1;
}

//
// Model represents the metadata of a model
//  url - url representing the path of the model
//  name - name of model
//  input_tensor_metadatas - TensorMetadata array for the input tensors
//  output_tensor_metadatas - TensorMetadata array for the output tensors
//
// Note:
//  1. input and output tensor metadata could empty for dynamic models.
//
message Model {
  string url = 1;
  string name = 2;
  repeated TensorMetadata input_tensor_metadatas = 3;
  repeated TensorMetadata output_tensor_metadatas = 4;
}
```

------

## Model Bongkar
<a name="edge-manage-model-unloadmodel"></a>

Membongkar model yang dimuat sebelumnya. Hal ini diidentifikasi melalui alias model yang disediakan selama`loadModel`. Jika alias tidak ditemukan atau model tidak dimuat maka mengembalikan kesalahan.

```
//
// perform unload for a model
// Status Codes:
// 1. OK - unload is successful
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
// 4. NOT_FOUND - model doesn't exist
//
rpc UnLoadModel(UnLoadModelRequest) returns (UnLoadModelResponse);
```

------
#### [ Input ]

```
//
// request for UnLoadModel rpc call
//
message UnLoadModelRequest {
 string name = 1; // Model name needs to match regex "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$"
}
```

------
#### [ Output ]

```
//
// response for UnLoadModel rpc call
//
message UnLoadModelResponse {}
```

------

## Daftar Model
<a name="edge-manage-model-listmodels"></a>

Daftar semua model yang dimuat dan aliasnya.

```
//
// lists the loaded models
// Status Codes:
// 1. OK - unload is successful
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
//
rpc ListModels(ListModelsRequest) returns (ListModelsResponse);
```

------
#### [ Input ]

```
//
// request for ListModels rpc call
//
message ListModelsRequest {}
```

------
#### [ Output ]

```
//
// response for ListModels rpc call
//
message ListModelsResponse {
 repeated Model models = 1;
}
```

------

## Jelaskan Model
<a name="edge-manage-model-describemodel"></a>

Menjelaskan model yang dimuat pada agen.

```
//
// Status Codes:
// 1. OK - load is successful
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
// 4. NOT_FOUND - model doesn't exist at the url
//
rpc DescribeModel(DescribeModelRequest) returns (DescribeModelResponse);
```

------
#### [ Input ]

```
//
// request for DescribeModel rpc call
//
message DescribeModelRequest {
  string name = 1;
}
```

------
#### [ Output ]

```
//
// response for DescribeModel rpc call
//
message DescribeModelResponse {
  Model model = 1;
}
```

------

## Tangkap Data
<a name="edge-manage-model-capturedata"></a>

Memungkinkan aplikasi klien menangkap tensor input dan output di bucket Amazon S3, dan opsional tambahan. Aplikasi klien diharapkan untuk meneruskan ID tangkapan unik bersama dengan setiap panggilan ke API ini. Ini nantinya dapat digunakan untuk menanyakan status tangkapan.

```
//
// allows users to capture input and output tensors along with auxiliary data.
// Status Codes:
// 1. OK - data capture successfully initiated
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
// 5. ALREADY_EXISTS - capture initiated for the given capture_id
// 6. RESOURCE_EXHAUSTED - buffer is full cannot accept any more requests.
// 7. OUT_OF_RANGE - timestamp is in the future.
// 8. INVALID_ARGUMENT - capture_id is not of expected format.
//
rpc CaptureData(CaptureDataRequest) returns (CaptureDataResponse);
```

------
#### [ Input ]

```
enum Encoding {
 CSV = 0;
 JSON = 1;
 NONE = 2;
 BASE64 = 3;
}

//
// AuxilaryData represents a payload of extra data to be capture along with inputs and outputs of inference
// encoding - supports the encoding of the data
// data - represents the data of shared memory, this could be passed in two ways:
// a. send across the raw bytes of the multi-dimensional tensor array
// b. send a SharedMemoryHandle which contains the posix shared memory segment id and
// offset in bytes to location of multi-dimensional tensor array.
//
message AuxilaryData {
 string name = 1;
 Encoding encoding = 2;
 oneof data {
 bytes byte_data = 3;
 SharedMemoryHandle shared_memory_handle = 4;
 }
}

//
// Tensor represents a tensor, encoded as contiguous multi-dimensional array.
// tensor_metadata - represents metadata of the shared memory segment
// data_or_handle - represents the data of shared memory, this could be passed in two ways:
// a. send across the raw bytes of the multi-dimensional tensor array
// b. send a SharedMemoryHandle which contains the posix shared memory segment
// id and offset in bytes to location of multi-dimensional tensor array.
//
message Tensor {
 TensorMetadata tensor_metadata = 1; //optional in the predict request
 oneof data {
 bytes byte_data = 4;
 // will only be used for input tensors
 SharedMemoryHandle shared_memory_handle = 5;
 }
}

//
// request for CaptureData rpc call
//
message CaptureDataRequest {
 string model_name = 1;
 string capture_id = 2; //uuid string
 Timestamp inference_timestamp = 3;
 repeated Tensor input_tensors = 4;
 repeated Tensor output_tensors = 5;
 repeated AuxilaryData inputs = 6;
 repeated AuxilaryData outputs = 7;
}
```

------
#### [ Output ]

```
//
// response for CaptureData rpc call
//
message CaptureDataResponse {}
```

------

## Dapatkan Status Capture
<a name="edge-manage-model-getcapturedata"></a>

Tergantung pada model dimuat input dan output tensor bisa besar (untuk banyak perangkat tepi). Menangkap ke cloud bisa memakan waktu. Jadi `CaptureData()` diimplementasikan sebagai operasi asinkron. ID tangkapan adalah pengidentifikasi unik yang disediakan klien selama pengambilan panggilan data, ID ini dapat digunakan untuk menanyakan status panggilan asinkron.

```
//
// allows users to query status of capture data operation
// Status Codes:
// 1. OK - data capture successfully initiated
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
// 4. NOT_FOUND - given capture id doesn't exist.
//
rpc GetCaptureDataStatus(GetCaptureDataStatusRequest) returns (GetCaptureDataStatusResponse);
```

------
#### [ Input ]

```
//
// request for GetCaptureDataStatus rpc call
//
message GetCaptureDataStatusRequest {
  string capture_id = 1;
}
```

------
#### [ Output ]

```
enum CaptureDataStatus {
  FAILURE = 0;
  SUCCESS = 1;
  IN_PROGRESS = 2;
  NOT_FOUND = 3;
}

//
// response for GetCaptureDataStatus rpc call
//
message GetCaptureDataStatusResponse {
  CaptureDataStatus status = 1;
}
```

------

## Memprediksi
<a name="edge-manage-model-predict"></a>

`predict`API melakukan inferensi pada model yang dimuat sebelumnya. Ini menerima permintaan dalam bentuk tensor yang langsung dimasukkan ke dalam jaringan saraf. Outputnya adalah tensor keluaran (atau skalar) dari model. Ini adalah panggilan blokir.

```
//
// perform inference on a model.
//
// Note:
// 1. users can chose to send the tensor data in the protobuf message or
// through a shared memory segment on a per tensor basis, the Predict
// method with handle the decode transparently.
// 2. serializing large tensors into the protobuf message can be quite expensive,
// based on our measurements it is recommended to use shared memory of
// tenors larger than 256KB.
// 3. SMEdge IPC server will not use shared memory for returning output tensors,
// i.e., the output tensor data will always send in byte form encoded
// in the tensors of PredictResponse.
// 4. currently SMEdge IPC server cannot handle concurrent predict calls, all
// these call will be serialized under the hood. this shall be addressed
// in a later release.
// Status Codes:
// 1. OK - prediction is successful
// 2. UNKNOWN - unknown error has occurred
// 3. INTERNAL - an internal error has occurred
// 4. NOT_FOUND - when model not found
// 5. INVALID_ARGUMENT - when tenors types mismatch
//
rpc Predict(PredictRequest) returns (PredictResponse);
```

------
#### [ Input ]

```
// request for Predict rpc call
//
message PredictRequest {
string name = 1;
repeated Tensor tensors = 2;
}

//
// Tensor represents a tensor, encoded as contiguous multi-dimensional array.
//    tensor_metadata - represents metadata of the shared memory segment
//    data_or_handle - represents the data of shared memory, this could be passed in two ways:
//                        a. send across the raw bytes of the multi-dimensional tensor array
//                        b. send a SharedMemoryHandle which contains the posix shared memory segment
//                            id and offset in bytes to location of multi-dimensional tensor array.
//
message Tensor {
  TensorMetadata tensor_metadata = 1; //optional in the predict request
  oneof data {
    bytes byte_data = 4;
    // will only be used for input tensors
    SharedMemoryHandle shared_memory_handle = 5;
  }
}

//
// Tensor represents a tensor, encoded as contiguous multi-dimensional array.
//    tensor_metadata - represents metadata of the shared memory segment
//    data_or_handle - represents the data of shared memory, this could be passed in two ways:
//                        a. send across the raw bytes of the multi-dimensional tensor array
//                        b. send a SharedMemoryHandle which contains the posix shared memory segment
//                            id and offset in bytes to location of multi-dimensional tensor array.
//
message Tensor {
  TensorMetadata tensor_metadata = 1; //optional in the predict request
  oneof data {
    bytes byte_data = 4;
    // will only be used for input tensors
    SharedMemoryHandle shared_memory_handle = 5;
  }
}

//
// TensorMetadata represents the metadata for a tensor
//    name - name of the tensor
//    data_type  - data type of the tensor
//    shape - array of dimensions of the tensor
//
message TensorMetadata {
  string name = 1;
  DataType data_type = 2;
  repeated int32 shape = 3;
}

//
// SharedMemoryHandle represents a posix shared memory segment
//    offset - offset in bytes from the start of the shared memory segment.
//    segment_id - shared memory segment id corresponding to the posix shared memory segment.
//    size - size in bytes of shared memory segment to use from the offset position.
//
message SharedMemoryHandle {
  uint64 size = 1;
  uint64 offset = 2;
  uint64 segment_id = 3;
}
```

------
#### [ Output ]

**catatan**  
`PredictResponse`Satu-satunya yang kembali `Tensors` dan tidak`SharedMemoryHandle`.

```
// response for Predict rpc call
//
message PredictResponse {
   repeated Tensor tensors = 1;
}
```

------

# SageMaker Edge Manager akhir hidup
<a name="edge-eol"></a>

 Mulai 26 April 2024, Anda tidak dapat lagi mengakses Amazon SageMaker Edge Manager melalui konsol AWS manajemen, membuat pekerjaan pengemasan tepi, dan mengelola armada perangkat edge. 

## FAQs
<a name="edge-eol-faqs"></a>

 Gunakan bagian berikut untuk mendapatkan jawaban atas pertanyaan umum tentang SageMaker Edge Manager end of life (EOL). 

### T: Apa yang terjadi pada Amazon SageMaker Edge Manager saya setelah tanggal EOL?
<a name="edge-eol-faqs-1"></a>

 J: Setelah 26 April 2024, semua referensi ke pekerjaan pengemasan tepi, perangkat, dan armada perangkat dihapus dari layanan Edge Manager. Anda tidak dapat lagi menemukan atau mengakses layanan Edge Manager dari AWS konsol Anda dan aplikasi yang memanggil layanan Edge Manager APIs tidak lagi berfungsi. 

### T: Apakah saya akan ditagih untuk sumber daya Edge Manager yang tersisa di akun saya setelah tanggal EOL?
<a name="edge-eol-faqs-2"></a>

 J: Sumber daya yang dibuat oleh Edge Manager, seperti paket edge di dalam bucket Amazon S3, AWS IoT things, dan peran AWS IAM, terus ada di layanan masing-masing setelah 26 April 2024. Agar tidak ditagih setelah Edge Manager tidak lagi didukung, hapus sumber daya Anda. Untuk informasi selengkapnya tentang menghapus sumber daya Anda, lihat[Hapus sumber daya Edge Manager](#edge-eol-delete-resources). 

### T: Bagaimana cara menghapus sumber daya Amazon SageMaker Edge Manager saya?
<a name="edge-eol-faqs-3"></a>

 J: Sumber daya yang dibuat oleh Edge Manager, seperti paket edge di dalam bucket Amazon S3, AWS IoT things, dan peran AWS IAM, terus ada di layanan masing-masing setelah 26 April 2024. Agar tidak ditagih setelah Edge Manager tidak lagi didukung, hapus sumber daya Anda. Untuk informasi selengkapnya tentang menghapus sumber daya Anda, lihat[Hapus sumber daya Edge Manager](#edge-eol-delete-resources). 

### T: Bagaimana saya bisa terus menerapkan model di edge?
<a name="edge-eol-faqs-4"></a>

 A: Kami sarankan Anda mencoba salah satu alat pembelajaran mesin berikut. [Untuk runtime edge lintas platform, gunakan ONNX.](https://onnxruntime.ai/) ONNX adalah solusi open-source yang populer dan terpelihara dengan baik yang menerjemahkan model Anda ke dalam instruksi yang dapat dijalankan oleh banyak jenis perangkat keras, dan kompatibel dengan kerangka kerja HTML terbaru. ONNX dapat diintegrasikan ke dalam alur kerja SageMaker AI Anda sebagai langkah otomatis untuk penerapan edge Anda. 

 Untuk penggunaan penggunaan edge dan pemantauan. AWS IoT Greengrass V2 AWS IoT Greengrass V2 memiliki mekanisme pengemasan dan penyebaran yang dapat diperluas yang dapat menyesuaikan model dan aplikasi di tepi. Anda dapat menggunakan saluran MQTT bawaan untuk mengirim kembali telemetri model ke SageMaker Amazon Model Monitor atau menggunakan sistem izin bawaan untuk mengirim data yang diambil dari model kembali ke Amazon Simple Storage Service (Amazon S3). Jika Anda tidak atau tidak dapat menggunakan AWS IoT Greengrass V2, kami sarankan menggunakan MQTT dan IoT Jobs (pustaka C/C\$1\$1) untuk membuat mekanisme OTA ringan untuk menghadirkan model. 

 Kami telah menyiapkan [kode sampel yang tersedia di GitHub repositori ini](https://github.com/aws-samples/ml-edge-getting-started) untuk membantu Anda beralih ke alat yang disarankan ini. 

## Hapus sumber daya Edge Manager
<a name="edge-eol-delete-resources"></a>

 Sumber daya yang dibuat oleh Edge Manager terus ada setelah 26 April 2024. Untuk menghindari penagihan, hapus sumber daya ini. 

 Untuk menghapus AWS IoT Greengrass sumber daya, lakukan hal berikut: 

1.  **Di AWS IoT Core konsol, pilih Perangkat **Greengrass** di bawah Kelola.** 

1.  Pilih **Komponen**. 

1.  Di bawah **komponen Saya, komponen** yang dibuat Edge Manager ada dalam format * SageMaker AIEdge (EdgePackagingJobName)*. Pilih komponen yang ingin Anda hapus. 

1.  Kemudian pilih **Hapus versi**. 

 Untuk menghapus alias AWS IoT peran, lakukan hal berikut: 

1.  Di AWS IoT Core konsol, pilih **Keamanan** di bawah **Kelola**. 

1.  Pilih **alias Peran**. 

1.  Alias peran yang dibuat Edge Manager ada dalam format *SageMaker AIEdge- \$1DeviceFleetName\$1*. Pilih peran yang ingin Anda hapus. 

1.  Pilih **Hapus**. 

 Untuk menghapus pekerjaan pengemasan di bucket Amazon S3, lakukan hal berikut: 

1.  Di konsol SageMaker AI, pilih **Edge Inference**. 

1.  Pilih **pekerjaan pengemasan Edge**. 

1.  Pilih salah satu pekerjaan pengemasan tepi. Salin URI Amazon S3 di bawah **Artefak model** di bagian konfigurasi **Output**. 

1.  Di konsol Amazon S3, navigasikan ke lokasi yang sesuai, dan periksa apakah Anda perlu menghapus artefak model. **Untuk menghapus artefak model, pilih objek Amazon S3 dan pilih Hapus.** 

# Optimalisasi kinerja model dengan SageMaker Neo
<a name="neo"></a>

Neo adalah kemampuan Amazon SageMaker AI yang memungkinkan model pembelajaran mesin untuk berlatih sekali dan berjalan di mana saja di cloud dan di tepi. 

Jika Anda adalah pengguna pertama kali SageMaker Neo, kami sarankan Anda memeriksa bagian [Memulai dengan Perangkat Edge](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html) untuk mendapatkan step-by-step petunjuk tentang cara mengkompilasi dan menyebarkan ke perangkat edge. 

## Apa itu SageMaker Neo?
<a name="neo-what-it-is"></a>

Umumnya, mengoptimalkan model pembelajaran mesin untuk inferensi pada berbagai platform sulit karena Anda perlu menyesuaikan model untuk konfigurasi perangkat keras dan perangkat lunak tertentu dari setiap platform. Jika Anda ingin mendapatkan kinerja optimal untuk beban kerja tertentu, Anda perlu mengetahui arsitektur perangkat keras, set instruksi, pola akses memori, dan bentuk data input, di antara faktor-faktor lainnya. Untuk pengembangan perangkat lunak tradisional, alat seperti kompiler dan profiler menyederhanakan proses. Untuk pembelajaran mesin, sebagian besar alat khusus untuk kerangka kerja atau perangkat keras. Ini memaksa Anda ke dalam trial-and-error proses manual yang tidak dapat diandalkan dan tidak produktif.

Neo secara otomatis mengoptimalkan model Gluon, Keras, MXNet, PyTorch, TensorFlow, TensorFlow -Lite, dan ONNX untuk inferensi pada mesin Android, Linux, dan Windows berdasarkan prosesor dari Ambarella, ARM, Intel, Nvidia, NXP, Qualcomm, Texas Instruments, dan Xilinx. Neo diuji dengan model visi komputer yang tersedia di kebun binatang model di seluruh kerangka kerja. SageMaker Neo mendukung kompilasi dan penyebaran untuk dua platform utama: instance cloud (termasuk Inferentia) dan perangkat edge.

Untuk informasi selengkapnya tentang kerangka kerja yang didukung dan jenis instans cloud yang dapat Anda gunakan, lihat [Jenis dan Kerangka Instance yang Didukung](neo-supported-cloud.md) instance cloud.

Untuk informasi selengkapnya tentang kerangka kerja yang didukung, perangkat edge, sistem operasi, arsitektur chip, dan model pembelajaran mesin umum yang diuji oleh SageMaker AI Neo untuk perangkat edge, lihat [Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](neo-supported-devices-edge.md) perangkat edge.

## Cara kerjanya
<a name="neo-how-it-works"></a>

Neo terdiri dari compiler dan runtime. Pertama, API kompilasi Neo membaca model yang diekspor dari berbagai kerangka kerja. Ini mengubah fungsi dan operasi khusus kerangka kerja menjadi representasi perantara kerangka kerja agnostik. Selanjutnya, ia melakukan serangkaian pengoptimalan. Kemudian menghasilkan kode biner untuk operasi yang dioptimalkan, menulisnya ke perpustakaan objek bersama, dan menyimpan definisi model dan parameter ke dalam file terpisah. Neo juga menyediakan runtime untuk setiap platform target yang memuat dan mengeksekusi model yang dikompilasi.

![\[Bagaimana Neo bekerja di SageMaker AI.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/neo_how_it_works.png)


Anda dapat membuat pekerjaan kompilasi Neo baik dari konsol SageMaker AI, AWS Command Line Interface (AWS CLI), notebook Python, atau SageMaker AI SDK. Untuk informasi tentang cara mengkompilasi model, lihat. [Model Kompilasi dengan Neo](neo-job-compilation.md) Dengan beberapa perintah CLI, pemanggilan API, atau beberapa klik, Anda dapat mengonversi model untuk platform pilihan Anda. Anda dapat menerapkan model ke titik akhir SageMaker AI atau di AWS IoT Greengrass perangkat dengan cepat.

Neo dapat mengoptimalkan model dengan parameter baik dalam FP32 atau dikuantisasi ke INT8 atau FP16 bit-width.

**Topics**
+ [Apa itu SageMaker Neo?](#neo-what-it-is)
+ [Cara kerjanya](#neo-how-it-works)
+ [Model Kompilasi dengan Neo](neo-job-compilation.md)
+ [Instans Cloud](neo-cloud-instances.md)
+ [Perangkat Edge](neo-edge-devices.md)
+ [Memecahkan Masalah Kesalahan](neo-troubleshooting.md)

# Model Kompilasi dengan Neo
<a name="neo-job-compilation"></a>

Bagian ini menunjukkan cara membuat, mendeskripsikan, menghentikan, dan membuat daftar pekerjaan kompilasi. Opsi berikut tersedia di Amazon SageMaker Neo untuk mengelola pekerjaan kompilasi untuk model pembelajaran mesin: konsol Amazon SageMaker AI, atau Amazon SageMaker SDK. AWS Command Line Interface

**Topics**
+ [Siapkan Model untuk Kompilasi](neo-compilation-preparing-model.md)
+ [Kompilasi Model ()AWS Command Line Interface](neo-job-compilation-cli.md)
+ [Kompilasi Model (Amazon SageMaker AI Console)](neo-job-compilation-console.md)
+ [Kompilasi Model (Amazon SageMaker AI SDK)](neo-job-compilation-sagemaker-sdk.md)

# Siapkan Model untuk Kompilasi
<a name="neo-compilation-preparing-model"></a>

SageMaker Neo membutuhkan model pembelajaran mesin untuk memenuhi bentuk data input tertentu. Bentuk input yang diperlukan untuk kompilasi tergantung pada kerangka pembelajaran mendalam yang Anda gunakan. Setelah bentuk input model Anda diformat dengan benar, simpan model Anda sesuai dengan persyaratan di bawah ini. Setelah Anda memiliki model yang disimpan, kompres artefak model.

**Topics**
+ [Bentuk data input apa yang diharapkan SageMaker Neo?](#neo-job-compilation-expected-inputs)
+ [Menyimpan Model untuk SageMaker Neo](#neo-job-compilation-how-to-save-model)

## Bentuk data input apa yang diharapkan SageMaker Neo?
<a name="neo-job-compilation-expected-inputs"></a>

Sebelum Anda mengkompilasi model Anda, pastikan model Anda diformat dengan benar. Neo mengharapkan nama dan bentuk input data yang diharapkan untuk model terlatih Anda dengan format JSON atau format daftar. Input yang diharapkan adalah kerangka kerja khusus. 

Di bawah ini adalah bentuk input yang diharapkan SageMaker Neo:

### Keras
<a name="collapsible-section-1"></a>

Tentukan nama dan bentuk (format NCHW) dari input data yang diharapkan menggunakan format kamus untuk model terlatih Anda. Perhatikan bahwa sementara artefak model Keras harus diunggah dalam format NHWC (channel-last), DataInputConfig harus ditentukan dalam format NCHW (channel-first). Format kamus yang diperlukan adalah sebagai berikut: 
+ Untuk satu masukan: `{'input_1':[1,3,224,224]}`
+ Untuk dua input: `{'input_1': [1,3,224,224], 'input_2':[1,3,224,224]}`

### MXNet/ONNX
<a name="collapsible-section-2"></a>

Tentukan nama dan bentuk (format NCHW) dari input data yang diharapkan menggunakan format kamus untuk model terlatih Anda. Format kamus yang diperlukan adalah sebagai berikut:
+ Untuk satu masukan: `{'data':[1,3,1024,1024]}`
+ Untuk dua input: `{'var1': [1,1,28,28], 'var2':[1,1,28,28]}`

### PyTorch
<a name="collapsible-section-3"></a>

Untuk PyTorch model, Anda tidak perlu memberikan nama dan bentuk input data yang diharapkan jika Anda memenuhi kedua kondisi berikut:
+ Anda membuat file definisi model Anda dengan menggunakan PyTorch 2.0 atau yang lebih baru. Untuk informasi selengkapnya tentang cara membuat file definisi, lihat [PyTorch](#how-to-save-pytorch) bagian di bawah *Menyimpan Model untuk SageMaker Neo*.
+ Anda sedang menyusun model Anda untuk instance cloud. Untuk informasi selengkapnya tentang jenis instance yang didukung SageMaker Neo, lihat[Jenis dan Kerangka Instance yang Didukung](neo-supported-cloud.md).

Jika Anda memenuhi kondisi ini, SageMaker Neo mendapatkan konfigurasi input dari file definisi model (.pt atau.pth) yang Anda buat dengan. PyTorch

Jika tidak, Anda harus melakukan hal berikut:

Tentukan nama dan bentuk (format NCHW) dari input data yang diharapkan menggunakan format kamus untuk model terlatih Anda. Atau, Anda dapat menentukan bentuk hanya menggunakan format daftar. Format kamus yang diperlukan adalah sebagai berikut:
+ Untuk satu masukan dalam format kamus: `{'input0':[1,3,224,224]}`
+ Untuk satu masukan dalam format daftar: `[[1,3,224,224]]`
+ Untuk dua input dalam format kamus: `{'input0':[1,3,224,224], 'input1':[1,3,224,224]}`
+ Untuk dua input dalam format daftar: `[[1,3,224,224], [1,3,224,224]]`

### TensorFlow
<a name="collapsible-section-4"></a>

Tentukan nama dan bentuk (format NHWC) dari input data yang diharapkan menggunakan format kamus untuk model terlatih Anda. Format kamus yang diperlukan adalah sebagai berikut:
+ Untuk satu masukan: `{'input':[1,1024,1024,3]}`
+ Untuk dua input: `{'data1': [1,28,28,1], 'data2':[1,28,28,1]}`

### TFLite
<a name="collapsible-section-5"></a>

Tentukan nama dan bentuk (format NHWC) dari input data yang diharapkan menggunakan format kamus untuk model terlatih Anda. Format kamus yang diperlukan adalah sebagai berikut:
+ Untuk satu masukan: `{'input':[1,224,224,3]}`

**catatan**  
SageMaker Neo hanya mendukung TensorFlow Lite untuk target perangkat edge. Untuk daftar target perangkat SageMaker Neo edge yang didukung, lihat [Perangkat](neo-supported-devices-edge-devices.md#neo-supported-edge-devices) halaman SageMaker Neo. Untuk daftar target instans SageMaker Neo cloud yang didukung, lihat [Jenis dan Kerangka Instance yang Didukung](neo-supported-cloud.md) halaman SageMaker Neo.

### XGBoost
<a name="collapsible-section-6"></a>

Nama dan bentuk data input tidak diperlukan.

## Menyimpan Model untuk SageMaker Neo
<a name="neo-job-compilation-how-to-save-model"></a>

Contoh kode berikut menunjukkan cara menyimpan model Anda agar kompatibel dengan Neo. Model harus dikemas sebagai file tar terkompresi ()`*.tar.gz`.

### Keras
<a name="how-to-save-tf-keras"></a>

Model Keras memerlukan satu file definisi model (`.h5`).

Ada dua opsi untuk menyimpan model Keras Anda agar kompatibel untuk SageMaker Neo:

1. Ekspor ke `.h5` format dengan`model.save("<model-name>", save_format="h5")`.

1. Bekukan `SavedModel` setelah mengekspor.

Di bawah ini adalah contoh cara mengekspor `tf.keras` model sebagai grafik beku (opsi dua):

```
import os
import tensorflow as tf
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras import backend

tf.keras.backend.set_learning_phase(0)
model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3), pooling='avg')
model.summary()

# Save as a SavedModel
export_dir = 'saved_model/'
model.save(export_dir, save_format='tf')

# Freeze saved model
input_node_names = [inp.name.split(":")[0] for inp in model.inputs]
output_node_names = [output.name.split(":")[0] for output in model.outputs]
print("Input names: ", input_node_names)
with tf.Session() as sess:
    loaded = tf.saved_model.load(sess, export_dir=export_dir, tags=["serve"]) 
    frozen_graph = tf.graph_util.convert_variables_to_constants(sess,
                                                                sess.graph.as_graph_def(),
                                                                output_node_names)
    tf.io.write_graph(graph_or_graph_def=frozen_graph, logdir=".", name="frozen_graph.pb", as_text=False)

import tarfile
tar = tarfile.open("frozen_graph.tar.gz", "w:gz")
tar.add("frozen_graph.pb")
tar.close()
```

**Awas**  
Jangan mengekspor model Anda dengan `SavedModel` kelas menggunakan`model.save(<path>, save_format='tf')`. Format ini cocok untuk pelatihan, tetapi tidak cocok untuk inferensi.

### MXNet
<a name="how-to-save-mxnet"></a>

MXNet model harus disimpan sebagai file simbol tunggal `*-symbol.json` dan satu parameter`*.params files`.

------
#### [ Gluon Models ]

Tentukan jaringan saraf menggunakan `HybridSequential` Kelas. Ini akan menjalankan kode dalam gaya pemrograman simbolik (sebagai lawan dari pemrograman imperatif).

```
from mxnet import nd, sym
from mxnet.gluon import nn

def get_net():
    net = nn.HybridSequential()  # Here we use the class HybridSequential.
    net.add(nn.Dense(256, activation='relu'),
            nn.Dense(128, activation='relu'),
            nn.Dense(2))
    net.initialize()
    return net

# Define an input to compute a forward calculation. 
x = nd.random.normal(shape=(1, 512))
net = get_net()

# During the forward calculation, the neural network will automatically infer
# the shape of the weight parameters of all the layers based on the shape of
# the input.
net(x)
                        
# hybridize model
net.hybridize()
net(x)

# export model
net.export('<model_name>') # this will create model-symbol.json and model-0000.params files

import tarfile
tar = tarfile.open("<model_name>.tar.gz", "w:gz")
for name in ["<model_name>-0000.params", "<model_name>-symbol.json"]:
    tar.add(name)
tar.close()
```

Untuk informasi lebih lanjut tentang model hibridisasi, lihat dokumentasi [MXNet hibridisasi](https://mxnet.apache.org/versions/1.7.0/api/python/docs/tutorials/packages/gluon/blocks/hybridize.html).

------
#### [ Gluon Model Zoo (GluonCV) ]

Model kebun binatang model GluonCV datang pra-hibridisasi. Jadi Anda bisa mengekspornya.

```
import numpy as np
import mxnet as mx
import gluoncv as gcv
from gluoncv.utils import export_block
import tarfile

net = gcv.model_zoo.get_model('<model_name>', pretrained=True) # For example, choose <model_name> as resnet18_v1
export_block('<model_name>', net, preprocess=True, layout='HWC')

tar = tarfile.open("<model_name>.tar.gz", "w:gz")

for name in ["<model_name>-0000.params", "<model_name>-symbol.json"]:
    tar.add(name)
tar.close()
```

------
#### [ Non Gluon Models ]

Semua model non-Gluon saat disimpan ke penggunaan disk `*-symbol` dan `*.params` file. Karena itu mereka sudah dalam format yang benar untuk Neo.

```
# Pass the following 3 parameters: sym, args, aux
mx.model.save_checkpoint('<model_name>',0,sym,args,aux) # this will create <model_name>-symbol.json and <model_name>-0000.params files

import tarfile
tar = tarfile.open("<model_name>.tar.gz", "w:gz")

for name in ["<model_name>-0000.params", "<model_name>-symbol.json"]:
    tar.add(name)
tar.close()
```

------

### PyTorch
<a name="how-to-save-pytorch"></a>

PyTorch model harus disimpan sebagai file definisi (`.pt`atau`.pth`) dengan tipe data input dari. `float32`

Untuk menyimpan model Anda, gunakan `torch.jit.trace` metode yang diikuti oleh `torch.save` metode. Proses ini menyimpan objek ke file disk dan secara default menggunakan python pickle (`pickle_module=pickle`) untuk menyimpan objek dan beberapa metadata. Selanjutnya, konversi model yang disimpan ke file tar terkompresi.

```
import torchvision
import torch

model = torchvision.models.resnet18(pretrained=True)
model.eval()
inp = torch.rand(1, 3, 224, 224)
model_trace = torch.jit.trace(model, inp)

# Save your model. The following code saves it with the .pth file extension
model_trace.save('model.pth')

# Save as a compressed tar file
import tarfile
with tarfile.open('model.tar.gz', 'w:gz') as f:
    f.add('model.pth')
f.close()
```

Jika Anda menyimpan model Anda dengan PyTorch 2.0 atau yang lebih baru, SageMaker Neo memperoleh konfigurasi input untuk model (nama dan bentuk untuk inputnya) dari file definisi. Dalam hal ini, Anda tidak perlu menentukan konfigurasi input data ke SageMaker AI saat Anda mengkompilasi model.

Jika Anda ingin mencegah SageMaker Neo menurunkan konfigurasi input, Anda dapat mengatur `_store_inputs` parameter `torch.jit.trace` ke`False`. Jika Anda melakukan ini, Anda harus menentukan konfigurasi input data ke SageMaker AI saat Anda mengkompilasi model.

Untuk informasi selengkapnya tentang `torch.jit.trace` metode ini, lihat [TORCH.JIT.TRACE](https://pytorch.org/docs/stable/generated/torch.jit.trace.html#torch.jit.trace) di dokumentasi. PyTorch 

### TensorFlow
<a name="how-to-save-tf"></a>

TensorFlow membutuhkan satu `.pb` atau satu `.pbtxt` file dan direktori variabel yang berisi variabel. Untuk model beku, hanya satu `.pb` atau `.pbtxt` file yang diperlukan.

Contoh kode berikut menunjukkan cara menggunakan perintah tar Linux untuk mengompres model Anda. Jalankan yang berikut ini di terminal Anda atau di notebook Jupyter (jika Anda menggunakan notebook Jupyter, masukkan perintah `!` ajaib di awal pernyataan):

```
# Download SSD_Mobilenet trained model
!wget http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz

# unzip the compressed tar file
!tar xvf ssd_mobilenet_v2_coco_2018_03_29.tar.gz

# Compress the tar file and save it in a directory called 'model.tar.gz'
!tar czvf model.tar.gz ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb
```

Bendera perintah yang digunakan dalam contoh ini mencapai hal berikut:
+ `c`: Buat arsip
+ `z`: Kompres arsip dengan gzip
+ `v`: Tampilkan kemajuan arsip
+ `f`: Tentukan nama file arsip

### Estimator Bawaan
<a name="how-to-save-built-in"></a>

Estimator bawaan dibuat oleh wadah khusus kerangka kerja atau wadah khusus algoritme. Objek penaksir untuk algoritme bawaan dan estimator khusus kerangka kerja menyimpan model dalam format yang benar untuk Anda saat Anda melatih model menggunakan metode bawaan. `.fit`

Misalnya, Anda dapat menggunakan a `sagemaker.TensorFlow` untuk mendefinisikan TensorFlow estimator:

```
from sagemaker.tensorflow import TensorFlow

estimator = TensorFlow(entry_point='mnist.py',
                        role=role,  #param role can be arn of a sagemaker execution role
                        framework_version='1.15.3',
                        py_version='py3',
                        training_steps=1000, 
                        evaluation_steps=100,
                        instance_count=2,
                        instance_type='ml.c4.xlarge')
```

Kemudian latih model dengan metode `.fit` bawaan:

```
estimator.fit(inputs)
```

Sebelum akhirnya mengkompilasi model dengan `compile_model` metode build in:

```
# Specify output path of the compiled model
output_path = '/'.join(estimator.output_path.split('/')[:-1])

# Compile model
optimized_estimator = estimator.compile_model(target_instance_family='ml_c5', 
                              input_shape={'data':[1, 784]},  # Batch size 1, 3 channels, 224x224 Images.
                              output_path=output_path,
                              framework='tensorflow', framework_version='1.15.3')
```

Anda juga dapat menggunakan `sagemaker.estimator.Estimator` Class untuk menginisialisasi objek estimator untuk pelatihan dan mengkompilasi algoritma bawaan dengan `compile_model` metode dari Python SageMaker SDK:

```
import sagemaker
from sagemaker.image_uris import retrieve
sagemaker_session = sagemaker.Session()
aws_region = sagemaker_session.boto_region_name

# Specify built-in algorithm training image
training_image = retrieve(framework='image-classification', 
                          region=aws_region, image_scope='training')

training_image = retrieve(framework='image-classification', region=aws_region, image_scope='training')

# Create estimator object for training
estimator = sagemaker.estimator.Estimator(image_uri=training_image,
                                          role=role,  #param role can be arn of a sagemaker execution role
                                          instance_count=1,
                                          instance_type='ml.p3.8xlarge',
                                          volume_size = 50,
                                          max_run = 360000,
                                          input_mode= 'File',
                                          output_path=s3_training_output_location,
                                          base_job_name='image-classification-training'
                                          )
                                          
# Setup the input data_channels to be used later for training.                                          
train_data = sagemaker.inputs.TrainingInput(s3_training_data_location,
                                            content_type='application/x-recordio',
                                            s3_data_type='S3Prefix')
validation_data = sagemaker.inputs.TrainingInput(s3_validation_data_location,
                                                content_type='application/x-recordio',
                                                s3_data_type='S3Prefix')
data_channels = {'train': train_data, 'validation': validation_data}


# Train model
estimator.fit(inputs=data_channels, logs=True)

# Compile model with Neo                                                                                  
optimized_estimator = estimator.compile_model(target_instance_family='ml_c5',
                                          input_shape={'data':[1, 3, 224, 224], 'softmax_label':[1]},
                                          output_path=s3_compilation_output_location,
                                          framework='mxnet',
                                          framework_version='1.7')
```

Untuk informasi selengkapnya tentang mengkompilasi model dengan SageMaker Python SDK, lihat. [Kompilasi Model (Amazon SageMaker AI SDK)](neo-job-compilation-sagemaker-sdk.md)

# Kompilasi Model ()AWS Command Line Interface
<a name="neo-job-compilation-cli"></a>

Bagian ini menunjukkan cara mengelola pekerjaan kompilasi Amazon SageMaker Neo untuk model pembelajaran mesin menggunakan AWS Command Line Interface (CLI). Anda dapat membuat, mendeskripsikan, menghentikan, dan membuat daftar pekerjaan kompilasi. 

1. Buat Job Kompilasi

   Dengan operasi [CreateCompilationJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html)API, Anda dapat menentukan format input data, bucket S3 untuk menyimpan model Anda, bucket S3 untuk menulis model yang dikompilasi, dan perangkat atau platform perangkat keras target.

   Tabel berikut menunjukkan cara mengonfigurasi `CreateCompilationJob` API berdasarkan apakah target Anda adalah perangkat atau platform.

------
#### [ Device Example ]

   ```
   {
       "CompilationJobName": "neo-compilation-job-demo",
       "RoleArn": "arn:aws:iam::<your-account>:role/service-role/AmazonSageMaker-ExecutionRole-yyyymmddThhmmss",
       "InputConfig": {
           "S3Uri": "s3://<your-bucket>/sagemaker/neo-compilation-job-demo-data/train",
           "DataInputConfig":  "{'data': [1,3,1024,1024]}",
           "Framework": "MXNET"
       },
       "OutputConfig": {
           "S3OutputLocation": "s3://<your-bucket>/sagemaker/neo-compilation-job-demo-data/compile",
           # A target device specification example for a ml_c5 instance family
           "TargetDevice": "ml_c5"
       },
       "StoppingCondition": {
           "MaxRuntimeInSeconds": 300
       }
   }
   ```

   Anda dapat secara opsional menentukan versi kerangka kerja yang Anda gunakan dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InputConfig.html#sagemaker-Type-InputConfig-FrameworkVersion](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InputConfig.html#sagemaker-Type-InputConfig-FrameworkVersion)bidang jika Anda menggunakan PyTorch kerangka kerja untuk melatih model Anda dan perangkat target Anda adalah `ml_* ` target.

   ```
   {
       "CompilationJobName": "neo-compilation-job-demo",
       "RoleArn": "arn:aws:iam::<your-account>:role/service-role/AmazonSageMaker-ExecutionRole-yyyymmddThhmmss",
       "InputConfig": {
           "S3Uri": "s3://<your-bucket>/sagemaker/neo-compilation-job-demo-data/train",
           "DataInputConfig":  "{'data': [1,3,1024,1024]}",
           "Framework": "PYTORCH",
           "FrameworkVersion": "1.6"
       },
       "OutputConfig": {
           "S3OutputLocation": "s3://<your-bucket>/sagemaker/neo-compilation-job-demo-data/compile",
           # A target device specification example for a ml_c5 instance family
           "TargetDevice": "ml_c5",
           # When compiling for ml_* instances using PyTorch framework, use the "CompilerOptions" field in 
           # OutputConfig to provide the correct data type ("dtype") of the model’s input. Default assumed is "float32"
           "CompilerOptions": "{'dtype': 'long'}"
       },
       "StoppingCondition": {
           "MaxRuntimeInSeconds": 300
       }
   }
   ```

**Catatan:**  
Jika Anda menyimpan model Anda dengan menggunakan PyTorch versi 2.0 atau yang lebih baru, `DataInputConfig` bidang ini opsional. SageMaker AI Neo mendapatkan konfigurasi input dari file definisi model yang Anda buat PyTorch. Untuk informasi selengkapnya tentang cara membuat file definisi, lihat [PyTorch](neo-compilation-preparing-model.md#how-to-save-pytorch) bagian di bawah *Menyimpan Model untuk SageMaker AI Neo*.
Bidang API ini hanya didukung untuk PyTorch.

------
#### [ Platform Example ]

   ```
   {
       "CompilationJobName": "neo-test-compilation-job",
       "RoleArn": "arn:aws:iam::<your-account>:role/service-role/AmazonSageMaker-ExecutionRole-yyyymmddThhmmss",
       "InputConfig": {
           "S3Uri": "s3://<your-bucket>/sagemaker/neo-compilation-job-demo-data/train",
           "DataInputConfig":  "{'data': [1,3,1024,1024]}",
           "Framework": "MXNET"
       },
       "OutputConfig": {
           "S3OutputLocation": "s3://<your-bucket>/sagemaker/neo-compilation-job-demo-data/compile",
           # A target platform configuration example for a p3.2xlarge instance
           "TargetPlatform": {
               "Os": "LINUX",
               "Arch": "X86_64",
               "Accelerator": "NVIDIA"
           },
           "CompilerOptions": "{'cuda-ver': '10.0', 'trt-ver': '6.0.1', 'gpu-code': 'sm_70'}"
       },
       "StoppingCondition": {
           "MaxRuntimeInSeconds": 300
       }
   }
   ```

------
**catatan**  
Untuk operasi `OutputConfig` API, operasi `TargetPlatform` API `TargetDevice` dan API saling eksklusif. Anda harus memilih salah satu dari dua opsi.

   Untuk menemukan contoh string JSON `DataInputConfig` tergantung pada kerangka kerja, lihat [Apa bentuk data input yang diharapkan Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-errors-preventing).

   Untuk informasi selengkapnya tentang menyiapkan konfigurasi, lihat operasi [InputConfig[OutputConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InputConfig.html), dan [TargetPlatform](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TargetPlatform.html)API dalam referensi SageMaker API.

1. Setelah Anda mengkonfigurasi file JSON, jalankan perintah berikut untuk membuat pekerjaan kompilasi:

   ```
   aws sagemaker create-compilation-job \
   --cli-input-json file://job.json \
   --region us-west-2 
   
   # You should get CompilationJobArn
   ```

1. Jelaskan pekerjaan kompilasi dengan menjalankan perintah berikut:

   ```
   aws sagemaker describe-compilation-job \
   --compilation-job-name $JOB_NM \
   --region us-west-2
   ```

1. Hentikan pekerjaan kompilasi dengan menjalankan perintah berikut:

   ```
   aws sagemaker stop-compilation-job \
   --compilation-job-name $JOB_NM \
   --region us-west-2
   
   # There is no output for compilation-job operation
   ```

1. Buat daftar pekerjaan kompilasi dengan menjalankan perintah berikut:

   ```
   aws sagemaker list-compilation-jobs \
   --region us-west-2
   ```

# Kompilasi Model (Amazon SageMaker AI Console)
<a name="neo-job-compilation-console"></a>

Anda dapat membuat pekerjaan kompilasi Amazon SageMaker Neo di konsol Amazon SageMaker AI.

1. Di konsol **Amazon SageMaker AI**, pilih **Pekerjaan kompilasi**, lalu pilih **Buat pekerjaan kompilasi**.  
![\[Buat pekerjaan kompilasi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/8-create-compilation-job.png)

1. Pada halaman **Create compilation job**, di bawah **Job name**, masukkan nama. Kemudian pilih **peran IAM**.  
![\[Buat halaman pekerjaan kompilasi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/9-create-compilation-job-config.png)

1. Jika Anda tidak memiliki peran IAM, pilih **Buat peran baru**.  
![\[Buat lokasi peran IAM.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/10a-create-iam-role.png)

1. Pada halaman **Create an IAM role**, pilih **bucket Any S3, lalu** pilih **Create** role.  
![\[Buat halaman peran IAM.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/10-create-iam-role.png)

1. 

------
#### [ Non PyTorch Frameworks ]

   Dalam bagian **Konfigurasi input**, masukkan path lengkap URI bucket Amazon S3 yang berisi artefak model Anda di bidang input **Lokasi artefak model**. Artefak model Anda harus dalam format file tarball terkompresi (). `.tar.gz` 

   Untuk bidang **konfigurasi input Data**, masukkan string JSON yang menentukan bentuk data input.

   Untuk **kerangka pembelajaran mesin**, pilih kerangka kerja pilihan Anda.

![\[Halaman konfigurasi masukan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/neo-create-compilation-job-input-config.png)


   Untuk menemukan contoh string JSON dari bentuk data input tergantung pada kerangka kerja, lihat [Apa bentuk data input yang diharapkan Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting.html#neo-troubleshooting-errors-preventing).

------
#### [ PyTorch Framework ]

   Instruksi serupa berlaku untuk menyusun PyTorch model. Namun, jika Anda berlatih dengan PyTorch dan mencoba mengkompilasi model untuk `ml_*` (kecuali`ml_inf`) target, Anda dapat secara opsional menentukan versi yang PyTorch Anda gunakan.

![\[Contoh bagian konfigurasi Input menunjukkan di mana untuk memilih versi Framework.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/compile_console_pytorch.png)


   Untuk menemukan contoh string JSON dari bentuk data input tergantung pada kerangka kerja, lihat [Apa bentuk data input yang diharapkan Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting.html#neo-troubleshooting-errors-preventing).

**Catatan**  
Jika Anda menyimpan model Anda dengan menggunakan PyTorch versi 2.0 atau yang lebih baru, **bidang konfigurasi input data** adalah opsional. SageMaker Neo mendapatkan konfigurasi input dari file definisi model yang Anda buat dengan PyTorch. Untuk informasi selengkapnya tentang cara membuat file definisi, lihat [PyTorch](neo-compilation-preparing-model.md#how-to-save-pytorch) bagian di bawah *Menyimpan Model untuk SageMaker AI Neo*.
Saat mengompilasi `ml_*` instance menggunakan PyTorch framework, gunakan bidang **opsi Compiler** di **Output Configuration** untuk memberikan tipe data (`dtype`) yang benar dari input model. Default diatur ke `"float32"`. 

![\[Contoh bagian Konfigurasi Output.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/neo_compilation_console_pytorch_compiler_options.png)


**Awas**  
 Jika Anda menentukan jalur URI bucket Amazon S3 yang mengarah ke `.pth` file, Anda akan menerima kesalahan berikut setelah memulai kompilasi: `ClientError: InputConfiguration: Unable to untar input model.Please confirm the model is a tar.gz file` 

------

1.  Pergi ke bagian **konfigurasi Output**. Pilih di mana Anda ingin menerapkan model Anda. Anda dapat menerapkan model Anda ke **perangkat Target** atau **platform Target**. Perangkat target termasuk perangkat cloud dan edge. Platform target mengacu pada OS, arsitektur, dan akselerator tertentu yang Anda inginkan agar model Anda berjalan. 

    Untuk **lokasi Output S3**, masukkan path ke bucket S3 tempat Anda ingin menyimpan model. Anda secara opsional dapat menambahkan opsi kompiler dalam format JSON di bawah bagian Opsi **kompiler**.   
![\[Halaman konfigurasi keluaran.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/neo-console-output-config.png)

1. Periksa status pekerjaan kompilasi saat dimulai. Status pekerjaan ini dapat ditemukan di bagian atas halaman **Pekerjaan Kompilasi**, seperti yang ditunjukkan pada gambar berikut. Anda juga dapat memeriksa statusnya di kolom **Status**.  
![\[Status pekerjaan kompilasi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/12-run-model-compilation.png)

1. Periksa status pekerjaan kompilasi setelah selesai. Anda dapat memeriksa status di kolom **Status** seperti yang ditunjukkan pada gambar berikut.  
![\[Status pekerjaan kompilasi.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo/12a-completed-model-compilation.png)

# Kompilasi Model (Amazon SageMaker AI SDK)
<a name="neo-job-compilation-sagemaker-sdk"></a>

 Anda dapat menggunakan [https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html?#sagemaker.estimator.Estimator.compile_model](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html?#sagemaker.estimator.Estimator.compile_model)API di [Amazon SageMaker AI SDK for Python untuk](https://sagemaker.readthedocs.io/en/stable/) mengkompilasi model terlatih dan mengoptimalkannya untuk perangkat keras target tertentu. API harus dipanggil pada objek estimator yang digunakan selama pelatihan model. 

**catatan**  
Anda harus mengatur variabel `MMS_DEFAULT_RESPONSE_TIMEOUT` lingkungan `500` saat mengkompilasi model dengan MXNet atau PyTorch. Variabel lingkungan tidak diperlukan untuk TensorFlow. 

 Berikut ini adalah contoh bagaimana Anda dapat mengkompilasi model menggunakan `trained_model_estimator` objek: 

```
# Replace the value of expected_trained_model_input below and
# specify the name & shape of the expected inputs for your trained model
# in json dictionary form
expected_trained_model_input = {'data':[1, 784]}

# Replace the example target_instance_family below to your preferred target_instance_family
compiled_model = trained_model_estimator.compile_model(target_instance_family='ml_c5',
        input_shape=expected_trained_model_input,
        output_path='insert s3 output path',
        env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'})
```

Kode mengkompilasi model, menyimpan model yang dioptimalkan di`output_path`, dan membuat model SageMaker AI yang dapat digunakan ke titik akhir. 

# Instans Cloud
<a name="neo-cloud-instances"></a>

Amazon SageMaker Neo menyediakan dukungan kompilasi untuk kerangka kerja machine learning populer seperti TensorFlow,, PyTorch MXNet, dan banyak lagi. Anda dapat menerapkan model yang dikompilasi ke instance cloud dan instans AWS Inferentia. Untuk daftar lengkap jenis kerangka kerja dan instance yang didukung, lihat Jenis dan Kerangka [Instance yang Didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-cloud.html). 

Anda dapat mengkompilasi model Anda dengan salah satu dari tiga cara: melalui AWS CLI, Konsol SageMaker AI, atau SageMaker AI SDK untuk Python. Lihat, [Gunakan Neo untuk Mengompilasi Model](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html) untuk informasi lebih lanjut. Setelah dikompilasi, artefak model Anda disimpan di URI bucket Amazon S3 yang Anda tentukan selama pekerjaan kompilasi. Anda dapat menerapkan model yang dikompilasi ke instance cloud dan instans AWS Inferentia menggunakan AI SageMaker SDK untuk Python,,, atau konsol. AWS SDK untuk Python (Boto3) AWS CLI AWS 

Jika Anda menerapkan model menggunakan AWS CLI, konsol, atau Boto3, Anda harus memilih URI ECR Amazon image Docker untuk container utama Anda. Lihat [Neo Inference Container Images](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html) untuk daftar Amazon URIs ECR.

**Topics**
+ [Jenis dan Kerangka Instance yang Didukung](neo-supported-cloud.md)
+ [Menyebarkan Model](neo-deployment-hosting-services.md)
+ [Permintaan Inferensi Dengan Layanan yang Diterapkan](neo-requests.md)
+ [Gambar Kontainer Inferensi](neo-deployment-hosting-services-container-images.md)

# Jenis dan Kerangka Instance yang Didukung
<a name="neo-supported-cloud"></a>

Amazon SageMaker Neo mendukung kerangka pembelajaran mendalam yang populer untuk kompilasi dan penerapan. Anda dapat menerapkan model Anda ke instance cloud atau jenis instans AWS Inferentia.

Berikut ini menjelaskan kerangka kerja yang didukung SageMaker Neo dan instance cloud target yang dapat Anda kompilasi dan terapkan. Untuk informasi tentang cara menerapkan model yang dikompilasi ke instans cloud atau Inferentia, lihat [Menerapkan Model dengan](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-deployment-hosting-services.html) Instans Cloud.

## Instans Cloud
<a name="neo-supported-cloud-instances"></a>

SageMaker Neo mendukung kerangka kerja pembelajaran mendalam berikut untuk instance cloud CPU dan GPU: 


| Kerangka Kerja | Versi Kerangka | Versi Model | Model | Format Model (dikemas dalam\$1.tar.gz) | Toolkit | 
| --- | --- | --- | --- | --- | --- | 
| MXNet | 1.8.0 | Mendukung 1.8.0 atau sebelumnya | Klasifikasi Gambar, Deteksi Objek, Segmentasi Semantik, Estimasi Pose, Pengenalan Aktivitas | Satu file simbol (.json) dan satu file parameter (.params) | GluonCV v0.8.0 | 
| ONNX | 1.7.0 | Mendukung 1.7.0 atau sebelumnya | Klasifikasi Gambar, SVM | Satu file model (.onnx) |  | 
| Keras | 2.2.4 | Mendukung 2.2.4 atau sebelumnya | Klasifikasi Gambar | Satu file definisi model (.h5) |  | 
| PyTorch | 1.4, 1.5, 1.6, 1.7, 1.8, 1.12, 1.13, atau 2.0 | Mendukung 1.4, 1.5, 1.6, 1.7, 1.8, 1.12, 1.13, dan 2.0 |  Klasifikasi Gambar Versi 1.13 dan 2.0 mendukung Object Detection, Vision Transformer, dan HuggingFace  | Satu file definisi model (.pt atau.pth) dengan input dtype float32 |  | 
| TensorFlow | 1.15.3 atau 2.9 | Mendukung 1.15.3 dan 2.9 | Klasifikasi Gambar | Untuk model yang disimpan, satu file.pb atau satu file.pbtxt dan direktori variabel yang berisi variabel Untuk model beku, hanya satu file.pb atau .pbtxt |  | 
| XGBoost | 1.3.3 | Mendukung 1.3.3 atau sebelumnya | Pohon Keputusan | Satu file XGBoost model (.model) di mana jumlah node dalam pohon kurang dari 2 ^ 31 |  | 

**catatan**  
“Versi Model” adalah versi kerangka kerja yang digunakan untuk melatih dan mengekspor model. 

## Tipe instans
<a name="neo-supported-cloud-instances-types"></a>

 Anda dapat menerapkan model yang dikompilasi SageMaker AI ke salah satu instance cloud yang tercantum di bawah ini: 


| Instans | Jenis Komputasi | 
| --- | --- | 
| `ml_c4` | Standar | 
| `ml_c5` | Standar | 
| `ml_m4` | Standar | 
| `ml_m5` | Standar | 
| `ml_p2` | Komputasi yang dipercepat | 
| `ml_p3` | Komputasi yang dipercepat | 
| `ml_g4dn` | Komputasi yang dipercepat | 

 Untuk informasi tentang vCPU, memori, dan harga per jam yang tersedia untuk setiap jenis instans, lihat Harga [Amazon SageMaker ](https://aws.amazon.com/sagemaker/pricing/). 

**catatan**  
Saat mengompilasi `ml_*` instance menggunakan PyTorch framework, gunakan bidang **opsi Compiler** di **Output Configuration** untuk memberikan tipe data (`dtype`) yang benar dari input model.  
Default diatur ke `"float32"`.

## AWS Inferensia
<a name="neo-supported-inferentia"></a>

 SageMaker Neo mendukung kerangka kerja pembelajaran mendalam berikut untuk Inf1: 


| Kerangka Kerja | Versi Kerangka | Versi Model | Model | Format Model (dikemas dalam\$1.tar.gz) | Toolkit | 
| --- | --- | --- | --- | --- | --- | 
| MXNet | 1.5 atau 1.8  | Mendukung 1.8, 1.5 dan sebelumnya | Klasifikasi Gambar, Deteksi Objek, Segmentasi Semantik, Estimasi Pose, Pengenalan Aktivitas | Satu file simbol (.json) dan satu file parameter (.params) | GluonCV v0.8.0 | 
| PyTorch | 1.7, 1.8 atau 1.9 | Mendukung 1.9 dan sebelumnya | Klasifikasi Gambar | Satu file definisi model (.pt atau.pth) dengan input dtype float32 |  | 
| TensorFlow | 1.15 atau 2.5 | Mendukung 2.5, 1.15 dan sebelumnya | Klasifikasi Gambar | Untuk model yang disimpan, satu file.pb atau satu file.pbtxt dan direktori variabel yang berisi variabel Untuk model beku, hanya satu file.pb atau .pbtxt |  | 

**catatan**  
“Versi Model” adalah versi kerangka kerja yang digunakan untuk melatih dan mengekspor model.

Anda dapat menerapkan model yang SageMaker dikompilasi NEO ke instans Amazon Inf1 berbasis Inferensia AWS . EC2 AWS Inferentia adalah chip silikon khusus pertama Amazon yang dirancang untuk mempercepat pembelajaran mendalam. Saat ini, Anda dapat menggunakan `ml_inf1` instance untuk menerapkan model yang dikompilasi.

### AWS Inferensia2 dan Trainium AWS
<a name="neo-supported-inferentia-trainium"></a>

Saat ini, Anda dapat menerapkan model yang SageMaker dikompilasi NEO ke instans AWS Amazon EC2 Inf2 berbasis Inferensia2 (di Wilayah AS Timur (Ohio)), dan ke instans Amazon EC2 Trn1 AWS berbasis Train (di Wilayah AS Timur (Virginia N.)). Untuk informasi lebih lanjut tentang model yang didukung pada instance ini, lihat [Panduan Kesesuaian Arsitektur Model](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/model-architecture-fit.html) dalam dokumentasi AWS Neuron, dan contoh di repositori [Neuron Github](https://github.com/aws-neuron/aws-neuron-sagemaker-samples).

# Menyebarkan Model
<a name="neo-deployment-hosting-services"></a>

Untuk menerapkan model yang SageMaker dikompilasi Amazon Neo ke titik akhir HTTPS, Anda harus mengonfigurasi dan membuat titik akhir untuk model menggunakan layanan hosting Amazon AI. SageMaker Saat ini, pengembang dapat menggunakan Amazon SageMaker APIs untuk menyebarkan modul ke instance ml.c5, ml.c4, ml.m5, ml.m4, ml.p3, ml.p2, dan ml.inf1. 

Untuk instance [Inferentia](https://aws.amazon.com/machine-learning/inferentia/) dan [Trainium](https://aws.amazon.com/machine-learning/trainium/), model perlu dikompilasi secara khusus untuk instance tersebut. Model yang dikompilasi untuk jenis instance lain tidak dijamin berfungsi dengan instans Inferentia atau Trainium.

Saat menerapkan model yang dikompilasi, Anda perlu menggunakan instance yang sama untuk target yang Anda gunakan untuk kompilasi. Ini menciptakan titik akhir SageMaker AI yang dapat Anda gunakan untuk melakukan inferensi. [Anda dapat menerapkan model yang dikompilasi NEO menggunakan salah satu dari berikut ini: [Amazon SageMaker AI SDK untuk Python, SDK for](https://sagemaker.readthedocs.io/en/stable/)[Python (Boto3),](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) dan konsol AI. [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/)SageMaker ](https://console.aws.amazon.com/sagemaker)

**catatan**  
Untuk menerapkan model menggunakan AWS CLI, konsol, atau Boto3, lihat [Neo Inference Container Images untuk memilih URI gambar inferensi untuk container](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html) utama Anda. 

**Topics**
+ [Prasyarat](neo-deployment-hosting-services-prerequisites.md)
+ [Menerapkan Model Terkompilasi Menggunakan SageMaker SDK](neo-deployment-hosting-services-sdk.md)
+ [Menyebarkan Model Kompilasi Menggunakan Boto3](neo-deployment-hosting-services-boto3.md)
+ [Menerapkan Model Kompilasi Menggunakan AWS CLI](neo-deployment-hosting-services-cli.md)
+ [Menerapkan Model Kompilasi Menggunakan Konsol](neo-deployment-hosting-services-console.md)

# Prasyarat
<a name="neo-deployment-hosting-services-prerequisites"></a>

**catatan**  
Ikuti petunjuk di bagian ini jika Anda mengkompilasi model menggunakan AWS SDK untuk Python (Boto3), AWS CLI, atau konsol SageMaker AI. 

Untuk membuat model yang SageMaker dikompilasi NEO, Anda memerlukan yang berikut ini:

1. Gambar Docker Amazon ECR URI. Anda dapat memilih salah satu yang memenuhi kebutuhan Anda dari [daftar ini](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html). 

1. File skrip titik masuk:

   1. **Untuk PyTorch dan MXNet model:**

      *Jika Anda melatih model Anda menggunakan SageMaker AI*, skrip pelatihan harus mengimplementasikan fungsi yang dijelaskan di bawah ini. Skrip pelatihan berfungsi sebagai skrip titik masuk selama inferensi. Dalam contoh yang dirinci dalam [Pelatihan MNIST, Kompilasi dan Penerapan dengan MXNet Modul dan SageMaker Neo](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_neo_compilation_jobs/mxnet_mnist/mxnet_mnist_neo.html), skrip pelatihan (`mnist.py`) mengimplementasikan fungsi yang diperlukan.

      *Jika Anda tidak melatih model Anda menggunakan SageMaker AI*, Anda perlu menyediakan file entry point script (`inference.py`) yang dapat digunakan pada saat inferensi. [Berdasarkan kerangka kerja— MXNet atau PyTorch —lokasi skrip inferensi harus sesuai dengan Struktur Direktori Model SDK SageMaker Python untuk atau [Struktur Direktori Model untuk MxNet](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#model-directory-structure). PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#model-directory-structure) 

      Saat menggunakan gambar Neo Inference Optimized Container dengan **PyTorch**dan **MXNet**pada tipe instance CPU dan GPU, skrip inferensi harus mengimplementasikan fungsi-fungsi berikut: 
      + `model_fn`: Memuat model. (Opsional)
      + `input_fn`: Mengkonversi payload permintaan masuk ke array numpy.
      + `predict_fn`: Melakukan prediksi.
      + `output_fn`: Mengkonversi output prediksi ke payload respon.
      + Atau, Anda dapat menentukan `transform_fn` untuk menggabungkan`input_fn`,`predict_fn`, dan`output_fn`.

      Berikut ini adalah contoh `inference.py` skrip dalam direktori bernama `code` (`code/inference.py`) untuk **PyTorch dan MXNet (Gluon dan Modul)**. Contoh pertama memuat model dan kemudian menyajikannya pada data gambar pada GPU: 

------
#### [ MXNet Module ]

      ```
      import numpy as np
      import json
      import mxnet as mx
      import neomx  # noqa: F401
      from collections import namedtuple
      
      Batch = namedtuple('Batch', ['data'])
      
      # Change the context to mx.cpu() if deploying to a CPU endpoint
      ctx = mx.gpu()
      
      def model_fn(model_dir):
          # The compiled model artifacts are saved with the prefix 'compiled'
          sym, arg_params, aux_params = mx.model.load_checkpoint('compiled', 0)
          mod = mx.mod.Module(symbol=sym, context=ctx, label_names=None)
          exe = mod.bind(for_training=False,
                         data_shapes=[('data', (1,3,224,224))],
                         label_shapes=mod._label_shapes)
          mod.set_params(arg_params, aux_params, allow_missing=True)
          
          # Run warm-up inference on empty data during model load (required for GPU)
          data = mx.nd.empty((1,3,224,224), ctx=ctx)
          mod.forward(Batch([data]))
          return mod
      
      
      def transform_fn(mod, image, input_content_type, output_content_type):
          # pre-processing
          decoded = mx.image.imdecode(image)
          resized = mx.image.resize_short(decoded, 224)
          cropped, crop_info = mx.image.center_crop(resized, (224, 224))
          normalized = mx.image.color_normalize(cropped.astype(np.float32) / 255,
                                        mean=mx.nd.array([0.485, 0.456, 0.406]),
                                        std=mx.nd.array([0.229, 0.224, 0.225]))
          transposed = normalized.transpose((2, 0, 1))
          batchified = transposed.expand_dims(axis=0)
          casted = batchified.astype(dtype='float32')
          processed_input = casted.as_in_context(ctx)
      
          # prediction/inference
          mod.forward(Batch([processed_input]))
      
          # post-processing
          prob = mod.get_outputs()[0].asnumpy().tolist()
          prob_json = json.dumps(prob)
          return prob_json, output_content_type
      ```

------
#### [ MXNet Gluon ]

      ```
      import numpy as np
      import json
      import mxnet as mx
      import neomx  # noqa: F401
      
      # Change the context to mx.cpu() if deploying to a CPU endpoint
      ctx = mx.gpu()
      
      def model_fn(model_dir):
          # The compiled model artifacts are saved with the prefix 'compiled'
          block = mx.gluon.nn.SymbolBlock.imports('compiled-symbol.json',['data'],'compiled-0000.params', ctx=ctx)
          
          # Hybridize the model & pass required options for Neo: static_alloc=True & static_shape=True
          block.hybridize(static_alloc=True, static_shape=True)
          
          # Run warm-up inference on empty data during model load (required for GPU)
          data = mx.nd.empty((1,3,224,224), ctx=ctx)
          warm_up = block(data)
          return block
      
      
      def input_fn(image, input_content_type):
          # pre-processing
          decoded = mx.image.imdecode(image)
          resized = mx.image.resize_short(decoded, 224)
          cropped, crop_info = mx.image.center_crop(resized, (224, 224))
          normalized = mx.image.color_normalize(cropped.astype(np.float32) / 255,
                                        mean=mx.nd.array([0.485, 0.456, 0.406]),
                                        std=mx.nd.array([0.229, 0.224, 0.225]))
          transposed = normalized.transpose((2, 0, 1))
          batchified = transposed.expand_dims(axis=0)
          casted = batchified.astype(dtype='float32')
          processed_input = casted.as_in_context(ctx)
          return processed_input
      
      
      def predict_fn(processed_input_data, block):
          # prediction/inference
          prediction = block(processed_input_data)
          return prediction
      
      def output_fn(prediction, output_content_type):
          # post-processing
          prob = prediction.asnumpy().tolist()
          prob_json = json.dumps(prob)
          return prob_json, output_content_type
      ```

------
#### [ PyTorch 1.4 and Older ]

      ```
      import os
      import torch
      import torch.nn.parallel
      import torch.optim
      import torch.utils.data
      import torch.utils.data.distributed
      import torchvision.transforms as transforms
      from PIL import Image
      import io
      import json
      import pickle
      
      
      def model_fn(model_dir):
          """Load the model and return it.
          Providing this function is optional.
          There is a default model_fn available which will load the model
          compiled using SageMaker Neo. You can override it here.
      
          Keyword arguments:
          model_dir -- the directory path where the model artifacts are present
          """
      
          # The compiled model is saved as "compiled.pt"
          model_path = os.path.join(model_dir, 'compiled.pt')
          with torch.neo.config(model_dir=model_dir, neo_runtime=True):
              model = torch.jit.load(model_path)
              device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
              model = model.to(device)
      
          # We recommend that you run warm-up inference during model load
          sample_input_path = os.path.join(model_dir, 'sample_input.pkl')
          with open(sample_input_path, 'rb') as input_file:
              model_input = pickle.load(input_file)
          if torch.is_tensor(model_input):
              model_input = model_input.to(device)
              model(model_input)
          elif isinstance(model_input, tuple):
              model_input = (inp.to(device) for inp in model_input if torch.is_tensor(inp))
              model(*model_input)
          else:
              print("Only supports a torch tensor or a tuple of torch tensors")
              return model
      
      
      def transform_fn(model, request_body, request_content_type,
                       response_content_type):
          """Run prediction and return the output.
          The function
          1. Pre-processes the input request
          2. Runs prediction
          3. Post-processes the prediction output.
          """
          # preprocess
          decoded = Image.open(io.BytesIO(request_body))
          preprocess = transforms.Compose([
              transforms.Resize(256),
              transforms.CenterCrop(224),
              transforms.ToTensor(),
              transforms.Normalize(
                  mean=[
                      0.485, 0.456, 0.406], std=[
                      0.229, 0.224, 0.225]),
          ])
          normalized = preprocess(decoded)
          batchified = normalized.unsqueeze(0)
          # predict
          device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
          batchified = batchified.to(device)
          output = model.forward(batchified)
      
          return json.dumps(output.cpu().numpy().tolist()), response_content_type
      ```

------
#### [ PyTorch 1.5 and Newer ]

      ```
      import os
      import torch
      import torch.nn.parallel
      import torch.optim
      import torch.utils.data
      import torch.utils.data.distributed
      import torchvision.transforms as transforms
      from PIL import Image
      import io
      import json
      import pickle
      
      
      def model_fn(model_dir):
          """Load the model and return it.
          Providing this function is optional.
          There is a default_model_fn available, which will load the model
          compiled using SageMaker Neo. You can override the default here.
          The model_fn only needs to be defined if your model needs extra
          steps to load, and can otherwise be left undefined.
      
          Keyword arguments:
          model_dir -- the directory path where the model artifacts are present
          """
      
          # The compiled model is saved as "model.pt"
          model_path = os.path.join(model_dir, 'model.pt')
          device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
          model = torch.jit.load(model_path, map_location=device)
          model = model.to(device)
      
          return model
      
      
      def transform_fn(model, request_body, request_content_type,
                          response_content_type):
          """Run prediction and return the output.
          The function
          1. Pre-processes the input request
          2. Runs prediction
          3. Post-processes the prediction output.
          """
          # preprocess
          decoded = Image.open(io.BytesIO(request_body))
          preprocess = transforms.Compose([
                                      transforms.Resize(256),
                                      transforms.CenterCrop(224),
                                      transforms.ToTensor(),
                                      transforms.Normalize(
                                          mean=[
                                              0.485, 0.456, 0.406], std=[
                                              0.229, 0.224, 0.225]),
                                          ])
          normalized = preprocess(decoded)
          batchified = normalized.unsqueeze(0)
          
          # predict
          device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
          batchified = batchified.to(device)
          output = model.forward(batchified)
          return json.dumps(output.cpu().numpy().tolist()), response_content_type
      ```

------

   1.  **Untuk instance inf1 atau onnx, xgboost, gambar kontainer keras** 

      Untuk semua gambar kontainer yang dioptimalkan Neo Inference lainnya, atau jenis instance inferentia, skrip titik masuk harus mengimplementasikan fungsi berikut untuk Neo Deep Learning Runtime: 
      + `neo_preprocess`: Mengkonversi payload permintaan masuk ke array numpy.
      + `neo_postprocess`: Mengonversi output prediksi dari Neo Deep Learning Runtime menjadi badan respons.
**catatan**  
Dua fungsi sebelumnya tidak menggunakan salah satu fungsi, MXNet, PyTorch atau. TensorFlow

      Untuk contoh cara menggunakan fungsi-fungsi ini, lihat [Notebook Contoh Kompilasi Model Neo](https://docs.aws.amazon.com//sagemaker/latest/dg/neo.html#neo-sample-notebooks). 

   1. **Untuk TensorFlow model**

      Jika model Anda memerlukan logika pra-dan pasca-pemrosesan khusus sebelum data dikirim ke model, maka Anda harus menentukan `inference.py` file skrip titik masuk yang dapat digunakan pada saat inferensi. Script harus mengimplementasikan baik sepasang `input_handler` dan `output_handler` fungsi atau fungsi handler tunggal. 
**catatan**  
Perhatikan bahwa jika fungsi handler diimplementasikan, `input_handler` dan `output_handler` diabaikan. 

      Berikut ini adalah contoh kode `inference.py` skrip yang dapat Anda kumpulkan dengan model kompilasi untuk melakukan pra-dan sesudah pemrosesan khusus pada model klasifikasi gambar. Klien SageMaker AI mengirimkan file gambar sebagai tipe `application/x-image` konten ke `input_handler` fungsi, di mana ia dikonversi ke JSON. File gambar yang dikonversi kemudian dikirim ke [Tensorflow Model Server (TFX)](https://www.tensorflow.org/tfx/serving/api_rest) menggunakan REST API. 

      ```
      import json
      import numpy as np
      import json
      import io
      from PIL import Image
      
      def input_handler(data, context):
          """ Pre-process request input before it is sent to TensorFlow Serving REST API
          
          Args:
          data (obj): the request data, in format of dict or string
          context (Context): an object containing request and configuration details
          
          Returns:
          (dict): a JSON-serializable dict that contains request body and headers
          """
          f = data.read()
          f = io.BytesIO(f)
          image = Image.open(f).convert('RGB')
          batch_size = 1
          image = np.asarray(image.resize((512, 512)))
          image = np.concatenate([image[np.newaxis, :, :]] * batch_size)
          body = json.dumps({"signature_name": "serving_default", "instances": image.tolist()})
          return body
      
      def output_handler(data, context):
          """Post-process TensorFlow Serving output before it is returned to the client.
          
          Args:
          data (obj): the TensorFlow serving response
          context (Context): an object containing request and configuration details
          
          Returns:
          (bytes, string): data to return to client, response content type
          """
          if data.status_code != 200:
              raise ValueError(data.content.decode('utf-8'))
      
          response_content_type = context.accept_header
          prediction = data.content
          return prediction, response_content_type
      ```

      Jika tidak ada pra-atau pasca-pemrosesan khusus, klien SageMaker AI mengonversi gambar file ke JSON dengan cara yang sama sebelum mengirimnya ke titik akhir AI. SageMaker 

      Untuk informasi selengkapnya, lihat [Deploying to TensorFlow Serving Endpoints di Python SageMaker SDK](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#providing-python-scripts-for-pre-pos-processing). 

1. URI bucket Amazon S3 yang berisi artefak model yang dikompilasi. 

# Menerapkan Model Terkompilasi Menggunakan SageMaker SDK
<a name="neo-deployment-hosting-services-sdk"></a>

Anda harus memenuhi bagian [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) jika model dikompilasi menggunakan AWS SDK untuk Python (Boto3),, AWS CLI atau konsol Amazon AI. SageMaker Ikuti salah satu kasus penggunaan berikut untuk menerapkan model yang dikompilasi dengan SageMaker Neo berdasarkan cara Anda mengkompilasi model Anda.

**Topics**
+ [Jika Anda mengkompilasi model menggunakan SageMaker SDK](#neo-deployment-hosting-services-sdk-deploy-sm-sdk)
+ [Jika Anda mengkompilasi model Anda menggunakan MXNet atau PyTorch](#neo-deployment-hosting-services-sdk-deploy-sm-boto3)
+ [Jika Anda mengkompilasi model Anda menggunakan Boto3, SageMaker konsol, atau CLI untuk TensorFlow](#neo-deployment-hosting-services-sdk-deploy-sm-boto3-tensorflow)

## Jika Anda mengkompilasi model menggunakan SageMaker SDK
<a name="neo-deployment-hosting-services-sdk-deploy-sm-sdk"></a>

Pegangan objek [SageMaker.model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html?highlight=sagemaker.Model) untuk model yang dikompilasi menyediakan fungsi [deploy ()](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html?highlight=sagemaker.Model#sagemaker.model.Model.deploy), yang memungkinkan Anda membuat titik akhir untuk menyajikan permintaan inferensi. Fungsi ini memungkinkan Anda mengatur jumlah dan jenis instance yang digunakan untuk titik akhir. Anda harus memilih contoh yang telah Anda kompilasi model Anda. Misalnya, dalam pekerjaan yang dikompilasi di bagian [Compile a Model (Amazon SageMaker SDK)](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation-sagemaker-sdk.html), ini adalah. `ml_c5` 

```
predictor = compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.c5.4xlarge')

# Print the name of newly created endpoint
print(predictor.endpoint_name)
```

## Jika Anda mengkompilasi model Anda menggunakan MXNet atau PyTorch
<a name="neo-deployment-hosting-services-sdk-deploy-sm-boto3"></a>

Buat model SageMaker AI dan terapkan menggunakan deploy () API di bawah Model khusus kerangka kerja. APIs Karena MXNet, itu adalah [MXNetModel](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/sagemaker.mxnet.html?highlight=MXNetModel#mxnet-model) dan untuk PyTorch, itu [ PyTorchModel](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html?highlight=PyTorchModel#sagemaker.pytorch.model.PyTorchModel). Saat membuat dan menerapkan model SageMaker AI, Anda harus menyetel variabel `MMS_DEFAULT_RESPONSE_TIMEOUT` lingkungan ke `500` dan menentukan `entry_point` parameter sebagai skrip inferensi (`inference.py`) dan `source_dir` parameter sebagai lokasi direktori (`code`) dari skrip inferensi. Untuk menyiapkan skrip inferensi (`inference.py`) ikuti langkah Prasyarat. 

Contoh berikut menunjukkan cara menggunakan fungsi-fungsi ini untuk menerapkan model yang dikompilasi menggunakan SageMaker AI SDK untuk Python: 

------
#### [ MXNet ]

```
from sagemaker.mxnet import MXNetModel

# Create SageMaker model and deploy an endpoint
sm_mxnet_compiled_model = MXNetModel(
    model_data='insert S3 path of compiled MXNet model archive',
    role='AmazonSageMaker-ExecutionRole',
    entry_point='inference.py',
    source_dir='code',
    framework_version='1.8.0',
    py_version='py3',
    image_uri='insert appropriate ECR Image URI for MXNet',
    env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'},
)

# Replace the example instance_type below to your preferred instance_type
predictor = sm_mxnet_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge')

# Print the name of newly created endpoint
print(predictor.endpoint_name)
```

------
#### [ PyTorch 1.4 and Older ]

```
from sagemaker.pytorch import PyTorchModel

# Create SageMaker model and deploy an endpoint
sm_pytorch_compiled_model = PyTorchModel(
    model_data='insert S3 path of compiled PyTorch model archive',
    role='AmazonSageMaker-ExecutionRole',
    entry_point='inference.py',
    source_dir='code',
    framework_version='1.4.0',
    py_version='py3',
    image_uri='insert appropriate ECR Image URI for PyTorch',
    env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'},
)

# Replace the example instance_type below to your preferred instance_type
predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge')

# Print the name of newly created endpoint
print(predictor.endpoint_name)
```

------
#### [ PyTorch 1.5 and Newer ]

```
from sagemaker.pytorch import PyTorchModel

# Create SageMaker model and deploy an endpoint
sm_pytorch_compiled_model = PyTorchModel(
    model_data='insert S3 path of compiled PyTorch model archive',
    role='AmazonSageMaker-ExecutionRole',
    entry_point='inference.py',
    source_dir='code',
    framework_version='1.5',
    py_version='py3',
    image_uri='insert appropriate ECR Image URI for PyTorch',
)

# Replace the example instance_type below to your preferred instance_type
predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge')

# Print the name of newly created endpoint
print(predictor.endpoint_name)
```

------

**catatan**  
`AmazonS3ReadOnlyAccess`Kebijakan `AmazonSageMakerFullAccess` dan kebijakan harus dilampirkan pada peran `AmazonSageMaker-ExecutionRole` IAM. 

## Jika Anda mengkompilasi model Anda menggunakan Boto3, SageMaker konsol, atau CLI untuk TensorFlow
<a name="neo-deployment-hosting-services-sdk-deploy-sm-boto3-tensorflow"></a>

Buat `TensorFlowModel` objek, lalu panggil deploy: 

```
role='AmazonSageMaker-ExecutionRole'
model_path='S3 path for model file'
framework_image='inference container arn'
tf_model = TensorFlowModel(model_data=model_path,
                framework_version='1.15.3',
                role=role, 
                image_uri=framework_image)
instance_type='ml.c5.xlarge'
predictor = tf_model.deploy(instance_type=instance_type,
                    initial_instance_count=1)
```

Lihat [Menerapkan langsung dari artefak model untuk informasi](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#deploying-directly-from-model-artifacts) selengkapnya. 

Anda dapat memilih gambar Docker Amazon ECR URI yang memenuhi kebutuhan Anda dari daftar [ini](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html). 

Untuk informasi selengkapnya tentang cara membuat `TensorFlowModel` objek, lihat [SageMaker SDK](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-serving-model). 

**catatan**  
Permintaan inferensi pertama Anda mungkin memiliki latensi tinggi jika Anda menerapkan model Anda pada GPU. Ini karena kernel komputasi yang dioptimalkan dibuat pada permintaan inferensi pertama. Kami menyarankan Anda membuat file pemanasan permintaan inferensi dan menyimpannya di samping file model Anda sebelum mengirimkannya ke TFX. Ini dikenal sebagai “pemanasan” model. 

[Cuplikan kode berikut menunjukkan cara menghasilkan file pemanasan untuk contoh klasifikasi gambar di bagian prasyarat:](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) 

```
import tensorflow as tf
from tensorflow_serving.apis import classification_pb2
from tensorflow_serving.apis import inference_pb2
from tensorflow_serving.apis import model_pb2
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_log_pb2
from tensorflow_serving.apis import regression_pb2
import numpy as np

with tf.python_io.TFRecordWriter("tf_serving_warmup_requests") as writer:       
    img = np.random.uniform(0, 1, size=[224, 224, 3]).astype(np.float32)
    img = np.expand_dims(img, axis=0)
    test_data = np.repeat(img, 1, axis=0)
    request = predict_pb2.PredictRequest()
    request.model_spec.name = 'compiled_models'
    request.model_spec.signature_name = 'serving_default'
    request.inputs['Placeholder:0'].CopyFrom(tf.compat.v1.make_tensor_proto(test_data, shape=test_data.shape, dtype=tf.float32))
    log = prediction_log_pb2.PredictionLog(
    predict_log=prediction_log_pb2.PredictLog(request=request))
    writer.write(log.SerializeToString())
```

Untuk informasi lebih lanjut tentang cara “menghangatkan” model Anda, lihat [halaman TensorFlow TFX](https://www.tensorflow.org/tfx/serving/saved_model_warmup).

# Menyebarkan Model Kompilasi Menggunakan Boto3
<a name="neo-deployment-hosting-services-boto3"></a>

Anda harus memenuhi bagian [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) jika model dikompilasi menggunakan AWS SDK untuk Python (Boto3),, AWS CLI atau konsol Amazon AI. SageMaker Ikuti langkah-langkah di bawah ini untuk membuat dan menerapkan model yang SageMaker dikompilasi NEO menggunakan [Amazon Web Services SDK for Python (Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)). 

**Topics**
+ [Menyebarkan Model](#neo-deployment-hosting-services-boto3-steps)

## Menyebarkan Model
<a name="neo-deployment-hosting-services-boto3-steps"></a>

Setelah Anda memenuhi [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites), gunakan,, dan`create_model`. `create_enpoint_config` `create_endpoint` APIs 

Contoh berikut menunjukkan cara menggunakan ini APIs untuk menyebarkan model yang dikompilasi dengan Neo: 

```
import boto3
client = boto3.client('sagemaker')

# create sagemaker model
create_model_api_response = client.create_model(
                                    ModelName='my-sagemaker-model',
                                    PrimaryContainer={
                                        'Image': <insert the ECR Image URI>,
                                        'ModelDataUrl': 's3://path/to/model/artifact/model.tar.gz',
                                        'Environment': {}
                                    },
                                    ExecutionRoleArn='ARN for AmazonSageMaker-ExecutionRole'
                            )

print ("create_model API response", create_model_api_response)

# create sagemaker endpoint config
create_endpoint_config_api_response = client.create_endpoint_config(
                                            EndpointConfigName='sagemaker-neomxnet-endpoint-configuration',
                                            ProductionVariants=[
                                                {
                                                    'VariantName': <provide your variant name>,
                                                    'ModelName': 'my-sagemaker-model',
                                                    'InitialInstanceCount': 1,
                                                    'InstanceType': <provide your instance type here>
                                                },
                                            ]
                                       )

print ("create_endpoint_config API response", create_endpoint_config_api_response)

# create sagemaker endpoint
create_endpoint_api_response = client.create_endpoint(
                                    EndpointName='provide your endpoint name',
                                    EndpointConfigName=<insert your endpoint config name>,
                                )

print ("create_endpoint API response", create_endpoint_api_response)
```

**catatan**  
`AmazonS3ReadOnlyAccess`Kebijakan `AmazonSageMakerFullAccess` dan kebijakan harus dilampirkan pada peran `AmazonSageMaker-ExecutionRole` IAM. 

Untuk sintaks lengkap`create_model`,`create_endpoint_config`, dan `create_endpoint` APIs, lihat [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), [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config), 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), masing-masing. 

Jika Anda tidak melatih model Anda menggunakan SageMaker AI, tentukan variabel lingkungan berikut: 

------
#### [ MXNet and PyTorch ]

```
"Environment": {
    "SAGEMAKER_PROGRAM": "inference.py",
    "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code",
    "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
    "SAGEMAKER_REGION": "insert your region",
    "MMS_DEFAULT_RESPONSE_TIMEOUT": "500"
}
```

------
#### [ TensorFlow ]

```
"Environment": {
    "SAGEMAKER_PROGRAM": "inference.py",
    "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code",
    "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
    "SAGEMAKER_REGION": "insert your region"
}
```

------

 Jika Anda melatih model menggunakan SageMaker AI, tentukan variabel lingkungan `SAGEMAKER_SUBMIT_DIRECTORY` sebagai URI bucket Amazon S3 lengkap yang berisi skrip pelatihan. 

# Menerapkan Model Kompilasi Menggunakan AWS CLI
<a name="neo-deployment-hosting-services-cli"></a>

Anda harus memenuhi bagian [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) jika model dikompilasi menggunakan AWS SDK untuk Python (Boto3),, AWS CLI atau konsol Amazon AI. SageMaker Ikuti langkah-langkah di bawah ini untuk membuat dan menerapkan model yang SageMaker dikompilasi NEO menggunakan. [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/) 

**Topics**
+ [Menyebarkan Model](#neo-deploy-cli)

## Menyebarkan Model
<a name="neo-deploy-cli"></a>

Setelah Anda memenuhi [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites), gunakan,, dan perintah`create-model`. `create-enpoint-config` `create-endpoint` AWS CLI Langkah-langkah berikut menjelaskan cara menggunakan perintah ini untuk menyebarkan model yang dikompilasi dengan Neo: 



### Buat Model
<a name="neo-deployment-hosting-services-cli-create-model"></a>

Dari [Neo Inference Container Images](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html), pilih URI gambar inferensi dan kemudian gunakan `create-model` API untuk membuat model SageMaker AI. Anda dapat melakukan ini dengan dua langkah: 

1. Buat `create_model.json` file. Di dalam file, tentukan nama model, URI gambar, jalur ke `model.tar.gz` file di bucket Amazon S3, dan peran eksekusi SageMaker AI Anda: 

   ```
   {
       "ModelName": "insert model name",
       "PrimaryContainer": {
           "Image": "insert the ECR Image URI",
           "ModelDataUrl": "insert S3 archive URL",
           "Environment": {"See details below"}
       },
       "ExecutionRoleArn": "ARN for AmazonSageMaker-ExecutionRole"
   }
   ```

   Jika Anda melatih model Anda menggunakan SageMaker AI, tentukan variabel lingkungan berikut: 

   ```
   "Environment": {
       "SAGEMAKER_SUBMIT_DIRECTORY" : "[Full S3 path for *.tar.gz file containing the training script]"
   }
   ```

   Jika Anda tidak melatih model Anda menggunakan SageMaker AI, tentukan variabel lingkungan berikut: 

------
#### [ MXNet and PyTorch ]

   ```
   "Environment": {
       "SAGEMAKER_PROGRAM": "inference.py",
       "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code",
       "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
       "SAGEMAKER_REGION": "insert your region",
       "MMS_DEFAULT_RESPONSE_TIMEOUT": "500"
   }
   ```

------
#### [ TensorFlow ]

   ```
   "Environment": {
       "SAGEMAKER_PROGRAM": "inference.py",
       "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code",
       "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
       "SAGEMAKER_REGION": "insert your region"
   }
   ```

------
**catatan**  
`AmazonS3ReadOnlyAccess`Kebijakan `AmazonSageMakerFullAccess` dan kebijakan harus dilampirkan pada peran `AmazonSageMaker-ExecutionRole` IAM. 

1. Jalankan perintah berikut:

   ```
   aws sagemaker create-model --cli-input-json file://create_model.json
   ```

   Untuk sintaks lengkap `create-model` API, lihat [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-model.html). 

### Buat Konfigurasi Endpoint
<a name="neo-deployment-hosting-services-cli-create-endpoint-config"></a>

Setelah membuat model SageMaker AI, buat konfigurasi titik akhir menggunakan `create-endpoint-config` API. Untuk melakukan ini, buat file JSON dengan spesifikasi konfigurasi titik akhir Anda. Misalnya, Anda dapat menggunakan template kode berikut dan menyimpannya sebagai`create_config.json`: 

```
{
    "EndpointConfigName": "<provide your endpoint config name>",
    "ProductionVariants": [
        {
            "VariantName": "<provide your variant name>",
            "ModelName": "my-sagemaker-model",
            "InitialInstanceCount": 1,
            "InstanceType": "<provide your instance type here>",
            "InitialVariantWeight": 1.0
        }
    ]
}
```

Sekarang jalankan AWS CLI perintah berikut untuk membuat konfigurasi endpoint Anda: 

```
aws sagemaker create-endpoint-config --cli-input-json file://create_config.json
```

Untuk sintaks lengkap `create-endpoint-config` API, lihat [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). 

### Buat Endpoint
<a name="neo-deployment-hosting-services-cli-create-endpoint"></a>

Setelah Anda membuat konfigurasi titik akhir, buat titik akhir menggunakan API: `create-endpoint` 

```
aws sagemaker create-endpoint --endpoint-name '<provide your endpoint name>' --endpoint-config-name '<insert your endpoint config name>'
```

Untuk sintaks lengkap `create-endpoint` API, lihat [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-endpoint.html). 

# Menerapkan Model Kompilasi Menggunakan Konsol
<a name="neo-deployment-hosting-services-console"></a>

Anda harus memenuhi bagian [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites) jika model dikompilasi menggunakan AWS SDK untuk Python (Boto3), konsol, AWS CLI atau Amazon AI. SageMaker [Ikuti langkah-langkah di bawah ini untuk membuat dan menerapkan model yang dikompilasi SageMaker AI Neo menggunakan konsol SageMaker https://console.aws.amazon.com AI/AI. SageMaker ](https://console.aws.amazon.com/sagemaker/)

**Topics**
+ [Menyebarkan Model](#deploy-the-model-console-steps)

## Menyebarkan Model
<a name="deploy-the-model-console-steps"></a>

 Setelah Anda memenuhi [prasyarat](https://docs.aws.amazon.com//sagemaker/latest/dg/neo-deployment-hosting-services-prerequisites), gunakan langkah-langkah berikut untuk menerapkan model yang dikompilasi dengan Neo: 

1. Pilih **Model**, lalu pilih **Buat model** dari grup **Inferensi**. Pada halaman **Buat model**, lengkapi **nama Model**, **peran IAM**, dan bidang **VPC** (opsional), jika diperlukan.  
![\[Buat model Neo untuk inferensi\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/create-pipeline-model.png)

1. Untuk menambahkan informasi tentang kontainer yang digunakan untuk menyebarkan model Anda, pilih **Tambahkan kontainer kontainer**, lalu pilih **Berikutnya**. Lengkapi **opsi input Container**, **Lokasi gambar kode inferensi**, dan **Lokasi artefak model**, dan opsional, **nama host kontainer**, dan bidang variabel **Lingkungan**.  
![\[Buat model Neo untuk inferensi\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo-deploy-console-container-definition.png)

1. Untuk menerapkan model yang dikompilasi NEO, pilih yang berikut ini:
   + **Opsi input kontainer**: Pilih **Berikan artefak model dan gambar inferensi**.
   + **Lokasi gambar kode inferensi: Pilih URI gambar** inferensi dari [Neo Inference Container Images](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-deployment-hosting-services-container-images.html), tergantung pada AWS Wilayah dan jenis aplikasi. 
   + **Lokasi artefak model**: Masukkan URI bucket Amazon S3 dari artefak model terkompilasi yang dihasilkan oleh API kompilasi Neo.
   + **Variabel lingkungan**:
     + Biarkan bidang ini kosong untuk **SageMaker XGBoost**.
     + Jika Anda melatih model menggunakan SageMaker AI, tentukan variabel lingkungan `SAGEMAKER_SUBMIT_DIRECTORY` sebagai URI bucket Amazon S3 yang berisi skrip pelatihan. 
     + Jika Anda tidak melatih model Anda menggunakan SageMaker AI, tentukan variabel lingkungan berikut:     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/neo-deployment-hosting-services-console.html)

1. Konfirmasikan bahwa informasi untuk kontainer akurat, lalu pilih **Buat model**. Pada **halaman landing Create model**, pilih **Create endpoint**.   
![\[Buat halaman arahan Model\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo-deploy-console-create-model-land-page.png)

1. Di **Buat dan konfigurasikan diagram titik akhir**, tentukan nama **Endpoint**. Untuk **konfigurasi Attach endpoint**, pilih **Create a new endpoint** configuration.  
![\[Konsol Neo membuat dan mengonfigurasi UI titik akhir.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo-deploy-console-config-endpoint.png)

1. Di halaman **konfigurasi titik akhir baru**, tentukan nama **konfigurasi Endpoint**.   
![\[UI konfigurasi titik akhir baru konsol Neo.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo-deploy-console-new-endpoint-config.png)

1. Pilih **Edit** di samping nama model dan tentukan **jenis Instance** yang benar pada halaman **Edit Production Variant**. Sangat penting bahwa nilai **tipe Instance** cocok dengan yang ditentukan dalam pekerjaan kompilasi Anda.  
![\[UI konfigurasi titik akhir baru konsol Neo.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/neo-deploy-console-edit-production-variant.png)

1. Pilih **Simpan**.

1. Pada halaman **konfigurasi titik akhir baru**, pilih **Buat konfigurasi titik akhir**, lalu pilih **Buat** titik akhir. 

# Permintaan Inferensi Dengan Layanan yang Diterapkan
<a name="neo-requests"></a>

Jika Anda telah mengikuti instruksi[Menyebarkan Model](neo-deployment-hosting-services.md), Anda harus menyiapkan dan menjalankan titik akhir SageMaker AI. Terlepas dari bagaimana Anda menerapkan model yang dikompilasi NEO, ada tiga cara Anda dapat mengirimkan permintaan inferensi: 

**Topics**
+ [Meminta Inferensi dari Layanan yang Diterapkan (Amazon SageMaker SDK)](neo-requests-sdk.md)
+ [Minta Inferensi dari Layanan yang Diterapkan (Boto3)](neo-requests-boto3.md)
+ [Minta Inferensi dari Layanan yang Diterapkan (CLI AWS )](neo-requests-cli.md)

# Meminta Inferensi dari Layanan yang Diterapkan (Amazon SageMaker SDK)
<a name="neo-requests-sdk"></a>

Gunakan contoh kode berikut untuk meminta kesimpulan dari layanan yang Anda gunakan berdasarkan kerangka kerja yang Anda gunakan untuk melatih model Anda. Contoh kode untuk kerangka kerja yang berbeda serupa. Perbedaan utama adalah bahwa TensorFlow membutuhkan `application/json` sebagai jenis konten. 

 

## PyTorch dan MXNet
<a name="neo-requests-sdk-py-mxnet"></a>

 Jika Anda menggunakan **PyTorch v1.4 atau versi lebih baru** atau **MXNet 1.7.0 atau yang lebih baru** dan Anda memiliki titik akhir Amazon SageMaker AI`InService`, Anda dapat membuat permintaan inferensi menggunakan `predictor` paket AI SageMaker SDK untuk Python. 

**catatan**  
API bervariasi berdasarkan SageMaker AI SDK untuk versi Python:  
Untuk versi 1.x, gunakan [https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor](https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor)dan [https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor.predict](https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor.predict)API.
Untuk versi 2.x, gunakan [https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor)dan [https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict)API.

Contoh kode berikut menunjukkan cara menggunakan ini APIs untuk mengirim gambar untuk inferensi: 

------
#### [ SageMaker Python SDK v1.x ]

```
from sagemaker.predictor import RealTimePredictor

endpoint = 'insert name of your endpoint here'

# Read image into memory
payload = None
with open("image.jpg", 'rb') as f:
    payload = f.read()

predictor = RealTimePredictor(endpoint=endpoint, content_type='application/x-image')
inference_response = predictor.predict(data=payload)
print (inference_response)
```

------
#### [ SageMaker Python SDK v2.x ]

```
from sagemaker.predictor import Predictor

endpoint = 'insert name of your endpoint here'

# Read image into memory
payload = None
with open("image.jpg", 'rb') as f:
    payload = f.read()
    
predictor = Predictor(endpoint)
inference_response = predictor.predict(data=payload)
print (inference_response)
```

------

## TensorFlow
<a name="neo-requests-sdk-py-tf"></a>

Contoh kode berikut menunjukkan cara menggunakan SageMaker Python SDK API untuk mengirim gambar untuk inferensi: 

```
from sagemaker.predictor import Predictor
from PIL import Image
import numpy as np
import json

endpoint = 'insert the name of your endpoint here'

# Read image into memory
image = Image.open(input_file)
batch_size = 1
image = np.asarray(image.resize((224, 224)))
image = image / 128 - 1
image = np.concatenate([image[np.newaxis, :, :]] * batch_size)
body = json.dumps({"instances": image.tolist()})
    
predictor = Predictor(endpoint)
inference_response = predictor.predict(data=body)
print(inference_response)
```

# Minta Inferensi dari Layanan yang Diterapkan (Boto3)
<a name="neo-requests-boto3"></a>

 Anda dapat mengirimkan permintaan inferensi menggunakan SageMaker AI SDK for Python (Boto3) klien dan API setelah Anda memiliki titik [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)akhir AI. SageMaker `InService` Contoh kode berikut menunjukkan cara mengirim gambar untuk inferensi: 

------
#### [ PyTorch and MXNet ]

```
import boto3

import json
 
endpoint = 'insert name of your endpoint here'
 
runtime = boto3.Session().client('sagemaker-runtime')
 
# Read image into memory
with open(image, 'rb') as f:
    payload = f.read()
# Send image via InvokeEndpoint API
response = runtime.invoke_endpoint(EndpointName=endpoint, ContentType='application/x-image', Body=payload)

# Unpack response
result = json.loads(response['Body'].read().decode())
```

------
#### [ TensorFlow ]

Untuk TensorFlow mengirimkan masukan dengan `application/json` untuk jenis konten. 

```
from PIL import Image
import numpy as np
import json
import boto3

client = boto3.client('sagemaker-runtime') 
input_file = 'path/to/image'
image = Image.open(input_file)
batch_size = 1
image = np.asarray(image.resize((224, 224)))
image = image / 128 - 1
image = np.concatenate([image[np.newaxis, :, :]] * batch_size)
body = json.dumps({"instances": image.tolist()})
ioc_predictor_endpoint_name = 'insert name of your endpoint here'
content_type = 'application/json'   
ioc_response = client.invoke_endpoint(
    EndpointName=ioc_predictor_endpoint_name,
    Body=body,
    ContentType=content_type
 )
```

------
#### [ XGBoost ]

 Untuk XGBoost aplikasi, Anda harus mengirimkan teks CSV sebagai gantinya: 

```
import boto3
import json
 
endpoint = 'insert your endpoint name here'
 
runtime = boto3.Session().client('sagemaker-runtime')
 
csv_text = '1,-1.0,1.0,1.5,2.6'
# Send CSV text via InvokeEndpoint API
response = runtime.invoke_endpoint(EndpointName=endpoint, ContentType='text/csv', Body=csv_text)
# Unpack response
result = json.loads(response['Body'].read().decode())
```

------

 Perhatikan bahwa BYOM memungkinkan untuk jenis konten kustom. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html). 

# Minta Inferensi dari Layanan yang Diterapkan (CLI AWS )
<a name="neo-requests-cli"></a>

Permintaan inferensi dapat dibuat dengan [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)setelah Anda memiliki titik akhir `InService` Amazon SageMaker AI. Anda dapat membuat permintaan inferensi dengan AWS Command Line Interface (AWS CLI). Contoh berikut menunjukkan cara mengirim gambar untuk inferensi: 

```
aws sagemaker-runtime invoke-endpoint --endpoint-name 'insert name of your endpoint here' --body fileb://image.jpg --content-type=application/x-image output_file.txt
```

Informasi `output_file.txt` dengan tentang permintaan inferensi Anda dibuat jika inferensi berhasil. 

 Untuk TensorFlow kirimkan masukan dengan `application/json` sebagai jenis konten. 

```
aws sagemaker-runtime invoke-endpoint --endpoint-name 'insert name of your endpoint here' --body fileb://input.json --content-type=application/json output_file.txt
```

# Gambar Kontainer Inferensi
<a name="neo-deployment-hosting-services-container-images"></a>

SageMaker Neo sekarang menyediakan informasi URI gambar inferensi untuk `ml_*` target. Untuk mengetahui informasi selengkapnya, lihat [DescribeCompilationJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCompilationJob.html#sagemaker-DescribeCompilationJob-response-InferenceImage).

Berdasarkan kasus penggunaan Anda, ganti bagian yang disorot dalam template URI gambar inferensi yang disediakan di bawah ini dengan nilai yang sesuai. 

## Amazon SageMaker AI XGBoost
<a name="inference-container-collapse-xgboost"></a>

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/xgboost-neo:latest
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan.

## Keras
<a name="inference-container-collapse-keras"></a>

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-neo-keras:fx_version-instance_type-py3
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan.

Ganti *fx\$1version* dengan`2.2.4`.

Ganti *instance\$1type* dengan salah satu `cpu` atau`gpu`.

## MXNet
<a name="inference-container-collapse-mxnet"></a>

------
#### [ CPU or GPU instance types ]

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-inference-mxnet:fx_version-instance_type-py3
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan. 

Ganti *fx\$1version* dengan`1.8.0`. 

Ganti *instance\$1type* dengan salah satu `cpu` atau`gpu`. 

------
#### [ Inferentia1 ]

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-neo-mxnet:fx_version-instance_type-py3
```

Ganti *aws\$1region* dengan salah satu `us-east-1` atau`us-west-2`. 

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan. 

Ganti *fx\$1version* dengan`1.5.1`. 

Ganti *`instance_type`* dengan`inf`.

------

## ONNX
<a name="inference-container-collapse-onnx"></a>

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-neo-onnx:fx_version-instance_type-py3
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan.

Ganti *fx\$1version* dengan`1.5.0`.

Ganti *instance\$1type* dengan salah satu `cpu` atau`gpu`.

## PyTorch
<a name="inference-container-collapse-pytorch"></a>

------
#### [ CPU or GPU instance types ]

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-inference-pytorch:fx_version-instance_type-py3
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan. 

Ganti *fx\$1version* dengan `1.4``1.5`,`1.6`,`1.7`,,`1.8`,`1.12`,`1.13`, atau`2.0`.

Ganti *instance\$1type* dengan salah satu `cpu` atau`gpu`. 

------
#### [ Inferentia1 ]

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-neo-pytorch:fx_version-instance_type-py3
```

Ganti *aws\$1region* dengan salah satu `us-east-1` atau`us-west-2`. 

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan. 

Ganti *fx\$1version* dengan`1.5.1`. 

Ganti *`instance_type`* dengan`inf`.

------
#### [ Inferentia2 and Trainium1 ]

```
763104351884.dkr.ecr.aws_region.amazonaws.com/pytorch-inference-neuronx:1.13.1-neuronx-py38-sdk2.10.0-ubuntu20.04
```

Ganti *aws\$1region* dengan `us-east-2` untuk Inferentia2, dan `us-east-1` untuk Trainium1.

------

## TensorFlow
<a name="inference-container-collapse-tf"></a>

------
#### [ CPU or GPU instance types ]

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-inference-tensorflow:fx_version-instance_type-py3
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan. 

Ganti *fx\$1version* dengan `1.15.3` atau`2.9`. 

Ganti *instance\$1type* dengan salah satu `cpu` atau`gpu`. 

------
#### [ Inferentia1 ]

```
aws_account_id.dkr.ecr.aws_region.amazonaws.com/sagemaker-neo-tensorflow:fx_version-instance_type-py3
```

Ganti *aws\$1account\$1id* dari tabel di akhir halaman ini berdasarkan yang *aws\$1region* Anda gunakan. Perhatikan bahwa misalnya ketik `inf` saja `us-east-1` dan `us-west-2` didukung.

Ganti *fx\$1version* dengan `1.15.0`

Ganti *instance\$1type* dengan`inf`.

------
#### [ Inferentia2 and Trainium1 ]

```
763104351884.dkr.ecr.aws_region.amazonaws.com/tensorflow-inference-neuronx:2.10.1-neuronx-py38-sdk2.10.0-ubuntu20.04
```

Ganti *aws\$1region* dengan `us-east-2` untuk Inferentia2, dan `us-east-1` untuk Trainium1.

------

Peta tabel berikut *aws\$1account\$1id* dengan*aws\$1region*. Gunakan tabel ini untuk menemukan URI gambar inferensi yang benar yang Anda butuhkan untuk aplikasi Anda. 


| aws\$1account\$1id | aws\$1region | 
| --- | --- | 
| 785573368785 | us-east-1 | 
| 007439368137 | us-east-2 | 
| 710691900526 | us-west-1 | 
| 301217895009 | us-west-2 | 
| 802834080501 | eu-west-1 | 
| 205493899709 | eu-west-2 | 
| 254080097072 | eu-west-3 | 
| 601324751636 | eu-north-1 | 
| 966458181534 | eu-south-1 | 
| 746233611703 | eu-central-1 | 
| 110948597952 | ap-east-1 | 
| 763008648453 | ap-south-1 | 
| 941853720454 | ap-northeast-1 | 
| 151534178276 | ap-northeast-2 | 
| 925152966179 | ap-northeast-3 | 
| 324986816169 | ap-southeast-1 | 
| 355873309152 | ap-southeast-2 | 
| 474822919863 | cn-northwest-1 | 
| 472730292857 | cn-north-1 | 
| 756306329178 | sa-east-1 | 
| 464438896020 | ca-central-1 | 
| 836785723513 | me-south-1 | 
| 774647643957 | af-south-1 | 
| 275950707576 | il-central-1 | 

# Perangkat Edge
<a name="neo-edge-devices"></a>

Amazon SageMaker Neo menyediakan dukungan kompilasi untuk kerangka kerja pembelajaran mesin yang populer. Anda dapat menggunakan perangkat edge yang dikompilasi NEO seperti Raspberry Pi 3, Sitara Texas Instruments, Jetson, dan banyak lagi. TX1 Untuk daftar lengkap kerangka kerja dan perangkat edge yang didukung, lihat [Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html). 

Anda harus mengkonfigurasi perangkat edge Anda sehingga dapat menggunakan AWS layanan. Salah satu cara untuk melakukannya adalah dengan menginstal DLR dan Boto3 ke perangkat Anda. Untuk melakukan ini, Anda harus mengatur kredensi otentikasi. Lihat [AWS Konfigurasi Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) untuk informasi selengkapnya. Setelah model Anda dikompilasi dan perangkat edge Anda dikonfigurasi, Anda dapat mengunduh model dari Amazon S3 ke perangkat edge Anda. Dari sana, Anda dapat menggunakan [Deep Learning Runtime (DLR)](https://neo-ai-dlr.readthedocs.io/en/latest/index.html) untuk membaca model yang dikompilasi dan membuat kesimpulan. 

Untuk pengguna pertama kali, kami sarankan Anda memeriksa panduan [Memulai](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html). Panduan ini memandu Anda melalui cara mengatur kredensil Anda, mengkompilasi model, menyebarkan model Anda ke Raspberry Pi 3, dan membuat kesimpulan pada gambar. 

**Topics**
+ [Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](neo-supported-devices-edge.md)
+ [Menyebarkan Model](neo-deployment-edge.md)
+ [Mengatur Neo di Perangkat Edge](neo-getting-started-edge.md)

# Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung
<a name="neo-supported-devices-edge"></a>

Amazon SageMaker Neo mendukung kerangka kerja pembelajaran mesin umum, perangkat edge, sistem operasi, dan arsitektur chip. Cari tahu apakah Neo mendukung kerangka kerja, perangkat tepi, OS, dan arsitektur chip Anda dengan memilih salah satu topik di bawah ini.

Anda dapat menemukan daftar model yang telah diuji oleh Tim Amazon SageMaker Neo di [Model yang Diuji](neo-supported-edge-tested-models.md) bagian tersebut.

**catatan**  
Perangkat Ambarella memerlukan file tambahan untuk dimasukkan dalam file TAR terkompresi sebelum dikirim untuk kompilasi. Untuk informasi selengkapnya, lihat [Memecahkan Masalah Kesalahan Ambarella](neo-troubleshooting-target-devices-ambarella.md).
TIM-VX (libtim-vx.so) diperlukan untuk i.MX 8M Plus. [Untuk informasi tentang cara membangun TIM-VX, lihat repositori TIM-VX. GitHub ](https://github.com/VeriSilicon/TIM-VX)

**Topics**
+ [Kerangka Kerja yang Didukung](neo-supported-devices-edge-frameworks.md)
+ [Perangkat, Arsitektur Chip, dan Sistem yang Didukung](neo-supported-devices-edge-devices.md)
+ [Model yang Diuji](neo-supported-edge-tested-models.md)

# Kerangka Kerja yang Didukung
<a name="neo-supported-devices-edge-frameworks"></a>

Amazon SageMaker Neo mendukung kerangka kerja berikut. 


| Kerangka Kerja | Versi Kerangka | Versi Model | Model | Format Model (dikemas dalam\$1.tar.gz) | Toolkit | 
| --- | --- | --- | --- | --- | --- | 
| MXNet | 1.8 | Mendukung 1,8 atau sebelumnya | Klasifikasi Gambar, Deteksi Objek, Segmentasi Semantik, Estimasi Pose, Pengenalan Aktivitas | Satu file simbol (.json) dan satu file parameter (.params) | GluonCV v0.8.0 | 
| ONNX | 1.7 | Mendukung 1.7 atau sebelumnya | Klasifikasi Gambar, SVM | Satu file model (.onnx) |  | 
| Keras | 2.2 | Mendukung 2.2 atau sebelumnya | Klasifikasi Gambar | Satu file definisi model (.h5) |  | 
| PyTorch | 1.7, 1.8 | Mendukung 1.7, 1.8 atau sebelumnya | Klasifikasi Gambar, Deteksi Objek | Satu file definisi model (.pth) |  | 
| TensorFlow | 1.15, 2.4, 2.5 (hanya untuk instance ml.inf1.\$1) | Mendukung 1.15, 2.4, 2.5 (hanya untuk instance ml.inf1.\$1) atau sebelumnya | Klasifikasi Gambar, Deteksi Objek | \$1Untuk model yang disimpan, satu file.pb atau satu file.pbtxt dan direktori variabel yang berisi variabel\$1Untuk model beku, hanya satu file.pb atau .pbtxt |  | 
| TensorFlow-Ringan | 1.15 | Mendukung 1,15 atau sebelumnya | Klasifikasi Gambar, Deteksi Objek | File flatbuffer definisi satu model (.tflite) |  | 
| XGBoost | 1.3 | Mendukung 1.3 atau sebelumnya | Pohon Keputusan | Satu file XGBoost model (.model) di mana jumlah node dalam pohon kurang dari 2 ^ 31 |  | 
| DARKNET |  |  | Klasifikasi Gambar, Deteksi Objek (model Yolo tidak didukung) | Satu file konfigurasi (.cfg) dan satu file bobot (.weights) |  | 

# Perangkat, Arsitektur Chip, dan Sistem yang Didukung
<a name="neo-supported-devices-edge-devices"></a>

Amazon SageMaker Neo mendukung perangkat, arsitektur chip, dan sistem operasi berikut.

## Perangkat
<a name="neo-supported-edge-devices"></a>

Anda dapat memilih perangkat menggunakan daftar tarik-turun di [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker) atau dengan menentukan `TargetDevice` konfigurasi output API. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html)

Anda dapat memilih dari salah satu perangkat edge berikut: 


| Daftar Perangkat | Sistem pada Chip (SoC) | Sistem Operasi | Arsitektur | Akselerator | Contoh Opsi Kompiler | 
| --- | --- | --- | --- | --- | --- | 
| lorong | Tidak ada | Linux | ARM64 | Mali | Tidak ada | 
| amba\$1cv2 | CV2 | Arch Linux | ARM64 | cvflow | Tidak ada | 
| amba\$1cv22 | CV22 | Arch Linux | ARM64 | cvflow | Tidak ada | 
| amba\$1cv25 | CV25 | Arch Linux | ARM64 | cvflow | Tidak ada | 
| corel | Tidak ada | iOS, macOS | Tidak ada | Tidak ada | \$1"class\$1labels": "imagenet\$1labels\$11000.txt"\$1 | 
| imx8qm | NXP imx8 | Linux | ARM64 | Tidak ada | Tidak ada | 
| imx8mplus | i.MX 8M Plus | Linux | ARM64 | NPU | Tidak ada | 
| jacinto\$1tda4vm | TDA4VM | Linux | LENGAN | TDA4VM | Tidak ada | 
| jetson\$1nano | Tidak ada | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$153', 'trt-ver': '5.0.6', 'cuda-ver': '10.0'\$1Untuk`TensorFlow2`, `{'JETPACK_VERSION': '4.6', 'gpu_code': 'sm_72'}` | 
| jetson\$1tx1 | Tidak ada | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$153', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'\$1 | 
| jetson\$1tx2 | Tidak ada | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$162', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'\$1 | 
| jetson\$1xavier | Tidak ada | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$172', 'trt-ver': '5.1.6', 'cuda-ver': '10.0'\$1 | 
| qcs605 | Tidak ada | Android | ARM64 | Mali | \$1'ANDROID\$1PLATFORM': 27\$1 | 
| qcs603 | Tidak ada | Android | ARM64 | Mali | \$1'ANDROID\$1PLATFORM': 27\$1 | 
| rasp3b | LENGAN A56 | Linux | ARM\$1EABIHF | Tidak ada | \$1'mattr': ['\$1neon']\$1 | 
| rasp4b | LENGAN A72 | Tidak ada | Tidak ada | Tidak ada | Tidak ada | 
| rk3288 | Tidak ada | Linux | ARM\$1EABIHF | Mali | Tidak ada | 
| rk3399 | Tidak ada | Linux | ARM64 | Mali | Tidak ada | 
| sbe\$1c | Tidak ada | Linux | x86\$164 | Tidak ada | \$1'mcpu': 'core-avx2'\$1 | 
| sitara\$1am57x | AM57X | Linux | ARM64 | EVE dan/atau C66x DSP | Tidak ada | 
| x86\$1win32 | Tidak ada | Windows 10 | X86\$132 | Tidak ada | Tidak ada | 
| x86\$1win64 | Tidak ada | Windows 10 | X86\$132 | Tidak ada | Tidak ada | 

[Untuk informasi selengkapnya tentang opsi kompiler nilai kunci JSON untuk setiap perangkat target, lihat `CompilerOptions` bidang dalam tipe data API. `OutputConfig`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html)

## Sistem dan Arsitektur Chip
<a name="neo-supported-edge-granular"></a>

Tabel pencarian berikut memberikan informasi mengenai sistem operasi dan arsitektur yang tersedia untuk pekerjaan kompilasi model Neo. 

------
#### [ Linux ]


| Akselerator | X86\$164 | X86 | ARM64 | ARM\$1EABIHF | ARM\$1EABI | 
| --- | --- | --- | --- | --- | --- | 
| Tidak ada akselerator (CPU) | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | 
| GPU Nvidia | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | 
| Intel\$1Grafis | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | 
| ARM Mali | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | 

------
#### [ Android ]


| Akselerator | X86\$164 | X86 | ARM64 | ARM\$1EABIHF | ARM\$1EABI | 
| --- | --- | --- | --- | --- | --- | 
| Tidak ada akselerator (CPU) | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | 
| GPU Nvidia | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | 
| Intel\$1Grafis | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | 
| ARM Mali | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | 

------
#### [ Windows ]


| Akselerator | X86\$164 | X86 | ARM64 | ARM\$1EABIHF | ARM\$1EABI | 
| --- | --- | --- | --- | --- | --- | 
| Tidak ada akselerator (CPU) | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/success_icon.svg) Ya | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/negative_icon.svg) Tidak | 

------

# Model yang Diuji
<a name="neo-supported-edge-tested-models"></a>

Bagian yang dapat dilipat berikut memberikan informasi tentang model pembelajaran mesin yang diuji oleh tim Amazon SageMaker Neo. Perluas bagian yang dapat dilipat berdasarkan kerangka kerja Anda untuk memeriksa apakah model telah diuji.

**catatan**  
Ini bukan daftar lengkap model yang dapat dikompilasi dengan Neo.

Lihat [Kerangka Kerja yang Didukung](neo-supported-devices-edge-frameworks.md) dan [Operator yang Didukung SageMaker AI Neo](https://aws.amazon.com/releasenotes/sagemaker-neo-supported-frameworks-and-operators/) untuk mengetahui apakah Anda dapat mengkompilasi model Anda dengan SageMaker Neo.

## DarkNet
<a name="collapsible-section-01"></a>


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Alexnet |  |  |  |  |  |  |  |  |  | 
| Resnet50 | X | X |  | X | X | X |  | X | X | 
| YOLOv2 |  |  |  | X | X | X |  | X | X | 
| YOLOv2\$1kecil | X | X |  | X | X | X |  | X | X | 
| YOLOv3\$1416 |  |  |  | X | X | X |  | X | X | 
| YOLOv3\$1kecil | X | X |  | X | X | X |  | X | X | 

## MXNet
<a name="collapsible-section-02"></a>


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Alexnet |  |  | X |  |  |  |  |  |  | 
| Densenet121 |  |  | X |  |  |  |  |  |  | 
| DenseNet201 | X | X | X | X | X | X |  | X | X | 
| GoogLeNet | X | X |  | X | X | X |  | X | X | 
| InceptionV3 |  |  |  | X | X | X |  | X | X | 
| MobileNet0,75 | X | X |  | X | X | X |  |  | X | 
| MobileNet1.0 | X | X | X | X | X | X |  |  | X | 
| MobileNetV2\$10.5 | X | X |  | X | X | X |  |  | X | 
| MobileNetV2\$11.0 | X | X | X | X | X | X | X | X | X | 
| MobileNetV3\$1Besar | X | X | X | X | X | X | X | X | X | 
| MobileNetV3\$1Kecil | X | X | X | X | X | X | X | X | X | 
| ResNeSt50 |  |  |  | X | X |  |  | X | X | 
| ResNet18\$1v1 | X | X | X | X | X | X |  |  | X | 
| ResNet18\$1v2 | X | X |  | X | X | X |  |  | X | 
| ResNet50\$1v1 | X | X | X | X | X | X |  | X | X | 
| ResNet50\$1v2 | X | X | X | X | X | X |  | X | X | 
| ResNext101\$132x4d |  |  |  |  |  |  |  |  |  | 
| ResNext50\$132x4d | X |  | X | X | X |  |  | X | X | 
| SENet\$1154 |  |  |  | X | X | X |  | X | X | 
| SE\$1 50\$132x4d ResNext | X | X |  | X | X | X |  | X | X | 
| SqueezeNet1.0 | X | X | X | X | X | X |  |  | X | 
| SqueezeNet1.1 | X | X | X | X | X | X |  | X | X | 
| VGG11 | X | X | X | X | X |  |  | X | X | 
| Xception | X | X | X | X | X | X |  | X | X | 
| darknet53 | X | X |  | X | X | X |  | X | X | 
| resnet18\$1v1b\$10.89 | X | X |  | X | X | X |  |  | X | 
| resnet50\$1v1d\$10.11 | X | X |  | X | X | X |  |  | X | 
| resnet50\$1v1d\$10.86 | X | X | X | X | X | X |  | X | X | 
| ssd\$1512\$1mobilenet1.0\$1coco | X |  | X | X | X | X |  | X | X | 
| ssd\$1512\$1mobilenet1.0\$1voc | X |  | X | X | X | X |  | X | X | 
| ssd\$1resnet50\$1v1 | X |  | X | X | X |  |  | X | X | 
| yolo3\$1darknet53\$1coco | X |  |  | X | X |  |  | X | X | 
| yolo3\$1mobilenet1.0\$1coco | X | X |  | X | X | X |  | X | X | 
| deeplab\$1resnet50 |  |  | X |  |  |  |  |  |  | 

## Keras
<a name="collapsible-section-03"></a>


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| densenet121 | X | X | X | X | X | X |  | X | X | 
| densenet201 | X | X | X | X | X | X |  |  | X | 
| inception\$1v3 | X | X |  | X | X | X |  | X | X | 
| mobilenet\$1v1 | X | X | X | X | X | X |  | X | X | 
| mobilenet\$1v2 | X | X | X | X | X | X |  | X | X | 
| resnet152\$1v1 |  |  |  | X | X |  |  |  | X | 
| resnet152\$1v2 |  |  |  | X | X |  |  |  | X | 
| resnet50\$1v1 | X | X | X | X | X |  |  | X | X | 
| resnet50\$1v2 | X | X | X | X | X | X |  | X | X | 
| vgg16 |  |  | X | X | X |  |  | X | X | 

## ONNX
<a name="collapsible-section-04"></a>


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| alexnet |  |  | X |  |  |  |  |  |  | 
| mobilenetv2-1.0 | X | X | X | X | X | X |  | X | X | 
| resnet18v1 | X |  |  | X | X |  |  |  | X | 
| resnet18v2 | X |  |  | X | X |  |  |  | X | 
| resnet50v1 | X |  | X | X | X |  |  | X | X | 
| resnet50v2 | X |  | X | X | X |  |  | X | X | 
| resnet152v1 |  |  |  | X | X | X |  |  | X | 
| resnet152v2 |  |  |  | X | X | X |  |  | X | 
| squeezenet1.1 | X |  | X | X | X | X |  | X | X | 
| vgg19 |  |  | X |  |  |  |  |  | X | 

## PyTorch (FP32)
<a name="collapsible-section-05"></a>


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Ambarella CV25 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| densenet121 | X | X | X | X | X | X | X |  | X | X | 
| inception\$1v3 |  | X |  |  | X | X | X |  | X | X | 
| resnet152 |  |  |  |  | X | X | X |  |  | X | 
| resnet18 | X | X |  |  | X | X | X |  |  | X | 
| resnet50 | X | X | X | X | X | X |  |  | X | X | 
| squeezenet1.0 | X | X |  |  | X | X | X |  |  | X | 
| squeezenet1.1 | X | X | X | X | X | X | X |  | X | X | 
| yolov4 |  |  |  |  | X | X |  |  |  |  | 
| yolov5 |  |  |  | X | X | X |  |  |  |  | 
| fasterrcnn\$1resnet50\$1fpn |  |  |  |  | X | X |  |  |  |  | 
| maskrcnn\$1resnet50\$1fpn |  |  |  |  | X | X |  |  |  |  | 

## TensorFlow
<a name="collapsible-section-06"></a>

------
#### [ TensorFlow ]


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Ambarella CV25 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| densenet201 | X | X | X | X | X | X | X |  | X | X | 
| inception\$1v3 | X | X | X |  | X | X | X |  | X | X | 
| mobilenet100\$1v1 | X | X | X |  | X | X | X |  |  | X | 
| mobilenet100\$1v2.0 | X | X | X |  | X | X | X |  | X | X | 
| mobilenet130\$1v2 | X | X |  |  | X | X | X |  |  | X | 
| mobilenet140\$1v2 | X | X | X |  | X | X | X |  | X | X | 
| resnet50\$1v1.5 | X | X |  |  | X | X | X |  | X | X | 
| resnet50\$1v2 | X | X | X | X | X | X | X |  | X | X | 
| meremas | X | X | X | X | X | X | X |  | X | X | 
| topeng\$1rcnn\$1inception\$1resnet\$1v2 |  |  |  |  | X |  |  |  |  |  | 
| ssd\$1mobilenet\$1v2 |  |  |  |  | X | X |  |  |  |  | 
| lebih cepat\$1rcnn\$1resnet50\$1lowproposal |  |  |  |  | X |  |  |  |  |  | 
| rfcn\$1resnet101 |  |  |  |  | X |  |  |  |  |  | 

------
#### [ TensorFlow.Keras ]


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| DenseNet121  | X | X |  | X | X | X |  | X | X | 
| DenseNet201 | X | X |  | X | X | X |  |  | X | 
| InceptionV3 | X | X |  | X | X | X |  | X | X | 
| MobileNet | X | X |  | X | X | X |  | X | X | 
| MobileNetv2 | X | X |  | X | X | X |  | X | X | 
| NASNetBesar |  |  |  | X | X |  |  | X | X | 
| NASNetPonsel | X | X |  | X | X | X |  | X | X | 
| ResNet101 |  |  |  | X | X | X |  |  | X | 
| ResNet101V2 |  |  |  | X | X | X |  |  | X | 
| ResNet152 |  |  |  | X | X |  |  |  | X | 
| ResNet152v2 |  |  |  | X | X |  |  |  | X | 
| ResNet50 | X | X |  | X | X |  |  | X | X | 
| ResNet50V2 | X | X |  | X | X | X |  | X | X | 
| VGG16 |  |  |  | X | X |  |  | X | X | 
| Xception | X | X |  | X | X | X |  | X | X | 

------

## TensorFlow-Ringan
<a name="collapsible-section-07"></a>

------
#### [ TensorFlow-Lite (FP32) ]


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | i.MX 8M Plus | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| densenet\$12018\$104\$127 | X |  |  | X | X | X |  |  | X |  | 
| inception\$1resnet\$1v2\$12018\$104\$127 |  |  |  | X | X | X |  |  | X |  | 
| inception\$1v3\$12018\$104\$127 |  |  |  | X | X | X |  |  | X | X | 
| inception\$1v4\$12018\$104\$127 |  |  |  | X | X | X |  |  | X | X | 
| mnasnet\$10.5\$1224\$109\$107\$12018 | X |  |  | X | X | X |  |  | X |  | 
| mnasnet\$11.0\$1224\$109\$107\$12018 | X |  |  | X | X | X |  |  | X |  | 
| mnasnet\$11.3\$1224\$109\$107\$12018 | X |  |  | X | X | X |  |  | X |  | 
| mobilenet\$1v1\$10.25\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.25\$1224 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1224 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1224 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$11.0\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$11.0\$1192 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v2\$11.0\$1224 | X |  |  | X | X | X |  |  | X | X | 
| resnet\$1v2\$1101 |  |  |  | X | X | X |  |  | X |  | 
| squeezenet\$12018\$104\$127 | X |  |  | X | X | X |  |  | X |  | 

------
#### [ TensorFlow-Lite (INT8) ]


| Model | LENGAN V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4 VM | Qualcomm 03 QCS6 | X86\$1Linux | X86\$1Windows | i.MX 8M Plus | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| inception\$1v1 |  |  |  |  |  |  | X |  |  | X | 
| inception\$1v2 |  |  |  |  |  |  | X |  |  | X | 
| inception\$1v3 | X |  |  |  |  | X | X |  | X | X | 
| inception\$1v4\$1299 | X |  |  |  |  | X | X |  | X | X | 
| mobilenet\$1v1\$10.25\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.25\$1224 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1224 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1224 | X |  |  |  |  | X | X |  | X | X | 
| mobilenet\$1v1\$11.0\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$11.0\$1224 | X |  |  |  |  | X | X |  | X | X | 
| mobilenet\$1v2\$11.0\$1224 | X |  |  |  |  | X | X |  | X | X | 
| deeplab-v3\$1513 |  |  |  |  |  |  | X |  |  |  | 

------

# Menyebarkan Model
<a name="neo-deployment-edge"></a>

[https://github.com/neo-ai/neo-ai-dlr](https://github.com/neo-ai/neo-ai-dlr)

Sebelum melanjutkan, pastikan perangkat edge Anda harus didukung oleh SageMaker Neo. Lihat, [Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html) untuk mengetahui perangkat edge yang didukung. Pastikan Anda menentukan perangkat edge target saat mengirimkan tugas kompilasi, lihat [Menggunakan Neo untuk Mengompilasi Model](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html).

## Menerapkan Model Terkompilasi (DLR)
<a name="neo-deployment-dlr"></a>

[DLR](https://github.com/neo-ai/neo-ai-dlr) adalah runtime yang ringkas dan umum untuk model pembelajaran mendalam dan model pohon keputusan. DLR menggunakan runtime [TVM, runtime [Treelite](https://treelite.readthedocs.io/en/latest/install.html)](https://github.com/neo-ai/tvm), NVIDIA TensorRT™, dan dapat menyertakan runtime khusus perangkat keras lainnya. DLR menyediakan Python/C\$1\$1 terpadu APIs untuk memuat dan menjalankan model yang dikompilasi pada berbagai perangkat.

Anda dapat menginstal rilis terbaru paket DLR menggunakan perintah pip berikut:

```
pip install dlr
```

Untuk pemasangan DLR pada target GPU atau perangkat tepi non-x86, silakan merujuk ke [Rilis](https://github.com/neo-ai/neo-ai-dlr/releases) untuk binari bawaan, atau [Menginstal](https://neo-ai-dlr.readthedocs.io/en/latest/install.html) DLR untuk membangun DLR dari sumber. Misalnya, untuk menginstal DLR untuk Raspberry Pi 3, Anda dapat menggunakan: 

```
pip install https://neo-ai-dlr-release.s3-us-west-2.amazonaws.com/v1.3.0/pi-armv7l-raspbian4.14.71-glibc2_24-libstdcpp3_4/dlr-1.3.0-py3-none-any.whl
```

## Menyebarkan Model (AWS IoT Greengrass)
<a name="neo-deployment-greengrass"></a>

[AWS IoT Greengrass memperluas kemampuan cloud ke perangkat](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html) lokal. Ini memungkinkan perangkat untuk mengumpulkan dan menganalisis data lebih dekat ke sumber informasi, bereaksi secara mandiri terhadap peristiwa lokal, dan berkomunikasi dengan aman satu sama lain di jaringan lokal. Dengan AWS IoT Greengrass, Anda dapat melakukan inferensi pembelajaran mesin di tepi data yang dihasilkan secara lokal menggunakan model yang dilatih cloud. Saat ini, Anda dapat menerapkan model ke semua perangkat AWS IoT Greengrass berdasarkan ARM Cortex-A, Intel Atom, dan prosesor seri Nvidia Jetson. [Untuk informasi selengkapnya tentang penerapan aplikasi inferensi Lambda untuk melakukan inferensi pembelajaran mesin dengan Greengrass AWS IoT, lihat Cara mengonfigurasi inferensi pembelajaran mesin yang dioptimalkan menggunakan Konsol Manajemen. AWS](https://docs.aws.amazon.com/greengrass/latest/developerguide/ml-dlc-console.html)

# Mengatur Neo di Perangkat Edge
<a name="neo-getting-started-edge"></a>

Panduan untuk memulai Amazon SageMaker Neo ini menunjukkan cara mengompilasi model, menyiapkan perangkat, dan membuat kesimpulan di perangkat Anda. Sebagian besar contoh kode menggunakan Boto3. Kami menyediakan perintah menggunakan AWS CLI jika berlaku, serta instruksi tentang cara memenuhi prasyarat untuk Neo. 

**catatan**  
Anda dapat menjalankan cuplikan kode berikut di komputer lokal, di dalam SageMaker buku catatan, di Amazon SageMaker Studio, atau (tergantung pada perangkat edge) di perangkat edge Anda. Penyiapannya serupa; namun, ada dua pengecualian utama jika Anda menjalankan panduan ini dalam instance SageMaker notebook atau sesi SageMaker Studio:   
Anda tidak perlu menginstal Boto3.
Anda tidak perlu menambahkan kebijakan `‘AmazonSageMakerFullAccess’` IAM

 Panduan ini mengasumsikan Anda menjalankan instruksi berikut di perangkat edge Anda. 

# Prasyarat
<a name="neo-getting-started-edge-step0"></a>

SageMaker Neo adalah kemampuan yang memungkinkan Anda untuk melatih model pembelajaran mesin sekali dan menjalankannya di mana saja di cloud dan di tepi. Sebelum Anda dapat mengkompilasi dan mengoptimalkan model Anda dengan Neo, ada beberapa prasyarat yang perlu Anda atur. Anda harus menginstal pustaka Python yang diperlukan, mengonfigurasi AWS kredensialnya, membuat peran IAM dengan izin yang diperlukan, dan menyiapkan bucket S3 untuk menyimpan artefak model. Anda juga harus memiliki model pembelajaran mesin terlatih yang siap. Langkah-langkah berikut memandu Anda melalui pengaturan:

1. **Instal Boto3**

   Jika Anda menjalankan perintah ini di perangkat edge Anda, Anda harus menginstal AWS SDK untuk Python (Boto3). Dalam lingkungan Python (sebaiknya lingkungan virtual), jalankan yang berikut ini secara lokal di terminal perangkat edge Anda atau dalam instance notebook Jupyter: 

------
#### [ Terminal ]

   ```
   pip install boto3
   ```

------
#### [ Jupyter Notebook ]

   ```
   !pip install boto3
   ```

------

1.  **Mengatur AWS Kredensil** 

   Anda perlu menyiapkan kredensi Amazon Web Services di perangkat Anda untuk menjalankan SDK for Python (Boto3). Secara default, AWS kredensil harus disimpan dalam file `~/.aws/credentials` di perangkat edge Anda. Dalam file kredensial, Anda akan melihat dua variabel lingkungan: `aws_access_key_id` dan. `aws_secret_access_key` 

   Di terminal Anda, jalankan: 

   ```
   $ more ~/.aws/credentials
   
   [default]
   aws_access_key_id = YOUR_ACCESS_KEY
   aws_secret_access_key = YOUR_SECRET_KEY
   ```

   [Panduan Referensi AWS Umum](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) memiliki instruksi tentang cara mendapatkan yang diperlukan `aws_access_key_id` dan`aws_secret_access_key`. Untuk informasi selengkapnya tentang cara mengatur kredensional di perangkat Anda, lihat dokumentasi [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration). 

1.  **Siapkan Peran IAM dan lampirkan kebijakan.** 

   Neo membutuhkan akses ke URI bucket S3 Anda. Buat peran IAM yang dapat menjalankan SageMaker AI dan memiliki izin untuk mengakses URI S3. Anda dapat membuat peran IAM baik dengan menggunakan SDK for Python (Boto3), konsol, atau. AWS CLI Contoh berikut menggambarkan cara membuat peran IAM menggunakan SDK for Python (Boto3): 

   ```
   import boto3
   
   AWS_REGION = 'aws-region'
   
   # Create an IAM client to interact with IAM
   iam_client = boto3.client('iam', region_name=AWS_REGION)
   role_name = 'role-name'
   ```

   Untuk informasi selengkapnya tentang cara membuat peran IAM dengan konsol AWS CLI, atau melalui AWS API, lihat [Membuat pengguna IAM di akun Anda AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_api).

    Buat kamus yang menjelaskan kebijakan IAM yang Anda lampirkan. Kebijakan ini digunakan untuk membuat peran IAM baru. 

   ```
   policy = {
       'Statement': [
           {
               'Action': 'sts:AssumeRole',
               'Effect': 'Allow',
               'Principal': {'Service': 'sagemaker.amazonaws.com'},
           }],  
        'Version': '2012-10-17		 	 	 '
   }
   ```

   Buat peran IAM baru menggunakan kebijakan yang Anda tentukan di atas:

   ```
   import json 
   
   new_role = iam_client.create_role(
       AssumeRolePolicyDocument=json.dumps(policy),
       Path='/',
       RoleName=role_name
   )
   ```

   Anda perlu tahu apa Nama Sumber Daya Amazon (ARN) Anda saat membuat pekerjaan kompilasi di langkah selanjutnya, jadi simpan juga dalam variabel. 

   ```
   role_arn = new_role['Role']['Arn']
   ```

    Sekarang setelah Anda membuat peran baru, lampirkan izin yang diperlukan untuk berinteraksi dengan Amazon SageMaker AI dan Amazon S3: 

   ```
   iam_client.attach_role_policy(
       RoleName=role_name,
       PolicyArn='arn:aws:iam::aws:policy/AmazonSageMakerFullAccess'
   )
   
   iam_client.attach_role_policy(
       RoleName=role_name,
       PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess'
   );
   ```

1. **Buat bucket Amazon S3 untuk menyimpan artefak model Anda**

   SageMaker Neo akan mengakses artefak model Anda dari Amazon S3

------
#### [ Boto3 ]

   ```
   # Create an S3 client
   s3_client = boto3.client('s3', region_name=AWS_REGION)
   
   # Name buckets
   bucket='name-of-your-bucket'
   
   # Check if bucket exists
   if boto3.resource('s3').Bucket(bucket) not in boto3.resource('s3').buckets.all():
       s3_client.create_bucket(
           Bucket=bucket,
           CreateBucketConfiguration={
               'LocationConstraint': AWS_REGION
           }
       )
   else:
       print(f'Bucket {bucket} already exists. No action needed.')
   ```

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

   ```
   aws s3 mb s3://'name-of-your-bucket' --region specify-your-region 
   
   # Check your bucket exists
   aws s3 ls s3://'name-of-your-bucket'/
   ```

------

1. **Latih model pembelajaran mesin**

   Lihat [Train a Model with Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) untuk informasi lebih lanjut tentang cara melatih model pembelajaran mesin menggunakan Amazon SageMaker AI. Anda dapat mengunggah model yang dilatih secara lokal secara opsional langsung ke bucket Amazon S3 URI. 
**catatan**  
 Pastikan model diformat dengan benar tergantung pada kerangka kerja yang Anda gunakan. Lihat [Bentuk data input apa yang diharapkan SageMaker Neo?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs) 

   Jika Anda belum memiliki model, gunakan `curl` perintah untuk mendapatkan salinan lokal `coco_ssd_mobilenet` model dari situs TensorFlow web. Model yang baru saja Anda salin adalah model deteksi objek yang dilatih dari dataset [COCO](https://cocodataset.org/#home). Ketik berikut ini ke notebook Jupyter Anda:

   ```
   model_zip_filename = './coco_ssd_mobilenet_v1_1.0.zip'
   !curl http://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip \
       --output {model_zip_filename}
   ```

   Perhatikan bahwa contoh khusus ini dikemas dalam file.zip. Buka zip file ini dan kemas ulang sebagai tarfile terkompresi (`.tar.gz`) sebelum menggunakannya di langkah selanjutnya. Ketik berikut ini ke notebook Jupyter Anda: 

   ```
   # Extract model from zip file
   !unzip -u {model_zip_filename}
   
   model_filename = 'detect.tflite'
   model_name = model_filename.split('.')[0]
   
   # Compress model into .tar.gz so SageMaker Neo can use it
   model_tar = model_name + '.tar.gz'
   !tar -czf {model_tar} {model_filename}
   ```

1. **Unggah model terlatih ke bucket S3**

   Setelah Anda melatih mode pembelajaran mesin Anda, simpan dalam ember S3. 

------
#### [ Boto3 ]

   ```
   # Upload model        
   s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)
   ```

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

   Ganti `your-model-filename` dan `amzn-s3-demo-bucket` dengan nama bucket S3 Anda. 

   ```
   aws s3 cp your-model-filename s3://amzn-s3-demo-bucket
   ```

------

# Kompilasi Model
<a name="neo-getting-started-edge-step1"></a>

Setelah Anda memenuhi [Prasyarat](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html#neo-getting-started-edge-step0), Anda dapat mengkompilasi model Anda dengan Amazon AI Neo. SageMaker [Anda dapat mengompilasi model menggunakan konsol AWS CLI, atau [Amazon Web Services SDK for Python (Boto3), lihat Menggunakan Neo untuk](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) Mengompilasi Model.](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html) Dalam contoh ini, Anda akan mengkompilasi model Anda dengan Boto3.

Untuk mengkompilasi model, SageMaker Neo memerlukan informasi berikut:

1.  **URI bucket Amazon S3 tempat Anda menyimpan model terlatih.** 

   Jika Anda mengikuti prasyarat, nama bucket Anda disimpan dalam variabel bernama. `bucket` Cuplikan kode berikut menunjukkan cara membuat daftar semua bucket Anda menggunakan: AWS CLI

   ```
   aws s3 ls
   ```

   Contoh: 

   ```
   $ aws s3 ls
   2020-11-02 17:08:50 bucket
   ```

1.  **URI bucket Amazon S3 tempat Anda ingin menyimpan model yang dikompilasi.** 

   Cuplikan kode di bawah ini menggabungkan URI bucket Amazon S3 Anda dengan nama direktori keluaran yang disebut: `output` 

   ```
   s3_output_location = f's3://{bucket}/output'
   ```

1.  **Kerangka pembelajaran mesin yang Anda gunakan untuk melatih model Anda.** 

   Tentukan kerangka kerja yang Anda gunakan untuk melatih model Anda.

   ```
   framework = 'framework-name'
   ```

   Misalnya, jika Anda ingin mengkompilasi model yang dilatih menggunakan TensorFlow, Anda dapat menggunakan `tflite` atau`tensorflow`. Gunakan `tflite` jika Anda ingin menggunakan versi yang lebih ringan TensorFlow yang menggunakan lebih sedikit memori penyimpanan. 

   ```
   framework = 'tflite'
   ```

   Untuk daftar lengkap kerangka kerja yang didukung NEO, lihat Kerangka Kerja, [Perangkat, Sistem, dan Arsitektur yang Didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html). 

1.  **Bentuk input model Anda.** 

    Neo membutuhkan nama dan bentuk tensor input Anda. Nama dan bentuk diteruskan sebagai pasangan kunci-nilai. `value`adalah daftar dimensi integer dari tensor input dan `key` merupakan nama yang tepat dari tensor input dalam model. 

   ```
   data_shape = '{"name": [tensor-shape]}'
   ```

   Contoh:

   ```
   data_shape = '{"normalized_input_image_tensor":[1, 300, 300, 3]}'
   ```
**catatan**  
Pastikan model diformat dengan benar tergantung pada kerangka kerja yang Anda gunakan. Lihat [Bentuk data input apa yang diharapkan SageMaker Neo?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs) Kunci dalam kamus ini harus diubah menjadi nama tensor input baru.

1.  **Baik nama perangkat target untuk dikompilasi atau rincian umum platform perangkat keras** 

   ```
   target_device = 'target-device-name'
   ```

   Misalnya, jika Anda ingin menyebarkan ke Raspberry Pi 3, gunakan: 

   ```
   target_device = 'rasp3b'
   ```

   Anda dapat menemukan seluruh daftar perangkat edge yang [didukung di Kerangka Kerja, Perangkat, Sistem, dan Arsitektur](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html) yang Didukung.

 Sekarang setelah Anda menyelesaikan langkah-langkah sebelumnya, Anda dapat mengirimkan pekerjaan kompilasi ke Neo. 

```
# Create a SageMaker client so you can submit a compilation job
sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)

# Give your compilation job a name
compilation_job_name = 'getting-started-demo'
print(f'Compilation job for {compilation_job_name} started')

response = sagemaker_client.create_compilation_job(
    CompilationJobName=compilation_job_name,
    RoleArn=role_arn,
    InputConfig={
        'S3Uri': s3_input_location,
        'DataInputConfig': data_shape,
        'Framework': framework.upper()
    },
    OutputConfig={
        'S3OutputLocation': s3_output_location,
        'TargetDevice': target_device 
    },
    StoppingCondition={
        'MaxRuntimeInSeconds': 900
    }
)

# Optional - Poll every 30 sec to check completion status
import time

while True:
    response = sagemaker_client.describe_compilation_job(CompilationJobName=compilation_job_name)
    if response['CompilationJobStatus'] == 'COMPLETED':
        break
    elif response['CompilationJobStatus'] == 'FAILED':
        raise RuntimeError('Compilation failed')
    print('Compiling ...')
    time.sleep(30)
print('Done!')
```

Jika Anda menginginkan informasi tambahan untuk debugging, sertakan pernyataan cetak berikut:

```
print(response)
```

Jika pekerjaan kompilasi berhasil, model yang dikompilasi akan disimpan di bucket Amazon S3 keluaran yang Anda tentukan sebelumnya `s3_output_location` (). Unduh model kompilasi Anda secara lokal: 

```
object_path = f'output/{model}-{target_device}.tar.gz'
neo_compiled_model = f'compiled-{model}.tar.gz'
s3_client.download_file(bucket, object_path, neo_compiled_model)
```

# Mengatur Perangkat Anda
<a name="neo-getting-started-edge-step2"></a>

Anda perlu menginstal paket di perangkat edge Anda sehingga perangkat Anda dapat membuat kesimpulan. [Anda juga perlu menginstal inti [AWS Greengrass IoT atau Deep Learning Runtime (DLR](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html)).](https://github.com/neo-ai/neo-ai-dlr) Dalam contoh ini, Anda akan menginstal paket yang diperlukan untuk membuat kesimpulan untuk algoritma deteksi `coco_ssd_mobilenet` objek dan Anda akan menggunakan DLR.

1. **Instal paket tambahan**

   Selain Boto3, Anda harus menginstal pustaka tertentu di perangkat edge Anda. Pustaka apa yang Anda instal tergantung pada kasus penggunaan Anda. 

   Misalnya, untuk algoritma deteksi `coco_ssd_mobilenet` objek yang Anda unduh sebelumnya, Anda perlu menginstal [NumPy](https://numpy.org/)untuk manipulasi data dan statistik, [PIL](https://pillow.readthedocs.io/en/stable/) untuk memuat gambar, dan [Matplotlib](https://matplotlib.org/) untuk menghasilkan plot. Anda juga memerlukan salinan TensorFlow jika Anda ingin mengukur dampak kompilasi dengan Neo versus baseline. 

   ```
   !pip3 install numpy pillow tensorflow matplotlib 
   ```

1. **Instal mesin inferensi di perangkat Anda**

   Untuk menjalankan model yang dikompilasi NEO, instal [Deep Learning Runtime (DLR](https://github.com/neo-ai/neo-ai-dlr)) di perangkat Anda. DLR adalah runtime yang ringkas dan umum untuk model pembelajaran mendalam dan model pohon keputusan. Pada target CPU x86\$164 yang menjalankan Linux, Anda dapat menginstal rilis terbaru paket DLR menggunakan perintah berikut: `pip`

   ```
   !pip install dlr
   ```

   Untuk pemasangan DLR pada target GPU atau perangkat tepi non-x86, lihat [Rilis](https://github.com/neo-ai/neo-ai-dlr/releases) untuk binari bawaan, atau [Menginstal](https://neo-ai-dlr.readthedocs.io/en/latest/install.html) DLR untuk membangun DLR dari sumber. Misalnya, untuk menginstal DLR untuk Raspberry Pi 3, Anda dapat menggunakan: 

   ```
   !pip install https://neo-ai-dlr-release.s3-us-west-2.amazonaws.com/v1.3.0/pi-armv7l-raspbian4.14.71-glibc2_24-libstdcpp3_4/dlr-1.3.0-py3-none-any.whl
   ```

# Buat Inferensi di Perangkat Anda
<a name="neo-getting-started-edge-step3"></a>

Dalam contoh ini, Anda akan menggunakan Boto3 untuk mengunduh output pekerjaan kompilasi Anda ke perangkat edge Anda. Anda kemudian akan mengimpor DLR, mengunduh contoh gambar dari kumpulan data, mengubah ukuran gambar ini agar sesuai dengan input asli model, dan kemudian Anda akan membuat prediksi.

1. **Unduh model kompilasi Anda dari Amazon S3 ke perangkat Anda dan ekstrak dari tarfile terkompresi.** 

   ```
   # Download compiled model locally to edge device
   object_path = f'output/{model_name}-{target_device}.tar.gz'
   neo_compiled_model = f'compiled-{model_name}.tar.gz'
   s3_client.download_file(bucket_name, object_path, neo_compiled_model)
   
   # Extract model from .tar.gz so DLR can use it
   !mkdir ./dlr_model # make a directory to store your model (optional)
   !tar -xzvf ./compiled-detect.tar.gz --directory ./dlr_model
   ```

1. **Impor DLR dan objek yang diinisialisasi`DLRModel`.**

   ```
   import dlr
   
   device = 'cpu'
   model = dlr.DLRModel('./dlr_model', device)
   ```

1. **Unduh gambar untuk inferensi dan format berdasarkan bagaimana model Anda dilatih**.

   `coco_ssd_mobilenet`Misalnya, Anda dapat mengunduh gambar dari [dataset COCO](https://cocodataset.org/#home) dan kemudian mereformasi gambar menjadi: `300x300` 

   ```
   from PIL import Image
   
   # Download an image for model to make a prediction
   input_image_filename = './input_image.jpg'
   !curl https://farm9.staticflickr.com/8325/8077197378_79efb4805e_z.jpg --output {input_image_filename}
   
   # Format image so model can make predictions
   resized_image = image.resize((300, 300))
   
   # Model is quantized, so convert the image to uint8
   x = np.array(resized_image).astype('uint8')
   ```

1. **Gunakan DLR untuk membuat kesimpulan**.

   Terakhir, Anda dapat menggunakan DLR untuk membuat prediksi pada gambar yang baru saja Anda unduh: 

   ```
   out = model.run(x)
   ```

[Untuk contoh lainnya menggunakan DLR untuk membuat kesimpulan dari model yang dikompilasi NEO pada perangkat edge, lihat repositori Github. neo-ai-dlr ](https://github.com/neo-ai/neo-ai-dlr) 

# Memecahkan Masalah Kesalahan
<a name="neo-troubleshooting"></a>

Bagian ini berisi informasi tentang cara memahami dan mencegah kesalahan umum, pesan kesalahan yang mereka hasilkan, dan panduan tentang cara mengatasi kesalahan ini. Sebelum melanjutkan, tanyakan pada diri Anda pertanyaan-pertanyaan berikut:

 **Apakah Anda mengalami kesalahan sebelum menerapkan model Anda?** Jika ya, lihat [Memecahkan Masalah Kesalahan Kompilasi Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html). 

 **Apakah Anda mengalami kesalahan setelah mengkompilasi model Anda?** Jika ya, lihat [Memecahkan Masalah Kesalahan Inferensi Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-inference.html). 

**Apakah Anda mengalami kesalahan saat mencoba mengkompilasi model Anda untuk perangkat Ambarella?** Jika ya, lihat[Memecahkan Masalah Kesalahan Ambarella](neo-troubleshooting-target-devices-ambarella.md).

## Jenis Klasifikasi Kesalahan
<a name="neo-error-messages"></a>

Daftar ini mengklasifikasikan *kesalahan pengguna* yang dapat Anda terima dari Neo. Ini termasuk kesalahan akses dan izin dan kesalahan pemuatan untuk setiap kerangka kerja yang didukung. Semua kesalahan lainnya adalah *kesalahan sistem*.

### Kesalahan izin klien
<a name="neo-error-client-permission"></a>

 Neo melewati kesalahan untuk ini langsung dari layanan dependen. 
+ *Akses Ditolak* saat memanggil sts: AssumeRole
+ Kesalahan *400* saat menelepon Amazon S3 untuk mengunduh atau mengunggah model klien
+ *PassRole* kesalahan

### Kesalahan beban
<a name="collapsible-section-2"></a>

Dengan asumsi bahwa kompiler Neo berhasil memuat .tar.gz dari Amazon S3, periksa apakah tarball berisi file yang diperlukan untuk kompilasi. Kriteria pemeriksaan khusus kerangka kerja: 
+ **TensorFlow**: Hanya mengharapkan file protobuf (\$1.pb atau\$1.pbtxt). Untuk model yang disimpan, mengharapkan satu folder variabel. 
+ **Pytorch**: Harapkan hanya satu file pytorch (\$1.pth).
+ **MXNET**: Harapkan hanya satu file simbol (\$1.json) dan satu file parameter (\$1.params).
+ **XGBoost**: Harapkan hanya satu file XGBoost model (\$1.model). Model input memiliki batasan ukuran.

### Kesalahan kompilasi
<a name="neo-error-compilation"></a>

Dengan asumsi bahwa kompiler Neo berhasil memuat .tar.gz dari Amazon S3, dan tarball berisi file yang diperlukan untuk kompilasi. Kriteria pemeriksaan adalah: 
+ **OperatorNotImplemented**: Operator belum diimplementasikan.
+ **OperatorAttributeNotImplemented**: Atribut di operator yang ditentukan belum diimplementasikan. 
+ **OperatorAttributeRequired**: Atribut diperlukan untuk grafik simbol internal, tetapi tidak tercantum dalam grafik model input pengguna. 
+ **OperatorAttributeValueNotValid**: Nilai atribut di operator tertentu tidak valid. 

**Topics**
+ [Jenis Klasifikasi Kesalahan](#neo-error-messages)
+ [Memecahkan Masalah Kesalahan Kompilasi Neo](neo-troubleshooting-compilation.md)
+ [Memecahkan Masalah Kesalahan Inferensi Neo](neo-troubleshooting-inference.md)
+ [Memecahkan Masalah Kesalahan Ambarella](neo-troubleshooting-target-devices-ambarella.md)

# Memecahkan Masalah Kesalahan Kompilasi Neo
<a name="neo-troubleshooting-compilation"></a>

Bagian ini berisi informasi tentang cara memahami dan mencegah kesalahan kompilasi umum, pesan kesalahan yang mereka hasilkan, dan panduan tentang cara mengatasi kesalahan ini. 

**Topics**
+ [Cara Menggunakan Halaman Ini](#neo-troubleshooting-compilation-how-to-use)
+ [Kesalahan Terkait Kerangka Kerja](#neo-troubleshooting-compilation-framework-related-errors)
+ [Kesalahan Terkait Infrastruktur](#neo-troubleshooting-compilation-infrastructure-errors)
+ [Periksa log kompilasi Anda](#neo-troubleshooting-compilation-logs)

## Cara Menggunakan Halaman Ini
<a name="neo-troubleshooting-compilation-how-to-use"></a>

Mencoba untuk menyelesaikan kesalahan Anda dengan melalui bagian-bagian ini dalam urutan berikut:

1. Periksa apakah input pekerjaan kompilasi Anda memenuhi persyaratan input. Lihat [Bentuk data input apa yang diharapkan SageMaker Neo?](neo-compilation-preparing-model.md#neo-job-compilation-expected-inputs)

1.  Periksa kesalahan umum [khusus kerangka kerja](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-compilation-framework-related-errors). 

1.  Periksa apakah kesalahan Anda adalah [kesalahan infrastruktur](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-compilation-infrastructure-errors). 

1. Periksa [log kompilasi](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-compilation-logs) Anda.

## Kesalahan Terkait Kerangka Kerja
<a name="neo-troubleshooting-compilation-framework-related-errors"></a>

### Keras
<a name="neo-troubleshooting-compilation-framework-related-errors-keras"></a>


| Kesalahan | Solusi | 
| --- | --- | 
|   `InputConfiguration: No h5 file provided in <model path>`   |   Periksa file h5 Anda ada di Amazon S3 URI yang Anda tentukan.  *Atau* Periksa apakah [file h5 diformat dengan benar](https://www.tensorflow.org/guide/keras/save_and_serialize#keras_h5_format).   | 
|   `InputConfiguration: Multiple h5 files provided, <model path>, when only one is allowed`   |  Periksa bahwa Anda hanya menyediakan satu `h5` file.  | 
|   `ClientError: InputConfiguration: Unable to load provided Keras model. Error: 'sample_weight_mode'`   |  Periksa versi Keras yang Anda tentukan didukung. Lihat, kerangka kerja yang didukung untuk [instance cloud dan perangkat](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-cloud.html) [edge](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html).   | 
|   `ClientError: InputConfiguration: Input input has wrong shape in Input Shape dictionary. Input shapes should be provided in NCHW format. `   |   Periksa apakah input model Anda mengikuti format NCHW. Lihat [Bentuk data input apa yang diharapkan SageMaker Neo?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs)   | 

### MXNet
<a name="neo-troubleshooting-compilation-framework-related-errors-mxnet"></a>


| Kesalahan | Solusi | 
| --- | --- | 
|   `ClientError: InputConfiguration: Only one parameter file is allowed for MXNet model. Please make sure the framework you select is correct.`   |   SageMaker Neo akan memilih file parameter pertama yang diberikan untuk kompilasi.   | 

### TensorFlow
<a name="neo-troubleshooting-compilation-framework-related-errors-tensorflow"></a>


| Kesalahan | Solusi | 
| --- | --- | 
|   `InputConfiguration: Exactly one .pb file is allowed for TensorFlow models.`   |  Pastikan Anda hanya menyediakan satu file.pb atau .pbtxt.  | 
|  `InputConfiguration: Exactly one .pb or .pbtxt file is allowed for TensorFlow models.`  |  Pastikan Anda hanya menyediakan satu file.pb atau .pbtxt.  | 
|   ` ClientError: InputConfiguration: TVM cannot convert <model zoo> model. Please make sure the framework you selected is correct. The following operators are not implemented: {<operator name>} `   |   Periksa operator yang Anda pilih didukung. Lihat [Kerangka Kerja dan Operator yang Didukung SageMaker Neo](https://aws.amazon.com/releasenotes/sagemaker-neo-supported-frameworks-and-operators/).   | 

### PyTorch
<a name="neo-troubleshooting-compilation-framework-related-errors-pytorch"></a>


| Kesalahan | Solusi | 
| --- | --- | 
|   `InputConfiguration: We are unable to extract DataInputConfig from the model due to input_config_derivation_error. Please override by providing a DataInputConfig during compilation job creation.`  |  Lakukan salah satu dari langkah berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/neo-troubleshooting-compilation.html)  | 

## Kesalahan Terkait Infrastruktur
<a name="neo-troubleshooting-compilation-infrastructure-errors"></a>


| Kesalahan | Solusi | 
| --- | --- | 
|   `ClientError: InputConfiguration: S3 object does not exist. Bucket: <bucket>, Key: <bucket key>`   |  Periksa URI Amazon S3 yang Anda berikan.  | 
|   ` ClientError: InputConfiguration: Bucket <bucket name> is in region <region name> which is different from AWS Sagemaker service region <service region> `   |   Buat bucket Amazon S3 yang berada di wilayah yang sama dengan layanan.   | 
|   ` ClientError: InputConfiguration: Unable to untar input model. Please confirm the model is a tar.gz file `   |   Periksa apakah model Anda di Amazon S3 dikompresi menjadi file. `tar.gz`   | 

## Periksa log kompilasi Anda
<a name="neo-troubleshooting-compilation-logs"></a>

1. Arahkan ke Amazon CloudWatch di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Pilih wilayah tempat Anda membuat pekerjaan kompilasi dari daftar dropdown **Region** di kanan atas.

1. Di panel navigasi Amazon CloudWatch, pilih **Log**. Pilih **Grup log**.

1. Cari grup log yang disebut`/aws/sagemaker/CompilationJobs`. Pilih grup log .

1. Cari logstream yang dinamai setelah nama pekerjaan kompilasi. Pilih aliran log.

# Memecahkan Masalah Kesalahan Inferensi Neo
<a name="neo-troubleshooting-inference"></a>

Bagian ini berisi informasi tentang cara mencegah dan mengatasi beberapa kesalahan umum yang mungkin Anda temui saat and/or menerapkan titik akhir. Bagian ini berlaku untuk **PyTorch 1.4.0 atau yang lebih baru dan **MXNetv1.7.0** atau** yang lebih baru. 
+ Pastikan inferensi pertama (inferensi pemanasan) pada data input yang valid dilakukan di`model_fn()`, jika Anda mendefinisikan a `model_fn` dalam skrip inferensi Anda, jika tidak, pesan kesalahan berikut dapat dilihat di terminal saat dipanggil: [https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict) 

  ```
  An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (0) from <users-sagemaker-endpoint> with message "Your invocation timed out while waiting for a response from container model. Review the latency metrics for each container in Amazon CloudWatch, resolve the issue, and try again."                
  ```
+ Pastikan bahwa variabel lingkungan dalam tabel berikut diatur. Jika tidak disetel, pesan galat berikut mungkin muncul: 

  **Di terminal:**

  ```
  An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (503) from <users-sagemaker-endpoint> with message "{ "code": 503, "type": "InternalServerException", "message": "Prediction failed" } ".
  ```

  **Dalam CloudWatch:**

  ```
  W-9001-model-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - AttributeError: 'NoneType' object has no attribute 'transform'
  ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/neo-troubleshooting-inference.html)
+ Pastikan variabel `MMS_DEFAULT_RESPONSE_TIMEOUT` lingkungan disetel ke 500 atau nilai yang lebih tinggi saat membuat model Amazon SageMaker AI; jika tidak, pesan kesalahan berikut mungkin terlihat di terminal: 

  ```
  An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (0) from <users-sagemaker-endpoint> with message "Your invocation timed out while waiting for a response from container model. Review the latency metrics for each container in Amazon CloudWatch, resolve the issue, and try again."
  ```

# Memecahkan Masalah Kesalahan Ambarella
<a name="neo-troubleshooting-target-devices-ambarella"></a>

SageMaker Neo membutuhkan model untuk dikemas dalam file TAR terkompresi ()`*.tar.gz`. Perangkat Ambarella memerlukan file tambahan untuk dimasukkan dalam file TAR terkompresi sebelum dikirim untuk kompilasi. Sertakan file berikut dalam file TAR terkompresi jika Anda ingin mengkompilasi model untuk target Ambarella dengan Neo: SageMaker 
+ Model terlatih menggunakan kerangka kerja yang didukung oleh SageMaker Neo 
+ File konfigurasi JSON
+ Gambar kalibrasi

Misalnya, isi file TAR terkompresi Anda akan terlihat mirip dengan contoh berikut:

```
├──amba_config.json
├──calib_data
|    ├── data1
|    ├── data2
|    ├── .
|    ├── .
|    ├── .
|    └── data500
└──mobilenet_v1_1.0_0224_frozen.pb
```

Direktori dikonfigurasi sebagai berikut:
+ `amba_config.json`: File konfigurasi
+ `calib_data`: Folder berisi gambar kalibrasi
+ `mobilenet_v1_1.0_0224_frozen.pb`: TensorFlow model disimpan sebagai grafik beku

Untuk informasi tentang kerangka kerja yang didukung oleh SageMaker Neo, lihat[Kerangka Kerja yang Didukung](neo-supported-devices-edge-frameworks.md).

## Menyiapkan File Konfigurasi
<a name="neo-troubleshooting-target-devices-ambarella-config"></a>

File konfigurasi menyediakan informasi yang diperlukan oleh rantai alat Ambarella untuk mengkompilasi model. File konfigurasi harus disimpan sebagai file JSON dan nama file harus diakhiri dengan`*config.json`. Bagan berikut menunjukkan isi dari file konfigurasi.


| Key | Deskripsi | Contoh | 
| --- | --- | --- | 
| masukan | Kamus pemetaan lapisan masukan untuk atribut. | <pre>{inputs:{"data":{...},"data1":{...}}}</pre> | 
| “data” | Nama lapisan masukan. Catatan: “data” adalah contoh nama yang dapat Anda gunakan untuk memberi label pada lapisan input. | “data” | 
| bentuk | Menjelaskan bentuk input ke model. Ini mengikuti konvensi yang sama yang digunakan SageMaker Neo. | “bentuk”: “1,3,224,224" | 
| filepath | Jalur relatif ke direktori yang berisi gambar kalibrasi. Ini bisa berupa file biner atau gambar seperti JPG atau PNG. | “filepath”: “calib\$1data/” | 
| format warna | Format warna yang diharapkan model. Ini akan digunakan saat mengonversi gambar menjadi biner. Nilai yang didukung: [RGB, BGR]. Defaultnya adalah RGB. | “format warna” :"RGB” | 
| kejam | Nilai rata-rata yang akan dikurangi dari input. Bisa berupa nilai tunggal atau daftar nilai. Ketika mean diberikan sebagai daftar, jumlah entri harus sesuai dengan dimensi saluran input. | “berarti” :128.0 | 
| skala | Nilai skala yang akan digunakan untuk menormalkan input. Bisa berupa nilai tunggal atau daftar nilai. Ketika skala diberikan sebagai daftar, jumlah entri harus sesuai dengan dimensi saluran input. | “skala”: 255.0 | 

Berikut ini adalah contoh file konfigurasi: 

```
{
    "inputs": {
        "data": {
                "shape": "1, 3, 224, 224",
                "filepath": "calib_data/",
                "colorformat": "RGB",
                "mean":[128,128,128],
                "scale":[128.0,128.0,128.0]
        }
    }
}
```

## Gambar Kalibrasi
<a name="neo-troubleshooting-target-devices-ambarella-calibration-images"></a>

Kuantisasi model terlatih Anda dengan memberikan gambar kalibrasi. Mengukur model Anda meningkatkan kinerja CVFlow mesin pada Sistem Ambarella on a Chip (SoC). Rantai alat Ambarella menggunakan gambar kalibrasi untuk menentukan bagaimana setiap lapisan dalam model harus dikuantisasi untuk mencapai kinerja dan akurasi yang optimal. Setiap lapisan dikuantisasi secara independen ke INT8 atau INT16 format. Model akhir memiliki campuran INT8 dan INT16 lapisan setelah kuantisasi.

**Berapa banyak gambar yang harus Anda gunakan?**

Disarankan agar Anda menyertakan antara 100-200 gambar yang mewakili jenis adegan yang diharapkan ditangani oleh model. Waktu kompilasi model meningkat secara linier ke jumlah gambar kalibrasi dalam file input.

**Apa format gambar yang direkomendasikan?**

Gambar kalibrasi dapat dalam format biner mentah atau format gambar seperti JPG dan PNG.

Folder kalibrasi Anda dapat berisi campuran gambar dan file biner. Jika folder kalibrasi berisi gambar dan file biner, rantai alat pertama-tama mengonversi gambar menjadi file biner. Setelah konversi selesai, ia menggunakan file biner yang baru dihasilkan bersama dengan file biner yang awalnya ada di folder.

**Bisakah saya mengonversi gambar menjadi format biner terlebih dahulu?**

Ya. [Anda dapat mengonversi gambar ke format biner dengan paket sumber terbuka seperti [OpenCV](https://opencv.org/) atau PIL.](https://python-pillow.org/) Pangkas dan ubah ukuran gambar sehingga memenuhi lapisan input model terlatih Anda.



## Mean dan Skala
<a name="neo-troubleshooting-target-devices-ambarella-mean-scale"></a>

Anda dapat menentukan opsi pra-pemrosesan rata-rata dan penskalaan ke rantai alat Amberalla. Operasi ini tertanam ke dalam jaringan dan diterapkan selama inferensi pada setiap input. Jangan berikan data yang diproses jika Anda menentukan mean atau skala. Lebih khusus lagi, jangan berikan data yang telah Anda kurangi dari rata-rata atau terapkan penskalaan.

## Periksa log kompilasi Anda
<a name="neo-troubleshooting-target-devices-ambarella-compilation"></a>

Untuk informasi tentang memeriksa log kompilasi untuk perangkat Ambarella, lihat. [Periksa log kompilasi Anda](neo-troubleshooting-compilation.md#neo-troubleshooting-compilation-logs)

# Sesi stateful dengan model Amazon AI SageMaker
<a name="stateful-sessions"></a>

Saat mengirim permintaan ke titik akhir inferensi Amazon SageMaker AI, Anda dapat memilih untuk merutekan permintaan ke sesi *stateful*. Selama sesi stateful, Anda mengirim beberapa permintaan inferensi ke instance ML yang sama, dan instance memfasilitasi sesi.

Biasanya, saat Anda memanggil titik akhir inferensi, Amazon SageMaker AI merutekan permintaan Anda ke satu instans ML di antara beberapa instance yang dihosting titik akhir. Perilaku perutean ini membantu meminimalkan latensi dengan mendistribusikan lalu lintas inferensi Anda secara merata. Namun, salah satu hasil dari perilaku perutean adalah Anda tidak dapat memprediksi instance mana yang akan melayani permintaan Anda. 

*Ketidakpastian ini adalah batasan jika Anda berniat mengirim permintaan Anda ke model stateful.* Model stateful memiliki wadah yang menyimpan data konteks yang diterimanya dari permintaan inferensi. Karena data di-cache, Anda dapat berinteraksi dengan penampung dengan mengirimkan beberapa permintaan, dan dengan setiap permintaan, Anda tidak perlu menyertakan konteks penuh interaksi. Sebaliknya, model mengambil dari data konteks cache untuk menginformasikan prediksinya. 

Model stateful ideal ketika data konteks untuk interaksi sangat besar, seperti ketika mencakup yang berikut:
+ File teks besar
+ Sejarah obrolan panjang 
+ Data multimedia (gambar, video, dan audio) untuk model multimodal

Dalam kasus ini, jika Anda melewati konteks lengkap dengan setiap prompt, latensi jaringan permintaan Anda akan diperlambat, dan respons aplikasi Anda berkurang. 

Sebelum titik akhir inferensi Anda dapat mendukung sesi stateful, itu harus menjadi tuan rumah model stateful. Implementasi model stateful dimiliki oleh Anda. Amazon SageMaker AI memungkinkan Anda untuk merutekan permintaan Anda ke sesi stateful, tetapi tidak menyediakan model stateful yang dapat Anda terapkan dan gunakan. 

Untuk contoh notebook dan wadah model yang menunjukkan bagaimana interaksi stateful diimplementasikan, lihat. [Contoh implementasi](#stateful-sessions-example-notebook)

Untuk informasi tentang mengimplementasikan model stateful dengan TorchServe, lihat [Inferensi Stateful](https://github.com/pytorch/serve/tree/master/examples/stateful/sequence_continuous_batching) di repositori. TorchServe GitHub 

## Cara kerja sesi stateful
<a name="stateful-sessions-running"></a>

Selama sesi stateful, aplikasi Anda berinteraksi dengan wadah model Anda dengan cara berikut. 

**Untuk memulai sesi stateful**

1. Untuk memulai sesi dengan model stateful yang di-host oleh Amazon SageMaker AI, klien Anda mengirimkan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)permintaan dengan API. SageMaker Untuk parameter `SessionID` permintaan, klien memberi tahu SageMaker AI untuk memulai sesi baru dengan menentukan nilainya`NEW_SESSION`. Dalam payload permintaan, klien juga memberi tahu penampung untuk memulai sesi baru. Sintaks pernyataan ini bervariasi berdasarkan implementasi container Anda. Itu tergantung pada bagaimana kode kontainer Anda menangani payload permintaan.

   Contoh berikut memulai sesi baru dengan menggunakan SDK for Python (Boto3):

   ```
   import boto3
   import sagemaker
   import json
   
   payload = {
   "requestType":"NEW_SESSION"
   }
   payload = json.dumps(payload)
   
   smr = boto3.client(
       'sagemaker-runtime',
       region_name="region_name",
       endpoint_url="endoint_url")
   
   create_session_response = smr.invoke_endpoint(
       EndpointName="endpoint_name",
       Body=payload,
       ContentType="application/json",
       SessionId="NEW_SESSION")
   ```

1. Container model Anda menangani permintaan klien Anda dengan memulai sesi baru. Untuk sesi, itu menyimpan data yang dikirim klien dalam payload permintaan. Ini juga membuat ID sesi, dan menetapkan waktu untuk hidup (TTL). Stempel waktu ini menunjukkan kapan sesi berakhir. Container harus menyediakan ID sesi dan stempel waktu SageMaker ke Amazon AI dengan menyetel header HTTP berikut dalam respons:

   ```
   X-Amzn-SageMaker-Session-Id: session_id; Expires=yyyy-mm-ddThh:mm:ssZ
   ```

1. Sebagai tanggapan atas `InvokeEndpoint` permintaan tersebut, Amazon SageMaker AI menyediakan ID sesi dan stempel waktu TTL untuk parameter respons. `NewSessionID`

   Contoh berikut mengekstrak ID sesi dari `invoke_endpoint` respon:

   ```
   session_id = create_session_response['ResponseMetadata']['HTTPHeaders']['x-amzn-sagemaker-new-session-id'].split(';')[0]
   ```

**Untuk melanjutkan sesi stateful**
+ Untuk menggunakan sesi yang sama untuk permintaan inferensi berikutnya, klien Anda mengirimkan `InvokeEndpoint` permintaan lain. Untuk parameter `SessionID` permintaan, ini menentukan ID sesi. Dengan ID ini, SageMaker AI merutekan permintaan ke instance ML yang sama di mana sesi dimulai. Karena container Anda telah men-cache payload permintaan asli, klien Anda tidak perlu meneruskan data konteks yang sama seperti yang ada di permintaan asli.

  Contoh berikut melanjutkan sesi dengan meneruskan ID sesi dengan parameter `SessionId` permintaan:

  ```
  smr.invoke_endpoint(
      EndpointName="endpoint_name",
      Body=payload,
      ContentType="application/json",
      SessionId=session_id)
  ```

**Untuk menutup sesi stateful**

1. Untuk menutup sesi, klien Anda mengirimkan `InvokeEndpoint` permintaan akhir. Untuk parameter `SessionID` permintaan, klien memberikan ID sesi. Dalam payload di badan permintaan, klien Anda menyatakan bahwa kontainer harus menutup sesi. Sintaks pernyataan ini bervariasi berdasarkan implementasi container Anda.

   Contoh berikut menutup sesi:

   ```
   payload = {
       "requestType":"CLOSE"
   }
   payload = json.dumps(payload)
   
   closeSessionResponse = smr.invoke_endpoint(
       EndpointName="endpoint_name",
       Body=payload,
       ContentType="application/json",
       SessionId=session_id)
   ```

1. Saat menutup sesi, penampung mengembalikan ID sesi ke SageMaker AI dengan menyetel header HTTP berikut dalam respons:

   ```
   X-Amzn-SageMaker-Closed-Session-Id: session_id
   ```

1. Dalam menanggapi `InvokeEndpoint` permintaan dari klien, SageMaker AI menyediakan ID sesi untuk parameter `ClosedSessionId` respons.

   Contoh berikut mengekstrak ID sesi tertutup dari `invoke_endpoint` respons:

   ```
   closed_session_id = closeSessionResponse['ResponseMetadata']['HTTPHeaders']['x-amzn-sagemaker-closed-session-id'].split(';')[0]
   ```

## Contoh implementasi
<a name="stateful-sessions-example-notebook"></a>

Contoh notebook berikut menunjukkan bagaimana mengimplementasikan container untuk model stateful. Ini juga menunjukkan bagaimana aplikasi klien memulai, melanjutkan, dan menutup sesi stateful.

[LLaInferensi stateful VA dengan AI SageMaker ](https://github.com/aws-samples/sagemaker-genai-hosting-examples/blob/main/LLava/torchserve/workspace/llava_stateful_deploy_infer.ipynb)

Notebook menggunakan model [LLaVA: Large Language and Vision Assistant](https://github.com/haotian-liu/LLaVA/tree/main), yang menerima petunjuk gambar dan teks. Notebook mengunggah gambar ke model, dan kemudian mengajukan pertanyaan tentang gambar tanpa harus mengirim ulang gambar untuk setiap permintaan. Wadah model menggunakan TorchServe kerangka kerja. Ini menyimpan data gambar dalam memori GPU.

# Praktik terbaik
<a name="best-practices"></a>

Topik berikut memberikan panduan tentang praktik terbaik untuk menerapkan model pembelajaran mesin di Amazon SageMaker AI.

**Topics**
+ [Praktik terbaik untuk menerapkan model pada Layanan Hosting SageMaker AI](deployment-best-practices.md)
+ [Pantau Praktik Terbaik Keamanan](monitor-sec-best-practices.md)
+ [Inferensi real-time latensi rendah dengan AWS PrivateLink](realtime-endpoints-privatelink.md)
+ [Migrasikan beban kerja inferensi dari x86 ke Graviton AWS](realtime-endpoints-graviton.md)
+ [Memecahkan masalah penerapan model Amazon SageMaker AI](deploy-model-troubleshoot.md)
+ [Praktik terbaik pengoptimalan biaya inferensi](inference-cost-optimization.md)
+ [Praktik terbaik untuk meminimalkan gangguan selama peningkatan driver GPU](inference-gpu-drivers.md)
+ [Praktik terbaik untuk keamanan dan kesehatan titik akhir dengan Amazon AI SageMaker](best-practice-endpoint-security.md)
+ [Memperbarui kontainer inferensi untuk mematuhi NVIDIA Container Toolkit](container-nvidia-compliance.md)

# Praktik terbaik untuk menerapkan model pada Layanan Hosting SageMaker AI
<a name="deployment-best-practices"></a>

Saat menghosting model menggunakan layanan hosting SageMaker AI, pertimbangkan hal berikut:
+ Biasanya, aplikasi klien mengirimkan permintaan ke titik akhir SageMaker AI HTTPS untuk mendapatkan kesimpulan dari model yang diterapkan. Anda juga dapat mengirim permintaan ke titik akhir ini dari buku catatan Jupyter Anda selama pengujian.
+ Anda dapat menerapkan model yang dilatih dengan SageMaker AI ke target penyebaran Anda sendiri. Untuk melakukan itu, Anda perlu mengetahui format khusus algoritme dari artefak model yang dihasilkan oleh pelatihan model. Untuk informasi selengkapnya tentang format keluaran, lihat bagian yang sesuai dengan algoritme yang Anda gunakan[Format Data Umum untuk Pelatihan](cdf-training.md). 
+ Anda dapat menerapkan beberapa varian model ke titik akhir SageMaker AI HTTPS yang sama. Ini berguna untuk menguji variasi model dalam produksi. Misalnya, misalkan Anda telah menerapkan model ke dalam produksi. Anda ingin menguji variasi model dengan mengarahkan sejumlah kecil lalu lintas, katakanlah 5%, ke model baru. Untuk melakukan ini, buat konfigurasi titik akhir yang menjelaskan kedua varian model. Anda menentukan `ProductionVariant` dalam permintaan Anda ke`CreateEndPointConfig`. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). 
+ Anda dapat mengonfigurasi `ProductionVariant` untuk menggunakan Application Auto Scaling. Untuk informasi tentang mengonfigurasi penskalaan otomatis, lihat. [Penskalaan otomatis model Amazon SageMaker AI](endpoint-auto-scaling.md)
+ Anda dapat memodifikasi titik akhir tanpa mengambil model yang sudah digunakan ke dalam produksi di luar layanan. Misalnya, Anda dapat menambahkan varian model baru, memperbarui konfigurasi instans Komputasi ML dari varian model yang ada, atau mengubah distribusi lalu lintas antar varian model. Untuk memodifikasi endpoint, Anda menyediakan konfigurasi endpoint baru. SageMaker AI mengimplementasikan perubahan tanpa downtime. Untuk informasi lebih lanjut lihat, [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)dan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html). 
+ Mengubah atau menghapus artefak model atau mengubah kode inferensi setelah menerapkan model menghasilkan hasil yang tidak terduga. Jika Anda perlu mengubah atau menghapus artefak model atau mengubah kode inferensi, ubah titik akhir dengan menyediakan konfigurasi titik akhir baru. Setelah Anda memberikan konfigurasi endpoint baru, Anda dapat mengubah atau menghapus artefak model yang sesuai dengan konfigurasi endpoint lama.
+ Jika Anda ingin mendapatkan kesimpulan tentang seluruh kumpulan data, pertimbangkan untuk menggunakan transformasi batch sebagai alternatif untuk layanan hosting. Untuk informasi, lihat [Transformasi Batch untuk inferensi dengan Amazon AI SageMaker](batch-transform.md) 

## Terapkan Beberapa Instance di Seluruh Availability Zone
<a name="deployment-best-practices-availability-zones"></a>

**Buat titik akhir yang kuat saat menghosting model Anda.** SageMaker Titik akhir AI dapat membantu melindungi aplikasi Anda dari pemadaman [Availability Zone](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) dan kegagalan instans. Jika terjadi pemadaman atau instans gagal, SageMaker AI secara otomatis mencoba mendistribusikan instans Anda di seluruh Availability Zone. Untuk alasan ini, kami sangat menyarankan Anda menerapkan beberapa instance untuk setiap titik akhir produksi. 

Jika Anda menggunakan [Amazon Virtual Private Cloud (VPC), konfigurasikan VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) dengan setidaknya dua [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html#SageMaker-Type-VpcConfig-Subnets                     .html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html#SageMaker-Type-VpcConfig-Subnets                     .html), masing-masing di Availability Zone yang berbeda. Jika terjadi pemadaman atau instans gagal, Amazon SageMaker AI secara otomatis mencoba mendistribusikan instans Anda di seluruh Availability Zone. 

Secara umum, untuk mencapai kinerja yang lebih andal, gunakan lebih banyak [Jenis Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) kecil di Availability Zone yang berbeda untuk meng-host endpoint Anda.

**Menyebarkan komponen inferensi untuk ketersediaan tinggi.** Selain rekomendasi di atas untuk nomor instans, untuk mencapai ketersediaan 99,95%, pastikan komponen inferensi Anda dikonfigurasi untuk memiliki lebih dari dua salinan. Selain itu, dalam kebijakan penskalaan otomatis terkelola, tetapkan jumlah minimum instans menjadi dua juga.

# Pantau Praktik Terbaik Keamanan
<a name="monitor-sec-best-practices"></a>

Pantau penggunaan SageMaker AI yang berkaitan dengan praktik terbaik keamanan dengan menggunakan [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html). Security Hub CSPM menggunakan kontrol keamanan untuk mengevaluasi konfigurasi sumber daya dan standar keamanan untuk membantu Anda mematuhi berbagai kerangka kerja kepatuhan. Untuk informasi selengkapnya tentang penggunaan CSPM Security Hub untuk mengevaluasi sumber daya SageMaker AI, lihat [kontrol Amazon SageMaker AI di Panduan Pengguna](https://docs.aws.amazon.com/securityhub/latest/userguide/sagemaker-controls.html) *CSPM AWS Security Hub*.

# Inferensi real-time latensi rendah dengan AWS PrivateLink
<a name="realtime-endpoints-privatelink"></a>

 Amazon SageMaker AI memberikan latensi rendah untuk inferensi waktu nyata sambil mempertahankan ketersediaan dan ketahanan tinggi menggunakan penerapan multi-AZ. Latensi aplikasi terdiri dari dua komponen utama: infrastruktur atau latensi overhead dan latensi inferensi model. Pengurangan latensi overhead membuka kemungkinan baru seperti menerapkan model yang lebih kompleks, mendalam, dan akurat atau membagi aplikasi monolitik menjadi modul layanan mikro yang dapat diskalakan dan dapat dipelihara. Anda dapat mengurangi latensi untuk inferensi real-time dengan SageMaker AI menggunakan penerapan. AWS PrivateLink Dengan AWS PrivateLink, Anda dapat mengakses semua operasi SageMaker API secara pribadi dari Virtual Private Cloud (VPC) Anda dengan cara yang dapat diskalakan dengan menggunakan titik akhir VPC antarmuka. Endpoint VPC antarmuka adalah elastic network interface di subnet Anda dengan alamat IP pribadi yang berfungsi sebagai titik masuk untuk semua panggilan API. SageMaker 

Secara default, titik akhir SageMaker AI dengan 2 instans atau lebih diterapkan di setidaknya 2 AWS Availability Zones (AZs) dan instance di AZ mana pun dapat memproses pemanggilan. Ini menghasilkan satu atau lebih “hop” AZ yang berkontribusi pada latensi overhead. AWS PrivateLink Penerapan dengan `privateDNSEnabled` opsi yang ditetapkan sebagai `true` meringankan hal ini dengan mencapai dua tujuan:
+ Itu menyimpan semua lalu lintas inferensi dalam VPC Anda.
+ Itu membuat lalu lintas pemanggilan di AZ yang sama dengan klien yang memulainya saat menggunakan Runtime. SageMaker Ini menghindari “lompatan” antara AZs mengurangi latensi overhead.

Bagian berikut dari panduan ini menunjukkan bagaimana Anda dapat mengurangi latensi untuk inferensi waktu nyata dengan AWS PrivateLink penerapan.

**Topics**
+ [Menyebarkan AWS PrivateLink](#deploy-privatelink)
+ [Menerapkan titik akhir SageMaker AI di VPC](#deploy-sagemaker-inference-endpoint)
+ [Memanggil titik akhir SageMaker AI](#invoke-sagemaker-inference-endpoint)

## Menyebarkan AWS PrivateLink
<a name="deploy-privatelink"></a>

Untuk menerapkan AWS PrivateLink, pertama-tama buat titik akhir antarmuka untuk VPC tempat Anda terhubung ke titik akhir AI. SageMaker Ikuti langkah-langkah di [Akses AWS layanan menggunakan titik akhir VPC antarmuka untuk membuat titik akhir](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) antarmuka. Saat membuat titik akhir, pilih pengaturan berikut di antarmuka konsol:
+ **Pilih kotak centang **Aktifkan nama DNS** di bawah Pengaturan Tambahan**
+ Pilih grup keamanan yang sesuai dan subnet yang akan digunakan dengan titik akhir SageMaker AI.

Pastikan juga bahwa VPC mengaktifkan nama host DNS. Untuk informasi selengkapnya tentang cara mengubah atribut DNS untuk VPC Anda, [lihat Melihat dan memperbarui atribut DNS untuk](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating) VPC Anda.

## Menerapkan titik akhir SageMaker AI di VPC
<a name="deploy-sagemaker-inference-endpoint"></a>

Untuk mencapai latensi overhead rendah, buat titik akhir SageMaker AI menggunakan subnet yang sama dengan yang Anda tentukan saat menerapkan. AWS PrivateLink Subnet ini harus sesuai dengan aplikasi klien Anda, seperti yang ditunjukkan dalam cuplikan kode berikut. AZs 

```
model_name = '<the-name-of-your-model>'

vpc = 'vpc-0123456789abcdef0'
subnet_a = 'subnet-0123456789abcdef0'
subnet_b = 'subnet-0123456789abcdef1'
security_group = 'sg-0123456789abcdef0'

create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url
    },
    VpcConfig = {
        'SecurityGroupIds': [security_group],
        'Subnets': [subnet_a, subnet_b],
    },
)
```

Cuplikan kode yang disebutkan di atas mengasumsikan bahwa Anda telah mengikuti langkah-langkahnya. [Sebelum Anda mulai](realtime-endpoints-deploy-models.md#deploy-prereqs)

## Memanggil titik akhir SageMaker AI
<a name="invoke-sagemaker-inference-endpoint"></a>

Terakhir, tentukan klien SageMaker Runtime dan panggil titik akhir SageMaker AI seperti yang ditunjukkan pada cuplikan kode berikut.

```
endpoint_name = '<endpoint-name>'
  
runtime_client = boto3.client('sagemaker-runtime')
response = runtime_client.invoke_endpoint(EndpointName=endpoint_name, 
                                          ContentType='text/csv', 
                                          Body=payload)
```

Untuk informasi selengkapnya tentang konfigurasi titik akhir, lihat[Terapkan model untuk inferensi waktu nyata](realtime-endpoints-deploy-models.md).

# Migrasikan beban kerja inferensi dari x86 ke Graviton AWS
<a name="realtime-endpoints-graviton"></a>

 [AWS Graviton](https://aws.amazon.com/ec2/graviton/) adalah serangkaian prosesor berbasis ARM yang dirancang oleh. AWS Mereka lebih hemat energi daripada prosesor berbasis x86 dan menawarkan rasio harga-kinerja yang menarik. Amazon SageMaker AI menawarkan instance berbasis Graviton sehingga Anda dapat memanfaatkan prosesor canggih ini untuk kebutuhan inferensi Anda. 

 Anda dapat memigrasikan beban kerja inferensi yang ada dari instance berbasis x86 ke instance berbasis Graviton, dengan menggunakan gambar kontainer yang kompatibel dengan ARM atau gambar kontainer multi-arsitektur. Panduan ini mengasumsikan bahwa Anda menggunakan gambar kontainer [AWS Deep Learning, atau gambar kontainer](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) yang kompatibel dengan ARM Anda sendiri. Untuk informasi lebih lanjut tentang membuat gambar Anda sendiri, periksa [Membangun gambar Anda](https://github.com/aws/deep-learning-containers#building-your-image). 

 Pada tingkat tinggi, memigrasikan beban kerja inferensi dari instance berbasis x86 ke instance berbasis Graviton adalah proses empat langkah: 

1. Dorong gambar kontainer ke Amazon Elastic Container Registry (Amazon ECR), registri kontainer AWS terkelola.

1. Buat Model SageMaker AI.

1. Buat konfigurasi titik akhir.

1. Buat titik akhir.

 Bagian berikut dari panduan ini memberikan rincian lebih lanjut mengenai langkah-langkah di atas. Ganti contoh kode *user placeholder text* dalam dengan informasi Anda sendiri. 

**Topics**
+ [Dorong gambar wadah ke Amazon ECR](#realtime-endpoints-graviton-ecr)
+ [Buat Model SageMaker AI](#realtime-endpoints-graviton-model)
+ [Buat konfigurasi titik akhir](#realtime-endpoints-graviton-epc)
+ [Buat titik akhir](#realtime-endpoints-graviton-ep)

## Dorong gambar wadah ke Amazon ECR
<a name="realtime-endpoints-graviton-ecr"></a>

 Anda dapat mendorong gambar kontainer Anda ke Amazon ECR dengan file. AWS CLI Saat menggunakan gambar yang kompatibel dengan ARM, verifikasi bahwa gambar tersebut mendukung arsitektur ARM: 

```
docker inspect deep-learning-container-uri
```

 Respons `"Architecture": "arm64"` menunjukkan bahwa gambar mendukung arsitektur ARM. Anda dapat mendorongnya ke Amazon ECR dengan `docker push` perintah. Untuk informasi selengkapnya, periksa [Mendorong gambar Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html). 

 Gambar kontainer multi-arsitektur pada dasarnya adalah sekumpulan gambar kontainer yang mendukung arsitektur atau sistem operasi yang berbeda, yang dapat Anda rujuk dengan nama manifes umum. Jika Anda menggunakan gambar wadah multi-arsitektur, maka selain mendorong gambar ke Amazon ECR, Anda juga harus mendorong daftar manifes ke Amazon ECR. Daftar manifes memungkinkan penyertaan bersarang dari manifes gambar lain, di mana setiap gambar yang disertakan ditentukan oleh arsitektur, sistem operasi, dan atribut platform lainnya. Contoh berikut membuat daftar manifes, dan mendorongnya ke Amazon ECR. 

1. Buat daftar manifes.

   ```
   docker manifest create aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \
     aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:amd64 \
   	aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:arm64 \
   ```

1.  Beri anotasi daftar manifes, sehingga benar mengidentifikasi gambar mana untuk arsitektur mana. 

   ```
   docker manifest annotate --arch arm64 aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \
     aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository:arm64
   ```

1. Dorong manifes.

   ```
   docker manifest push aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository
   ```

 Untuk informasi selengkapnya tentang membuat dan mendorong daftar manifes ke Amazon ECR, periksa [Memperkenalkan gambar wadah multi-arsitektur untuk Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/), dan [Mendorong](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html) gambar multi-arsitektur. 

## Buat Model SageMaker AI
<a name="realtime-endpoints-graviton-model"></a>

 Buat Model SageMaker AI dengan memanggil [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API. 

```
import boto3
from sagemaker import get_execution_role


aws_region = "aws-region"
sagemaker_client = boto3.client("sagemaker", region_name=aws_region)

role = get_execution_role()

sagemaker_client.create_model(
    ModelName = "model-name",
    PrimaryContainer = {
        "Image": "deep-learning-container-uri",
        "ModelDataUrl": "model-s3-location",
        "Environment": {
            "SAGEMAKER_PROGRAM": "inference.py",
            "SAGEMAKER_SUBMIT_DIRECTORY": "inference-script-s3-location",
            "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
            "SAGEMAKER_REGION": aws_region,
        }
    },
    ExecutionRoleArn = role
)
```

## Buat konfigurasi titik akhir
<a name="realtime-endpoints-graviton-epc"></a>

 Buat konfigurasi titik akhir dengan memanggil [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API. [Untuk daftar instance berbasis Graviton, periksa Instance yang dioptimalkan Compute.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/compute-optimized-instances.html) 

```
sagemaker_client.create_endpoint_config(
    EndpointConfigName = "endpoint-config-name",
    ProductionVariants = [
        {
            "VariantName": "variant-name",
            "ModelName": "model-name",
            "InitialInstanceCount": 1,
            "InstanceType": "ml.c7g.xlarge", # Graviton-based instance
       }
    ]
)
```

## Buat titik akhir
<a name="realtime-endpoints-graviton-ep"></a>

 Buat titik akhir dengan memanggil [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API. 

```
sagemaker_client.create_endpoint(
    EndpointName = "endpoint-name",
    EndpointConfigName = "endpoint-config-name"
)
```

# Memecahkan masalah penerapan model Amazon SageMaker AI
<a name="deploy-model-troubleshoot"></a>

Jika Anda mengalami masalah saat menerapkan model pembelajaran mesin di Amazon SageMaker AI, lihat panduan berikut.

**Topics**
+ [Kesalahan Deteksi dalam Hitungan CPU Aktif](#deploy-model-troubleshoot-jvms)
+ [Masalah dengan penerapan file model.tar.gz](#deploy-model-troubleshoot-tarballs)
+ [Kontainer primer tidak lulus pemeriksaan kesehatan ping](#deploy-model-troubleshoot-ping)

## Kesalahan Deteksi dalam Hitungan CPU Aktif
<a name="deploy-model-troubleshoot-jvms"></a>

Jika Anda menerapkan model SageMaker AI dengan Linux Java Virtual Machine (JVM), Anda mungkin mengalami kesalahan deteksi yang mencegah penggunaan sumber daya CPU yang tersedia. Masalah ini mempengaruhi beberapa JVMs yang mendukung Java 8 dan Java 9, dan sebagian besar yang mendukung Java 10 dan Java 11. Ini JVMs menerapkan mekanisme yang mendeteksi dan menangani jumlah CPU dan memori maksimum yang tersedia saat menjalankan model dalam wadah Docker, dan, lebih umum, dalam `taskset` perintah Linux atau grup kontrol (cgroups). SageMaker Penerapan AI memanfaatkan beberapa pengaturan yang digunakan JVM untuk mengelola sumber daya ini. Saat ini, ini menyebabkan wadah salah mendeteksi jumlah yang tersedia CPUs. 

SageMaker AI tidak membatasi akses CPUs pada sebuah instans. Namun, JVM mungkin mendeteksi jumlah CPU seperti `1` ketika lebih banyak CPUs tersedia untuk wadah. Akibatnya, JVM menyesuaikan semua pengaturan internalnya untuk berjalan seolah-olah hanya inti `1` CPU yang tersedia. Pengaturan ini memengaruhi pengumpulan sampah, kunci, utas kompiler, dan internal JVM lainnya yang berdampak negatif pada konkurensi, throughput, dan latensi wadah.

Untuk contoh kesalahan deteksi, dalam wadah yang dikonfigurasi untuk SageMaker AI yang digunakan dengan JVM yang didasarkan pada Java8\$1191 dan yang memiliki empat tersedia CPUs pada instance, jalankan perintah berikut untuk memulai JVM Anda:

```
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
```

Ini menghasilkan output berikut:

```
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
```

Banyak yang JVMs terpengaruh oleh masalah ini memiliki opsi untuk menonaktifkan perilaku ini dan membangun kembali akses penuh ke semua yang ada CPUs di instance. Nonaktifkan perilaku yang tidak diinginkan dan buat akses penuh ke semua instance CPUs dengan memasukkan `-XX:-UseContainerSupport` parameter saat memulai aplikasi Java. Misalnya, jalankan `java` perintah untuk memulai JVM Anda sebagai berikut:

```
java -XX:-UseContainerSupport -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
```

Ini menghasilkan output berikut:

```
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
```

Periksa apakah JVM yang digunakan dalam wadah Anda mendukung parameter. `-XX:-UseContainerSupport` Jika ya, selalu lewati parameter saat Anda memulai JVM Anda. Ini menyediakan akses ke semua CPUs dalam kasus Anda. 

Anda mungkin juga mengalami masalah ini saat secara tidak langsung menggunakan JVM dalam SageMaker wadah AI. Misalnya, saat menggunakan JVM untuk mendukung SparkMl Scala. `-XX:-UseContainerSupport`Parameter juga mempengaruhi output yang dikembalikan oleh Java `Runtime.getRuntime().availableProcessors()` API``. 

## Masalah dengan penerapan file model.tar.gz
<a name="deploy-model-troubleshoot-tarballs"></a>

Saat Anda menerapkan model menggunakan `model.tar.gz` file, tarball model tidak boleh menyertakan symlink apa pun. Symlink menyebabkan pembuatan model gagal. Selain itu, kami menyarankan Anda untuk tidak memasukkan file yang tidak perlu di tarball.

## Kontainer primer tidak lulus pemeriksaan kesehatan ping
<a name="deploy-model-troubleshoot-ping"></a>

 Jika wadah utama Anda gagal melakukan ping pemeriksaan kesehatan dengan pesan kesalahan berikut, ini menunjukkan bahwa ada masalah dengan penampung atau skrip Anda: 

```
The primary container for production variant beta did not pass the ping health check. Please check CloudWatch Logs logs for this endpoint.
```

 Untuk memecahkan masalah ini, Anda harus memeriksa CloudWatch log Log untuk titik akhir yang dimaksud untuk melihat apakah ada kesalahan atau masalah yang mencegah penampung merespons atau. `/ping` `/invocations` Log dapat memberikan pesan kesalahan yang dapat menunjukkan masalah. Setelah Anda mengidentifikasi alasan kesalahan dan kegagalan, Anda harus menyelesaikan kesalahan. 

 Ini juga merupakan praktik yang baik untuk menguji penerapan model secara lokal sebelum membuat titik akhir. 
+  Gunakan mode lokal di SageMaker SDK untuk meniru lingkungan yang dihosting dengan menerapkan model ke titik akhir lokal. Untuk informasi selengkapnya, lihat [Mode Lokal](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode). 
+  Gunakan perintah vanilla docker untuk menguji container merespons /ping dan /invocations. Untuk informasi selengkapnya, lihat [local\$1test](https://github.com/aws/amazon-sagemaker-examples/tree/main/advanced_functionality/scikit_bring_your_own/container/local_test). 

# Praktik terbaik pengoptimalan biaya inferensi
<a name="inference-cost-optimization"></a>

Konten berikut menyediakan teknik dan pertimbangan untuk mengoptimalkan biaya titik akhir. Anda dapat menggunakan rekomendasi ini untuk mengoptimalkan biaya untuk titik akhir baru dan yang sudah ada.

## Praktik terbaik
<a name="inference-cost-optimization-list"></a>

Untuk mengoptimalkan biaya Inferensi SageMaker AI Anda, ikuti praktik terbaik ini.

### Pilih opsi inferensi terbaik untuk pekerjaan itu.
<a name="collapsible-1"></a>

SageMaker AI menawarkan 4 opsi inferensi berbeda untuk memberikan opsi inferensi terbaik untuk pekerjaan itu. Anda mungkin dapat menghemat biaya dengan memilih opsi inferensi yang paling sesuai dengan beban kerja Anda.
+ Gunakan [inferensi real-time](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) untuk beban kerja latensi rendah dengan pola lalu lintas yang dapat diprediksi yang harus memiliki karakteristik latensi yang konsisten dan selalu tersedia. Anda membayar untuk menggunakan instance.
+ Gunakan [inferensi tanpa server](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html) untuk beban kerja sinkron yang memiliki pola lalu lintas runcing dan dapat menerima variasi dalam latensi p99. Inferensi tanpa server secara otomatis menskalakan untuk memenuhi lalu lintas beban kerja Anda sehingga Anda tidak membayar sumber daya idle apa pun. Anda hanya membayar untuk durasi permintaan inferensi. Model dan wadah yang sama dapat digunakan dengan inferensi real-time dan tanpa server sehingga Anda dapat beralih di antara dua mode ini jika kebutuhan Anda berubah.
+ Gunakan [inferensi asinkron](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference.html) untuk beban kerja asinkron yang memproses hingga 1 GB data (seperti korpus teks, gambar, video, dan audio) yang tidak sensitif terhadap latensi dan sensitif biaya. Dengan inferensi asinkron, Anda dapat mengontrol biaya dengan menentukan jumlah instans tetap untuk tingkat pemrosesan optimal alih-alih menyediakan untuk puncak. Anda juga dapat menurunkan skala ke nol untuk menghemat biaya tambahan.
+ Gunakan [inferensi batch](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) untuk beban kerja yang Anda perlukan inferensi untuk sekumpulan besar data untuk proses yang terjadi secara offline (yaitu, Anda tidak memerlukan titik akhir yang persisten). Anda membayar instance untuk durasi pekerjaan inferensi batch.

### Ikut serta dalam SageMaker AI Savings Plan.
<a name="collapsible-2"></a>
+ Jika Anda memiliki tingkat penggunaan yang konsisten di semua layanan SageMaker AI, Anda dapat ikut serta dalam SageMaker AI Savings Plan untuk membantu mengurangi biaya hingga 64%.
+ [Amazon SageMaker AI Savings Plans](https://aws.amazon.com/savingsplans/ml-pricing/) menyediakan model harga yang fleksibel untuk Amazon SageMaker AI, dengan imbalan komitmen terhadap jumlah penggunaan yang konsisten (diukur dalam \$1/jam) untuk jangka waktu satu tahun atau tiga tahun. Paket ini secara otomatis berlaku untuk penggunaan instans SageMaker AI ML yang memenuhi syarat termasuk SageMaker Studio Classic Notebook, SageMaker On-Demand Notebook, SageMaker Processing, SageMaker Data Wrangler, SageMaker Training, SageMaker Real-Time Inference, dan SageMaker Batch Transform terlepas dari keluarga instans, ukuran, atau Wilayah. Misalnya, Anda dapat mengubah penggunaan dari instance CPU ml.c5.xlarge yang berjalan di US East (Ohio) ke instans ML.INF1 di US West (Oregon) untuk beban kerja inferensi kapan saja dan secara otomatis terus membayar harga Savings Plans.

### Optimalkan model Anda agar berjalan lebih baik.
<a name="collapsible-3"></a>
+ Model yang tidak dioptimalkan dapat menyebabkan waktu berjalan lebih lama dan menggunakan lebih banyak sumber daya. Anda dapat memilih untuk menggunakan lebih banyak atau lebih besar contoh untuk meningkatkan kinerja; Namun, ini mengarah pada biaya yang lebih tinggi.
+ Dengan mengoptimalkan model Anda agar lebih berkinerja, Anda mungkin dapat menurunkan biaya dengan menggunakan instance yang lebih sedikit atau lebih kecil sambil mempertahankan karakteristik kinerja yang sama atau lebih baik. Anda dapat menggunakan [SageMaker Neo](https://aws.amazon.com/sagemaker/neo/) dengan SageMaker AI Inference untuk mengoptimalkan model secara otomatis. Untuk detail dan sampel lebih lanjut, lihat[Optimalisasi kinerja model dengan SageMaker Neo](neo.md).

### Gunakan jenis dan ukuran instans yang paling optimal untuk inferensi waktu nyata.
<a name="collapsible-4"></a>
+ SageMaker Inferensi memiliki lebih dari 70 jenis dan ukuran instans yang dapat digunakan untuk menerapkan model ML termasuk chipset AWS Inferentia dan Graviton yang dioptimalkan untuk ML. Memilih instance yang tepat untuk model Anda membantu memastikan Anda memiliki instance berkinerja terbaik dengan biaya terendah untuk model Anda.
+ Dengan menggunakan [Inference Recommender](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender.html), Anda dapat dengan cepat membandingkan instans yang berbeda untuk memahami kinerja model dan biaya. Dengan hasil ini, Anda dapat memilih instans untuk digunakan dengan laba atas investasi terbaik.

### Tingkatkan efisiensi dan biaya dengan menggabungkan beberapa titik akhir menjadi satu titik akhir untuk inferensi waktu nyata.
<a name="collapsible-5"></a>
+ Biaya dapat bertambah dengan cepat saat Anda menerapkan beberapa titik akhir, terutama jika titik akhir tidak sepenuhnya memanfaatkan instance yang mendasarinya. Untuk mengetahui apakah instans kurang digunakan, periksa metrik penggunaan (CPU, GPU, dll) di Amazon untuk instance Anda. CloudWatch Jika Anda memiliki lebih dari satu titik akhir ini, Anda dapat menggabungkan model atau wadah pada beberapa titik akhir ini menjadi satu titik akhir.
+ Dengan menggunakan [Multi-model endpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) (MME) atau [Multi-container endpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-container-endpoints.html) (MCE), Anda dapat menerapkan beberapa model atau kontainer ML dalam satu titik akhir untuk berbagi instance di beberapa model atau kontainer dan meningkatkan laba atas investasi Anda. Untuk mempelajari lebih lanjut, lihat ini [Menghemat biaya inferensi dengan menggunakan titik akhir multi-model Amazon SageMaker AI atau Menerapkan beberapa kontainer penyajian pada satu instance menggunakan titik akhir](https://aws.amazon.com/blogs/machine-learning/save-on-inference-costs-by-using-amazon-sagemaker-multi-model-endpoints/) [multi-kontainer Amazon SageMaker AI di](https://aws.amazon.com/blogs/machine-learning/deploy-multiple-serving-containers-on-a-single-instance-using-amazon-sagemaker-multi-container-endpoints/) blog Machine Learning. AWS 

### Siapkan penskalaan otomatis agar sesuai dengan persyaratan beban kerja Anda untuk inferensi real-time dan asinkron.
<a name="collapsible-6"></a>
+ Tanpa penskalaan otomatis, Anda perlu menyediakan lalu lintas puncak atau tidak tersedianya model risiko. Kecuali lalu lintas ke model Anda stabil sepanjang hari, akan ada kelebihan kapasitas yang tidak terpakai. Hal ini menyebabkan rendahnya pemanfaatan dan sumber daya yang terbuang.
+ [Autoscaling](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html) adalah out-of-the-box fitur yang memantau beban kerja Anda dan secara dinamis menyesuaikan kapasitas untuk mempertahankan kinerja yang stabil dan dapat diprediksi dengan biaya terendah yang mungkin. Ketika beban kerja meningkat, penskalaan otomatis membawa lebih banyak contoh online. Ketika beban kerja berkurang, penskalaan otomatis menghapus instans yang tidak perlu, membantu Anda mengurangi biaya komputasi. Untuk mempelajari lebih lanjut, lihat [Mengonfigurasi titik akhir inferensi penskalaan otomatis di Amazon AI di blog Machine SageMaker Learning](https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/). AWS 

# Praktik terbaik untuk meminimalkan gangguan selama peningkatan driver GPU
<a name="inference-gpu-drivers"></a>

SageMaker Penerapan Model AI memutakhirkan driver GPU pada instans ML untuk opsi Inferensi Real-time, Batch, dan Asynchronous dari waktu ke waktu untuk memberi pelanggan akses ke peningkatan dari penyedia driver. Di bawah ini Anda dapat melihat versi GPU yang didukung untuk setiap opsi Inferensi. Versi driver yang berbeda dapat mengubah cara model Anda berinteraksi dengan. GPUs Di bawah ini adalah beberapa strategi untuk membantu Anda memahami cara kerja aplikasi Anda dengan versi driver yang berbeda. 

## Versi saat ini dan keluarga instans yang didukung
<a name="inference-gpu-drivers-versions"></a>

Amazon SageMaker AI Inference mendukung driver dan keluarga instans berikut:

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

## Memecahkan masalah wadah model Anda dengan kemampuan GPU
<a name="inference-gpu-drivers-troubleshoot"></a>

Jika Anda mengalami masalah saat menjalankan beban kerja GPU, lihat panduan berikut:

### Kegagalan deteksi kartu GPU atau kesalahan inisialisasi NVIDIA
<a name="collapsible-section-0"></a>

Jalankan perintah `nvidia-smi` (NVIDIA System Management Interface) dari dalam wadah Docker. Jika Antarmuka Manajemen Sistem NVIDIA mendeteksi kesalahan deteksi GPU atau kesalahan inisialisasi NVIDIA, itu akan mengembalikan pesan kesalahan berikut:

```
Failed to initialize NVML: Driver/library version mismatch
```

Berdasarkan kasus penggunaan Anda, ikuti praktik terbaik berikut ini untuk mengatasi kegagalan atau kesalahan:
+ Ikuti rekomendasi praktik terbaik yang dijelaskan dalam [Jika Anda membawa wadah model (BYO) Anda sendiri](#collapsible-byoc) dropdown.
+ Ikuti rekomendasi praktik terbaik yang dijelaskan dalam [Jika Anda menggunakan lapisan kompatibilitas CUDA](#collapsible-cuda-compat) dropdown.

Lihat [halaman Antarmuka Manajemen Sistem NVIDIA](https://developer.nvidia.com/nvidia-system-management-interface) di situs web NVIDIA untuk informasi lebih lanjut.

### `CannotStartContainerError`
<a name="collapsible-section-cannot-start-container"></a>

 Jika instans GPU Anda menggunakan versi driver NVIDIA yang tidak kompatibel dengan versi CUDA di wadah Docker, maka penerapan titik akhir akan gagal dengan pesan kesalahan berikut: 

```
 Failure reason CannotStartContainerError. Please ensure the model container for variant <variant_name> starts correctly when invoked with 'docker run <image> serve'
```

Berdasarkan kasus penggunaan Anda, ikuti praktik terbaik berikut ini untuk mengatasi kegagalan atau kesalahan:
+ Ikuti rekomendasi praktik terbaik yang dijelaskan dalam [Driver yang bergantung pada wadah saya lebih besar dari versi pada instance GPU ML](#collapsible-driver-dependency-higher) dropdown.
+ Ikuti rekomendasi praktik terbaik yang dijelaskan dalam [Jika Anda menggunakan lapisan kompatibilitas CUDA](#collapsible-cuda-compat) dropdown.

## Praktik terbaik untuk bekerja dengan versi driver yang tidak cocok
<a name="inference-gpu-drivers-cuda-toolkit-updates"></a>

Berikut ini memberikan informasi tentang cara memperbarui driver GPU Anda:

### Driver yang bergantung pada wadah saya lebih rendah dari versi pada instance GPU ML
<a name="collapsible-driver-dependency-lower"></a>

Tidak ada tindakan yang diperlukan. NVIDIA menyediakan kompatibilitas mundur.

### Driver yang bergantung pada wadah saya lebih besar dari versi pada instance GPU ML
<a name="collapsible-driver-dependency-higher"></a>

Jika ini adalah perbedaan versi kecil, tidak ada tindakan yang diperlukan. NVIDIA menyediakan kompatibilitas maju versi minor.

Jika itu adalah perbedaan versi utama, CUDA Compatibility Package perlu diinstal. Silakan merujuk ke [CUDA Compatibility Package](https://docs.nvidia.com/deploy/cuda-compatibility/index.html) dalam dokumentasi NVIDIA.

**penting**  
CUDA Compatibility Package tidak kompatibel ke belakang sehingga perlu dinonaktifkan jika versi driver pada instance lebih besar dari versi CUDA Compatibility Package.

### Jika Anda membawa wadah model (BYO) Anda sendiri
<a name="collapsible-byoc"></a>

Pastikan tidak ada paket driver NVIDIA yang dibundel dalam gambar yang dapat menyebabkan konflik dengan versi driver NVIDIA host.

### Jika Anda menggunakan lapisan kompatibilitas CUDA
<a name="collapsible-cuda-compat"></a>

Untuk memverifikasi apakah platform versi driver Nvidia mendukung versi CUDA Compatibility Package yang diinstal dalam wadah model, lihat dokumentasi [CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package). Jika platform versi driver Nvidia tidak mendukung versi CUDA Compatibility Package, Anda dapat menonaktifkan atau menghapus CUDA Compatibility Package dari gambar wadah model. Jika versi libs kompatibilitas CUDA didukung oleh versi driver Nvidia terbaru, kami sarankan Anda mengaktifkan CUDA Compatibility Package berdasarkan versi driver Nvidia yang terdeteksi untuk kompatibilitas masa depan dengan menambahkan cuplikan kode di bawah ini ke dalam skrip shell start up container (di skrip). `ENTRYPOINT`

Skrip menunjukkan cara mengganti penggunaan CUDA Compatibility Package secara dinamis berdasarkan versi driver Nvidia yang terdeteksi pada host yang digunakan untuk wadah model Anda. Saat SageMaker merilis versi driver Nvidia yang lebih baru, CUDA Compatibility Package yang diinstal dapat dimatikan secara otomatis jika aplikasi CUDA didukung secara native pada driver baru.

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```

# Praktik terbaik untuk keamanan dan kesehatan titik akhir dengan Amazon AI SageMaker
<a name="best-practice-endpoint-security"></a>

Untuk mengatasi masalah keamanan terbaru, Amazon SageMaker AI secara otomatis menambal titik akhir ke perangkat lunak terbaru dan paling aman. Namun, jika Anda salah mengubah dependensi titik akhir Anda, Amazon SageMaker AI tidak dapat secara otomatis menambal titik akhir Anda atau mengganti instance Anda yang tidak sehat. Untuk memastikan titik akhir Anda tetap memenuhi syarat untuk pembaruan otomatis, terapkan praktik terbaik berikut.

## Jangan hapus sumber daya saat titik akhir Anda menggunakannya
<a name="dont-delete-resources-in-use"></a>

Hindari menghapus salah satu sumber daya berikut jika Anda memiliki titik akhir yang menggunakannya:
+ Definisi model yang Anda buat dengan [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)tindakan di Amazon SageMaker API.
+ Artefak model apa pun yang Anda tentukan untuk [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-ModelDataUrl](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-ModelDataUrl)parameter.
+ Peran IAM dan izin yang Anda tentukan untuk parameter. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn)
**Pengingat**  
Dalam definisi model yang digunakan endpoint Anda, pastikan bahwa peran IAM yang Anda tentukan memiliki izin yang benar. Untuk informasi selengkapnya tentang izin yang diperlukan untuk titik akhir Amazon SageMaker AI, lihat. [CreateModel API: Izin Peran Eksekusi](sagemaker-roles.md#sagemaker-roles-createmodel-perms)
+ Gambar inferensi yang Anda tentukan untuk [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-Image](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-Image)parameter, jika Anda menggunakan kode inferensi Anda sendiri.
**Pengingat**  
Jika Anda menggunakan fitur registri pribadi, pastikan Amazon SageMaker AI dapat mengakses registri pribadi selama Anda menggunakan titik akhir.
+ Subnet Amazon VPC dan grup keamanan yang Anda tentukan untuk parameter. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-VpcConfig)
+ Konfigurasi titik akhir yang Anda buat dengan [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)tindakan di Amazon SageMaker API.
+ Kunci KMS atau bucket Amazon S3 apa pun yang Anda tentukan dalam konfigurasi titik akhir.
**Pengingat**  
Pastikan Anda tidak menonaktifkan kunci KMS ini.

## Ikuti prosedur ini untuk memperbarui titik akhir Anda
<a name="procedures-to-update-endpoint"></a>

Saat Anda memperbarui titik akhir Amazon SageMaker AI, gunakan salah satu prosedur berikut yang berlaku untuk kebutuhan Anda.

**Untuk memperbarui setelan definisi model Anda**

1. Buat definisi model baru dengan pengaturan yang diperbarui dengan menggunakan CreateModel tindakan di Amazon SageMaker API.

1. Buat konfigurasi endpoint baru yang menggunakan definisi model baru. Untuk melakukan ini, gunakan CreateEndpointConfig tindakan di Amazon SageMaker API.

1. Perbarui titik akhir Anda dengan konfigurasi titik akhir yang baru sehingga pengaturan definisi model yang diperbarui diterapkan.

1. (Opsional) Hapus konfigurasi titik akhir lama jika Anda tidak menggunakannya dengan titik akhir lainnya. Anda juga dapat menghapus sumber daya yang Anda tentukan dalam definisi model jika Anda tidak menggunakannya dengan titik akhir lainnya. Sumber daya ini mencakup artefak model di Amazon S3 dan gambar inferensi.

**Untuk memperbarui konfigurasi titik akhir Anda**

1. Buat konfigurasi titik akhir baru dengan pengaturan yang diperbarui.

1. Perbarui titik akhir Anda dengan konfigurasi baru sehingga pembaruan Anda berlaku.

1. (Opsional) Hapus konfigurasi titik akhir lama jika Anda tidak menggunakannya dengan titik akhir lainnya. Anda juga dapat menghapus sumber daya yang Anda tentukan dalam definisi model jika Anda tidak menggunakannya dengan titik akhir lainnya. Sumber daya ini mencakup artefak model di Amazon S3 dan gambar inferensi.

Setiap kali Anda membuat definisi model baru atau konfigurasi titik akhir, kami sarankan Anda menggunakan nama yang unik. Jika Anda ingin memperbarui sumber daya ini dan mempertahankan nama aslinya, gunakan prosedur berikut.

**Untuk memperbarui pengaturan model Anda dan mempertahankan nama model asli**

1. Hapus definisi model yang ada. Pada titik ini, titik akhir apa pun yang menggunakan model rusak, tetapi Anda memperbaikinya dalam langkah-langkah berikut.

1. Buat definisi model lagi dengan pengaturan yang diperbarui, dan gunakan nama model yang sama.

1. Buat konfigurasi endpoint baru yang menggunakan definisi model yang diperbarui.

1. Perbarui titik akhir Anda dengan konfigurasi titik akhir baru sehingga pembaruan Anda berlaku.

**Untuk memperbarui konfigurasi titik akhir Anda dan mempertahankan nama konfigurasi asli**

1. Hapus konfigurasi endpoint yang ada.

1. Buat konfigurasi titik akhir baru dengan pengaturan yang diperbarui, dan gunakan nama aslinya.

1. Perbarui titik akhir Anda dengan konfigurasi baru sehingga pembaruan Anda berlaku.

# Memperbarui kontainer inferensi untuk mematuhi NVIDIA Container Toolkit
<a name="container-nvidia-compliance"></a>

Pada versi 1.17.4 dan yang lebih tinggi, NVIDIA Container Toolkit tidak lagi memasang pustaka kompatibilitas CUDA secara otomatis. Perubahan perilaku ini dapat memengaruhi beban kerja inferensi SageMaker AI Anda. Titik akhir SageMaker AI dan pekerjaan transformasi batch Anda mungkin menggunakan kontainer yang tidak kompatibel dengan versi terbaru dari NVIDIA Container Toolkit. Untuk memastikan bahwa beban kerja Anda memenuhi persyaratan terbaru, Anda mungkin perlu memperbarui titik akhir atau mengonfigurasi pekerjaan transformasi batch Anda.

## Memperbarui titik akhir SageMaker AI untuk kepatuhan
<a name="endpoint-compliance"></a>

Kami menyarankan Anda memperbarui titik akhir SageMaker AI yang ada atau membuat yang baru yang mendukung perilaku default terbaru.

Untuk memastikan titik akhir Anda kompatibel dengan versi terbaru dari NVIDIA Container Toolkit, ikuti langkah-langkah berikut:

1. Perbarui cara Anda mengatur pustaka kompatibilitas CUDA jika Anda membawa wadah Anda sendiri.

1. Tentukan inferensi Amazon Machine Image (AMI) yang mendukung perilaku NVIDIA Container Toolkit terbaru. Anda menentukan AMI saat memperbarui titik akhir yang ada atau membuat yang baru.

### Memperbarui pengaturan kompatibilitas CUDA jika Anda membawa wadah Anda sendiri
<a name="cuda-compatibility"></a>

Pustaka kompatibilitas CUDA memungkinkan kompatibilitas ke depan. Kompatibilitas ini berlaku untuk semua versi toolkit CUDA yang lebih baru dari driver NVIDIA yang disediakan oleh instance AI. SageMaker 

Anda harus mengaktifkan pustaka kompatibilitas CUDA hanya ketika driver NVIDIA yang digunakan instance SageMaker AI memiliki versi yang lebih lama daripada toolkit CUDA dalam wadah model. Jika wadah model Anda tidak memerlukan kompatibilitas CUDA, Anda dapat melewati langkah ini. Misalnya, Anda dapat melewati langkah ini jika Anda tidak berencana untuk menggunakan toolkit CUDA yang lebih baru daripada yang disediakan oleh SageMaker instance AI.

Karena perubahan yang diperkenalkan di NVIDIA Container Toolkit versi 1.17.4, Anda dapat secara eksplisit mengaktifkan pustaka kompatibilitas CUDA, jika diperlukan, dengan menambahkannya ke dalam wadah. `LD_LIBRARY_PATH`

Kami menyarankan Anda mengaktifkan kompatibilitas CUDA berdasarkan versi driver NVIDIA yang terdeteksi. Untuk mengaktifkannya, tambahkan cuplikan kode di bawah ini ke skrip shell startup container. Tambahkan kode ini di `ENTRYPOINT` skrip.

Skrip berikut menunjukkan cara mengganti penggunaan kompatibilitas CUDA secara dinamis berdasarkan versi driver NVIDIA yang terdeteksi pada host yang digunakan untuk wadah model Anda.

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```

### Menentukan AMI Inferensi yang sesuai dengan NVIDIA Container Toolkit
<a name="specify-inference-ami"></a>

Dalam `InferenceAmiVersion` parameter tipe `ProductionVariant` data, Anda dapat memilih AMI untuk titik akhir SageMaker AI. Masing-masing yang didukung AMIs adalah gambar yang telah dikonfigurasi sebelumnya. Setiap gambar dikonfigurasi AWS dengan satu set perangkat lunak dan versi driver.

Secara default, SageMaker AI AMIs mengikuti perilaku warisan. Mereka secara otomatis memasang pustaka kompatibilitas CUDA di wadah. Untuk membuat titik akhir menggunakan perilaku baru, Anda harus menentukan versi AMI inferensi yang dikonfigurasi untuk perilaku baru.

Versi AMI inferensi berikut saat ini mengikuti perilaku baru. Mereka tidak memasang pustaka kompatibilitas CUDA secara otomatis.

al2- ami-sagemaker-inference-gpu -2-1  
+ Versi driver NVIDIA: 535.54.03
+ Versi CUDA: 12.2

al2- ami-sagemaker-inference-gpu -3-1  
+ Versi driver NVIDIA: 550.144.01
+ Versi CUDA: 12.4

### Memperbarui titik akhir yang ada
<a name="update-existing-endpoint"></a>

Gunakan contoh berikut untuk memperbarui titik akhir yang ada. Contoh menggunakan versi AMI inferensi yang menonaktifkan pemasangan otomatis pustaka kompatibilitas CUDA.

```
ENDPOINT_NAME="<endpoint name>"
INFERENCE_AMI_VERSION="al2-ami-sagemaker-inference-gpu-3-1"

# Obtaining current endpoint configuration
CURRENT_ENDPOINT_CFG_NAME=$(aws sagemaker describe-endpoint --endpoint-name "$ENDPOINT_NAME" --query "EndpointConfigName" --output text)
NEW_ENDPOINT_CFG_NAME="${CURRENT_ENDPOINT_CFG_NAME}new"

# Copying Endpoint Configuration with AMI version specified
aws sagemaker describe-endpoint-config \
    --endpoint-config-name ${CURRENT_ENDPOINT_CFG_NAME} \
    --output json | \
jq "del(.EndpointConfigArn, .CreationTime) | . + {
    EndpointConfigName: \"${NEW_ENDPOINT_CFG_NAME}\",
    ProductionVariants: (.ProductionVariants | map(.InferenceAmiVersion = \"${INFERENCE_AMI_VERSION}\"))
}" > /tmp/new_endpoint_config.json

# Make sure all fields in the new endpoint config look as expected
cat /tmp/new_endpoint_config.json

# Creating new endpoint config
aws sagemaker create-endpoint-config \
   --cli-input-json file:///tmp/new_endpoint_config.json
    
# Updating the endpoint
aws sagemaker update-endpoint \
    --endpoint-name "$ENDPOINT_NAME" \
    --endpoint-config-name "$NEW_ENDPOINT_CFG_NAME" \
    --retain-all-variant-properties
```

### Membuat titik akhir baru
<a name="create-new-endpoint"></a>

Gunakan contoh berikut untuk membuat endpoint baru. Contoh menggunakan versi AMI inferensi yang menonaktifkan pemasangan otomatis pustaka kompatibilitas CUDA.

```
INFERENCE_AMI_VERSION="al2-ami-sagemaker-inference-gpu-3-1"

aws sagemakercreate-endpoint-config \
 --endpoint-config-name "<endpoint_config>" \
 --production-variants '[{ \
    ....
    "InferenceAmiVersion":  "${INFERENCE_AMI_VERSION}", \
    ...
    "}]'

aws sagemaker create-endpoint \
--endpoint-name "<endpoint_name>" \
--endpoint-config-name "<endpoint_config>"
```

## Menjalankan pekerjaan transformasi batch yang sesuai
<a name="batch-compliance"></a>

*Transformasi Batch* adalah opsi inferensi yang paling cocok untuk permintaan memproses data dalam jumlah besar secara offline. Untuk membuat pekerjaan transformasi batch, Anda menggunakan tindakan `CreateTransformJob` API. Untuk informasi selengkapnya, lihat [Transformasi Batch untuk inferensi dengan Amazon AI SageMaker](batch-transform.md).

Perilaku yang berubah dari NVIDIA Container Toolkit memengaruhi pekerjaan transformasi batch. Untuk menjalankan transformasi batch yang sesuai dengan persyaratan NVIDIA Container Toolkit, lakukan hal berikut:

1. Jika Anda ingin menjalankan transformasi batch dengan model yang Anda bawa penampungnya sendiri, pertama-tama, perbarui wadah untuk kompatibilitas CUDA. Untuk memperbaruinya, ikuti prosesnya di[Memperbarui pengaturan kompatibilitas CUDA jika Anda membawa wadah Anda sendiri](#cuda-compatibility).

1. Gunakan aksi `CreateTransformJob` API untuk membuat pekerjaan transformasi batch. Dalam permintaan Anda, atur variabel `SAGEMAKER_CUDA_COMPAT_DISABLED` lingkungan ke`true`. Parameter ini menginstruksikan ke wadah untuk tidak secara otomatis memasang pustaka kompatibilitas CUDA.

   Misalnya, saat Anda membuat pekerjaan transformasi batch dengan menggunakan AWS CLI, Anda mengatur variabel lingkungan dengan `--environment` parameter:

   ```
   aws sagemaker create-transform-job \
       --environment '{"SAGEMAKER_CUDA_COMPAT_DISABLED": "true"}'\
       . . .
   ```

# Fitur yang didukung
<a name="model-deploy-feature-matrix"></a>

 Amazon SageMaker AI menawarkan empat opsi berikut untuk menerapkan model untuk inferensi. 
+  Inferensi real-time untuk beban kerja inferensi dengan persyaratan real-time, interaktif, latensi rendah. 
+  Transformasi Batch untuk inferensi offline dengan kumpulan data besar. 
+  Inferensi asinkron untuk inferensi dengan input besar near-real-time yang membutuhkan waktu pra-pemrosesan yang lebih lama. 
+  Inferensi tanpa server untuk beban kerja inferensi yang memiliki periode idle antara lonjakan lalu lintas. 

 Tabel berikut merangkum fitur platform inti yang didukung oleh setiap opsi inferensi. Itu tidak menampilkan fitur yang dapat disediakan oleh kerangka kerja, wadah Docker khusus, atau melalui rantai layanan yang berbeda. AWS 


| Fitur | [Inferensi waktu nyata](realtime-endpoints.md) | [Transformasi Batch](batch-transform.md) | [Inferensi asinkron](async-inference.md) | [Inferensi tanpa server](serverless-endpoints.md) | [Kontainer Docker](docker-containers.md) | 
| --- | --- | --- | --- | --- | --- | 
| [Dukungan penskalaan otomatis](endpoint-auto-scaling.md) | ✓ | N/A | ✓ | ✓ | N/A | 
| Dukungan GPU | ✓ 1 | ✓ 1 | ✓ 1 |  | [1P](common-info-all-im-models.md), pra-dibangun, BYOC | 
| Model tunggal | ✓ | ✓ | ✓ | ✓ | N/A | 
| [Titik akhir multi-model](multi-model-endpoints.md) | ✓ |  |  |  | K-NN,, Pelajar Linier XGBoost, RCF, Apache,, scikit-belajar TensorFlow 2 MXNet PyTorch | 
| [Titik akhir multi-kontainer](multi-container-endpoints.md) | ✓ |  |  |  | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | 
| [Pipa inferensi serial](inference-pipelines.md) | ✓ | ✓ |  |  | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | 
| [Rekomendasi Inferensi](inference-recommender.md) | ✓ |  |  |  | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | 
| Dukungan tautan pribadi | ✓ | ✓ | ✓ |  | N/A | 
| [Dukungan capture/Model monitor data](model-monitor.md) | ✓ | ✓ |  |  | N/A | 
| [DLCs didukung](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | [1P](common-info-all-im-models.md), pra-dibangun, Perpanjang pra-dibangun, BYOC | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | N/A | 
| Protokol yang didukung | HTTP | HTTP | HTTP | HTTP | N/A | 
| Ukuran muatan | < 6 MB | ≤ 100 MB | ≤ 1 GB | ≤ 4 MB |  | 
| Pengkodean chunked HTTP | Framework dependen, 1P tidak didukung | N/A | Framework dependen, 1P tidak didukung | Framework dependen, 1P tidak didukung | N/A | 
| Batas waktu permintaan | < 60 detik | Hari | < 1 jam | < 60 detik | N/A | 
| [Pagar pembatas penyebaran: penerapan blue/green ](deployment-guardrails.md) | ✓ | N/A | ✓ |  | N/A | 
| [Pagar pembatas penyebaran: penerapan bergulir](deployment-guardrails.md) | ✓ | N/A | ✓ |  | N/A | 
| [Pengujian bayangan](shadow-tests.md) | ✓ |  |  |  | N/A | 
| Skala ke nol |  | N/A | ✓ | ✓ | N/A | 
| Dukungan paket model pasar | ✓ | ✓ | ✓ |  | N/A | 
| Dukungan cloud pribadi virtual | ✓ | ✓ | ✓ |  | N/A | 
| Beberapa varian produksi mendukung | ✓ |  |  |  | N/A | 
| Isolasi jaringan | ✓ |  | ✓ |  | N/A | 
| [Dukungan penyajian paralel model](model-parallel-intro.md) | ✓ 3 | ✓ | ✓ 3 |  | ✓ 3 | 
| Enkripsi volume | ✓ | ✓ | ✓ | ✓ | N/A | 
| Pelanggan AWS KMS | ✓ | ✓ | ✓ | ✓ | N/A | 
| d contoh dukungan | ✓ | ✓ | ✓ |  | N/A | 
| [dukungan inf1](neo-supported-cloud.md) | ✓ |  |  |  | ✓ | 

 Dengan SageMaker AI, Anda dapat menerapkan satu model, atau beberapa model di belakang titik akhir inferensi tunggal untuk inferensi waktu nyata. Tabel berikut merangkum fitur-fitur inti yang didukung oleh berbagai opsi hosting yang datang dengan inferensi real-time. 


| Fitur | [Titik akhir model tunggal](realtime-single-model.md) | [Titik akhir multi-model](multi-model-endpoints.md) | [Pipa inferensi serial](inference-pipelines.md) | [Titik akhir multi-kontainer](multi-container-endpoints.md) | 
| --- | --- | --- | --- | --- | 
| [Dukungan penskalaan otomatis](endpoint-auto-scaling.md) | ✓ | ✓ | ✓ | ✓ | 
| Dukungan GPU | ✓ 1 | ✓ | ✓ |  | 
| Model tunggal | ✓ | ✓ | ✓ | ✓ | 
| [Titik akhir multi-model](multi-model-endpoints.md) |  | ✓ | ✓ | N/A | 
| [Titik akhir multi-kontainer](multi-container-endpoints.md) | ✓ |  |  | N/A | 
| [Pipa inferensi serial](inference-pipelines.md) | ✓ | ✓ | N/A |  | 
| [Rekomendasi Inferensi](inference-recommender.md) | ✓ |  |  |  | 
| Dukungan tautan pribadi | ✓ | ✓ | ✓ | ✓ | 
| [Dukungan capture/Model monitor data](model-monitor.md) | ✓ | N/A | N/A | N/A | 
| DLCs didukung | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | K-NN,, Pelajar Linier XGBoost, RCF, Apache,, scikit-belajar TensorFlow 2 MXNet PyTorch | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | 1P, pra-dibangun, Perpanjang pra-dibangun, BYOC | 
| Protokol yang didukung | HTTP | HTTP | HTTP | HTTP | 
| Ukuran muatan | < 6 MB | < 6 MB | < 6 MB | < 6 MB | 
| Batas waktu permintaan | < 60 detik | < 60 detik | < 60 detik | < 60 detik | 
| [Pagar pembatas penyebaran: penerapan blue/green ](deployment-guardrails.md) | ✓ | ✓ | ✓ | ✓ | 
| [Pagar pembatas penyebaran: penerapan bergulir](deployment-guardrails.md) | ✓ | ✓ | ✓ | ✓ | 
| [Pengujian bayangan](shadow-tests.md) | ✓ |  |  |  | 
| Dukungan paket model pasar | ✓ |  |  |  | 
| Dukungan cloud pribadi virtual | ✓ | ✓ | ✓ | ✓ | 
| Beberapa varian produksi mendukung | ✓ |  | ✓ | ✓ | 
| Isolasi jaringan | ✓ | ✓ | ✓ | ✓ | 
| [Dukungan penyajian paralel model](model-parallel-intro.md) | ✓ 3 |  | ✓ 3 |  | 
| Enkripsi volume | ✓ | ✓ | ✓ | ✓ | 
| Pelanggan AWS KMS | ✓ | ✓ | ✓ | ✓ | 
| d contoh dukungan | ✓ | ✓ | ✓ | ✓ | 
| [dukungan inf1](neo-supported-cloud.md) | ✓ |  |  |  | 

 1 Ketersediaan jenis instans Amazon EC2 tergantung pada Wilayah. AWS Untuk ketersediaan instans khusus untuk AWS, lihat [Harga Amazon SageMaker AI](https://aws.amazon.com/sagemaker/pricing/). 

 2 Untuk menggunakan kerangka kerja atau algoritme lain, gunakan toolkit Inference SageMaker AI untuk membangun wadah yang mendukung titik akhir multi-model. 

 3 Dengan SageMaker AI, Anda dapat menerapkan model besar (hingga 500 GB) untuk inferensi. Anda dapat mengonfigurasi pemeriksaan kesehatan kontainer dan mengunduh kuota batas waktu, hingga 60 menit. Ini akan memungkinkan Anda memiliki lebih banyak waktu untuk mengunduh dan memuat model dan sumber daya terkait Anda. Untuk informasi selengkapnya, lihat [SageMaker Parameter titik akhir AI untuk inferensi model besar](large-model-inference-hosting.md). Anda dapat menggunakan [wadah Inferensi model besar](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers) yang kompatibel dengan SageMaker AI. Anda juga dapat menggunakan pustaka paralelisasi model pihak ketiga, seperti Triton dengan dan. FasterTransformer DeepSpeed Anda harus memastikan bahwa mereka kompatibel dengan SageMaker AI. 

# Sumber daya
<a name="inference-resources"></a>

Gunakan sumber daya berikut untuk pemecahan masalah dan referensi, menjawab FAQ, dan mempelajari lebih lanjut tentang Amazon AI. SageMaker 

**Topics**
+ [Blog, contoh buku catatan, dan sumber daya tambahan](deploy-model-blogs.md)
+ [Pemecahan masalah dan referensi](deploy-model-reference.md)
+ [Model Hosting FAQs](hosting-faqs.md)

# Blog, contoh buku catatan, dan sumber daya tambahan
<a name="deploy-model-blogs"></a>

Bagian berikut berisi contoh dan sumber daya tambahan bagi Anda untuk mempelajari lebih lanjut tentang Amazon SageMaker AI.

## Blog dan Studi Kasus
<a name="deploy-model-blogs-table"></a>

Lihat tabel berikut untuk daftar blog dan studi kasus untuk berbagai fitur dalam Inferensi SageMaker AI. Anda dapat menggunakan blog untuk membantu mengumpulkan solusi yang sesuai untuk kasus penggunaan Anda.


| Fitur | Sumber daya | 
| --- | --- | 
|  Inferensi Waktu Nyata  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Penskalaan otomatis  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Inferensi Tanpa Server  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Inferensi Asinkron  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Transformasi Batch  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Titik Akhir Multi-Model  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Pipa Inferensi Serial  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Titik Akhir Multi-Kontainer  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Menjalankan Ansambel Model  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Rekomendasi Inferensi  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Seri blog hosting model lanjutan  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 

## Notebook contoh
<a name="deploy-model-blogs-nbs"></a>

Lihat tabel berikut misalnya buku catatan yang dapat membantu Anda mempelajari lebih lanjut tentang Inferensi SageMaker AI.


| Fitur | Notebook contoh | 
| --- | --- | 
|  Rekomendasi Inferensi  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/deploy-model-blogs.html)  | 
|  Optimalkan model bahasa besar (LLMs) untuk SageMaker AI  |  [Lokakarya AI LLMs generatif](https://github.com/aws/amazon-sagemaker-examples/tree/main/inference/generativeai/llm-workshop)  | 

## Sumber daya tambahan
<a name="deploy-model-blogs-extras"></a>

Untuk informasi lebih lanjut tentang setiap opsi Inferensi SageMaker AI secara detail, Anda dapat menonton video berikut.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/4FqHt5bmS2o/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/4FqHt5bmS2o)


# Pemecahan masalah dan referensi
<a name="deploy-model-reference"></a>

Anda dapat menggunakan sumber daya dan dokumentasi referensi berikut untuk memahami praktik terbaik saat menggunakan Inferensi SageMaker AI dan untuk memecahkan masalah dengan penerapan model:
+ Untuk pemecahan masalah penerapan model, lihat. [Memecahkan masalah penerapan model Amazon SageMaker AI](deploy-model-troubleshoot.md)
+ Untuk praktik terbaik penerapan model, lihat [Praktik terbaik](https://docs.aws.amazon.com/sagemaker/latest/dg/best-practices.html).
+ Untuk informasi referensi tentang ukuran volume penyimpanan yang disediakan untuk berbagai ukuran instans hosting, lihat[Volume penyimpanan instans](host-instance-storage.md).
+ Untuk informasi referensi tentang batas dan kuota SageMaker AI, lihat [titik akhir dan kuota Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).
+ Untuk pertanyaan umum tentang SageMaker AI, lihat[Model Hosting FAQs](hosting-faqs.md).

# Model Hosting FAQs
<a name="hosting-faqs"></a>

Lihat item FAQ berikut untuk jawaban atas pertanyaan umum tentang SageMaker AI Inference Hosting.

## Hosting Umum
<a name="hosting-faqs-general"></a>

Item FAQ berikut menjawab pertanyaan umum umum untuk Inferensi SageMaker AI.

### T: Opsi penerapan apa yang disediakan Amazon SageMaker AI?
<a name="hosting-faqs-general-1"></a>

J: Setelah Anda membuat dan melatih model, Amazon SageMaker AI menyediakan empat opsi untuk menerapkannya sehingga Anda dapat mulai membuat prediksi. Inferensi Real-Time cocok untuk beban kerja dengan persyaratan latensi milidetik, ukuran muatan hingga 25 MB, dan waktu pemrosesan hingga 60 detik untuk respons reguler dan 8 menit untuk respons streaming. Batch Transform sangat ideal untuk prediksi offline pada batch besar data yang tersedia di muka. Inferensi Asinkron dirancang untuk beban kerja yang tidak memiliki persyaratan latensi sub-detik, ukuran muatan hingga 1 GB, dan waktu pemrosesan hingga 60 menit. Dengan Inferensi Tanpa Server, Anda dapat dengan cepat menerapkan model pembelajaran mesin untuk inferensi tanpa harus mengonfigurasi atau mengelola infrastruktur yang mendasarinya, dan Anda hanya membayar untuk kapasitas komputasi yang digunakan untuk memproses permintaan inferensi, yang ideal untuk beban kerja intermiten.

### T: Bagaimana cara memilih opsi penerapan model di SageMaker AI?
<a name="hosting-faqs-general-2"></a>

Jika Anda ingin memproses permintaan dalam batch, Anda mungkin ingin memilih Batch Transform. Jika tidak, jika Anda ingin menerima inferensi untuk setiap permintaan ke model Anda, Anda mungkin ingin memilih Inferensi Asinkron, Inferensi Tanpa Server, atau Inferensi Waktu Nyata. Anda dapat memilih Inferensi Asinkron jika Anda memiliki waktu pemrosesan yang lama atau muatan besar dan ingin mengantri permintaan. Anda dapat memilih Inferensi Tanpa Server jika beban kerja Anda memiliki lalu lintas yang tidak dapat diprediksi atau terputus-putus. Anda dapat memilih Inferensi Real-Time jika Anda memiliki lalu lintas yang berkelanjutan dan membutuhkan latensi yang lebih rendah dan konsisten untuk permintaan Anda.

### T: Saya pernah mendengar Inferensi SageMaker AI itu mahal. Apa cara terbaik untuk mengoptimalkan biaya saya saat menghosting model?
<a name="hosting-faqs-general-3"></a>

J: Untuk mengoptimalkan biaya Anda dengan Inferensi SageMaker AI, Anda harus memilih opsi hosting yang tepat untuk kasus penggunaan Anda. Anda juga dapat menggunakan fitur Inferensi seperti [Amazon SageMaker AI Savings Plans](https://aws.amazon.com/savingsplans/ml-pricing/), pengoptimalan model dengan [SageMaker Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html), Titik Akhir Multi-Model dan [Titik Akhir Multi-Kontainer](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html)[, atau penskalaan otomatis](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-container-endpoints.html). Untuk tips tentang cara mengoptimalkan biaya Inferensi Anda, lihat[Praktik terbaik pengoptimalan biaya inferensi](inference-cost-optimization.md).

### T: Mengapa saya harus menggunakan Amazon SageMaker Inference Recommender?
<a name="hosting-faqs-general-4"></a>

J: Anda harus menggunakan Amazon SageMaker Inference Recommender jika Anda memerlukan rekomendasi untuk konfigurasi endpoint yang tepat untuk meningkatkan kinerja dan mengurangi biaya. Sebelumnya, ilmuwan data yang ingin menerapkan model mereka harus menjalankan tolok ukur manual untuk memilih konfigurasi titik akhir yang tepat. Pertama, mereka harus memilih jenis instans pembelajaran mesin yang tepat dari lebih dari 70 jenis instans yang tersedia berdasarkan kebutuhan sumber daya model dan muatan sampel mereka, dan kemudian mengoptimalkan model untuk memperhitungkan perangkat keras yang berbeda. Kemudian, mereka harus melakukan uji beban ekstensif untuk memvalidasi bahwa persyaratan latensi dan throughput terpenuhi dan biayanya rendah. Inference Recommender menghilangkan kompleksitas ini dengan membantu Anda melakukan hal berikut: 
+ Mulailah dalam hitungan menit dengan rekomendasi instans.
+ Lakukan pengujian beban di seluruh jenis instans untuk mendapatkan rekomendasi tentang konfigurasi titik akhir Anda dalam beberapa jam. 
+ Secara otomatis menyetel parameter server kontainer dan model serta melakukan pengoptimalan model untuk jenis instance tertentu.

### T: Apa itu server model?
<a name="hosting-faqs-general-5"></a>

A: Titik akhir SageMaker AI adalah titik akhir HTTP REST yang menggunakan server web kontainer, yang mencakup server model. Wadah ini bertanggung jawab untuk memuat dan melayani permintaan untuk model pembelajaran mesin. Mereka mengimplementasikan server web yang merespons `/invocations` dan `/ping` pada port 8080.

Server model umum termasuk TensorFlow Serving, TorchServe dan Multi Model Server. SageMaker Wadah kerangka kerja AI memiliki server model bawaan ini.

### T: Apa itu Bawa Wadah Anda Sendiri dengan Amazon SageMaker AI?
<a name="hosting-faqs-general-6"></a>

J: Segala sesuatu dalam Inferensi SageMaker AI dikemas. SageMaker AI menyediakan wadah terkelola untuk kerangka kerja populer seperti TensorFlow, SKlearn, dan HuggingFace. Untuk daftar lengkap yang diperbarui dari gambar-gambar tersebut, lihat [Gambar yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md).

 Terkadang ada kerangka kerja khusus yang mungkin Anda perlukan untuk membangun wadah. Pendekatan ini dikenal sebagai *Bring Your Own Container* atau *BYOC*. Dengan pendekatan BYOC, Anda memberikan gambar Docker untuk menyiapkan kerangka kerja atau pustaka Anda. Kemudian, Anda mendorong gambar ke Amazon Elastic Container Registry (Amazon ECR) sehingga Anda dapat menggunakan gambar dengan AI. SageMaker 

Atau, alih-alih membangun gambar dari awal, Anda dapat memperluas wadah. Anda dapat mengambil salah satu gambar dasar yang disediakan SageMaker AI dan menambahkan dependensi Anda di atasnya di Dockerfile Anda.

### T: Apakah saya perlu melatih model saya tentang SageMaker AI untuk meng-host mereka di titik akhir SageMaker AI?
<a name="hosting-faqs-general-7"></a>

A: SageMaker AI menawarkan kapasitas untuk membawa model kerangka kerja terlatih Anda sendiri yang telah Anda latih di luar SageMaker AI dan menerapkannya pada salah satu opsi hosting SageMaker AI.

SageMaker AI mengharuskan Anda untuk mengemas model dalam `model.tar.gz` file dan memiliki struktur direktori tertentu. Setiap kerangka memiliki struktur modelnya sendiri (lihat pertanyaan berikut misalnya struktur). Untuk informasi selengkapnya, lihat dokumentasi SageMaker Python SDK untuk [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#deploying-directly-from-model-artifacts),, [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#bring-your-own-model)dan. [MXNet](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#deploy-endpoints-from-model-data)

Meskipun Anda dapat memilih dari gambar kerangka kerja bawaan seperti TensorFlow, PyTorch, dan MXNet untuk meng-host model terlatih Anda, Anda juga dapat membuat wadah Anda sendiri untuk meng-host model terlatih Anda di titik akhir SageMaker AI. Untuk penelusuran, lihat contoh Notebook Jupyter [Membangun wadah algoritme Anda sendiri](https://github.com/aws/amazon-sagemaker-examples/blob/main/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb).

### T: Bagaimana saya harus menyusun model saya jika saya ingin menerapkan SageMaker AI tetapi tidak melatih SageMaker AI?
<a name="hosting-faqs-general-8"></a>

*A: SageMaker AI mengharuskan artefak model Anda dikompresi dalam `.tar.gz` file, atau tarball.* SageMaker AI secara otomatis mengekstrak `.tar.gz` file ini ke `/opt/ml/model/` direktori di wadah Anda. Tarball tidak boleh berisi symlink atau file unncessary. Jika Anda menggunakan salah satu wadah kerangka kerja, seperti TensorFlow, PyTorch, atau MXNet, wadah mengharapkan struktur TAR Anda menjadi sebagai berikut: 

**TensorFlow**

```
model.tar.gz/
             |--[model_version_number]/
                                       |--variables
                                       |--saved_model.pb
            code/
                |--inference.py
                |--requirements.txt
```

**PyTorch**

```
model.tar.gz/
             |- model.pth
             |- code/
                     |- inference.py
                     |- requirements.txt  # only for versions 1.3.1 and higher
```

**MXNet**

```
model.tar.gz/
            |- model-symbol.json
            |- model-shapes.json
            |- model-0000.params
            |- code/
                    |- inference.py
                    |- requirements.txt # only for versions 1.6.0 and higher
```

### T: Saat menjalankan titik akhir SageMaker AI, saya dapat menyediakan Tipe `ContentType` dan `Accept` MIME. Mana yang digunakan untuk mengidentifikasi tipe data yang dikirim dan diterima?
<a name="hosting-faqs-general-10"></a>

A: `ContentType` adalah tipe MIME dari data input di badan permintaan (tipe MIME dari data yang Anda kirim ke titik akhir Anda). Server model menggunakan `ContentType` untuk menentukan apakah dapat menangani jenis yang disediakan atau tidak.

`Accept`adalah tipe MIME dari respons inferensi (tipe MIME dari data yang dikembalikan titik akhir Anda). Server model menggunakan `Accept` tipe untuk menentukan apakah dapat menangani pengembalian tipe yang disediakan atau tidak.

Jenis MIME yang umum termasuk`text/csv`,`application/json`, dan`application/jsonlines`.

### T: Apa format data yang didukung untuk Inferensi SageMaker AI?
<a name="hosting-faqs-general-12"></a>

A: SageMaker AI meneruskan permintaan apa pun ke wadah model tanpa modifikasi. Wadah harus berisi logika untuk deserialisasi permintaan. Untuk informasi tentang format yang ditentukan untuk algoritme bawaan, lihat [Format Data Umum untuk Inferensi](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html). Jika Anda membangun wadah sendiri atau menggunakan wadah SageMaker AI Framework, Anda dapat menyertakan logika untuk menerima format permintaan pilihan Anda.

Demikian pula, SageMaker AI juga mengembalikan respons tanpa modifikasi, dan kemudian klien harus deserialisasi respons. Dalam hal algoritma bawaan, mereka mengembalikan respons dalam format tertentu. Jika Anda membangun wadah sendiri atau menggunakan wadah SageMaker AI Framework, Anda dapat menyertakan logika untuk mengembalikan respons dalam format yang Anda pilih.

### T: Bagaimana cara memanggil titik akhir saya dengan data biner seperti video atau gambar?
<a name="hosting-faqs-general-11"></a>

Gunakan panggilan API [Invoke Endpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) untuk membuat kesimpulan terhadap titik akhir Anda.

Saat meneruskan input Anda sebagai payload ke `InvokeEndpoint` API, Anda harus memberikan jenis data input yang benar yang diharapkan model Anda. Saat meneruskan payload dalam panggilan `InvokeEndpoint` API, byte permintaan diteruskan langsung ke container model. Misalnya, untuk gambar, Anda dapat menggunakan `application/jpeg` untuk`ContentType`, dan memastikan bahwa model Anda dapat melakukan inferensi pada jenis data ini. Ini berlaku untuk JSON, CSV, video, atau jenis input lain yang mungkin Anda hadapi.

Faktor lain yang perlu dipertimbangkan adalah batas ukuran muatan. Batas muatan adalah 25 MB untuk titik akhir real-time dan 4 MB untuk titik akhir tanpa server. Anda dapat membagi video Anda menjadi beberapa frame dan memanggil titik akhir dengan setiap frame satu per satu. Atau, jika kasus penggunaan memungkinkan, Anda dapat mengirim seluruh video dalam muatan menggunakan titik akhir asinkron, yang mendukung muatan hingga 1 GB.

[Untuk contoh yang menampilkan cara menjalankan inferensi visi komputer pada video besar dengan Inferensi Asinkron, lihat posting blog ini.](https://aws.amazon.com/blogs/machine-learning/run-computer-vision-inference-on-large-videos-with-amazon-sagemaker-asynchronous-endpoints/)

## Inferensi Waktu Nyata
<a name="hosting-faqs-real-time"></a>

Item FAQ berikut menjawab pertanyaan umum untuk Inferensi Real-Time SageMaker AI.

### T: Bagaimana cara membuat titik akhir SageMaker AI?
<a name="hosting-faqs-real-time-1"></a>

J: Anda dapat membuat titik akhir SageMaker AI melalui perkakas yang AWS didukung seperti, SDK SageMaker Python,,, dan. AWS SDKs Konsol Manajemen AWS AWS CloudFormation AWS Cloud Development Kit (AWS CDK)

Ada tiga entitas kunci dalam pembuatan titik akhir: model SageMaker AI, konfigurasi titik akhir SageMaker AI, dan titik akhir SageMaker AI. Model SageMaker AI menunjuk ke data model dan gambar yang Anda gunakan. Konfigurasi endpoint mendefinisikan varian produksi Anda, yang mungkin mencakup jenis instance dan jumlah instance. Anda kemudian dapat menggunakan panggilan API [create\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) atau [pemanggilan.deploy ()](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html) untuk SageMaker AI untuk membuat titik akhir menggunakan metadata dari model dan konfigurasi titik akhir Anda.

### T: Apakah saya perlu menggunakan SDK SageMaker Python ke titik akhir? create/invoke
<a name="hosting-faqs-real-time-2"></a>

J: Tidak, Anda dapat menggunakan berbagai AWS SDKs (lihat [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#API_runtime_InvokeEndpoint_SeeAlso](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#API_runtime_InvokeEndpoint_SeeAlso) untuk tersedia SDKs) atau bahkan memanggil web yang sesuai APIs secara langsung.

### Q: Apa perbedaan antara Multi-Model Endpoint (MME) dan Multi Model Server (MMS)?
<a name="hosting-faqs-real-time-3"></a>

A: Titik Akhir Multi-Model adalah opsi Inferensi Waktu Nyata yang SageMaker disediakan AI. Dengan Endpoint Multi-Model, Anda dapat meng-host ribuan model di belakang satu titik akhir. [Multi Model Server](https://github.com/awslabs/multi-model-server) adalah kerangka kerja sumber terbuka untuk melayani model pembelajaran mesin. Ini menyediakan kemampuan front-end HTTP dan 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.

### T: Apa saja arsitektur penerapan model berbeda yang didukung oleh Inferensi Waktu Nyata?
<a name="hosting-faqs-real-time-4"></a>

A: SageMaker AI Real-Time Inference mendukung berbagai arsitektur penerapan model seperti Multi-Model Endpoint, Multi-Container Endpoint, dan Serial Inference Pipelines. 

[Multi-Model Endpoints (MME)](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) — MME memungkinkan pelanggan untuk menggunakan 1000 model yang sangat personal dengan cara yang hemat biaya. Semua model dikerahkan pada armada sumber daya bersama. MME bekerja paling baik ketika model memiliki ukuran dan latensi yang sama dan termasuk dalam kerangka kerja ML yang sama. Titik akhir ini ideal ketika Anda tidak perlu memanggil model yang sama setiap saat. Anda dapat memuat model masing-masing secara dinamis ke titik akhir SageMaker AI untuk melayani permintaan Anda.

[Multi-Container Endpoints (MCE)](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-container-endpoints.html) — MCE memungkinkan pelanggan untuk menyebarkan 15 kontainer berbeda dengan kerangka kerja dan fungsionalitas yang beragam tanpa cold start sementara hanya menggunakan satu titik akhir. SageMaker Anda dapat langsung memanggil wadah ini. MCE adalah yang terbaik ketika Anda ingin menyimpan semua model dalam memori.

[Serial Inference Pipelines (SIP)](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) - Anda dapat menggunakan SIP untuk menyatukan 2-15 kontainer pada satu titik akhir. SIP sebagian besar cocok untuk menggabungkan preprocessing dan inferensi model dalam satu titik akhir dan untuk operasi latensi rendah.

## Inferensi Tanpa Server
<a name="hosting-faqs-serverless"></a>

Item FAQ berikut menjawab pertanyaan umum untuk Inferensi Tanpa SageMaker Server Amazon.

### T: Apa itu Inferensi SageMaker Tanpa Server Amazon?
<a name="hosting-faqs-serverless-1"></a>

A: [Terapkan model dengan Inferensi Tanpa SageMaker Server Amazon](serverless-endpoints.md) adalah opsi penyajian model tanpa server yang dibuat khusus yang membuatnya mudah untuk menerapkan dan menskalakan model ML. Titik akhir Inferensi Tanpa Server secara otomatis memulai sumber daya komputasi dan menskalakannya masuk dan keluar tergantung pada lalu lintas, sehingga Anda tidak perlu memilih jenis instans, menjalankan kapasitas yang disediakan, atau mengelola penskalaan. Anda dapat secara opsional menentukan persyaratan memori untuk titik akhir tanpa server Anda. Anda hanya membayar selama menjalankan kode inferensi dan jumlah data yang diproses, bukan untuk periode idle.

### T: Mengapa saya harus menggunakan Inferensi Tanpa Server?
<a name="hosting-faqs-serverless-2"></a>

J: Inferensi Tanpa Server menyederhanakan pengalaman pengembang dengan menghilangkan kebutuhan untuk menyediakan kapasitas di muka dan mengelola kebijakan penskalaan. Inferensi Tanpa Server dapat menskalakan secara instan dari puluhan hingga ribuan inferensi dalam hitungan detik berdasarkan pola penggunaan, menjadikannya ideal untuk aplikasi ML dengan lalu lintas intermiten atau tidak dapat diprediksi. Misalnya, layanan chatbot yang digunakan oleh perusahaan pemrosesan penggajian mengalami peningkatan pertanyaan pada akhir bulan sementara lalu lintas terputus-putus selama sisa bulan itu. Penyediaan contoh untuk sebulan penuh dalam skenario seperti itu tidak hemat biaya, karena Anda akhirnya membayar untuk periode idle.

Inferensi Tanpa Server membantu mengatasi jenis kasus penggunaan ini dengan memberi Anda penskalaan otomatis dan cepat di luar kotak tanpa perlu memperkirakan lalu lintas di muka atau mengelola kebijakan penskalaan. Selain itu, Anda hanya membayar untuk waktu komputasi untuk menjalankan kode inferensi Anda dan untuk pemrosesan data, sehingga ideal untuk beban kerja dengan lalu lintas intermiten.

### T: Bagaimana cara memilih ukuran memori yang tepat untuk endpoint tanpa server saya?
<a name="hosting-faqs-serverless-3"></a>

A: Endpoint tanpa server Anda memiliki ukuran RAM minimum 1024 MB (1 GB), dan ukuran RAM maksimum yang dapat Anda pilih adalah 6144 MB (6 GB). Ukuran memori yang dapat Anda pilih adalah 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB, atau 6144 MB. Inferensi Tanpa Server secara otomatis menetapkan sumber daya komputasi sebanding dengan memori yang Anda pilih. Jika Anda memilih ukuran memori yang lebih besar, wadah Anda memiliki akses ke lebih banyak vCPUs.

Pilih ukuran memori endpoint Anda sesuai dengan ukuran model Anda. Umumnya, ukuran memori harus setidaknya sebesar ukuran model Anda. Anda mungkin perlu melakukan benchmark untuk memilih pilihan memori yang tepat untuk model Anda berdasarkan latensi SLAs Anda. Peningkatan ukuran memori memiliki harga yang berbeda; lihat [halaman SageMaker harga Amazon](https://aws.amazon.com/sagemaker/pricing/) untuk informasi lebih lanjut.

## Transformasi Batch
<a name="hosting-faqs-batch"></a>

Item FAQ berikut menjawab pertanyaan umum untuk SageMaker AI Batch Transform.

### T: Bagaimana Batch Transform membagi data saya?
<a name="hosting-faqs-batch-1"></a>

J: Untuk format file tertentu seperti CSV, RecorDio TFRecord dan SageMaker , AI dapat membagi data Anda menjadi batch mini rekaman tunggal atau multi-rekaman dan mengirimkannya sebagai muatan ke wadah model Anda. Ketika nilainya`MultiRecord`, SageMaker AI mengirimkan jumlah catatan maksimum di setiap permintaan, hingga `MaxPayloadInMB` batasnya. `[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` Ketika nilainya`SingleRecord`, SageMaker AI mengirimkan catatan individual di setiap permintaan. `BatchStrategy`

### T: Berapa batas waktu maksimum untuk Transformasi Batch dan batas muatan untuk satu catatan?
<a name="hosting-faqs-batch-2"></a>

J: Batas waktu maksimum untuk Batch Transform adalah 3600 detik. [Ukuran muatan maksimum](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB) untuk catatan (per batch mini) adalah 100 MB.

### T: Bagaimana cara mempercepat pekerjaan Transformasi Batch?
<a name="hosting-faqs-batch-3"></a>

J: Jika Anda menggunakan `[CreateTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)` API, Anda dapat mengurangi waktu yang diperlukan untuk menyelesaikan pekerjaan transformasi batch dengan menggunakan nilai optimal untuk parameter seperti`[MaxPayloadInMB](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB)`,`[MaxConcurrentTransforms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms)`, atau`[BatchStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy)`. Nilai ideal untuk `MaxConcurrentTransforms` sama dengan jumlah pekerja komputasi dalam pekerjaan transformasi batch. Jika Anda menggunakan konsol SageMaker AI, Anda dapat menentukan nilai parameter optimal ini di bagian **Konfigurasi tambahan** pada halaman **konfigurasi pekerjaan transformasi Batch**. SageMaker AI secara otomatis menemukan pengaturan parameter optimal untuk algoritme bawaan. Untuk algoritme kustom, berikan nilai-nilai ini melalui titik akhir parameter [eksekusi](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests).

### T: Apa format data yang didukung secara native di Batch Transform?
<a name="hosting-faqs-batch-4"></a>

A: Batch Transform mendukung CSV dan JSON.

## Inferensi Asinkron
<a name="hosting-faqs-async"></a>

Item FAQ berikut menjawab pertanyaan umum umum untuk Inferensi Asinkron SageMaker AI.

### T: Apa itu Inferensi SageMaker Asinkron Amazon?
<a name="hosting-faqs-async-1"></a>

A: Inferensi Asinkron mengantri permintaan yang masuk dan memprosesnya secara asinkron. Opsi ini sangat ideal untuk permintaan dengan ukuran muatan besar atau waktu pemrosesan yang lama yang perlu diproses saat tiba. Secara opsional, Anda dapat mengonfigurasi pengaturan auto-scaling untuk menurunkan jumlah instans menjadi nol saat tidak memproses permintaan secara aktif. 

### T: Bagaimana cara menskalakan titik akhir saya ke 0 ketika tidak ada lalu lintas?
<a name="hosting-faqs-async-2"></a>

J: Amazon SageMaker AI mendukung penskalaan otomatis (penskalaan otomatis) titik akhir asinkron Anda. Penskalaan otomatis secara dinamis menyesuaikan jumlah instance yang disediakan untuk model sebagai respons terhadap perubahan beban kerja Anda. Tidak seperti model host lainnya yang didukung SageMaker AI, dengan Asynchronous Inference Anda juga dapat menurunkan instans titik akhir asinkron Anda menjadi nol. Permintaan yang diterima ketika tidak ada instance akan diantrian untuk diproses setelah titik akhir meningkat. Untuk informasi selengkapnya, lihat Skala [otomatis titik akhir asinkron](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-autoscale.html).

Inferensi SageMaker Tanpa Server Amazon juga secara otomatis menurunkan skala ke nol. Anda tidak akan melihat ini karena SageMaker AI mengelola penskalaan titik akhir tanpa server Anda, tetapi jika Anda tidak mengalami lalu lintas apa pun, infrastruktur yang sama berlaku.