Banyak model pembelajaran mesin dalam skala besar dengan Azure Pembelajaran Mesin

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

Artikel ini menjelaskan arsitektur untuk banyak model yang menggunakan Pembelajaran Mesin dan kluster komputasi. Ini memberikan fleksibilitas besar untuk situasi yang memerlukan pengaturan yang kompleks.

Artikel pendamping, Banyak model pembelajaran mesin dalam skala besar di Azure dengan Spark, menggunakan Apache Spark di Azure Databricks atau Azure Synapse Analytics.

Sistem

Diagram arsitektur untuk pembelajaran mesin banyak model dalam skala besar di Azure dengan Azure Machine Learning.

Unduh file Visio arsitektur ini.

Alur kerja

  1. Konsumsi data: Azure Data Factory menarik data dari database sumber dan menyalinnya ke Azure Data Lake Storage. Lalu menyimpannya di penyimpanan data Pembelajaran Mesin sebagai himpunan data tabular.
  2. Alur pelatihan model:
    1. Menyiapkan data: Alur pelatihan menarik data dari penyimpanan data dan mengubahnya lebih lanjut, sesuai kebutuhan. Ini juga mengelompokkan data ke dalam himpunan data untuk melatih model.
    2. Melatih model: Alur melatih model untuk semua himpunan data yang dibuat selama penyiapan data. Alur ini menggunakan kelas ParallelRunStep untuk melatih beberapa model secara paralel. Setelah model dilatih, pipeline akan mendaftarkannya ke Pembelajaran Mesin bersama dengan metrik pengujian.
  3. Alur promosi model:
    1. 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, alur ini mungkin memeriksa bahwa keakuratan data pengujian lebih dari 80 persen.
    2. Mendaftarkan model: Alur promosi mendaftarkan model yang memenuhi syarat untuk ruang kerja Pembelajaran Mesin produksi.
  4. Alur penilaian batch model:
    1. Menyiapkan data: Alur penilaian batch menarik data dari penyimpanan data dan selanjutnya mengubah setiap file sesuai kebutuhan. Ini juga mengelompokkan data ke dalam himpunan data untuk penilaian.
    2. Menilai model: Alur menggunakan kelas ParallelRunStep untuk menilai beberapa himpunan data secara paralel. Alur ini menemukan model yang sesuai untuk setiap himpunan data dalam Pembelajaran Mesin dengan mencari tag model. Kemudian mengunduh model dan menggunakannya untuk menilai himpunan data. Ini menggunakan kelas DataTransferStep untuk menulis hasilnya kembali ke Azure Data Lake, lalu meneruskan prediksi dari Azure Data Lake ke Synapse SQL untuk ditampilkan.
  5. Penilaian real-time: Azure Kubernetes Service (AKS) dapat melakukan penilaian real-time jika diperlukan. Karena banyaknya model, model tersebut harus dimuat sesuai permintaan, bukan dimuat sebelumnya.
  6. Hasil:
    1. Prediksi: Alur penilaian batch menyimpan prediksi ke Synapse SQL.
    2. Metrik: Power BI menghubungkan ke prediksi model untuk mengambil dan mengumpulkan hasil untuk presentasi.

