Pola desain untuk inferensi serial di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Pola desain untuk inferensi serial di Amazon SageMaker

Seiring pembelajaran mesin (ML) menjadi arus utama dan mendapatkan adopsi yang lebih luas, aplikasi yang didukung ML menjadi semakin umum untuk memecahkan berbagai masalah bisnis yang kompleks. Solusi untuk masalah bisnis yang kompleks ini sering kali memerlukan penggunaan beberapa model ML. Model-model ini dapat digabungkan secara berurutan untuk melakukan berbagai tugas, seperti pra-pemrosesan, transformasi data, pemilihan model, pembuatan inferensi, konsolidasi inferensi, dan pasca-pemrosesan. Organisasi memerlukan opsi yang fleksibel untuk mengatur alur kerja ML yang kompleks ini. Pipa inferensi serial adalah salah satu pola desain untuk mengatur alur kerja ini menjadi serangkaian langkah, dengan setiap langkah memperkaya atau memproses lebih lanjut output yang dihasilkan oleh langkah sebelumnya dan meneruskan output ke langkah berikutnya dalam pipa.

Selain itu, saluran inferensi serial ini harus menyediakan hal berikut:

  • Implementasi yang fleksibel dan disesuaikan (dependensi, algoritme, logika bisnis, dan sebagainya)
  • Dapat diulang dan konsisten untuk implementasi produksi
  • Pengangkatan berat yang tidak terdiferensiasi dengan meminimalkan manajemen infrastruktur

Dalam posting ini, kita melihat beberapa kasus penggunaan umum untuk saluran pipa inferensi serial dan menelusuri beberapa opsi implementasi untuk masing-masing kasus penggunaan ini menggunakan Amazon SageMaker. Kami juga membahas pertimbangan untuk masing-masing opsi implementasi ini.

Tabel berikut merangkum berbagai kasus penggunaan untuk inferensi serial, pertimbangan implementasi, dan opsi. Ini dibahas dalam posting ini.

Use Case Deskripsi Kasus Penggunaan Pertimbangan Utama Kompleksitas Implementasi Keseluruhan Opsi Implementasi yang Direkomendasikan Contoh Artefak dan Notebook Kode
Pipa inferensi serial (termasuk langkah-langkah pra-pemrosesan dan pasca-pemrosesan) Pipeline inferensi perlu melakukan praproses data yang masuk sebelum menjalankan model terlatih untuk menghasilkan inferensi, dan kemudian inferensi yang dihasilkan pascaproses, sehingga dapat dengan mudah digunakan oleh aplikasi hilir Kemudahan implementasi Rendah Wadah inferensi menggunakan Toolkit Inferensi SageMaker Terapkan Model PyTorch Terlatih
Pipa inferensi serial (termasuk langkah-langkah pra-pemrosesan dan pasca-pemrosesan) Pipeline inferensi perlu melakukan praproses data yang masuk sebelum menjalankan model terlatih untuk menghasilkan inferensi, dan kemudian inferensi yang dihasilkan pascaproses, sehingga dapat dengan mudah digunakan oleh aplikasi hilir Pemisahan, penerapan yang disederhanakan, dan peningkatan Medium Pipa inferensi SageMaker Pipeline Inferensi dengan Wadah Khusus dan xgBoost
Ansambel model serial Pipa inferensi perlu meng-host dan mengatur beberapa model secara berurutan, sehingga setiap model meningkatkan inferensi yang dihasilkan oleh yang sebelumnya, sebelum menghasilkan inferensi akhir Pemisahan, penerapan dan peningkatan yang disederhanakan, fleksibilitas dalam pemilihan kerangka model Medium Pipa inferensi SageMaker Pipeline Inferensi dengan Scikit-learn dan Linear Learner
Pipa inferensi serial (dengan pemanggilan model yang ditargetkan dari grup) Pipeline inferensi perlu memanggil model khusus yang disesuaikan dari sekelompok model yang diterapkan, berdasarkan karakteristik permintaan atau untuk optimasi biaya, selain tugas prapemrosesan dan pascapemrosesan Optimalisasi dan penyesuaian biaya High Pipa inferensi SageMaker dengan titik akhir multi-model (MME) Titik Akhir Multi-Model Amazon SageMaker menggunakan Linear Learner

Pada bagian berikut, kami membahas setiap kasus penggunaan secara lebih rinci.

Pipa inferensi serial menggunakan wadah inferensi

