Penerapan model dengan Triton Inference Server - Amazon SageMaker AI

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

Triton Inference 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 (hanya dukungan SM).

Untuk contoh end-to-end notebook, kami sarankan untuk melihat amazon-sagemaker-examples repositori.

Mode hosting

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 adalahSAGEMAKER_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 adalahSAGEMAKER_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, kontainer 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 danUNLOAD, kami sarankan Anda menjaga ukuran ansambel kecil.

Jenis muatan inferensi

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

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.

  • platformdan/atau backend: 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 adalahtensorrt,,onnxruntime,tensorflow,,pytorch, python dalifil, 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 konfigurasiconfig.pbtxt, lihat repositori Triton. GitHub Triton menyediakan beberapa konfigurasi untuk mengubah perilaku model. Beberapa opsi konfigurasi yang paling umum dan penting adalah:

  • instance_groups: Grup instance membantu menentukan nomor dan lokasi untuk model tertentu. Mereka memiliki atributcount,kind, dan gpus (kinddigunakan kapanKIND_GPU). countAtributnya 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 jenisnyaKIND_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.

  • dynamic_batchingdan sequence_batching: 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.

  • ensemble: 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 sebagaiensemble. 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

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 selengkapnya tentang metrik default yang tersedia, lihat GitHub halaman untuk metrik Triton Inference 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

Tabel berikut mencantumkan variabel lingkungan yang didukung untuk Triton pada SageMaker AI.

Variabel lingkungan Deskripsi Jenis 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_name>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_number>

SAGEMAKER_SAFE_PORT_RANGE

Ini diatur oleh platform SageMaker AI saat menggunakan mode multi-kontainer.

String

<port_1><port_2>

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_number>

SAGEMAKER_TRITON_THREAD_COUNT

Anda dapat mengatur jumlah thread handler permintaan HTTP default.

String

<number>

SAGEMAKER_TRITON_LOG_VERBOSE

truesecara default pada SageMaker AI, tetapi Anda dapat menonaktifkan opsi ini secara selektif.

Boolean

true, false

SAGEMAKER_TRITON_LOG_INFO

falsesecara default pada SageMaker AI.

Boolean

true, false

SAGEMAKER_TRITON_LOG_WARNING

falsesecara default pada SageMaker AI.

Boolean

true, false

SAGEMAKER_TRITON_LOG_ERROR

falsesecara 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

falsesecara default pada SageMaker AI.

Boolean

true, false

SAGEMAKER_TRITON_METRICS_PORT

Port default adalah 8002.

String

<number>

SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH

falsesecara 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_log_group_name>

SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE

Diperlukan jika Anda telah mengaktifkan penerbitan metrik. CloudWatch

String

<cloudwatch_metric_namespace>

SAGEMAKER_TRITON_ADDITIONAL_ARGS

Menambahkan argumen tambahan saat memulai Triton Server.

String

<additional_args>