

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

# 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>* | 