Kasus penggunaan pipeline inferensi serial memiliki persyaratan untuk melakukan praproses data yang masuk sebelum memanggil model ML yang telah dilatih sebelumnya untuk menghasilkan inferensi. Selain itu, dalam beberapa kasus, inferensi yang dihasilkan mungkin perlu diproses lebih lanjut, sehingga dapat dengan mudah digunakan oleh aplikasi hilir. Ini adalah skenario umum untuk kasus penggunaan di mana sumber data streaming perlu diproses secara real time sebelum model dapat dipasang di dalamnya. Namun, kasus penggunaan ini dapat bermanifestasi untuk inferensi batch juga.

SageMaker menyediakan opsi untuk menyesuaikan wadah inferensi dan menggunakannya untuk membangun saluran inferensi serial. Wadah inferensi menggunakan Perangkat Inferensi SageMaker dan dibangun di atas Server Multi Model SageMaker (MMS), yang menyediakan mekanisme fleksibel untuk melayani model ML. Diagram berikut mengilustrasikan pola referensi tentang cara menerapkan saluran inferensi serial menggunakan wadah inferensi.

SageMaker MMS mengharapkan skrip Python yang mengimplementasikan fungsi berikut untuk memuat model, melakukan praproses data masukan, mendapatkan prediksi dari model, dan pascaproses data keluaran:

  • input_fn () โ€“ Bertanggung jawab untuk deserializing dan preprocessing data input
  • model_fn () โ€“ Bertanggung jawab untuk memuat model terlatih dari artefak di Layanan Penyimpanan Sederhana Amazon (Amazon S3)
  • predict_fn () โ€“ Bertanggung jawab untuk menghasilkan kesimpulan dari model
  • output_fn () โ€“ Bertanggung jawab untuk membuat serialisasi dan pascapemrosesan data keluaran (inferensi)

Untuk langkah-langkah terperinci untuk menyesuaikan wadah inferensi, lihat Mengadaptasi Wadah Inferensi Anda Sendiri.

Wadah inferensi adalah pola desain yang ideal untuk kasus penggunaan pipa inferensi serial dengan pertimbangan utama berikut:

  • kohesi tinggi โ€“ Logika pemrosesan dan model yang sesuai mendorong fungsionalitas bisnis tunggal dan perlu ditempatkan bersama
  • Latensi keseluruhan rendah โ€“ Waktu yang berlalu antara saat permintaan inferensi dibuat dan respons diterima

Dalam pipa inferensi serial, logika pemrosesan dan model dienkapsulasi dalam wadah tunggal yang sama, sehingga banyak panggilan pemanggilan tetap berada di dalam wadah. Ini membantu mengurangi jumlah hop secara keseluruhan, menghasilkan latensi keseluruhan dan responsivitas pipeline yang lebih baik.

Juga, untuk kasus penggunaan di mana kemudahan implementasi merupakan kriteria penting, wadah inferensi dapat membantu, dengan berbagai langkah pemrosesan pipa ditempatkan bersama dalam wadah yang sama.

Pipa inferensi serial menggunakan pipa inferensi SageMaker

Variasi lain dari kasus penggunaan pipa inferensi serial memerlukan pemisahan yang lebih jelas antara berbagai langkah dalam pipa (seperti prapemrosesan data, pembuatan inferensi, pascapemrosesan data, serta pemformatan dan serialisasi). Hal ini dapat disebabkan oleh berbagai alasan:

  • Decoupling โ€“ Berbagai langkah pipa memiliki tujuan yang jelas dan perlu dijalankan pada wadah terpisah karena dependensi mendasar yang terlibat. Ini juga membantu menjaga saluran tetap terstruktur dengan baik.
  • Kerangka โ€“ Berbagai langkah pipeline menggunakan kerangka kerja khusus yang sesuai dengan tujuan (seperti scikit atau Spark ML) dan oleh karena itu perlu dijalankan pada wadah terpisah.
  • Isolasi Sumber Daya โ€“ Berbagai langkah dari pipeline memiliki persyaratan konsumsi sumber daya yang berbeda dan oleh karena itu perlu dijalankan pada container terpisah untuk lebih banyak fleksibilitas dan kontrol.

