Melacak eksperimen dan model ML dengan MLflow

Dalam artikel ini, Anda mempelajari cara menggunakan MLflow untuk melacak eksperimen dan menjalankan di ruang kerja Azure Pembelajaran Mesin.

Pelacakan adalah proses menyimpan informasi yang relevan tentang eksperimen yang Anda jalankan. Informasi yang disimpan (metadata) bervariasi berdasarkan proyek Anda, dan dapat mencakup:

  • Kode
  • Detail lingkungan (seperti versi OS, paket Python)
  • Memasukan data
  • Konfigurasi parameter
  • Model
  • Metrik evaluasi
  • Visualisasi evaluasi (seperti matriks kebingungan, plot kepentingan)
  • Hasil evaluasi (termasuk beberapa prediksi evaluasi)

Saat Anda bekerja dengan pekerjaan di Azure Pembelajaran Mesin, Azure Pembelajaran Mesin secara otomatis melacak beberapa informasi tentang eksperimen Anda, seperti kode, lingkungan, dan data input dan output. Namun, bagi orang lain seperti model, parameter, dan metrik, pembuat model perlu mengonfigurasi pelacakannya, karena khusus untuk skenario tertentu.

Catatan

Jika Anda ingin melacak eksperimen yang berjalan di Azure Databricks, lihat Melacak eksperimen Azure Databricks ML dengan MLflow dan Azure Pembelajaran Mesin. Untuk mempelajari tentang pelacakan eksperimen yang berjalan di Azure Synapse Analytics, lihat Melacak eksperimen Azure Synapse Analytics ML dengan MLflow dan Azure Pembelajaran Mesin.

Manfaat pelacakan eksperimen

Kami sangat menyarankan agar praktisi pembelajaran mesin melacak eksperimen, baik Anda berlatih dengan pekerjaan di Azure Pembelajaran Mesin atau berlatih secara interaktif di notebook. Pelacakan eksperimen memungkinkan Anda untuk:

  • Atur semua eksperimen pembelajaran mesin Anda di satu tempat. Anda kemudian dapat mencari dan memfilter eksperimen dan menelusuri paling detail untuk melihat detail tentang eksperimen yang Anda jalankan sebelumnya.
  • Bandingkan eksperimen, analisis hasil, dan pelatihan model debug dengan sedikit pekerjaan ekstra.
  • Reproduksi atau jalankan ulang eksperimen untuk memvalidasi hasil.
  • Tingkatkan kolaborasi, karena Anda dapat melihat apa yang dilakukan rekan tim lain, berbagi hasil eksperimen, dan mengakses data eksperimen secara terprogram.

Mengapa menggunakan MLflow untuk melacak eksperimen?

Ruang kerja Azure Pembelajaran Mesin kompatibel dengan MLflow, yang berarti Anda dapat menggunakan MLflow untuk melacak eksekusi, metrik, parameter, dan artefak dalam ruang kerja Azure Pembelajaran Mesin Anda. Keuntungan utama menggunakan MLflow untuk pelacakan adalah Anda tidak perlu mengubah rutinitas pelatihan untuk bekerja dengan Azure Pembelajaran Mesin atau menyuntikkan sintaks khusus cloud apa pun.

Untuk informasi selengkapnya tentang semua fungsionalitas Pembelajaran Mesin MLflow dan Azure yang didukung, lihat MLflow dan Azure Pembelajaran Mesin.

Batasan

Beberapa metode yang tersedia di API MLflow mungkin tidak tersedia saat tersambung ke Azure Pembelajaran Mesin. Untuk detail tentang operasi yang didukung dan tidak didukung, lihat Matriks dukungan untuk mengkueri eksekusi dan eksperimen.

Prasyarat

  • Instal paket mlflow MLflow SDK dan plug-in Azure Pembelajaran Mesin untuk MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tip

    Anda dapat menggunakan mlflow-skinny paket, yang merupakan paket MLflow ringan tanpa penyimpanan SQL, server, UI, atau dependensi ilmu data. mlflow-skinny disarankan untuk pengguna yang terutama membutuhkan kemampuan pelacakan dan pengelogan MLflow tanpa mengimpor rangkaian fitur lengkap termasuk penyebaran.

  • Ruang kerja Azure Machine Learning. Anda dapat membuatnya dengan mengikuti tutorial Membuat sumber daya pembelajaran mesin.

  • Jika Anda melakukan pelacakan jarak jauh (yaitu, melacak eksperimen yang berjalan di luar Azure Pembelajaran Mesin), konfigurasikan MLflow untuk mengarah ke URI pelacakan ruang kerja Azure Pembelajaran Mesin Anda. Untuk informasi selengkapnya tentang cara menyambungkan MLflow ke ruang kerja Anda, lihat Mengonfigurasi MLflow untuk Azure Pembelajaran Mesin.

Konfigurasikan eksperimen

