Gunakan pendekatan arsitektur banyak model untuk menskalakan model pembelajaran mesin
Artikel ini menjelaskan arsitektur untuk banyak model yang menggunakan Azure Machine Learning dan kluster komputasi. Arsitektur banyak model memberikan fleksibilitas untuk situasi yang memerlukan penyiapan kompleks.
Sistem
Unduh file Visio arsitektur ini.
Aliran Data
Aliran data berikut sesuai dengan diagram sebelumnya:
penyerapan data :
Azure Data Factory mengambil data dari database sumber dan menyalinnya ke Azure Data Lake Storage.
Data kemudian disimpan di penyimpanan data Pembelajaran Mesin sebagai himpunan data tabular.
Alur pelatihan model:
Menyiapkan data:
Alur pelatihan mengambil data dari penyimpanan data dan mengubahnya sesuai kebutuhan.
Data dikelompokkan ke dalam himpunan data untuk melatih model.
Melatih model:
Alur melatih model untuk semua himpunan data yang dibuat selama persiapan data.
Ini menggunakan kelas
ParallelRunStep
untuk melatih beberapa model secara paralel.Setelah model dilatih, alur mendaftarkan model dan metrik pengujiannya di Pembelajaran Mesin.
Alur promosi model:
Mengevaluasi model:
Alur promosi mengevaluasi model terlatih sebelum memindahkannya ke produksi.
Alur Azure DevOps menerapkan logika bisnis untuk menentukan apakah model memenuhi kriteria penyebaran. Misalnya, mungkin memverifikasi bahwa akurasi pada data pengujian melebihi 80%.
Mendaftarkan model:
- Alur promosi mendaftarkan model yang memenuhi syarat ke ruang kerja Pembelajaran Mesin produksi.
Alur penilaian batch model:
Menyiapkan data:
Alur penilaian batch mengambil data dari penyimpanan data dan mengubah setiap file sesuai kebutuhan.
Data dikelompokkan ke dalam himpunan data untuk penilaian.
model Score:
Alur menggunakan kelas
ParallelRunStep
untuk menilai beberapa himpunan data secara paralel.Ini mengidentifikasi model yang sesuai untuk setiap himpunan data di Pembelajaran Mesin dengan mencari tag model.
Model diunduh dan digunakan untuk menilai himpunan data.
Kelas
DataTransferStep
menulis hasilnya kembali ke Azure Data Lake.Prediksi diteruskan dari Azure Data Lake ke Synapse SQL untuk penyajian.
Titik akhir online terkelola menyediakan penilaian real-time.
Karena banyaknya model, model dimuat sesuai permintaan alih-alih dimuat sebelumnya.
Hasil:
Prediksi: Alur penilaian batch menyimpan prediksi ke Synapse SQL.
metrik : Microsoft Power BI tersambung ke prediksi model untuk mengambil dan menggabungkan hasil untuk presentasi.
Komponen
Azure Data Factory adalah layanan integrasi data berbasis cloud yang memungkinkan pembuatan alur kerja berbasis data untuk mengatur dan mengotomatiskan pergerakan dan transformasi data. Dalam arsitektur ini, Azure Data Factory menyerap data perusahaan dan metadata pihak ketiga ke Dalam Data Lake Storage.
Azure DevOps adalah seperangkat layanan pengembang yang menyediakan manajemen siklus hidup aplikasi dan infrastruktur yang komprehensif. Ini termasuk alat untuk alur integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD), pelacakan kerja, kontrol sumber, alur build, manajemen paket, dan solusi pengujian. Dalam arsitektur ini, Azure DevOps digunakan untuk mengelola alur CI/CD untuk mengotomatiskan promosi, pengujian, dan penyebaran model ke lingkungan produksi.
Azure SQL Database adalah database cloud relasional yang dikelola sepenuhnya. Dalam arsitektur ini, SQL Database digunakan untuk menyimpan data terstruktur yang mungkin dikueri atau dianalisis sebagai bagian dari alur data.
Azure Stream Analytics adalah analitik real time dan layanan pemrosesan peristiwa kompleks yang dirancang untuk menganalisis dan memproses data streaming cepat dalam volume tinggi. Dalam arsitektur ini, Azure Stream Analytics dapat digunakan untuk pemrosesan data real time.
Azure Synapse Analytics adalah layanan analitik yang menyatukan integrasi data, pergudangan data perusahaan, dan analitik big data. Ini digunakan dalam arsitektur ini untuk menyimpan hasil penilaian batch. Pendekatan ini memungkinkan kueri dan pengambilan prediksi yang efisien untuk pelaporan atau analisis. Synapse SQL digunakan untuk melayani prediksi ke aplikasi hilir dan mengaktifkan alat visualisasi seperti Power BI untuk mengakses hasil agregat.
Data Lake Storage adalah layanan penyimpanan yang dapat diskalakan dan aman secara besar-besaran untuk beban kerja analitik berkinerja tinggi. Dalam arsitektur ini, Data Lake Storage berfungsi sebagai lapisan penyimpanan utama untuk himpunan data mentah dan diubah, dan untuk menyimpan hasil dari alur penilaian.
Machine Learning adalah layanan pembelajaran mesin tingkat perusahaan untuk membangun dan menyebarkan model dengan cepat. Ini memberi pengguna di semua tingkat keterampilan dengan alat seperti desainer kode rendah, pembelajaran mesin otomatis, dan lingkungan notebook Jupyter yang dihosting yang mendukung berbagai lingkungan pengembangan terintegrasi. Dalam arsitektur ini, Pembelajaran Mesin digunakan untuk mengelola siklus hidup model, termasuk pelatihan, evaluasi, dan penyebaran. Ini juga mengatur alur untuk tugas-tugas seperti pelatihan, promosi, dan penilaian.
Titik akhir online terkelola adalah fitur Pembelajaran Mesin yang digunakan untuk penilaian real time. Dalam arsitektur ini, titik akhir online terkelola membantu menyediakan cara yang dapat diskalakan dan aman untuk melayani prediksi mendekati real-time dengan memuat model pembelajaran mesin sesuai permintaan.
kelas ParallelRunStep adalah komponen alur Pembelajaran Mesin yang digunakan untuk menjalankan pekerjaan paralel secara efisien. Ini memungkinkan pemrosesan tugas batch yang dapat diskalakan, seperti pelatihan atau penilaian banyak model secara bersamaan. Dalam arsitektur ini, kelas
ParallelRunStep
digunakan dalam alur pelatihan model dan penilaian batch untuk melatih atau menilai beberapa himpunan data atau model secara paralel, yang secara signifikan mengurangi runtime operasi ini.
Power BI adalah kumpulan layanan perangkat lunak, aplikasi, dan konektor yang bekerja sama untuk mengubah sumber data yang tidak terkait menjadi wawasan yang koheren, imersif secara visual, dan interaktif. Dalam arsitektur ini, Power BI tersambung ke Synapse SQL untuk mengambil dan menyajikan prediksi dan metrik agregat melalui dasbor interaktif.
Alternatif
Anda dapat menggunakan database apa pun untuk data sumber.
Anda dapat menggunakan Azure Kubernetes Service (AKS) untuk inferensi real time alih-alih titik akhir online terkelola. AKS memungkinkan Anda untuk menyebarkan model kontainer dan memberikan kontrol lebih besar atas penyebaran. Kemampuan ini memungkinkan pemuatan model dinamis untuk menangani permintaan masuk tanpa menguras sumber daya.
Detail skenario
Banyak masalah pembelajaran mesin terlalu kompleks untuk diselesaikan oleh satu model pembelajaran mesin. Baik memprediksi penjualan untuk setiap item setiap toko atau pemeliharaan pemodelan untuk ratusan sumur oli, memiliki model untuk setiap instans dapat meningkatkan hasil pada banyak masalah pembelajaran mesin. Pola banyak model ini umum di berbagai industri, dan memiliki banyak kasus penggunaan dunia nyata. Dengan penggunaan Pembelajaran Mesin, alur banyak model end-to-end dapat mencakup pelatihan model, penyebaran inferensi batch, dan penyebaran real-time.
Solusi banyak model membutuhkan himpunan data yang berbeda untuk setiap model selama pelatihan dan penilaian. Misalnya, jika tugasnya adalah memprediksi penjualan untuk setiap item di setiap penyimpanan, setiap himpunan data sesuai dengan kombinasi penyimpanan item yang unik.
Kemungkinan kasus penggunaan
Retail: Rantai toko kelontong perlu membuat model prakiraan pendapatan terpisah untuk setiap toko dan item, dengan total lebih dari 1.000 model untuk setiap toko.
Rantai pasokan: Untuk setiap kombinasi gudang dan produk, perusahaan distribusi perlu mengoptimalkan inventaris.
Restoran: Rantai dengan ribuan waralaba perlu memperkirakan permintaan untuk setiap waralaba.
Pertimbangan
Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat Anda gunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Well-Architected Framework.
Partisi data: Membaru data menjadi partisi sangat penting untuk menerapkan pola banyak model. Jika Anda menginginkan satu model untuk setiap penyimpanan, setiap himpunan data berisi semua data untuk satu penyimpanan, sehingga ada himpunan data sebanyak penyimpanan. Jika Anda ingin memodelkan produk berdasarkan penyimpanan, ada himpunan data untuk setiap kombinasi produk dan penyimpanan. Bergantung pada format data sumber, mungkin mudah untuk mempartisi data, atau mungkin memerlukan pengacakan dan transformasi data yang luas. Spark dan Synapse SQL menskalakan dengan baik untuk tugas-tugas ini, sementara panda Python tidak karena berjalan pada satu simpul dan proses.
Manajemen model: Alur pelatihan dan penilaian mengidentifikasi dan memanggil model yang tepat untuk setiap himpunan data. Mereka melakukan ini dengan menghitung tag yang mencirikan himpunan data, lalu menggunakan tag untuk menemukan model yang cocok. Tag mengidentifikasi kunci partisi data dan versi model, dan mungkin juga memberikan informasi lain.
Pilih arsitektur yang tepat:
Spark cocok ketika alur pelatihan Anda memiliki transformasi data yang kompleks dan persyaratan pengelompokan. Ini menyediakan teknik pemisahan dan pengelompokan yang fleksibel untuk mengelompokkan data berdasarkan kombinasi karakteristik, seperti toko produk atau produk lokasi. Hasilnya dapat diletakkan di Spark DataFrame untuk digunakan pada langkah selanjutnya.
Jika pelatihan pembelajaran mesin dan algoritma penilaian Anda mudah, Anda mungkin dapat mempartisi data dengan pustaka seperti scikit-learn. Dalam skenario ini, Anda mungkin tidak memerlukan Spark, sehingga Anda dapat menghindari kemungkinan kompleksitas yang muncul saat menginstal Azure Synapse Analytics atau Azure Databricks.
Jika himpunan data pelatihan Anda sudah dibuat, seperti saat disimpan dalam file terpisah atau diatur ke dalam baris atau kolom yang berbeda, Anda tidak memerlukan Spark untuk transformasi data yang kompleks.
Solusi Pembelajaran Mesin dan kluster komputasi memberikan fleksibilitas untuk situasi yang memerlukan penyiapan kompleks. Misalnya, Anda dapat menggunakan kontainer Docker kustom, mengunduh file, atau mengunduh model yang telah dilatih sebelumnya. Visi komputer dan pembelajaran mendalam pemrosesan bahasa alami adalah contoh aplikasi yang mungkin memerlukan fleksibilitas ini.
Repositori model terpisah: Untuk melindungi model yang disebarkan, pertimbangkan untuk menyimpannya di repositori mereka sendiri yang tidak diakses oleh alur pelatihan dan pengujian.
kelas ParallelRunStep: kelas Python ParallelRunStep adalah opsi yang kuat untuk menjalankan banyak pelatihan dan inferensi model. Ini dapat mempartisi data Anda dengan berbagai cara dan kemudian menerapkan skrip pembelajaran mesin Anda pada elemen partisi secara paralel. Seperti bentuk pelatihan Pembelajaran Mesin lainnya, Anda dapat menentukan lingkungan pelatihan kustom yang memiliki akses ke paket Python Package Index (PyPI), atau lingkungan Docker kustom yang lebih canggih untuk konfigurasi yang memerlukan lebih dari PyPI standar. Ada banyak CPU dan GPU yang bisa dipilih.
Inferensi online: Jika alur memuat dan menyimpan semua model dari awal, model mungkin menguras memori kontainer. Oleh karena itu, muat model sesuai permintaan dalam metode lari, meskipun mungkin sedikit meningkatkan latensi.
Pengoptimalan Biaya
Pengoptimalan Biaya berfokus pada cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Pengoptimalan Biaya.
Untuk lebih memahami biaya untuk menjalankan skenario ini di Azure, gunakan kalkulator harga . Anda harus berasumsi bahwa:
Model penyajian dilatih setiap hari untuk menjaga mereka saat ini.
Anda memerlukan waktu sekitar 30 menit untuk memproses himpunan data yang berisi 40 juta baris dari 10 ribu kombinasi produk toko unik. Himpunan data dilatih di Azure Databricks dengan menggunakan kluster yang disediakan dengan 12 komputer virtual (VM) yang menggunakan instans Ls16_v2. Penilaian batch dengan kumpulan data yang sama memerlukan waktu sekitar 20 menit.
Anda dapat menggunakan Pembelajaran Mesin untuk menyebarkan inferensi real-time. Bergantung pada volume permintaan Anda, pilih jenis VM dan ukuran kluster yang sesuai.
Kluster AKS secara otomatis menskalakan sesuai kebutuhan, yang menghasilkan rata-rata dua simpul aktif setiap bulan.
Untuk melihat perbedaan harga untuk kasus penggunaan Anda, ubah variabel dalam kalkulator harga agar sesuai dengan ukuran data yang diharapkan dan persyaratan beban penyajian Anda. Untuk ukuran data pelatihan yang lebih besar atau lebih kecil, tambah atau kurangi ukuran kluster Azure Databricks. Untuk menangani lebih banyak pengguna bersamaan selama penyajian model, tambah ukuran kluster AKS.
Kontributor
Microsoft mempertahankan artikel ini. Kontributor berikut menulis artikel ini.
Penulis utama:
- James Nguyen | Arsitek Solusi Cloud Utama
Untuk melihat profil LinkedIn nonpublik, masuk ke LinkedIn.
Langkah berikutnya
- Mengonfigurasi kluster Kubernetes untuk Pembelajaran Mesin
- Repositori GitHub akselerator solusi banyak model
- kelas ParallelRunStep
- kelas DataTransferStep
- Membuat penyimpanan data
- Apakah Azure Synapse Analytics itu?
- Menyebarkan model ke kluster AKS