Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Capai kinerja hyperscale untuk penyajian model menggunakan NVIDIA Triton Inference Server di Amazon SageMaker

Aplikasi pembelajaran mesin (ML) rumit untuk diterapkan dan sering kali memerlukan beberapa model ML untuk melayani satu permintaan inferensi. Permintaan tipikal dapat mengalir di beberapa model dengan langkah-langkah seperti prapemrosesan, transformasi data, logika pemilihan model, agregasi model, dan pascapemrosesan. Hal ini telah menyebabkan evolusi pola desain umum seperti saluran pipa inferensi serial, ansambel (pengumpulan pencar), dan alur kerja logika bisnis, sehingga mewujudkan seluruh alur kerja permintaan sebagai Grafik Acyclic Terarah (DAG). Namun, karena alur kerja menjadi lebih kompleks, ini mengarah pada peningkatan waktu respons keseluruhan, atau latensi, dari aplikasi ini yang pada gilirannya berdampak pada pengalaman pengguna secara keseluruhan. Selain itu, jika komponen ini dihosting di instans yang berbeda, latensi jaringan tambahan di antara instans ini akan meningkatkan latensi keseluruhan. Pertimbangkan contoh kasus penggunaan ML yang populer untuk asisten virtual dalam dukungan pelanggan. Permintaan tipikal mungkin harus melalui beberapa langkah yang melibatkan pengenalan ucapan, pemrosesan bahasa alami (NLP), pelacakan status dialog, kebijakan dialog, pembuatan teks, dan akhirnya teks ke ucapan. Selanjutnya, untuk membuat interaksi pengguna lebih dipersonalisasi, Anda juga dapat menggunakan model NLP berbasis transformator yang canggih seperti versi yang berbeda dari BERTI, BART, dan GPT. Hasil akhirnya adalah waktu respons yang lama untuk ansambel model ini dan pengalaman pelanggan yang buruk.

Pola umum untuk mendorong waktu respons yang lebih rendah tanpa mengorbankan throughput keseluruhan adalah dengan meng-host model ini pada instance yang sama bersama dengan logika bisnis ringan yang tertanam di dalamnya. Model-model ini selanjutnya dapat dienkapsulasi dalam satu atau beberapa wadah pada instans yang sama untuk memberikan isolasi untuk proses yang berjalan dan menjaga latensi tetap rendah. Selain itu, latensi keseluruhan juga bergantung pada logika aplikasi inferensi, pengoptimalan model, infrastruktur dasar (termasuk komputasi, penyimpanan, dan jaringan), dan server web dasar yang menerima permintaan inferensi. Server Inferensi NVIDIA Triton adalah perangkat lunak penyajian inferensi sumber terbuka dengan fitur untuk memaksimalkan throughput dan pemanfaatan perangkat keras dengan latensi inferensi ultra-rendah (milidetik satu digit). Ini memiliki dukungan luas untuk kerangka kerja ML (termasuk TensorFlow, PyTorch, ONNX, XGBoost, dan NVIDIA TensorRT) dan backend infrastruktur, termasuk GPU, CPU, dan Inferensi AWS. Selain itu, Server Inferensi Triton terintegrasi dengan Amazon SageMaker, layanan ML ujung ke ujung yang terkelola sepenuhnya, menyediakan opsi inferensi waktu nyata termasuk tunggal dan banyak model tuan rumah. Opsi inferensi ini mencakup hosting beberapa model dalam wadah yang sama di belakang a titik akhir tunggal, dan hosting beberapa model dengan beberapa wadah di belakang satu titik akhir.

Pada November 2021, kami mengumumkan integrasi Server Inferensi Triton di SageMaker. AWS bekerja sama dengan NVIDIA untuk memungkinkan Anda mendapatkan yang terbaik dari kedua dunia dan membuat penerapan model dengan Triton di AWS lebih mudah.

Dalam posting ini, kami melihat praktik terbaik untuk menerapkan model transformator dalam skala besar di GPU menggunakan Server Inferensi Triton di SageMaker. Pertama, kita mulai dengan ringkasan konsep utama seputar latensi di SageMaker, dan ikhtisar pedoman penyetelan kinerja. Selanjutnya, kami memberikan gambaran umum tentang Triton dan fitur-fiturnya serta kode contoh untuk diterapkan di SageMaker. Akhirnya, kami melakukan tes beban menggunakan Rekomendasi Inferensi SageMaker dan meringkas wawasan dan kesimpulan dari pengujian beban model transformator populer yang disediakan oleh Hugging Face.

