Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker

Amazon SageMaker multi-model endpoint (MME) memungkinkan Anda menerapkan dan menghosting beberapa model secara hemat dalam satu titik akhir dan kemudian menskalakan titik akhir secara horizontal untuk mencapai skala. Seperti yang diilustrasikan pada gambar berikut, ini adalah teknik yang efektif untuk menerapkan model multi-tenancy dalam infrastruktur machine learning (ML) Anda. Kami telah melihat bisnis perangkat lunak sebagai layanan (SaaS) menggunakan fitur ini untuk menerapkan hiper-personalisasi dalam model ML mereka sambil mencapai biaya yang lebih rendah.

Untuk ikhtisar tingkat tinggi tentang cara kerja MME, lihat video AWS Summit Menskalakan ML ke level berikutnya: Menghosting ribuan model di SageMaker. Untuk mempelajari lebih lanjut tentang kasus penggunaan multi-penyewa yang sangat dipersonalisasi yang diaktifkan MME, lihat Cara menskalakan inferensi pembelajaran mesin untuk kasus penggunaan SaaS multi-penyewa.

Di sisa posting ini, kami menyelam lebih dalam ke arsitektur teknis SageMaker MME dan berbagi praktik terbaik untuk mengoptimalkan titik akhir multi-model Anda.

Gunakan case yang paling cocok untuk MME

Titik akhir multi-model SageMaker sangat cocok untuk menampung sejumlah besar model yang dapat Anda layani melalui wadah penyajian bersama dan Anda tidak perlu mengakses semua model secara bersamaan. Bergantung pada ukuran memori instans titik akhir, sebuah model terkadang dapat diturunkan dari memori demi memuat model baru untuk memaksimalkan penggunaan memori yang efisien, oleh karena itu aplikasi Anda harus toleran terhadap lonjakan latensi sesekali pada model yang tidak dimuat.

MME juga dirancang untuk model co-hosting yang menggunakan kerangka kerja ML yang sama karena mereka menggunakan wadah bersama untuk memuat beberapa model. Oleh karena itu, jika Anda memiliki campuran kerangka kerja ML dalam armada model Anda (seperti PyTorch dan TensorFlow), titik akhir khusus SageMaker atau hosting multi-kontainer adalah pilihan yang lebih baik.

Akhirnya, MME cocok untuk aplikasi yang dapat mentolerir hukuman latensi cold start sesekali, karena model dimuat pada pemanggilan pertama dan model yang jarang digunakan dapat diturunkan dari memori demi memuat model baru. Oleh karena itu, jika Anda memiliki campuran model yang sering dan jarang diakses, titik akhir multi-model dapat melayani lalu lintas ini secara efisien dengan sumber daya yang lebih sedikit dan penghematan biaya yang lebih tinggi.

Kami juga telah melihat beberapa skenario di mana pelanggan menggunakan klaster MME dengan kapasitas memori agregat yang cukup untuk memenuhi semua model mereka, sehingga menghindari model offload sama sekali namun tetap mencapai penghematan biaya karena infrastruktur inferensi bersama.

Wadah penyajian model

Saat Anda menggunakan SageMaker Inference Toolkit atau wadah penyajian model SageMaker bawaan yang kompatibel dengan MME, wadah Anda memiliki Server Multi Model (proses JVM) berjalan. Cara termudah untuk memasukkan Multi Model Server (MMS) ke dalam wadah penyajian model Anda adalah dengan menggunakan Wadah penyajian model SageMaker kompatibel dengan MME (cari yang memiliki Job Type=inference dan CPU/GPU=CPU). MMS adalah open source, alat yang mudah digunakan untuk menyajikan model pembelajaran yang mendalam. Ini menyediakan REST API dengan server web untuk melayani dan mengelola beberapa model pada satu host. Namun, tidak wajib menggunakan MMS; Anda dapat mengimplementasikan server model Anda sendiri selama itu mengimplementasikan API yang dibutuhkan oleh MME.

Saat digunakan sebagai bagian dari platform MME, semua prediksi, muat, dan bongkar panggilan API ke MMS atau server model Anda sendiri disalurkan melalui pengontrol bidang data MME. Panggilan API dari pengontrol bidang data dilakukan melalui host lokal hanya untuk mencegah akses tidak sah dari luar instance. Salah satu manfaat utama MMS adalah memungkinkan antarmuka standar untuk memuat, membongkar, dan memanggil model dengan kompatibilitas di berbagai kerangka kerja pembelajaran mendalam.