Lebih lanjut, untuk pipeline inferensi serial yang sedikit lebih kompleks, beberapa langkah mungkin dilibatkan untuk memproses permintaan dan menghasilkan inferensi. Oleh karena itu, dari sudut pandang operasional, mungkin bermanfaat untuk menampung langkah-langkah ini pada wadah terpisah untuk isolasi fungsional yang lebih baik, dan memfasilitasi peningkatan dan penyempurnaan yang lebih mudah (ubah satu langkah tanpa memengaruhi model atau langkah pemrosesan lainnya).

Jika kasus penggunaan Anda sejalan dengan beberapa pertimbangan ini, a Pipa inferensi SageMaker menyediakan opsi yang mudah dan fleksibel untuk membangun saluran inferensi serial. Diagram berikut mengilustrasikan pola referensi tentang cara mengimplementasikan pipeline inferensi serial menggunakan beberapa langkah yang dihosting di container khusus menggunakan pipeline inferensi SageMaker.

ml9154-inferensi-pipa

Pipeline inferensi SageMaker terdiri dari urutan linier 2โ€“15 container yang memproses permintaan untuk inferensi pada data. Pipeline inferensi menyediakan opsi untuk menggunakan algoritme bawaan SageMaker yang telah dilatih sebelumnya atau algoritme khusus yang dikemas dalam wadah Docker. Kontainer dihosting pada instance dasar yang sama, yang membantu mengurangi latensi keseluruhan dan meminimalkan biaya.

Cuplikan kode berikut menunjukkan bagaimana beberapa langkah dan model pemrosesan dapat digabungkan untuk membuat saluran inferensi serial.

Kami mulai dengan membangun dan menentukan model berbasis Spark ML dan XGBoost yang ingin kami gunakan sebagai bagian dari pipeline:

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 kemudian diatur secara berurutan dalam definisi model pipa:

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])

Pipeline inferensi kemudian di-deploy di belakang endpoint untuk inferensi real-time dengan menentukan jenis dan jumlah instans ML host:

sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

Seluruh pipa inferensi yang dirakit dapat dianggap sebagai model SageMaker yang dapat Anda gunakan untuk membuat prediksi waktu nyata atau memproses transformasi batch secara langsung, tanpa pra-pemrosesan eksternal apa pun. Dalam model pipa inferensi, SageMaker menangani pemanggilan sebagai urutan permintaan HTTP yang berasal dari aplikasi eksternal. Kontainer pertama dalam pipa menangani permintaan awal, melakukan beberapa pemrosesan, dan kemudian mengirimkan respons perantara sebagai permintaan ke kontainer kedua dalam pipa. Hal ini terjadi untuk setiap container dalam pipeline, dan akhirnya mengembalikan respons akhir ke aplikasi klien pemanggil.

Pipeline inferensi SageMaker dikelola sepenuhnya. Saat pipeline diterapkan, SageMaker menginstal dan menjalankan semua container yang ditentukan di masing-masing Cloud komputasi elastis Amazon Instans (Amazon EC2) disediakan sebagai bagian dari tugas transformasi titik akhir atau batch. Selain itu, karena container ditempatkan bersama dan dihosting pada instans EC2 yang sama, latensi pipeline keseluruhan berkurang.

Ansambel model serial menggunakan saluran inferensi SageMaker

Model ensemble adalah pendekatan dalam ML di mana beberapa model ML digabungkan dan digunakan sebagai bagian dari proses inferensi untuk menghasilkan inferensi akhir. Motivasi untuk model ensemble dapat mencakup peningkatan akurasi, pengurangan sensitivitas model terhadap fitur input tertentu, dan pengurangan bias model tunggal, antara lain. Dalam posting ini, kami fokus pada kasus penggunaan yang terkait dengan ansambel model serial, di mana beberapa model ML digabungkan secara berurutan sebagai bagian dari saluran inferensi serial.

Mari kita pertimbangkan contoh spesifik yang terkait dengan ansambel model serial di mana kita perlu mengelompokkan gambar yang diunggah pengguna berdasarkan tema atau topik tertentu. Pipeline ini dapat terdiri dari tiga model ML:

  • Model 1 โ€“ Menerima gambar sebagai masukan dan mengevaluasi kualitas gambar berdasarkan resolusi gambar, orientasi, dan lainnya. Model ini kemudian mencoba untuk meningkatkan kualitas gambar dan mengirimkan gambar yang diproses yang memenuhi ambang batas kualitas tertentu ke model berikutnya (Model 2).
  • Model 2 โ€“ Menerima gambar yang divalidasi melalui Model 1 dan melakukan pengenalan gambar untuk mengidentifikasi objek, tempat, orang, teks, dan tindakan dan konsep khusus lainnya dalam gambar. Output dari Model 2 yang berisi objek yang diidentifikasi dikirim ke Model 3.
  • Model 3 โ€“ Menerima output dari Model 2 dan melakukan tugas pemrosesan bahasa alami (NLP) seperti pemodelan topik untuk mengelompokkan gambar berdasarkan tema. Misalnya, gambar dapat dikelompokkan berdasarkan lokasi atau orang yang diidentifikasi. Output (pengelompokan) dikirim kembali ke aplikasi klien.