Anda dapat meninjau buku catatan kami biasa menggunakan model dan melakukan pengujian beban sendiri menggunakan kode di GitHub.

Penyetelan dan pengoptimalan kinerja untuk penyajian model di SageMaker

Penyetelan dan pengoptimalan kinerja adalah proses empiris yang sering kali melibatkan banyak iterasi. Jumlah parameter yang akan disetel adalah kombinatorial dan kumpulan nilai parameter konfigurasi tidak independen satu sama lain. Berbagai faktor memengaruhi penyetelan parameter yang optimal, termasuk ukuran payload, jenis, dan jumlah model ML dalam grafik alur permintaan inferensi, jenis penyimpanan, jenis instans komputasi, infrastruktur jaringan, kode aplikasi, runtime dan konfigurasi perangkat lunak penyajian inferensi, dan banyak lagi.

Jika Anda menggunakan SageMaker untuk menerapkan model ML, Anda harus memilih instans komputasi dengan kinerja harga terbaik, yang merupakan proses rumit dan berulang yang dapat memakan waktu berminggu-minggu untuk eksperimen. Pertama, Anda harus memilih jenis instans ML yang tepat dari lebih dari 70 opsi berdasarkan persyaratan sumber daya model Anda dan ukuran data input. Selanjutnya, Anda perlu mengoptimalkan model untuk jenis instans yang dipilih. Terakhir, Anda perlu menyediakan dan mengelola infrastruktur untuk menjalankan uji beban dan menyesuaikan konfigurasi cloud untuk kinerja dan biaya yang optimal. Semua ini dapat menunda penerapan model dan waktu ke pasar. Selain itu, Anda perlu mengevaluasi trade-off antara latensi, throughput, dan biaya untuk memilih konfigurasi penerapan yang optimal. Rekomendasi Inferensi SageMaker otomatis memilih jenis instans komputasi yang tepat, jumlah instans, parameter container, dan pengoptimalan model untuk inferensi guna memaksimalkan throughput, mengurangi latensi, dan meminimalkan biaya.

Inferensi dan latensi waktu nyata di SageMaker

Inferensi waktu nyata SageMaker sangat ideal untuk beban kerja inferensi di mana Anda memiliki persyaratan real-time, interaktif, dan latensi rendah. Ada empat metrik yang paling umum digunakan untuk memantau latensi permintaan inferensi untuk titik akhir inferensi SageMaker

  • Latensi kontainer โ€“ Waktu yang diperlukan untuk mengirim permintaan, mengambil respons dari wadah model, dan menyelesaikan inferensi dalam wadah. Metrik ini tersedia di Amazon CloudWatch sebagai bagian dari Metrik Panggilan diterbitkan oleh SageMaker.
  • Latensi model โ€“ Total waktu yang dibutuhkan oleh semua wadah SageMaker dalam satu pipa inferensi. Metrik ini tersedia di Amazon CloudWatch sebagai bagian dari Metrik Panggilan diterbitkan oleh SageMaker.
  • Latensi overhead โ€“ Diukur dari saat SageMaker menerima permintaan hingga mengembalikan respons ke klien, dikurangi latensi model. Metrik ini tersedia di Amazon CloudWatch sebagai bagian dari Metrik Panggilan diterbitkan oleh SageMaker.
  • Latensi ujung ke ujung โ€“ Diukur dari saat klien mengirimkan permintaan inferensi sampai menerima tanggapan kembali. Pelanggan dapat memublikasikan ini sebagai metrik khusus di Amazon CloudWatch.

Diagram berikut mengilustrasikan komponen-komponen tersebut.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Latensi penampung bergantung pada beberapa faktor; berikut ini adalah di antara yang paling penting:

  • Protokol dasar (HTTP(s)/gRPC) yang digunakan untuk berkomunikasi dengan server inferensi
  • Overhead terkait dengan pembuatan koneksi TLS baru
  • Waktu deserialisasi dari payload permintaan/respons
  • Minta fitur antrian dan batching yang disediakan oleh server inferensi yang mendasarinya
  • Minta kemampuan penjadwalan yang disediakan oleh server inferensi yang mendasarinya
  • Performa runtime yang mendasari server inferensi
  • Kinerja perpustakaan pra-pemrosesan dan pasca-pemrosesan sebelum memanggil fungsi prediksi model
  • Kinerja backend kerangka kerja ML yang mendasari
  • Pengoptimalan khusus model dan khusus perangkat keras

