Mengumpulkan data dari model dalam produksi

BERLAKU UNTUK:Python SDK azureml v1

Artikel ini menunjukkan cara mengumpulkan data dari model Azure Machine Learning yang disebarkan pada kluster Azure Kubernetes Service (AKS). Data yang dikumpulkan kemudian disimpan di penyimpanan Azure Blob.

Setelah pengumpulan diaktifkan, data yang Anda kumpulkan membantu Anda:

  • Memantau penyimpangan data pada data produksi yang Anda kumpulkan.

  • Menganalisis data yang dikumpulkan menggunakan Power BI atau Azure Databricks

  • Membuat keputusan yang lebih baik tentang kapan harus melatih kembali atau mengoptimalkan model Anda.

  • Melatih kembali model Anda dengan data yang dikumpulkan.

Batasan

  • Fitur pengumpulan data model hanya dapat bekerja dengan gambar Ubuntu 18.04.

Penting

Pada 10/03/2023, gambar Ubuntu 18.04 sekarang tidak digunakan lagi. Dukungan untuk gambar Ubuntu 18.04 akan dihilangkan mulai Januari 2023 ketika mencapai EOL pada 30 April 2023.

Fitur MDC tidak kompatibel dengan gambar lain selain Ubuntu 18.04, yang tidak tersedia setelah gambar Ubuntu 18.04 tidak digunakan lagi.

Informasi mMore yang dapat Anda lihat:

Catatan

Fitur pengumpulan data saat ini dalam pratinjau, fitur pratinjau apa pun tidak disarankan untuk beban kerja produksi.

Data yang dikumpulkan dan ke mana perginya

Data berikut dapat dikumpulkan:

  • Data input model dari layanan web yang disebarkan dalam kluster AKS. Audio suara, gambar, dan video tidak dikumpulkan.

  • Prediksi model menggunakan data input produksi.

Catatan

Pra-agregasi dan pra-kalkulasi pada data ini saat ini bukan bagian dari layanan pengumpulan.

Output disimpan dalam penyimpanan Blob. Karena data ditambahkan ke penyimpanan Blob, Anda dapat memilih alat favorit Anda untuk mengeksekusi analisis.

Jalur ke data output dalam blob mengikuti sintaks ini:

/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv

Catatan

Dalam versi Azure Machine Learning SDK untuk Python yang lebih lama dari versi 0.1.0a16, argumen designation diberi nama identifier. Jika Anda mengembangkan kode dengan versi yang lebih lama, Anda harus memperbaruinya.

Prasyarat

Mengaktifkan pengumpulan data

Anda dapat mengaktifkan pengumpulan data terlepas dari model yang Anda sebarkan melalui Azure Machine Learning atau alat lainnya.

Untuk mengaktifkan pengumpulan data, Anda perlu:

  1. Membuka file penilaian.

  2. Menambahkan kode berikut ke bagian atas file:

    from azureml.monitoring import ModelDataCollector
    
  3. Mendeklarasikan variabel pengumpulan data Anda dalam fungsi init:

    global inputs_dc, prediction_dc
    inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"])
    prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
    

    CorrelationId adalah parameter opsional. Anda tidak perlu menggunakannya jika model Anda tidak memerlukannya. Penggunaan CorrelationId membantu Anda lebih mudah memetakan dengan data lain, seperti LoanNumber atau CustomerId.

    Parameter Identifier nanti digunakan untuk membangun struktur folder di blob Anda. Anda dapat menggunakannya untuk membedakan data mentah dari data yang diproses.

  4. Tambahkan baris kode berikut ke fungsi run(input_df):

    data = np.array(data)
    result = model.predict(data)
    inputs_dc.collect(data) #this call is saving our input data into Azure Blob
    prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
    
  5. Pengumpulan data tidak otomatis diatur ke true saat Anda menyebarkan layanan di AKS. Perbarui file konfigurasi Anda, seperti dalam contoh berikut:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    Anda juga dapat mengaktifkan Application Insights untuk pemantauan layanan dengan mengubah konfigurasi ini:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Untuk membuat gambar baru dan menyebarkan model pembelajaran mesin, lihat Menyebarkan model pembelajaran mesin ke Azure.

  7. Tambahkan paket pip 'Azure-Monitoring' ke dependensi konda lingkungan layanan web:

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

Menonaktifkan pengumpulan data

Anda dapat berhenti mengumpulkan data kapan saja. Gunakan kode Python untuk menonaktifkan pengumpulan data.

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

Memvalidasi dan menganalisis data Anda

Anda dapat memilih alat preferensi Anda untuk menganalisis data yang dikumpulkan di penyimpanan Blob Anda.

Mengakses data blob dengan cepat

  1. Masuk ke portal Azure.

  2. Buka ruang kerja Anda.

  3. Pilih Penyimpanan.

    Pilih opsi Penyimpanan

  4. Ikuti jalur ke data output blob dengan sintaks ini:

    /modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
    # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
    

Menganalisis data model menggunakan Power BI

  1. Unduh dan buka Power BI Desktop.

  2. Pilih Dapatkan Data dan pilih Azure Blob Storage.

    Penyiapan blob Power BI

  3. Tambahkan nama akun penyimpanan Anda dan masukkan kunci penyimpanan Anda. Anda bisa menemukan informasi ini dengan memilih Pengaturan>Kunci akses di dalam blob Anda.

  4. Pilih kontainer data model dan pilih Edit.

    Power BI Navigator

  5. Di editor kueri, klik di bawah kolom Nama dan tambahkan akun penyimpanan Anda.

  6. Masukkan jalur model Anda ke dalam filter. Jika Anda hanya ingin menganalisis file dari tahun atau bulan tertentu, cukup perluas jalur filter. Misalnya, untuk hanya menganalisis data bulan Maret, gunakan jalur filter ini:

    /modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. Filter data yang relevan bagi Anda berdasarkan nilai Nama. Jika Anda menyimpan prediksi dan input, Anda perlu membuat kueri untuk masing-masing.

  8. Pilih panah ganda ke bawah di samping judul kolom Konten untuk menggabungkan file.

    Power BI Content

  9. PilihOK. Data dimuat sebelumnya.

    Gabungkan File Power BI

  10. Pilih Tutup dan Terapkan.

  11. Jika Anda menambahkan input dan prediksi, tabel Anda secara otomatis diurutkan berdasarkan nilai RequestId.

  12. Mulai membangun laporan kustom pada data model Anda.

Menganalisis data model menggunakan Azure Databricks

  1. Membuat ruang kerja Azure Databricks.

  2. Buka ruang kerja Databricks Anda.

  3. Di ruang kerja Databricks Anda, pilih Unggah Data.

    Memilih opsi Upload Data Databricks

  4. Pilih Buat Tabel Baru dan pilih Sumber Data Lain>Azure Blob Storage>Buat Tabel di Buku Catatan.

    Pembuatan tabel Databricks

  5. Perbarui lokasi data Anda. Berikut contohnya:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Penyiapan Databricks

  6. Ikuti langkah-langkah pada templat untuk menampilkan dan menganalisis data Anda.

Langkah berikutnya

Deteksi penyimpangan data pada data yang telah Anda kumpulkan.