Praktik terbaik untuk proyek ilmu data dengan analitik skala cloud di Azure

Kami merekomendasikan praktik terbaik ini untuk menggunakan analitik skala cloud di Microsoft Azure untuk mengoperalisasi proyek ilmu data.

Mengembangkan templat

Kembangkan templat yang menggabungkan sekumpulan layanan untuk proyek ilmu data Anda. Gunakan templat yang menggabungkan serangkaian layanan untuk membantu memberikan konsistensi di berbagai kasus penggunaan tim ilmu data. Kami menyarankan agar Anda mengembangkan cetak biru yang konsisten dalam bentuk repositori templat. Anda dapat menggunakan repositori ini untuk berbagai proyek ilmu data dalam perusahaan Anda untuk membantu mempersingkat waktu penyebaran.

Panduan untuk templat ilmu data

Kembangkan templat ilmu data untuk organisasi Anda dengan panduan berikut:

  • Kembangkan serangkaian templat infrastruktur sebagai kode (IaC) untuk menyebarkan ruang kerja Azure Pembelajaran Mesin. Sertakan sumber daya seperti brankas kunci, akun penyimpanan, registri kontainer, dan Application Insights.

  • Sertakan penyiapan penyimpanan data dan target komputasi dalam templat ini, seperti instans komputasi, kluster komputasi, dan Azure Databricks.

Praktik terbaik penerapan

Real time

  • Sertakan penyebaran Azure Data Factory atau Azure Synapse dalam templat dan Azure Cognitive Services.
  • Templat harus menyediakan semua alat yang diperlukan untuk menjalankan fase eksplorasi ilmu data dan operasionalisasi awal model.

Pertimbangan untuk penyiapan awal

Dalam beberapa kasus, ilmuwan data di organisasi Anda mungkin memerlukan lingkungan untuk analisis cepat sesuai kebutuhan. Situasi ini umum terjadi ketika proyek ilmu data tidak disiapkan secara resmi. Misalnya, manajer proyek, kode biaya, atau pusat biaya yang mungkin diperlukan untuk pengisian silang dalam Azure mungkin hilang karena elemen yang hilang memerlukan persetujuan. Pengguna di organisasi atau tim Anda mungkin perlu mengakses lingkungan ilmu data untuk memahami data dan mungkin mengevaluasi kelayakan proyek. Selain itu, beberapa proyek mungkin tidak memerlukan lingkungan ilmu data penuh karena sejumlah kecil produk data.

Dalam kasus lain, proyek ilmu data penuh mungkin diperlukan, lengkap dengan lingkungan khusus, manajemen proyek, kode biaya, dan pusat biaya. Proyek ilmu data lengkap berguna untuk beberapa anggota tim yang ingin berkolaborasi, berbagi hasil, dan perlu mengoprasikan model setelah fase eksplorasi berhasil.

Proses penyiapan

Templat harus disebarkan berdasarkan per proyek setelah disiapkan. Setiap proyek harus menerima setidaknya dua instans untuk lingkungan pengembangan dan produksi yang akan dipisahkan. Di lingkungan produksi, tidak ada orang yang harus memiliki akses, dan semuanya harus disebarkan melalui integrasi berkelanjutan atau alur pengembangan berkelanjutan dan perwakilan layanan. Prinsip lingkungan produksi ini penting karena Azure Pembelajaran Mesin tidak menyediakan model kontrol akses berbasis peran terperinci dalam ruang kerja. Anda tidak dapat membatasi akses pengguna ke serangkaian eksperimen, titik akhir, atau alur tertentu.

Hak akses yang sama biasanya berlaku untuk berbagai jenis artefak. Penting untuk memisahkan pengembangan dari produksi untuk mencegah penghapusan alur produksi atau titik akhir dalam ruang kerja. Bersama dengan templat, proses perlu dibangun untuk memberikan pilihan kepada tim produk data untuk meminta lingkungan baru.

Sebaiknya siapkan layanan AI yang berbeda seperti Azure Cognitive Services berdasarkan per proyek. Dengan menyiapkan layanan AI yang berbeda berdasarkan per proyek, penyebaran terjadi untuk setiap grup sumber daya produk data. Kebijakan ini menciptakan pemisahan yang jelas dari sudut sikap akses data dan mengurangi risiko akses data yang tidak sah oleh tim yang salah.

Skenario streaming