Komponen

  • Azure Pembelajaran Mesin adalah layanan pembelajaran mesin tingkat perusahaan untuk membangun dan menyebarkan model dengan cepat. Layanan ini memberikan desainer kode rendah untuk pengguna di semua tingkat keterampilan, ML otomatis (AutoML), dan lingkungan buku catatan Jupyter yang di-hosting yang mendukung berbagai IDE.
  • Azure Databricks adalah alat rekayasa data berbasis cloud yang didasarkan pada Apache Spark. Ini dapat memproses dan mengubah sejumlah besar data dan menjelajahinya dengan menggunakan model pembelajaran mesin. Anda dapat menulis pekerjaan di R, Python, Java, Scala, dan Spark SQL.
  • Azure Synapse Analytics adalah layanan analitik yang menyatukan integrasi data, pergudangan data perusahaan, dan analitik big data.
  • Synapse SQL adalah sistem kueri terdistribusi untuk T-SQL yang memungkinkan pergudangan data dan skenario virtualisasi data serta memperluas T-SQL untuk mengatasi skenario {i>streamingmachine learning
  • Azure Data Lake Storage adalah layanan penyimpanan yang dapat diskalakan dan aman secara besar-besaran untuk beban kerja analitik berperforma tinggi.
  • Azure Kubernetes Service (AKS) adalah layanan Kubernetes yang terkelola sepenuhnya untuk menyebarkan dan mengelola aplikasi dalam kontainer. AKS menyederhanakan penyebaran kluster AKS terkelola di Azure dengan memindahkan overhead operasional ke Azure.
  • Azure DevOps adalah seperangkat layanan pengembang yang menyediakan manajemen siklus hidup aplikasi dan infrastruktur yang komprehensif. Azure DevOps meliputi pelacakan kerja, kontrol sumber, build dan CI/CD, manajemen paket, dan solusi pengujian.
  • Microsoft Power BI adalah kumpulan layanan perangkat lunak, aplikasi, dan konektor yang bekerja bersama untuk mengubah sumber data yang tidak terkait menjadi insight yang koheren, imersif secara visual, dan interaktif.

Alternatif

  • Data sumber dapat berasal dari database mana pun.
  • Anda dapat menggunakan titik akhir online terkelola atau AKS untuk menyebarkan inferensi real-time.

Detail skenario

Banyak masalah pembelajaran mesin terlalu kompleks untuk diselesaikan oleh satu model pembelajaran mesin. Baik memprediksi penjualan untuk setiap item setiap toko, atau memodelkan pemeliharaan 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 Azure Machine Learning, banyak alur model menyeluruh dapat menyertakan 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 dari setiap toko, setiap himpunan data akan dimaksudkan untuk kombinasi toko barang yang unik.

Kemungkinan kasus penggunaan

  • Retail: Jaringan toko kelontong perlu membuat model perkiraan pendapatan terpisah untuk setiap toko dan item, dengan total lebih dari 1.000 model per toko.
  • Rantai pasokan: Untuk setiap kombinasi gudang dan produk, perusahaan distribusi perlu mengoptimalkan inventaris.
  • Restoran: Sebuah rantai dengan ribuan waralaba perlu memperkirakan permintaan untuk masing-masing.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

  • Partisi data Partisi data adalah kunci untuk menerapkan pola banyak model. Jika Anda menginginkan satu model per penyimpanan, himpunan data terdiri dari semua data untuk satu penyimpanan, dan ada banyak himpunan data karena ada banyak penyimpanan. Jika Anda ingin membuat model produk berdasarkan toko, akan ada himpunan data untuk setiap kombinasi produk dan toko. Bergantung pada format data sumber, mungkin mudah untuk mempartisi data, atau mungkin memerlukan pengacakan dan transformasi data yang luas. Spark dan Synapse SQL menskalakan tugas-tugas seperti itu dengan sangat baik, sementara pandas Python tidak, karena hanya berjalan pada satu node dan proses.
  • Manajemen model: Alur pelatihan dan penilaian mengidentifikasi dan memanggil model yang tepat untuk setiap himpunan data. Untuk melakukan ini, mereka menghitung tag yang menjadi ciri khas himpunan data, lalu menggunakan tag untuk menemukan model yang cocok. Tag mengidentifikasi kunci partisi data dan versi model, dan mungkin juga memberikan informasi lain.
  • Memilih arsitektur yang tepat:
    • Spark sesuai jika 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.
    • Saat pelatihan pembelajaran mesin dan algoritma penilaian Anda mudah, Anda mungkin dapat mempartisi data dengan pustaka seperti scikit-learn. Dalam kasus seperti itu, Anda mungkin tidak memerlukan Spark, sehingga Anda dapat menghindari kemungkinan kompleksitas yang dapat muncul saat menginstal Azure Synapse atau Azure Databricks.
    • Saat himpunan data pelatihan sudah dibuat—misalnya, himpunan data tersebut berada dalam file terpisah atau di baris atau kolom terpisah—Anda tidak memerlukan Spark untuk transformasi data yang kompleks.
    • Solusi kluster Pembelajaran Mesin dan komputasi memberikan fleksibilitas yang besar untuk situasi yang memerlukan pengaturan yang kompleks. Misalnya, Anda dapat menggunakan kontainer Docker kustom, atau mengunduh file, atau mengunduh model yang dilatih sebelumnya. Visi komputer dan pembelajaran mendalam pemrosesan bahasa alami (NLP) adalah contoh aplikasi yang mungkin memerlukan fleksibilitas tersebut.
  • Spark pelatihan dan penilaian: Saat Anda menggunakan arsitektur Spark, Anda dapat menggunakan API fungsi pandas Spark untuk melakukan pelatihan dan penilaian paralel.
  • Repositori model terpisah: Untuk melindungi model yang disebarkan, pertimbangkan untuk menyimpannya di repositorinya sendiri yang tidak disentuh oleh alur pelatihan dan pengujian.
  • Kelas ParallelRunStep:ParallelRunStep Class Python adalah pilihan yang kuat untuk menjalankan banyak model pelatihan dan inferensi. Ini dapat mempartisi data Anda dengan berbagai cara, lalu menerapkan skrip pembelajaran mesin Anda pada elemen partisi secara paralel. Seperti bentuk pelatihan Pembelajaran Mesin lainnya, Anda dapat menentukan lingkungan pelatihan kustom dengan 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 di awal, model mungkin menghabiskan memori kontainer. Oleh karena itu, muat model sesuai permintaan dalam metode lari, meskipun mungkin sedikit meningkatkan latensi.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

Untuk lebih memahami biaya menjalankan skenario ini di Azure, gunakan kalkulator harga. Asumsi awal yang baik adalah:

  • Model penyajian dilatih setiap hari untuk menjaga mereka saat ini.
  • Untuk himpunan data 40 juta baris dengan 10 ribu kombinasi toko dan produk, pelatihan di Azure Databricks menggunakan kluster yang disediakan dengan 12 VM yang menggunakan instans Ls16_v2, memerlukan waktu sekitar 30 menit.
  • Penilaian batch dengan kumpulan data yang sama memerlukan waktu sekitar 20 menit.
  • Anda dapat menggunakan Pembelajaran Mesin untuk menyebarkan inferensi real-time. Berdasarkan volume permintaan Anda, pilih jenis VM dan ukuran kluster yang sesuai.
  • Penskalaan otomatis kluster AKS sesuai kebutuhan, menghasilkan rata-rata dua node per bulan aktif.

Untuk melihat perbedaan harga untuk kasus penggunaan Anda, ubah variabel agar sesuai dengan ukuran data yang Anda harapkan dan persyaratan beban peyajian. 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

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Langkah berikutnya