Pembelajaran mesin (ML) banyak model dalam skala besar di Azure dengan Spark

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

Artikel ini menjelaskan arsitektur untuk banyak model yang menggunakan Apache Spark di Azure Databricks atau Azure Synapse Analytics. Spark adalah alat yang ampuh untuk transformasi data besar dan kompleks yang membutuhkan beberapa solusi.

Catatan

Gunakan Spark versi 3.0 dan versi lebih baru untuk banyak aplikasi model. Kemampuan transformasi data dan dukungan untuk Python dan pandas jauh lebih baik daripada versi sebelumnya.

Artikel pendamping, Banyak model pembelajaran mesin dalam skala besar dengan Azure Pembelajaran Mesin, menggunakan Pembelajaran Mesin dan kluster komputasi.

Sistem

Diagram arsitektur untuk banyak model pembelajaran mesin  dalam skala besar di Azure dengan Azure with Spark.

Unduh file Visio arsitektur ini.

Aliran data

  1. Konsumsi data: Azure Data Factory menarik data dari database sumber dan menyalinnya ke Azure Data Lake Storage.
  2. Alur pelatihan model:
    1. Siapkan data: alur pelatihan menarik data dari Data Lake Storage dan menggunakan Spark untuk mengelompokkannya ke dalam dataset untuk melatih model.
    2. Melatih model: Alur melatih model untuk semua himpunan data yang dibuat selama penyiapan data. Ini menggunakan Panda Fungsi API 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. Siapkan data: alur pelatihan batch menarik data dari Data Lake Storage dan menggunakan Spark untuk mengelompokkannya ke dalam dataset untuk melatih model.
    2. Model skor: Pipeline menggunakan API fungsi panda untuk mencetak beberapa dataset 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 konektor Spark ke Synapse SQL untuk mempertahankan hasilnya.
  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 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

  • Anda dapat menggunakan Spark di dalam Azure Synapse, bukan Spark di Azure Databricks untuk pelatihan dan penilaian model.
  • 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. Banyaknya Pola model ini sangat umum di berbagai industri, dan berlaku untuk 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 dapat 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.
  • 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.
  • Skalabilitas pelatihan: Dengan menggunakan Spark, Anda dapat melatih ratusan ribu model secara paralel. Spark memutar beberapa proses pelatihan di setiap VM dalam satu kluster. Setiap inti dapat menjalankan proses yang terpisah. Meskipun ini berarti pemanfaatan sumber daya yang baik, penting untuk mengukur kluster secara akurat dan memilih SKU yang tepat, terutama jika proses pelatihan mahal dan berjalan lama.

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