Dalam posting ini, kami berfokus terutama pada pengoptimalan latensi container bersama dengan throughput dan biaya keseluruhan. Secara khusus, kami mengeksplorasi penyetelan kinerja Server Inferensi Triton yang berjalan di dalam wadah SageMaker.

Gunakan ikhtisar kasus

Menyebarkan dan menskalakan model NLP dalam pengaturan produksi bisa sangat menantang. Model NLP seringkali berukuran sangat besar, berisi jutaan parameter model. Konfigurasi model yang optimal diperlukan untuk memenuhi persyaratan kinerja dan skalabilitas yang ketat dari aplikasi NLP tingkat produksi.

Dalam posting ini, kami membandingkan kasus penggunaan NLP menggunakan titik akhir waktu nyata SageMaker berdasarkan wadah Server Inferensi Triton dan merekomendasikan pengoptimalan penyetelan kinerja untuk kasus penggunaan ML kami. Kami menggunakan Hugging Face yang besar dan sudah terlatih sebelumnya BERT besar tanpa casing model, yang memiliki sekitar 336 juta parameter model. Kalimat input yang digunakan untuk model klasifikasi biner diisi dan dipotong ke panjang urutan input maksimum 512 token. Uji beban inferensi mensimulasikan 500 pemanggilan per detik (30,000 pemanggilan maksimum per menit) dan ModelLatency kurang dari 0.5 detik (500 milidetik).

Tabel berikut merangkum konfigurasi benchmark kami.

Model Nama Wajah Memeluk bert-large-uncased
Ukuran Model 1.25 GB
Persyaratan Latensi 0.5 detik (500 milidetik)
Panggilan per Detik 500 permintaan (30,000 per menit)
Panjang Urutan Masukan 512 token
Tugas ML Klasifikasi biner

Server Inferensi NVIDIA Triton

Server Inferensi Triton dirancang khusus untuk memungkinkan penerapan model yang skalabel, cepat, dan mudah dalam produksi. Triton mendukung berbagai kerangka kerja AI utama, termasuk TensorFlow, TensorRT, PyTorch, XGBoost, dan ONNX. Dengan backend kustom Python dan C++, Anda juga dapat mengimplementasikan beban kerja inferensi Anda untuk kasus penggunaan yang lebih disesuaikan.

Yang terpenting, Triton menyediakan pengaturan berbasis konfigurasi sederhana untuk meng-host model Anda, yang memperlihatkan serangkaian fitur pengoptimalan kinerja yang dapat Anda gunakan dengan sedikit upaya pengkodean.

Triton meningkatkan kinerja inferensi dengan memaksimalkan pemanfaatan perangkat keras dengan teknik optimasi yang berbeda (model berjalan bersamaan dan batching dinamis adalah yang paling sering digunakan). Menemukan konfigurasi model yang optimal dari berbagai kombinasi ukuran batch dinamis dan jumlah instans model bersamaan adalah kunci untuk mencapai inferensi waktu nyata dalam penyajian berbiaya rendah menggunakan Triton.

Pengelompokan dinamis

Banyak praktisi cenderung menjalankan inferensi secara berurutan ketika server dipanggil dengan beberapa permintaan independen. Meskipun lebih mudah disiapkan, biasanya bukan praktik terbaik untuk memanfaatkan daya komputasi GPU. Untuk mengatasi ini, Triton menawarkan pengoptimalan bawaan dari pengelompokan dinamis untuk menggabungkan permintaan inferensi independen ini di sisi server untuk membentuk batch yang lebih besar secara dinamis untuk meningkatkan throughput. Diagram berikut menggambarkan arsitektur runtime Triton.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Dalam arsitektur sebelumnya, semua permintaan mencapai batcher dinamis terlebih dahulu sebelum memasuki antrian penjadwal model aktual untuk menunggu inferensi. Anda dapat mengatur ukuran batch pilihan Anda untuk batching dinamis menggunakan pilihan_batch_size pengaturan dalam konfigurasi model. (Perhatikan bahwa ukuran batch yang terbentuk harus kurang dari max_batch_size model mendukung.) Anda juga dapat mengonfigurasi max_queue_delay_microseconds untuk menentukan waktu tunda maksimum dalam batcher untuk menunggu permintaan lain untuk bergabung dengan batch berdasarkan persyaratan latensi Anda.

Cuplikan kode berikut menunjukkan bagaimana Anda dapat menambahkan fitur ini dengan file konfigurasi model untuk mengatur batch dinamis dengan ukuran batch pilihan 16 untuk inferensi sebenarnya. Dengan pengaturan saat ini, contoh model dipanggil secara instan ketika ukuran kumpulan 16 yang disukai terpenuhi atau waktu tunda 100 mikrodetik telah berlalu sejak permintaan pertama mencapai kumpulan dinamis.

