Melacak eksperimen dan model dengan MLflow
Pelacakan adalah proses menyimpan informasi yang relevan tentang eksperimen. Dalam artikel ini, Anda mempelajari cara menggunakan MLflow untuk melacak eksperimen dan menjalankan di ruang kerja Azure Pembelajaran Mesin.
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. Anda juga dapat mempelajari tentang fungsionalitas MLflow yang didukung di Azure Pembelajaran Mesin dari artikel MLflow dan Azure Pembelajaran Mesin.
Catatan
- Untuk melacak eksperimen yang berjalan di Azure Databricks, lihat Melacak eksperimen Azure Databricks ML dengan MLflow dan Azure Pembelajaran Mesin.
- Untuk melacak eksperimen yang berjalan di Azure Synapse Analytics, lihat Melacak eksperimen ML Azure Synapse Analytics dengan MLflow dan Azure Pembelajaran Mesin.
Prasyarat
Memiliki langganan Azure dengan versi gratis atau berbayar Azure Pembelajaran Mesin.
Untuk menjalankan perintah Azure CLI dan Python, instal Azure CLI v2 dan Azure Pembelajaran Mesin SDK v2 untuk Python.
ml
Ekstensi untuk Azure CLI diinstal secara otomatis saat pertama kali Anda menjalankan perintah Azure Pembelajaran Mesin CLI.
Instal paket MLflow SDK
mlflow
dan plugin Azure Pembelajaran Mesinazureml-mlflow
untuk MLflow sebagai berikut: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. Paket ini direkomendasikan untuk pengguna yang terutama membutuhkan kemampuan pelacakan dan pengelogan MLflow tanpa mengimpor rangkaian fitur lengkap, termasuk penyebaran.Buat ruang kerja Azure Machine Learning. Untuk membuat ruang kerja, lihat Membuat sumber daya yang Anda butuhkan untuk memulai. Tinjau izin akses yang Anda butuhkan untuk melakukan operasi MLflow di ruang kerja Anda.
Untuk melakukan pelacakan jarak jauh, atau melacak eksperimen yang berjalan di luar Azure Pembelajaran Mesin, konfigurasikan MLflow untuk mengarahkan 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 berjalan. Eksekusi disebut pekerjaan di Azure Pembelajaran Mesin. Secara default, menjalankan log ke eksperimen yang dibuat secara otomatis bernama Default, tetapi Anda dapat mengonfigurasi eksperimen mana yang akan dilacak.
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 dalam panggilan MLflow apa 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 mencatat informasi yang memerlukan eksekusi aktif. Misalnya, jika fungsionalitas autologging Mlflow diaktifkan, pelacakan MLflow dimulai saat Anda mencatat metrik atau parameter, atau memulai siklus pelatihan.
Namun, biasanya membantu untuk memulai eksekusi secara eksplisit, terutama 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()
.
Kode berikut memulai eksekusi secara manual dan mengakhirinya di akhir buku catatan:
mlflow.start_run()
# Your code
mlflow.end_run()
Yang terbaik adalah mulai berjalan secara manual sehingga Anda tidak lupa untuk mengakhirinya. Anda dapat 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. Praktik ini membantu Anda mengidentifikasi eksekusi dengan 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, dan Anda juga dapat mengandalkan kemampuan pengelogan otomatis MLflow. Setiap kerangka kerja pembelajaran mesin yang didukung oleh MLflow menentukan 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 Azure Pembelajaran Mesin atau mengaksesnya secara terprogram melalui MLflow SDK.
Untuk melihat metrik dan artefak di studio:
Pada halaman Pekerjaan di ruang kerja Anda, pilih nama eksperimen.
Pada halaman detail eksperimen, pilih tab Metrik .
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 dapat mengubah ukuran dan menyusun ulang tata letak.
Setelah Anda membuat tampilan yang diinginkan, simpan untuk digunakan di masa mendatang dan bagikan dengan rekan satu tim Anda dengan menggunakan tautan langsung.
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
Contoh sebelumnya hanya mengembalikan nilai terakhir dari metrik tertentu. Untuk 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 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 dengan menggunakan MLflow, lihat Kueri & bandingkan eksperimen dan eksekusi dengan MLflow.