Konfigurasi lanjutan MMS

Jika Anda memilih untuk menggunakan MMS untuk penyajian model, pertimbangkan konfigurasi lanjutan berikut untuk mengoptimalkan skalabilitas dan throughput instans MME Anda.

Tingkatkan paralelisme inferensi per model

MMS membuat satu atau lebih proses pekerja Python per model berdasarkan nilai dari default_worker_per_model parameter konfigurasi. Pekerja Python ini menangani setiap permintaan inferensi individu dengan menjalankan fungsi prapemrosesan, prediksi, dan pascapemrosesan yang Anda berikan. Untuk informasi lebih lanjut, lihat penangan layanan kustom Repo GitHub.

Memiliki lebih dari satu pekerja model meningkatkan paralelisme prediksi yang dapat disajikan oleh model tertentu. Namun, ketika sejumlah besar model dihosting pada instans dengan jumlah CPU yang besar, Anda harus melakukan uji beban MME Anda untuk menemukan nilai optimal untuk default_workers_per_model untuk mencegah kehabisan memori atau sumber daya CPU.

Desain untuk lonjakan lalu lintas

Setiap proses MMS dalam instance titik akhir memiliki antrian permintaan yang dapat dikonfigurasi dengan ukuran_antrian_pekerjaan parameter (default adalah 100). Ini menentukan jumlah permintaan MMS akan antrian ketika semua proses pekerja sibuk. Gunakan parameter ini untuk menyempurnakan responsivitas instans titik akhir Anda setelah Anda memutuskan jumlah pekerja yang optimal per model.

Dalam rasio pekerja per model yang optimal, default 100 sudah cukup untuk sebagian besar kasus. Namun, untuk kasus di mana lalu lintas permintaan ke titik akhir melonjak tidak biasa, Anda dapat mengurangi ukuran antrean jika Anda ingin titik akhir gagal dengan cepat untuk meneruskan kontrol ke aplikasi atau menambah ukuran antrean jika Anda ingin titik akhir menyerap lonjakan .

Maksimalkan sumber daya memori per instance

Saat menggunakan beberapa proses pekerja per model, secara default setiap proses pekerja memuat salinan modelnya sendiri. Ini dapat mengurangi memori instans yang tersedia untuk model lain. Anda dapat mengoptimalkan pemanfaatan memori dengan berbagi model tunggal antara proses pekerja dengan mengatur parameter konfigurasi preload_model=benar. Di sini Anda menukar paralelisme inferensi yang berkurang (karena instance model tunggal) dengan lebih banyak efisiensi memori. Pengaturan ini bersama dengan beberapa proses pekerja dapat menjadi pilihan yang baik untuk kasus penggunaan di mana latensi model rendah tetapi Anda memiliki prapemrosesan dan pascapemrosesan yang lebih berat (dilakukan oleh proses pekerja) per permintaan inferensi.

Tetapkan nilai untuk konfigurasi lanjutan MMS

MMS menggunakan file config.properties untuk menyimpan konfigurasi. MMS menggunakan urutan berikut untuk menemukan file config.properties ini:

  1. Jika MMS_CONFIG_FILE variabel lingkungan diatur, MMS memuat konfigurasi dari variabel lingkungan.
  2. Jika --mms-config parameter dilewatkan ke MMS, memuat konfigurasi dari parameter.
  3. Jika ada config.properties di folder saat ini di mana pengguna memulai MMS, itu memuat config.properties file dari direktori kerja saat ini.

Jika tidak ada hal di atas yang ditentukan, MMS memuat konfigurasi bawaan dengan nilai default.

Berikut ini adalah contoh baris perintah untuk memulai MMS dengan file konfigurasi eksplisit:

multi-model-server --start --mms-config /home/mms/config.properties

Metrik utama untuk memantau kinerja titik akhir Anda

Metrik utama yang dapat membantu Anda mengoptimalkan MME biasanya terkait dengan penggunaan CPU dan memori serta latensi inferensi. Metrik tingkat instans dipancarkan oleh MMS, sedangkan metrik latensi berasal dari MME. Di bagian ini, kami membahas metrik umum yang dapat Anda gunakan untuk memahami dan mengoptimalkan MME Anda.

