Bagikan melalui


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 end-to-end di Azure Databricks.

Pelacakan MLflow dengan eksperimen dan eksekusi

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 dan run untuk mencatat dan melacak pengembangan model pembelajaran mesin 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.

Catatan

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 pustaka mlflow. Untuk petunjuk tentang penginstalan pustaka ke kluster, lihat Menginstal pustaka di kluster.

Tempat pencatatan eksekusi MLflow

Semua eksekusi MLflow dicatat ke eksperimen aktif, yang dapat diatur menggunakan salah satu cara berikut:

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

Untuk mencatat hasil eksperimen Anda ke server Pelacakan MLflow yang dihosting dari jarak jauh di ruang kerja selain yang Anda jalankan eksperimen, atur URI pelacakan untuk mereferensikan ruang kerja jarak jauh dengan mlflow.set_tracking_uri(), dan atur jalur ke eksperimen Anda di ruang kerja jarak jauh dengan menggunakan mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Jika Anda menjalankan eksperimen secara lokal dan ingin mencatat hasil eksperimen ke server Databricks MLflow Tracking, berikan instans ruang kerja Databricks Anda (DATABRICKS_HOST) dan token akses pribadi Databricks (DATABRICKS_TOKEN). Selanjutnya, Anda dapat mengatur URI pelacakan untuk mereferensikan ruang kerja dengan mlflow.set_tracking_uri(), dan mengatur jalur ke eksperimen Anda dengan menggunakan mlflow.set_experiment(). Lihat Melakukan autentikasi token akses pribadi Azure Databricks untuk detail tentang tempat menemukan nilai untuk variabel lingkungan DATABRICKS_HOST dan DATABRICKS_TOKEN.

Contoh kode berikut menunjukkan pengaturan nilai-nilai ini:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

log berjalan ke 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 .

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.

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 di dalam notebook yang dapat dicatat ke eksperimen notebook.

Eksekusi MLflow yang diluncurkan dari notebook atau dari API dapat dicatat ke percobaan 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 Melihat eksperimen notebook dan Melihat eksperimen ruang kerja.

Mengakses server pelacakan MLflow dari luar Azure Databricks

Anda juga dapat menulis dan membaca dari server pelacakan dari luar Azure Databricks, misalnya menggunakan CLI MLflow. Lihat Mengakses server pelacakan MLflow dari luar Azure Databricks.

Menganalisis eksekusi MLflow secara terprogram

Anda dapat mengakses MLflow yang menjalankan data 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 pustaka menawarkan mekanisme penyemaian untuk memperbaiki kondisi awal untuk elemen stochastic 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. Umumnya 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.