Diagram berikut mengilustrasikan pola referensi tentang cara menerapkan beberapa model ML yang dihosting pada ansambel model serial menggunakan saluran inferensi SageMaker.

ml9154-model-ansambel

Seperti yang dibahas sebelumnya, pipeline inferensi SageMaker dikelola, yang memungkinkan Anda untuk fokus pada pemilihan dan pengembangan model ML, sekaligus mengurangi pengangkatan berat yang tidak terdiferensiasi yang terkait dengan pembuatan pipeline serial ensemble.

Selain itu, beberapa pertimbangan yang dibahas sebelumnya seputar decoupling, algoritme dan pilihan kerangka kerja untuk pengembangan model, dan penerapan juga relevan di sini. Misalnya, karena setiap model dihosting di wadah terpisah, Anda memiliki fleksibilitas dalam memilih kerangka kerja ML yang paling sesuai dengan setiap model dan keseluruhan kasus penggunaan Anda. Selain itu, dari sudut pandang decoupling dan operasional, Anda dapat terus meningkatkan atau memodifikasi setiap langkah dengan lebih mudah, tanpa memengaruhi model lain.

Pipa inferensi SageMaker juga terintegrasi dengan Registri model SageMaker untuk pembuatan katalog model, pembuatan versi, manajemen metadata, dan penerapan yang diatur ke lingkungan produksi untuk mendukung praktik terbaik operasional yang konsisten. Pipa inferensi SageMaker juga terintegrasi dengan amazoncloudwatch untuk memungkinkan pemantauan model multi-kontainer dalam saluran pipa inferensi. Anda juga bisa mendapatkan visibilitas ke metrik waktu nyata untuk lebih memahami pemanggilan dan latensi untuk setiap penampung dalam alur, yang membantu pemecahan masalah dan pengoptimalan sumber daya.

Pipa inferensi serial (dengan pemanggilan model yang ditargetkan dari grup) menggunakan pipa inferensi SageMaker

Titik akhir multi-model SageMaker (MME) memberikan solusi hemat biaya untuk menerapkan sejumlah besar model ML di belakang satu titik akhir. Motivasi untuk menggunakan titik akhir multi-model dapat mencakup penerapan model khusus yang disesuaikan berdasarkan karakteristik permintaan (seperti asal, lokasi geografis, personalisasi pengguna, dan sebagainya) atau sekadar menghosting beberapa model di belakang titik akhir yang sama untuk mencapai pengoptimalan biaya.

Saat Anda menerapkan beberapa model pada satu titik akhir yang mengaktifkan multi-model, semua model berbagi sumber daya komputasi dan wadah penyajian model. Pipeline inferensi SageMaker dapat diterapkan pada MME, di mana salah satu container dalam pipeline dapat secara dinamis melayani permintaan berdasarkan model spesifik yang dipanggil. Dari perspektif pipeline, model memiliki persyaratan preprocessing yang identik dan mengharapkan set fitur yang sama, tetapi dilatih untuk menyelaraskan dengan perilaku tertentu. Diagram berikut mengilustrasikan pola referensi tentang cara kerja pipeline terintegrasi ini.

ml9154-mme

Dengan MME, permintaan inferensi yang berasal dari aplikasi klien harus menentukan model target yang perlu dipanggil. Kontainer pertama dalam pipa menangani permintaan awal, melakukan beberapa pemrosesan, dan kemudian mengirimkan respons perantara sebagai permintaan ke kontainer kedua dalam pipa, yang menampung beberapa model. Berdasarkan model target yang ditentukan dalam permintaan inferensi, model dipanggil untuk menghasilkan inferensi. Inferensi yang dihasilkan dikirim ke wadah berikutnya dalam pipa untuk diproses lebih lanjut. Ini terjadi untuk setiap penampung berikutnya dalam alur, dan akhirnya SageMaker mengembalikan respons akhir ke aplikasi klien pemanggil.

Beberapa artefak model dipertahankan dalam bucket S3. Saat model tertentu dipanggil, SageMaker secara dinamis memuatnya ke wadah yang menampung titik akhir. Jika model sudah dimuat dalam memori container, pemanggilan lebih cepat karena SageMaker tidak perlu mengunduh model dari Amazon S3. Jika penggunaan memori instan tinggi dan model baru dipanggil dan oleh karena itu perlu dimuat, model yang tidak digunakan akan diturunkan dari memori. Namun, model yang dibongkar tetap berada dalam volume penyimpanan instans, dan dapat dimuat ke dalam memori penampung nanti lagi, tanpa diunduh dari bucket S3 lagi.

Salah satu pertimbangan utama saat menggunakan MME adalah memahami perilaku latensi pemanggilan model. Seperti yang telah dibahas sebelumnya, model dimuat secara dinamis ke dalam memori container dari instance yang menghosting titik akhir saat dipanggil. Oleh karena itu, pemanggilan model mungkin memerlukan waktu lebih lama saat dipanggil untuk pertama kali. Ketika model sudah ada dalam memori wadah instance, pemanggilan berikutnya lebih cepat. Jika penggunaan memori instans tinggi dan model baru perlu dimuat, model yang tidak digunakan akan dibongkar. Jika volume penyimpanan instans penuh, model yang tidak digunakan akan dihapus dari volume penyimpanan. SageMaker sepenuhnya mengelola pemuatan dan pembongkaran model, tanpa Anda harus melakukan tindakan tertentu. Namun, penting untuk memahami perilaku ini karena memiliki implikasi pada latensi pemanggilan model dan oleh karena itu latensi end-to-end secara keseluruhan.

Opsi hosting saluran pipa

SageMaker menyediakan banyak jenis contoh opsi yang dapat dipilih untuk men-deploy model ML dan membangun pipeline inferensi, berdasarkan kasus penggunaan, throughput, dan persyaratan biaya Anda. Misalnya, Anda dapat memilih instans yang dioptimalkan CPU atau GPU untuk membuat pipeline inferensi serial, pada satu container atau di beberapa container. Namun, terkadang ada persyaratan yang menginginkan fleksibilitas dan dukungan untuk menjalankan model pada instans berbasis CPU atau GPU dalam saluran yang sama untuk fleksibilitas tambahan.

Anda sekarang dapat menggunakan NVIDIA Triton Inference Server untuk menyajikan model inferensi di SageMaker untuk persyaratan komputasi yang heterogen. Periksa Terapkan AI yang cepat dan skalabel dengan Server Inferensi NVIDIA Triton di Amazon SageMaker untuk detail tambahan.

Kesimpulan

Saat organisasi menemukan dan membangun solusi baru yang didukung oleh ML, alat yang diperlukan untuk mengatur jalur pipa ini harus cukup fleksibel untuk mendukung berdasarkan kasus penggunaan tertentu, sambil menyederhanakan dan mengurangi biaya operasional yang sedang berlangsung. SageMaker menyediakan beberapa opsi untuk merancang dan membangun alur kerja inferensi serial ini, berdasarkan kebutuhan Anda.

Kami berharap dapat mendengar dari Anda tentang kasus penggunaan apa yang Anda buat menggunakan saluran inferensi serial. Jika Anda memiliki pertanyaan atau umpan balik, silakan bagikan di komentar.


Tentang penulis

Pola desain untuk inferensi serial di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Rahul Sharma adalah Arsitek Solusi Senior di AWS Data Lab, membantu pelanggan AWS merancang dan membangun solusi AI/ML. Sebelum bergabung dengan AWS, Rahul telah menghabiskan beberapa tahun di sektor keuangan dan asuransi, membantu pelanggan membangun platform data dan analitik.

Pola desain untuk inferensi serial di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Anand Prakash adalah Arsitek Solusi Senior di AWS Data Lab. Anand berfokus untuk membantu pelanggan merancang dan membangun AI/ML, analisis data, dan solusi database untuk mempercepat jalur mereka menuju produksi.

Pola desain untuk inferensi serial 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.

Pola desain untuk inferensi serial di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Saurabh Trikande adalah Manajer Produk Senior untuk Inferensi Amazon SageMaker. Dia bersemangat bekerja dengan pelanggan dan membuat pembelajaran mesin 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