dynamic_batching { preferred_batch_size: 16 max_queue_delay_microseconds: 100 }

Menjalankan model secara bersamaan

Pengoptimalan penting lainnya yang ditawarkan di Triton untuk memaksimalkan pemanfaatan perangkat keras tanpa overhead latensi tambahan adalah eksekusi model bersamaan, yang memungkinkan beberapa model atau beberapa salinan dari model yang sama berjalan secara paralel. Fitur ini memungkinkan Triton untuk menangani beberapa permintaan inferensi secara bersamaan, yang meningkatkan throughput inferensi dengan memanfaatkan daya komputasi yang tidak digunakan pada perangkat keras.

Gambar berikut menunjukkan bagaimana Anda dapat dengan mudah mengonfigurasi kebijakan penerapan model yang berbeda hanya dengan beberapa baris perubahan kode. Misalnya, konfigurasi A (kiri) menunjukkan bahwa Anda dapat menyiarkan konfigurasi yang sama dari dua contoh model bert-large-uncased ke semua GPU yang tersedia. Sebaliknya, konfigurasi B (tengah) menunjukkan konfigurasi yang berbeda hanya untuk GPU 0, tanpa mengubah kebijakan pada GPU lainnya. Anda juga dapat menerapkan contoh model yang berbeda pada satu GPU, seperti yang ditunjukkan pada konfigurasi C (kanan).

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Dalam konfigurasi C, instans komputasi dapat menangani dua permintaan bersamaan untuk model DistilGPT-2 dan tujuh permintaan bersamaan untuk bert-large-uncased model secara paralel. Dengan pengoptimalan ini, sumber daya perangkat keras dapat dimanfaatkan dengan lebih baik untuk proses penyajian, sehingga meningkatkan throughput dan memberikan efisiensi biaya yang lebih baik untuk beban kerja Anda.

TensorRT

NVIDIA TensorRT adalah SDK untuk inferensi pembelajaran mendalam berperforma tinggi yang bekerja mulus dengan Triton. TensorRT, yang mendukung setiap kerangka kerja pembelajaran mendalam utama, menyertakan pengoptimal inferensi dan waktu proses yang memberikan latensi rendah dan throughput tinggi untuk menjalankan inferensi dengan volume data yang besar melalui pengoptimalan yang andal.

TensorRT mengoptimalkan grafik untuk meminimalkan jejak memori dengan membebaskan memori yang tidak perlu dan menggunakannya kembali secara efisien. Selain itu, kompilasi TensorRT menggabungkan operasi yang jarang di dalam grafik model untuk membentuk kernel yang lebih besar untuk menghindari overhead peluncuran beberapa kernel kecil. Penyetelan otomatis kernel membantu Anda memanfaatkan perangkat keras sepenuhnya dengan memilih algoritme terbaik pada GPU target Anda. Aliran CUDA memungkinkan model berjalan secara paralel untuk memaksimalkan penggunaan GPU Anda untuk kinerja terbaik. Last but not least, teknik kuantisasi dapat sepenuhnya menggunakan akselerasi presisi campuran dari inti Tensor untuk menjalankan model di FP32, TF32, FP16, dan INT8 untuk mencapai kinerja inferensi terbaik.

Triton di hosting SageMaker

Hosting SageMaker services adalah kumpulan fitur SageMaker yang ditujukan untuk membuat penerapan dan penyajian model menjadi lebih mudah. Ini menyediakan berbagai opsi untuk dengan mudah menerapkan, menskalakan otomatis, memantau, dan mengoptimalkan model ML yang disesuaikan untuk berbagai kasus penggunaan. Ini berarti Anda dapat mengoptimalkan penerapan untuk semua jenis pola penggunaan, mulai dari persisten dan selalu tersedia dengan opsi tanpa server, hingga kebutuhan inferensi sementara, berjalan lama, atau batch.

Di bawah payung hosting SageMaker juga terdapat kumpulan Inferensi SageMaker Deep Learning Containers (DLC), yang telah dikemas sebelumnya dengan perangkat lunak server model yang sesuai untuk kerangka kerja ML yang didukung terkait. Hal ini memungkinkan Anda mencapai kinerja inferensi tinggi tanpa penyiapan server model, yang seringkali merupakan aspek teknis paling kompleks dari penerapan model dan secara umum, bukan bagian dari keahlian ilmuwan data. Server inferensi Triton sekarang tersedia di Wadah Pembelajaran Mendalam SageMaker (DLC).