Metrik tingkat instance titik akhir (metrik MMS)

Dari daftar metrik MMS, CPUUtilization dan MemoryUtilization dapat membantu Anda mengevaluasi apakah instance atau cluster MME Anda berukuran tepat atau tidak. Jika kedua metrik memiliki persentase antara 50โ€“80%, berarti MME Anda berukuran tepat.

Biasanya, CPUUtilization yang rendah dan MemoryUtilization yang tinggi merupakan indikasi dari cluster MME yang disediakan secara berlebihan karena hal ini menunjukkan bahwa model yang jarang dipanggil tidak sedang dibongkar. Ini bisa jadi karena jumlah instans titik akhir yang lebih tinggi dari optimal yang disediakan untuk MME dan oleh karena itu memori agregat yang lebih tinggi dari optimal tersedia untuk model yang jarang diakses untuk tetap berada di memori. Sebaliknya, penggunaan metrik ini mendekati 100% berarti bahwa cluster Anda kurang disediakan, sehingga Anda perlu menyesuaikan kebijakan penskalaan otomatis cluster Anda.

Metrik tingkat platform (metrik MME)

Dari daftar lengkap metrik MME, metrik utama yang dapat membantu Anda memahami latensi permintaan inferensi Anda adalah ModelCacheHit. Metrik ini menunjukkan rasio rata-rata permintaan pemanggilan yang modelnya sudah dimuat di memori. Jika rasio ini rendah, ini menunjukkan bahwa kluster MME Anda kekurangan penyediaan karena kemungkinan kapasitas memori agregat tidak cukup dalam kluster MME untuk jumlah pemanggilan model unik, sehingga menyebabkan model sering diturunkan dari memori.

Pelajaran dari lapangan dan strategi untuk mengoptimalkan MME

Kami telah melihat rekomendasi berikut dari beberapa penggunaan MME skala tinggi di sejumlah pelanggan.

Penskalaan horizontal dengan instans yang lebih kecil lebih baik daripada penskalaan vertikal dengan instans yang lebih besar

Anda mungkin mengalami pelambatan pada pemanggilan model saat menjalankan permintaan tinggi per detik (RPS) pada instans titik akhir yang lebih sedikit. Ada batasan internal untuk jumlah pemanggilan per detik (memuat dan membongkar yang dapat terjadi secara bersamaan pada sebuah instans), dan oleh karena itu selalu lebih baik untuk memiliki lebih banyak instans yang lebih kecil. Menjalankan jumlah instans yang lebih kecil dalam jumlah yang lebih tinggi berarti kapasitas agregat total yang lebih tinggi dari batas-batas ini untuk titik akhir.

Manfaat lain dari penskalaan horizontal dengan instans yang lebih kecil adalah Anda mengurangi risiko menguras sumber daya CPU dan memori instans saat menjalankan MMS dengan tingkat paralelisme yang lebih tinggi, bersama dengan jumlah model yang lebih banyak dalam memori (seperti yang dijelaskan sebelumnya dalam posting ini).

Menghindari meronta-ronta adalah tanggung jawab bersama

Labrakan di MME adalah ketika model sering diturunkan dari memori dan dimuat ulang karena memori yang tidak mencukupi, baik dalam contoh individu atau agregat dalam cluster.

Dari perspektif penggunaan, Anda harus mengukur masing-masing instans titik akhir dengan benar dan mengukur ukuran keseluruhan kluster MME dengan benar untuk memastikan kapasitas memori yang cukup tersedia per instans dan juga secara agregat untuk kluster untuk kasus penggunaan Anda. Armada router platform MME juga akan memaksimalkan cache hit.

Jangan agresif dengan bin mengemas terlalu banyak model pada instans memori yang lebih sedikit dan lebih besar

Memori bukan satu-satunya sumber daya pada instance yang harus diperhatikan. Sumber daya lain seperti CPU dapat menjadi faktor penghambat, seperti yang terlihat pada hasil uji beban berikut. Dalam beberapa kasus lain, kami juga telah mengamati sumber daya kernel lain seperti ID proses yang habis pada sebuah instance, karena kombinasi dari terlalu banyak model yang dimuat dan kerangka kerja ML yang mendasarinya (seperti TensorFlow) spawning thread per model yang merupakan kelipatan dari yang tersedia. vCPU.