MLflow mengatur informasi dalam eksperimen dan eksekusi (eksekusi disebut pekerjaan di Azure Pembelajaran Mesin). Secara default, eksekusi dicatat ke eksperimen bernama Default yang secara otomatis dibuat untuk Anda. Anda dapat mengonfigurasi eksperimen tempat pelacakan terjadi.

Untuk pelatihan interaktif, seperti di notebook Jupyter, gunakan perintah mlflow.set_experiment()MLflow . Misalnya, cuplikan kode berikut mengonfigurasi eksperimen:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Mengonfigurasi eksekusi

Azure Pembelajaran Mesin melacak pekerjaan pelatihan apa pun dalam panggilan MLflow yang dijalankan. Gunakan eksekusi untuk menangkap semua pemrosesan yang dilakukan pekerjaan Anda.

Saat Anda bekerja secara interaktif, MLflow mulai melacak rutinitas pelatihan Anda segera setelah Anda mencoba mencatat informasi yang memerlukan eksekusi aktif. Misalnya, pelacakan MLflow dimulai saat Anda mencatat metrik, parameter, atau memulai siklus pelatihan, dan fungsionalitas autologging Mlflow diaktifkan. Namun, biasanya membantu untuk memulai eksekusi secara eksplisit, khususnya jika Anda ingin mengambil total waktu untuk eksperimen Anda di bidang Durasi . Untuk memulai eksekusi secara eksplisit, gunakan mlflow.start_run().

Apakah Anda memulai eksekusi secara manual atau tidak, Anda akhirnya perlu menghentikan eksekusi, sehingga MLflow tahu bahwa eksekusi eksperimen Anda selesai dan dapat menandai status eksekusi sebagai Selesai. Untuk menghentikan eksekusi, gunakan mlflow.end_run().

Kami sangat menyarankan untuk memulai eksekusi secara manual, sehingga Anda tidak lupa untuk mengakhirinya saat Anda bekerja di buku catatan.

  • Untuk memulai eksekusi secara manual dan mengakhirinya saat Anda selesai bekerja di buku catatan:

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • Biasanya berguna untuk menggunakan paradigma manajer konteks untuk membantu Anda mengingat untuk mengakhiri eksekusi:

    with mlflow.start_run() as run:
        # Your code
    
  • Saat Anda memulai eksekusi baru dengan mlflow.start_run(), akan berguna untuk menentukan run_name parameter, yang nantinya diterjemahkan ke nama eksekusi di antarmuka pengguna Azure Pembelajaran Mesin dan membantu Anda mengidentifikasi eksekusi lebih cepat:

    with mlflow.start_run(run_name="hello-world-example") as run:
        # Your code
    

Mengaktifkan autologging MLflow

Anda dapat mencatat metrik, parameter, dan file dengan MLflow secara manual. Namun, Anda juga dapat mengandalkan kemampuan pengelogan otomatis MLflow. Setiap kerangka kerja pembelajaran mesin yang didukung oleh MLflow memutuskan apa yang harus dilacak secara otomatis untuk Anda.

Untuk mengaktifkan pengelogan otomatis, sisipkan kode berikut sebelum kode pelatihan Anda:

mlflow.autolog()

Melihat metrik dan artefak di ruang kerja Anda

Metrik dan artefak dari pengelogan MLflow dilacak di ruang kerja Anda. Anda dapat melihat dan mengaksesnya di studio kapan saja atau mengaksesnya secara terprogram melalui MLflow SDK.

Untuk melihat metrik dan artefak di studio:

  1. Buka studio Azure Pembelajaran Mesin.

  2. Navigasi ke ruang kerja Anda.

  3. Temukan eksperimen berdasarkan nama di ruang kerja Anda.

  4. Pilih metrik yang dicatat untuk merender bagan di sisi kanan. Anda dapat menyesuaikan bagan dengan menerapkan penghalusan, mengubah warna, atau memplot beberapa metrik pada satu grafik. Anda juga bisa mengubah ukuran dan mengatur ulang tata letak sesuai keinginan.

  5. Setelah Anda membuat tampilan yang diinginkan, simpan untuk digunakan di masa mendatang dan bagikan dengan rekan satu tim Anda, menggunakan tautan langsung.

    Cuplikan layar tampilan metrik.

Untuk mengakses atau mengkueri metrik, parameter, dan artefak secara terprogram melalui MLflow SDK, gunakan mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Tip

Untuk metrik, kode contoh sebelumnya hanya akan mengembalikan nilai terakhir dari metrik tertentu. Jika Anda ingin mengambil semua nilai metrik tertentu, gunakan metode .mlflow.get_metric_history Untuk informasi selengkapnya tentang mengambil nilai metrik, lihat Mendapatkan param dan metrik dari eksekusi.

Untuk mengunduh artefak yang telah Anda catat, seperti file dan model, gunakan mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Untuk informasi selengkapnya tentang cara mengambil atau membandingkan informasi dari eksperimen dan eksekusi di Azure Pembelajaran Mesin, menggunakan MLflow, lihat Kueri & bandingkan eksperimen dan jalankan dengan MLflow.