Untuk kasus penggunaan real time dan streaming, penyebaran harus diuji pada Azure Kubernetes Service (AKS) yang di-downsized. Pengujian dapat berada di lingkungan pengembangan untuk menghemat biaya sebelum Anda menyebarkan ke AKS produksi atau Azure App Service untuk kontainer. Anda harus melakukan pengujian input dan output sederhana untuk memastikan bahwa layanan merespons seperti yang diharapkan.

Selanjutnya, Anda dapat menyebarkan model ke layanan yang Anda inginkan. Target komputasi penyebaran ini adalah satu-satunya yang umumnya tersedia dan direkomendasikan untuk beban kerja produksi dalam kluster AKS. Langkah ini lebih diperlukan jika unit pemrosesan grafis (GPU) atau dukungan array gerbang yang dapat diprogram bidang diperlukan. Opsi penyebaran asli lainnya yang mendukung persyaratan perangkat keras ini saat ini tidak tersedia di Azure Machine Learning.

Azure Machine Learning membutuhkan pemetaan satu-ke-satu ke kluster AKS. Setiap koneksi baru ke ruang kerja Azure Machine Learning merusak hubungan sebelumnya antara AKS dan Azure Machine Learning. Setelah pembatasan itu dikurangi, sebaiknya sebarkan kluster AKS pusat sebagai sumber daya bersama dan melampirkannya ke ruang kerja masing-masing.

Contoh AKS tes sentral lainnya harus dihosting jika tes stres harus dilakukan sebelum Anda memindahkan model ke AKS produksi. Lingkungan pengujian harus menyediakan sumber daya komputasi yang sama dengan lingkungan produksi untuk memastikan bahwa hasilnya semirip mungkin dengan lingkungan produksi.

Skenario batch

Tidak semua kasus penggunaan memerlukan penyebaran kluster AKS. Kasus penggunaan tidak memerlukan penyebaran kluster AKS jika jumlah data besar hanya perlu penilaian secara teratur atau didasarkan pada suatu peristiwa. Misalnya, jumlah data besar dapat didasarkan pada kapan data turun ke akun penyimpanan tertentu. Alur Azure Machine Learning dan Azure Machine Learning menghitung kluster harus digunakan untuk penyebaran selama jenis skenario ini. Alur ini harus diatur dan dijalankan di Data Factory.

Mengidentifikasi sumber daya komputasi yang tepat

Sebelum Anda menyebarkan model dalam Azure Machine Learning ke AKS, pengguna perlu menentukan sumber daya seperti CPU, RAM, dan GPU yang harus dialokasikan untuk model masing-masing. Mendefinisikan parameter ini bisa menjadi proses yang rumit dan membosankan. Anda perlu melakukan pengujian stres dengan konfigurasi yang berbeda untuk mengidentifikasi serangkaian parameter yang baik. Anda dapat menyederhanakan proses ini dengan fitur Pembuatan Profil Model di Azure Pembelajaran Mesin, yang merupakan pekerjaan jangka panjang yang menguji kombinasi alokasi sumber daya yang berbeda dan menggunakan latensi yang diidentifikasi dan waktu pulang pergi (RTT) untuk merekomendasikan kombinasi yang optimal. Informasi ini dapat membantu penyebaran model aktual pada AKS.

Untuk memperbarui model dengan aman di Azure Machine Learning, tim harus menggunakan fitur peluncuran terkontrol (pratinjau) untuk meminimalkan waktu henti dan menjaga titik akhir REST model tetap konsisten.

Praktik terbaik dan alur kerja untuk MLOps

Menyertakan kode sampel dalam repositori ilmu data

Anda dapat menyederhanakan dan mempercepat proyek ilmu data jika tim Anda memiliki artefak dan praktik terbaik tertentu. Sebaiknya buat artefak yang dapat digunakan semua tim ilmu data saat bekerja dengan Azure Pembelajaran Mesin dan alat lingkungan produk data masing-masing. Teknisi data dan pembelajaran mesin harus membuat dan menyediakan artefak.

Artefak ini harus mencakup:

  • Sampel buku catatan yang menunjukkan cara:

    • Memuat, memasang, dan bekerja dengan produk data.
    • Mencatat metrik dan parameter.
    • Mengirimkan pekerjaan pelatihan untuk menghitung kluster.
  • Artefak yang diperlukan untuk operasionalisasi:

    • Sampel alur Azure Machine Learning
    • Sampel Azure Pipelines
    • Lebih banyak skrip yang diperlukan untuk menjalankan alur
  • Dokumentasi