Pengujian performa berikut menunjukkan contoh latensi model yang memengaruhi batasan CPU. Dalam pengujian ini, titik akhir instans tunggal dengan instans besar, sementara memiliki lebih dari cukup memori untuk menyimpan keempat model dalam memori, menghasilkan latensi model yang relatif lebih buruk di bawah beban bila dibandingkan dengan titik akhir dengan empat instans yang lebih kecil.

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

latensi model titik akhir instans tunggal

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

CPU endpoint instance tunggal & pemanfaatan memori

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

empat contoh latensi model titik akhir

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

empat instance CPU & penggunaan memori endpoint

Untuk mencapai kinerja dan efisiensi biaya, ukuran tepat klaster MME Anda dengan jumlah instans yang lebih kecil yang lebih tinggi yang secara agregat memberi Anda memori dan kapasitas CPU yang optimal sekaligus relatif setara dengan biaya dengan instans memori yang lebih sedikit namun lebih besar.

Model mental untuk mengoptimalkan MME

Ada empat metrik utama yang harus selalu Anda pertimbangkan saat mengukur MME dengan benar:

  • Jumlah dan ukuran model
  • Jumlah model unik yang dipanggil pada waktu tertentu
  • Jenis dan ukuran instans
  • Jumlah instance di belakang titik akhir

Mulailah dengan dua poin pertama, karena mereka menginformasikan poin ketiga dan keempat. Misalnya, jika tidak cukup instance di belakang titik akhir untuk jumlah atau ukuran model unik yang Anda miliki, memori agregat untuk titik akhir akan rendah dan Anda akan melihat rasio hit cache yang lebih rendah dan meronta-ronta di tingkat titik akhir karena MME akan sering memuat dan membongkar model masuk dan keluar dari memori.

Demikian pula, jika permintaan untuk model unik lebih tinggi dari memori agregat semua instance di belakang titik akhir, Anda akan melihat hit cache yang lebih rendah. Ini juga dapat terjadi jika ukuran instans (terutama kapasitas memori) terlalu kecil.

Penskalaan vertikal dengan instans memori yang sangat besar juga dapat menyebabkan masalah karena meskipun model dapat masuk ke dalam memori, sumber daya lain seperti proses CPU dan kernel serta batas utas dapat habis. Muat penskalaan horizontal uji dalam pra-produksi untuk mendapatkan jumlah dan ukuran instans yang optimal untuk MME Anda.

Kesimpulan

Dalam posting ini, Anda mendapatkan pemahaman yang lebih dalam tentang platform MME. Anda mempelajari kasus penggunaan teknis mana yang cocok untuk MME dan meninjau arsitektur platform MME. Anda memperoleh pemahaman yang lebih mendalam tentang peran setiap komponen dalam arsitektur MME dan komponen mana yang dapat Anda pengaruhi secara langsung kinerjanya. Terakhir, Anda telah melihat lebih dalam pada parameter konfigurasi yang dapat Anda sesuaikan untuk mengoptimalkan MME untuk kasus penggunaan Anda dan metrik yang harus Anda pantau untuk mempertahankan kinerja yang optimal.

Untuk memulai dengan MME, tinjau Titik Akhir Multi-Model Amazon SageMaker menggunakan XGBoost dan Host beberapa model dalam satu wadah di belakang satu titik akhir.


tentang Penulis

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Syed Jafry adalah Arsitek Solusi Utama dengan AWS. Dia bekerja dengan berbagai perusahaan dari organisasi menengah, perusahaan besar, layanan keuangan, dan ISV untuk membantu mereka membangun dan mengoperasikan aplikasi AI/ML yang hemat biaya dan skalabel di cloud.

Jalankan dan optimalkan inferensi multi-model dengan titik akhir multi-model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Saurabh Trikande adalah Manajer Produk Senior untuk Inferensi Amazon SageMaker. Dia bersemangat bekerja dengan pelanggan dan termotivasi oleh tujuan mendemokratisasi pembelajaran mesin. Dia berfokus pada tantangan inti yang terkait dengan penerapan aplikasi ML yang kompleks, model ML multi-penyewa, pengoptimalan biaya, dan membuat penerapan model pembelajaran mendalam lebih mudah diakses. Di waktu luangnya, Saurabh menikmati hiking, belajar tentang teknologi inovatif, mengikuti TechCrunch, dan menghabiskan waktu bersama keluarganya.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS