Melacak pengembangan model menggunakan MLflow

Pelacakan MLflow memungkinkan Anda mencatat notebook dan himpunan data pelatihan, serta parameter, metrik, tag, dan artefak yang terkait dengan pelatihan model pembelajaran mesin atau pembelajaran mendalam. Untuk contoh notebook untuk mulai menggunakan MLflow, lihat Tutorial: Model ML klasik end-to-end di Azure Databricks.

Pelacakan MLflow dengan eksperimen, pelaksanaan, dan model

Proses pengembangan model berulang, dan mungkin sulit untuk melacak pekerjaan Anda saat Anda mengembangkan dan mengoptimalkan model. Di Azure Databricks, Anda dapat menggunakan pelacakan MLflow untuk membantu Anda melacak proses pengembangan model, termasuk pengaturan parameter atau kombinasi yang telah Anda coba dan pengaruhnya terhadap performa model.

Pelacakan MLflow menggunakan eksperimen, eksekusi, dan model untuk mencatat dan melacak pengembangan model ML dan pembelajaran mendalam Anda. Sebuah pelaksanaan adalah eksekusi tunggal kode model. Selama eksekusi MLflow, Anda dapat mencatat parameter dan hasil model. Eksperimen adalah kumpulan uji coba terkait. Dalam eksperimen, Anda dapat membandingkan dan memfilter eksekusi untuk memahami performa model Anda dan bagaimana performanya bergantung pada pengaturan parameter, data input, dan sebagainya. Model adalah kumpulan artefak yang mewakili model pembelajaran mesin terlatih.

Dengan MLflow 3, LoggedModels meningkatkan konsep model yang dihasilkan oleh eksekusi, menjadikannya sebagai entitas yang berbeda untuk melacak siklus hidup model di berbagai pelatihan dan evaluasi yang dijalankan.

Nota

Mulai 27 Maret 2024, MLflow memberlakukan batas kuota pada jumlah total parameter, tag, dan langkah metrik untuk semua eksekusi yang ada dan baru, dan jumlah total eksekusi untuk semua eksperimen yang ada dan baru, lihat batas Sumber Daya . Jika Anda mencapai eksekusi per kuota eksperimen, Databricks menyarankan Anda menghapus eksekusi yang tidak lagi Anda perlukan menggunakan API eksekusi penghapusan di Python. Jika Anda mencapai batas kuota lain, Databricks merekomendasikan untuk menyesuaikan strategi pengelogan Anda agar tetap di bawah batas. Jika Anda memerlukan peningkatan hingga batas ini, hubungi tim akun Databricks Anda dengan penjelasan singkat tentang kasus penggunaan Anda, mengapa pendekatan mitigasi yang disarankan tidak berfungsi, dan batas baru yang Anda minta.

API pelacakan MLflow

API Pelacakan MLflow mencatat parameter, metrik, tag, dan artefak dari sebuah model yang dijalankan. API Pelacakan berkomunikasi dengan server pelacakan MLflow. Saat Anda menggunakan Databricks, server pelacakan yang dihosting Databricks mencatat data. Server pelacakan MLflow yang dihosting memiliki API Python, Java, dan R.

MLflow telah diinstal sebelumnya pada kluster ML Runtime Databricks. Untuk menggunakan MLflow pada kluster Databricks Runtime, Anda harus menginstal mlflow pustaka. Untuk instruksi tentang menginstal pustaka ke kluster, lihat Menginstal pustaka pada kluster. Untuk menggunakan MLflow 3 dan kemampuan pelacakan canggihnya, pastikan untuk meningkatkan ke versi terbaru (lihat Menginstal MLflow 3).

Tempat pencatatan eksekusi MLflow

Databricks menyediakan server pelacakan MLflow yang dihosting yang menyimpan data eksperimen Anda di ruang kerja Anda tanpa memerlukan penyiapan. Anda juga dapat mengonfigurasi MLflow untuk menggunakan server pelacakan yang berbeda saat diperlukan.

Pelacakan MLflow dikontrol oleh dua pengaturan:

  • URI Pelacakan: Menentukan server mana yang akan digunakan (secara default akan menggunakan ruang kerja Databricks yang saat ini digunakan)
  • Eksperimen: Menentukan eksperimen mana di server yang akan dicatat
import mlflow

# By default MLflow logs to the Databricks-hosted workspace tracking server. You can connect to a different server using the tracking URI.
mlflow.set_tracking_uri("databricks://remote-workspace-url")

# Set experiment in the tracking server
mlflow.set_experiment("/Shared/my-experiment")

Jika tidak ada eksperimen aktif yang diatur, pengujian dicatat ke eksperimen notebook .

Untuk informasi selengkapnya tentang mengontrol tempat data MLflow Anda disimpan, lihat Memilih tempat data MLflow Anda disimpan.

Mencatat jalannya percobaan dan model ke dalam eksperimen

MLflow dapat secara otomatis mencatat kode pelatihan yang ditulis dalam banyak pembelajaran mesin dan kerangka kerja pembelajaran mendalam. Ini adalah cara paling mudah untuk mulai menggunakan pelacakan MLflow. Lihat contoh notebook.

Untuk kontrol lebih lanjut tentang parameter dan metrik mana yang dicatat, atau untuk mencatat artefak tambahan seperti file CSV atau plot, gunakan API pengelogan MLflow. Lihat contoh notebook.

Menggunakan autologging untuk melacak pengembangan model

Contoh buku catatan ini memperlihatkan cara menggunakan autologging dengan scikit-learn. Untuk informasi tentang autologging dengan pustaka Python lainnya, silakan lihat dokumentasi autologging MLflow di .

MLflow 3

Notebook Python untuk autologging MLflow versi 3

Dapatkan buku catatan

MLflow 2.x

Notebook Python Autologging MLflow

Dapatkan buku catatan

Menggunakan API pengelogan untuk melacak pengembangan model

Contoh notebook ini memperlihatkan cara menggunakan API pengelogan Python. MLflow juga memiliki REST, R, dan Java API.

MLflow 3

Notebook Python API pencatatan MLflow untuk MLflow 3

Dapatkan buku catatan

MLflow 2.x

Buku catatan Python API pencatatan MLflow

Dapatkan buku catatan

Log berjalan ke eksperimen ruang kerja

Secara default, ketika Anda melatih model di buku catatan Databricks, eksekusi dicatat dalam eksperimen buku catatan. Hanya eksekusi MLflow yang dimulai dalam notebook yang dapat dicatat ke dalam eksperimen pada notebook.

Eksekusi MLflow yang diluncurkan dari notebook apa pun atau dari API dapat dicatat ke eksperimen ruang kerja. Untuk mencatat eksekusi ke eksperimen ruang kerja, gunakan kode yang mirip dengan yang berikut ini di notebook atau panggilan API Anda:

experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)

Untuk petunjuk tentang membuat eksperimen ruang kerja, lihat Membuat eksperimen ruang kerja. Untuk informasi tentang menampilkan eksekusi yang dicatat, lihat Menampilkan eksperimen buku catatan dan Menampilkan eksperimen ruang kerja.

Menganalisis eksekusi MLflow secara terprogram

Anda dapat mengakses data eksekusi MLflow secara terprogram menggunakan dua API DataFrame berikut:

Contoh ini menunjukkan cara menggunakan klien MLflow Python untuk membangun dasbor yang memvisualisasikan perubahan metrik evaluasi dari waktu ke waktu, melacak jumlah eksekusi yang dimulai oleh pengguna tertentu, dan mengukur jumlah total eksekusi di semua pengguna:

Mengapa metrik dan output pelatihan model dapat bervariasi

Banyak algoritma yang digunakan dalam ML memiliki elemen acak, seperti pengambilan sampel atau kondisi awal acak dalam algoritma itu sendiri. Saat Anda melatih model menggunakan salah satu algoritma ini, hasilnya mungkin tidak sama dengan setiap eksekusi, bahkan jika Anda memulai eksekusi dengan kondisi yang sama. Banyak perpustakaan menawarkan mekanisme penyemaian untuk memperbaiki kondisi awal untuk elemen stokastik ini. Namun, mungkin ada sumber variasi lain yang tidak dikontrol oleh benih. Beberapa algoritma sensitif terhadap urutan data, dan algoritma ML terdistribusi juga dapat dipengaruhi oleh bagaimana data dipartisi. Variasi ini tidak signifikan dan tidak penting dalam proses pengembangan model.

Untuk mengontrol variasi yang disebabkan oleh perbedaan urutan dan pemartisian, gunakan partisi ulang fungsi PySpark dan sortWithinPartitions.

Contoh pelacakan MLflow

Notebook berikut menunjukkan cara melacak pengembangan model menggunakan MLflow.