Pilihan yang luas, modularitas, dan kemudahan penggunaan kerangka kerja penyajian yang berbeda menjadikan SageMaker dan Triton pasangan yang kuat.

SageMaker Inference Recommender untuk membandingkan hasil tes

Kami menggunakan SageMaker Inference Recommender untuk menjalankan eksperimen kami. SageMaker Inference Recommender menawarkan dua jenis pekerjaan: default dan lanjutan, seperti yang diilustrasikan dalam diagram berikut.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Tugas default memberikan rekomendasi tentang jenis instans hanya dengan model dan sampel payload untuk dijadikan tolok ukur. Selain rekomendasi instans, layanan ini juga menawarkan parameter runtime yang meningkatkan kinerja. Rekomendasi tugas default dimaksudkan untuk mempersempit pencarian instans. Dalam beberapa kasus, itu bisa menjadi keluarga instans, dan dalam kasus lain, itu bisa menjadi tipe instans spesifik. Hasil pekerjaan default kemudian dimasukkan ke dalam pekerjaan lanjutan.

Pekerjaan tingkat lanjut menawarkan lebih banyak kontrol untuk menyempurnakan kinerja lebih lanjut. Kontrol ini mensimulasikan lingkungan nyata dan persyaratan produksi. Di antara kontrol tersebut adalah pola lalu lintas, yang bertujuan untuk mengatur pola permintaan untuk tolok ukur. Anda dapat mengatur landai atau lalu lintas yang stabil dengan menggunakan beberapa fase pola lalu lintas. Misalnya, an Jumlah Pengguna Awal dari 1, Tingkat Pemijahan tahun 1, dan DurasiDalam Detik dari 600 dapat menghasilkan lalu lintas ramp 10 menit dengan 1 pengguna bersamaan di awal dan 10 di akhir. Selain itu, pada kontrol, Doa Maks dan Ambang Batas ModelLatency mengatur ambang batas produksi, sehingga ketika salah satu ambang batas terlampaui, benchmarking berhenti.

Terakhir, metrik rekomendasi sertakan throughput, latensi pada throughput maksimum, dan biaya per inferensi, sehingga mudah untuk membandingkannya.

Kami menggunakan jenis pekerjaan lanjutan dari SageMaker Inference Recommender untuk menjalankan eksperimen kami guna mendapatkan kontrol tambahan atas pola lalu lintas, dan menyempurnakan konfigurasi penampung penayangan.

Pengaturan percobaan

Kami menggunakan fitur uji beban khusus dari SageMaker Inference Recommender untuk membandingkan profil NLP yang diuraikan dalam kasus penggunaan kami. Kami pertama-tama menentukan prasyarat berikut yang terkait dengan model NLP dan tugas ML. SageMaker Inference Recommender menggunakan informasi ini untuk menarik gambar Docker inferensi dari Registry Kontainer Elastis Amazon (Amazon ECR) dan daftarkan model dengan registri model SageMaker.

Domain NATURAL_LANGUAGE_PROCESSING
tugas FILL_MASK
Kerangka PYTORCH: 1.6.0
Model bert-large-uncased

Konfigurasi pola lalu lintas di SageMaker Inference Recommender memungkinkan kami untuk menentukan fase yang berbeda untuk pengujian beban kustom. Uji beban dimulai dengan dua pengguna awal dan memunculkan dua pengguna baru setiap menit, dengan total durasi 25 menit (1500 detik), seperti yang ditunjukkan pada kode berikut:

"TrafficPattern": { "TrafficType": "PHASES", "Phases": [ { "InitialNumberOfUsers": 2, "SpawnRate": 2, "DurationInSeconds": 1500 }, ],
}

Kami bereksperimen dengan pengujian beban model yang sama di dua negara bagian yang berbeda. Eksperimen berbasis PyTorch menggunakan model PyTorch standar yang tidak diubah. Untuk eksperimen berbasis TensorRT, kami mengonversi model PyTorch menjadi mesin TensorRT terlebih dahulu.

Kami menerapkan kombinasi yang berbeda dari fitur pengoptimalan kinerja pada kedua model ini, yang dirangkum dalam tabel berikut.

Nama Konfigurasi Deskripsi Konfigurasi Konfigurasi Model
pt-base Dasar PyTorch Model dasar PyTorch, tidak ada perubahan
pt-db PyTorch dengan batching dinamis dynamic_batching
{}
pt-ig PyTorch dengan beberapa contoh model instance_group [
    {
      count: 2
      kind: KIND_GPU
    }
  ]
pt-ig-db PyTorch dengan beberapa contoh model dan batching dinamis dynamic_batching
{},
instance_group [
     {
          count: 2
          kind: KIND_GPU
     }
]
trt-base Garis dasar TensorRT Model PyTorch dikompilasi dengan TensoRT trtexec kegunaan
trt-db TensorRT dengan batching dinamis dynamic_batching
{}
trt-ig TensorRT dengan beberapa contoh model instance_group [
     {
          count: 2
          kind: KIND_GPU
     }
]
trt-ig-db TensorRT dengan beberapa contoh model dan batching dinamis dynamic_batching
{},
instance_group [
     {
          count: 2
          kind: KIND_GPU
      }
]

Hasil tes dan observasi

Kami melakukan uji beban untuk tiga jenis instans dalam keluarga g4dn yang sama: ml.g4dn.xlarge, ml.g4dn.2xlarge, dan ml.g4dn.12xlarge. Semua jenis instans g4dn memiliki akses ke GPU NVIDIA T4 Tensor Core, dan prosesor Intel Cascade Lake Generasi ke-2. Logika di balik pilihan jenis instans adalah memiliki instans dengan hanya satu GPU yang tersedia, serta instans dengan akses ke beberapa GPUโ€”empat dalam kasus ml.g4dn.12xlarge. Selain itu, kami ingin menguji apakah peningkatan kapasitas vCPU pada instans dengan hanya satu GPU yang tersedia akan menghasilkan peningkatan rasio kinerja biaya.

Mari kita bahas percepatan optimasi individu terlebih dahulu. Grafik berikut menunjukkan bahwa pengoptimalan TensorRT memberikan pengurangan 50% dalam latensi model dibandingkan dengan yang asli di PyTorch pada instans ml.g4dn.xlarge. Pengurangan latensi ini meningkat hingga lebih dari tiga kali lipat pada instans multi-GPU ml.g4dn.12xlarge. Sementara itu, peningkatan throughput 30% konsisten pada kedua instans, menghasilkan efektivitas biaya yang lebih baik setelah menerapkan pengoptimalan TensorRT.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Dengan batching dinamis, kita bisa mendekati peningkatan 2x dalam throughput menggunakan arsitektur perangkat keras yang sama pada semua instance eksperimen ml.g4dn.xlarge, ml.g4dn.2xlarge, dan ml.g4dn.12xlarge tanpa peningkatan latensi yang nyata.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Demikian pula, eksekusi model serentak memungkinkan kami memperoleh peningkatan sekitar 3-4x dalam throughput dengan memaksimalkan penggunaan GPU pada instans ml.g4dn.xlarge dan sekitar 2x peningkatan pada instans ml.g4dn.2xlarge dan instans multi-GPU ml. g4dn.12xlarge.. Peningkatan throughput ini terjadi tanpa overhead dalam latensi.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Lebih baik lagi, kami dapat mengintegrasikan semua pengoptimalan ini untuk memberikan kinerja terbaik dengan memanfaatkan sumber daya perangkat keras secara maksimal. Tabel dan grafik berikut merangkum hasil yang kami peroleh dalam percobaan kami.

Nama Konfigurasi Optimalisasi model

Dinamis

Berkelompok

Konfigurasi grup instan Jenis instance vCPU GPU

Memori GPU

(GB)