Gunakan artefak yang dirancang dengan baik untuk mengoperasionalkan alur

Artefak dapat mempercepat fase eksplorasi dan operasionalisasi proyek ilmu data. Strategi forking DevOps dapat membantu menskalakan artefak ini di semua proyek. Karena penyiapan ini mempromosikan penggunaan Git, pengguna dan proses otomatisasi keseluruhan dapat memperoleh manfaat dari artefak yang disediakan.

Tip

Alur sampel Azure Machine Learning harus dibangun dengan kit pengembangan perangkat lunak (SDK) Python atau berdasarkan bahasa YAML. Pengalaman YAML baru akan lebih tahan masa depan, karena tim produk Azure Machine Learning saat ini sedang mengerjakan antarmuka SDK dan baris perintah (CLI) baru. Tim produk Azure Pembelajaran Mesin yakin bahwa YAML akan berfungsi sebagai bahasa definisi untuk semua artefak dalam Azure Pembelajaran Mesin.

Alur sampel tidak berfungsi di luar kotak untuk setiap proyek, tetapi dapat digunakan sebagai garis besar. Anda dapat menyesuaikan alur sampel untuk proyek. Alur harus mencakup aspek paling relevan dari setiap proyek. Misalnya, alur dapat mereferensikan target komputasi, mereferensikan produk data, menentukan parameter, menentukan input, dan menentukan langkah-langkah eksekusi. Proses yang sama harus dilakukan untuk Azure Pipelines. Azure Pipelines juga harus menggunakan SDK Azure Machine Learning atau CLI.

Alur akan menunjukkan cara:

  • Terhubung ke ruang kerja dari dalam alur DevOps.
  • Memeriksa apakah komputasi yang diperlukan tersedia.
  • Mengirim pekerjaan.
  • Mendaftarkan dan menyebarkan model.

Artefak tidak cocok untuk semua proyek sepanjang waktu dan mungkin memerlukan penyesuaian, tetapi memiliki fondasi dapat mempercepat operasionalisasi dan penyebaran proyek.

Menyusun repositori MLOps

Anda mungkin memiliki situasi di mana pengguna kehilangan jejak di mana mereka dapat menemukan dan menyimpan artefak. Untuk menghindari situasi ini, Anda harus meminta lebih banyak waktu untuk berkomunikasi dan membangun struktur folder tingkat atas untuk repositori standar. Semua proyek harus mengikuti struktur folder.

Catatan

Konsep yang disebutkan dalam bagian ini dapat digunakan di seluruh lingkungan lokal, Amazon Web Services, Palantir, dan Azure.

Struktur folder tingkat atas yang diusulkan untuk repositori MLOps (operasi pembelajaran mesin) diilustrasikan dalam diagram berikut:

Diagram struktur repositori untuk MLOps.

Tujuan berikut berlaku untuk setiap folder di repositori:

Folder Tujuan
.cloud Simpan kode dan artefak khusus cloud di folder ini. Artefak termasuk file konfigurasi untuk ruang kerja Azure Machine Learning, termasuk definisi target komputasi, pekerjaan, model terdaftar, dan titik akhir.
.ado/.github Simpan artefak Azure DevOps atau GitHub seperti alur YAML atau pemilik kode di folder ini.
code Sertakan kode aktual yang dikembangkan sebagai bagian dari proyek dalam folder ini. Folder ini dapat berisi paket Python dan beberapa skrip yang digunakan untuk langkah masing-masing alur pembelajaran mesin. Sebaiknya pisahkan langkah-langkah tersendiri yang perlu dilakukan dalam folder ini. Langkah-langkah umum adalah pemrosesan awal, pelatihan model, dan pendaftaran model. Tentukan dependensi seperti dependensi Conda, gambar Docker, atau lainnya untuk setiap folder.
docs Gunakan folder ini untuk tujuan dokumentasi. Folder ini menyimpan file dan gambar Markdown untuk menggambarkan proyek.
pipelines Simpan definisi alur Azure Pembelajaran Mesin di YAML atau Python di folder ini.
tests Tulis unit dan pengujian integrasi yang perlu dijalankan untuk menemukan bug dan masalah lebih awal selama proyek di folder ini.
notebooks Pisahkan notebook Jupyter dari proyek Python aktual dengan folder ini. Di dalam folder, masing-masing harus memiliki subfolder untuk memeriksa buku catatannya dan mencegah konflik gabungan Git.

Langkah selanjutnya

Produk data analitik skala cloud di Azure