Hitungan Instance Awal[1] Panggilan per menit per Instans Latensi Model Biaya per Jam[2]
pt-basis NA Tidak NA ml.g4dn.xlarge 4 1 16 62 490 1500 45.6568
pt-db NA Yes NA ml.g4dn.xlarge 4 1 16 57 529 1490 41.9748
pt-ig NA Tidak 2 ml.g4dn.xlarge 4 1 16 34 906 868 25.0376
pt-ig-db NA Yes 2 ml.g4dn.xlarge 4 1 16 34 892 1158 25.0376
trt-base TensorRT Tidak NA ml.g4dn.xlarge 4 1 16 47 643 742 34.6108
trt-db TensorRT Yes NA ml.g4dn.xlarge 4 1 16 28 1078 814 20.6192
trt-ig TensorRT Tidak 2 ml.g4dn.xlarge 4 1 16 14 2202 1273 10.3096
trt-db-ig TensorRT Yes 2 ml.g4dn.xlarge 4 1 16 10 3192 783 7.364
pt-basis NA Tidak NA ml.g4dn.2xlarge 8 1 32 56 544 1500 52.64
pt-db NA Yes NA ml.g4dn.2xlarge 8 1 32 59 517 1500 55.46
pt-ig NA Tidak 2 ml.g4dn.2xlarge 8 1 32 29 1054 960 27.26
pt-ig-db NA Yes 2 ml.g4dn.2xlarge 8 1 32 30 1017 992 28.2
trt-base TensorRT Tidak NA ml.g4dn.2xlarge 8 1 32 42 718 1494 39.48
trt-db TensorRT Yes NA ml.g4dn.2xlarge 8 1 32 23 1335 499 21.62
trt-ig TensorRT Tidak 2 ml.g4dn.2xlarge 8 1 32 23 1363 1017 21.62
trt-db-ig TensorRT Yes 2 ml.g4dn.2xlarge 8 1 32 22 1369 963 20.68
pt-basis NA Tidak NA ml.g4dn.12xlarge 48 4 192 15 2138 906 73.35
pt-db NA Yes NA ml.g4dn.12xlarge 48 4 192 15 2110 907 73.35
pt-ig NA Tidak 2 ml.g4dn.12xlarge 48 4 192 8 3862 651 39.12
pt-ig-db NA Yes 2 ml.g4dn.12xlarge 48 4 192 8 3822 642 39.12
trt-base TensorRT Tidak NA ml.g4dn.12xlarge 48 4 192 11 2892 279 53.79
trt-db TensorRT Yes NA ml.g4dn.12xlarge 48 4 192 6 5356 278 29.34
trt-ig TensorRT Tidak 2 ml.g4dn.12xlarge 48 4 192 6 5210 328 29.34
trt-db-ig TensorRT Yes 2 ml.g4dn.12xlarge 48 4 192 6 5235 439 29.34
[1] Jumlah instans awal dalam tabel di atas adalah jumlah instans yang disarankan untuk digunakan dengan kebijakan penskalaan otomatis guna mempertahankan persyaratan throughput dan latensi untuk beban kerja Anda.
[2] Biaya per jam pada tabel di atas dihitung berdasarkan jumlah instans awal dan harga untuk jenis instans.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Sebagian besar hasil memvalidasi dampak yang diharapkan dari berbagai fitur pengoptimalan kinerja:

  • Kompilasi TensorRT memiliki dampak paling andal di semua jenis instans. Transaksi per menit per instans meningkat 30โ€“35%, dengan pengurangan biaya yang konsisten sekitar 25% jika dibandingkan dengan performa engine TensorRT dengan PyTorch BERT default (pt-base). Peningkatan kinerja engine TensorRT diperparah dan dimanfaatkan oleh fitur penyetelan kinerja lain yang telah diuji.
  • Memuat dua model pada setiap GPU (grup instance) hampir menggandakan semua metrik yang diukur. Pemanggilan per menit per instans meningkat sekitar 80โ€“90%, menghasilkan pengurangan biaya dalam kisaran 50%, hampir seolah-olah kami menggunakan dua GPU. Faktanya, amazoncloudwatch metrik untuk eksperimen kami pada g4dn.2xlarge (sebagai contoh) mengonfirmasi bahwa penggunaan CPU dan GPU berlipat ganda saat kami mengonfigurasi grup instance dua model.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai. Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Kiat kinerja dan pengoptimalan biaya lebih lanjut

Patokan yang disajikan dalam posting ini hanya menggores permukaan fitur dan teknik yang mungkin dapat Anda gunakan dengan Triton untuk meningkatkan kinerja inferensi. Ini berkisar dari teknik pra-pemrosesan data, seperti mengirim muatan biner ke server model atau muatan dengan batch yang lebih besar, hingga fitur asli Triton, seperti berikut ini:

  • Pemanasan model, yang mencegah permintaan inferensi awal yang lambat dengan menginisialisasi model sepenuhnya sebelum permintaan inferensi pertama diterima.
  • Cache respons, yang menyimpan permintaan berulang.
  • Ansambel model, yang memungkinkan Anda membuat pipeline satu atau beberapa model dan koneksi tensor input dan output di antara model tersebut. Ini membuka kemungkinan untuk menambahkan langkah-langkah pra-pemrosesan dan pasca-pemrosesan, atau bahkan inferensi dengan model lain, ke aliran pemrosesan untuk setiap permintaan.

Kami berharap untuk menguji dan membandingkan teknik dan fitur ini di posting mendatang, jadi pantau terus!

Kesimpulan

Dalam posting ini, kami menjelajahi beberapa parameter yang dapat Anda gunakan untuk memaksimalkan kinerja titik akhir waktu nyata SageMaker Anda untuk melayani model BERT PyTorch dengan Server Inferensi Triton. Kami menggunakan SageMaker Inference Recommender untuk melakukan tes benchmark untuk menyempurnakan parameter ini. Parameter ini pada dasarnya terkait dengan pengoptimalan model berbasis TensorRT, yang menghasilkan peningkatan hampir 50% dalam waktu respons dibandingkan dengan versi yang tidak dioptimalkan. Selain itu, menjalankan model secara bersamaan dan menggunakan batching dinamis Triton menghasilkan peningkatan throughput hampir 70%. Penyesuaian parameter ini juga menghasilkan pengurangan biaya inferensi secara keseluruhan.

Cara terbaik untuk mendapatkan nilai yang benar adalah melalui eksperimen. Namun, untuk mulai membangun pengetahuan empiris tentang penyetelan dan pengoptimalan kinerja, Anda dapat mengamati kombinasi berbagai parameter terkait Triton dan pengaruhnya terhadap kinerja di seluruh model ML dan instans SageMaker ML.

SageMaker menyediakan alat untuk menghapus pekerjaan berat yang tidak terdiferensiasi dari setiap tahap siklus hidup ML, sehingga memfasilitasi eksperimen dan eksplorasi cepat yang diperlukan untuk mengoptimalkan penerapan model Anda sepenuhnya.

Anda dapat menemukan notebook yang digunakan untuk pengujian beban dan penerapan di GitHub. Anda dapat memperbarui konfigurasi Triton dan pengaturan SageMaker Inference Recommender agar paling sesuai dengan kasus penggunaan Anda untuk mencapai beban kerja inferensi yang hemat biaya dan berkinerja terbaik.


Tentang Penulis

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Vikram Elango adalah Arsitek Solusi Spesialis AI/ML di Amazon Web Services, yang berbasis di Virginia USA. Vikram membantu pelanggan industri keuangan dan asuransi dengan desain, kepemimpinan pemikiran untuk membangun dan menerapkan aplikasi pembelajaran mesin dalam skala besar. Dia saat ini fokus pada pemrosesan bahasa alami, AI yang bertanggung jawab, pengoptimalan inferensi, dan penskalaan ML di seluruh perusahaan. Di waktu luangnya, ia menikmati perjalanan, hiking, memasak dan berkemah bersama keluarganya.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Joรฃo Moura adalah Arsitek Solusi Spesialis AI/ML di Amazon Web Services. Dia sebagian besar berfokus pada kasus penggunaan NLP dan membantu pelanggan mengoptimalkan pelatihan dan penerapan model Deep Learning. Dia juga pendukung aktif solusi ML kode rendah dan perangkat keras khusus ML.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Mohan Gandhi adalah Insinyur Perangkat Lunak Senior di AWS. Dia telah bergabung dengan AWS selama 9 tahun terakhir dan telah bekerja di berbagai layanan AWS seperti EMR, EFA, dan RDS di Outposts. Saat ini, ia fokus pada peningkatan Pengalaman Inferensi SageMaker. Di waktu luangnya, ia menikmati hiking dan lari maraton.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Dhawal Patel adalah Arsitek Pembelajaran Mesin Utama di AWS. Dia telah bekerja dengan organisasi mulai dari perusahaan besar hingga perusahaan rintisan menengah pada masalah yang terkait dengan komputasi terdistribusi, dan Kecerdasan Buatan. Dia berfokus pada Deep learning termasuk domain NLP dan Computer Vision. Dia membantu pelanggan mencapai inferensi model kinerja tinggi di SageMaker.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Santosh Bhavani adalah Manajer Produk Teknis Senior dengan tim Amazon SageMaker Elastic Inference. Dia berfokus untuk membantu pelanggan SageMaker mempercepat inferensi dan penerapan model. Di waktu luangnya, dia suka bepergian, bermain tenis, dan minum banyak teh Pu'er.

Capai kinerja skala besar untuk penyajian model menggunakan Server Inferensi NVIDIA Triton di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai. Jia Hong Liu adalah Arsitek Solusi di tim Penyedia Layanan Cloud di NVIDIA. Dia membantu klien dalam mengadopsi pembelajaran mesin dan solusi AI yang memanfaatkan komputasi akselerasi NVIDIA untuk mengatasi tantangan pelatihan dan inferensi mereka. Di waktu senggang, ia menikmati origami, proyek DIY, dan bermain basket.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS