Melacak ML dan eksekusi pelatihan pembelajaran mendalam
Komponen pelacakan MLflow memungkinkan Anda mencatat properti sumber, parameter, metrik, tag, dan artefak yang terkait dengan pelatihan pembelajaran mesin atau model pembelajaran mendalam. Untuk memulai MLflow, coba salah satu tutorial mulai cepat MLflow.
Pelacakan MLflow dengan eksperimen dan eksekusi
Pelacakan MLflow didasarkan pada dua konsep, eksperimen dan eksekusi:
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.
Eksperimen MLflow adalah unit utama organisasi dan kontrol akses untuk eksekusi MLflow; semua eksekusi MLflow adalah milik eksperimen. Eksperimen memungkinkan Anda memvisualisasikan, mencari, dan membandingkan eksekusi, serta mengunduh artefak dan metadata eksekusi untuk analisis di alat lain.
Eksekusi MLflow berkaitan dengan satu eksekusi kode model.
API Pelacakan MLflow mencatat parameter, metrik, tag, dan artefak dari eksekusi model. 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.
Catatan
MLflow diinstal pada kluster ML Databricks Runtime. Untuk menggunakan MLflow pada kluster Databricks Runtime, Anda harus menginstal pustaka mlflow
. Untuk petunjuk tentang penginstalan pustaka ke kluster, lihat Menginstal pustaka di kluster. Paket khusus yang harus diinstal untuk MLflow adalah:
- Untuk Python, pilih Sumber Pustaka PyPI dan masukkan
mlflow
di bidang Paket. - Untuk R, pilih Sumber Pustaka CRAN dan masukkan
mlflow
di bidang Paket. - Untuk Scala, instal dua paket ini:
- Pilih Sumber Pustaka Maven dan masukkan
org.mlflow:mlflow-client:1.11.0
di bidang Koordinat. - Pilih Sumber Pustaka PyPI dan masukkan
mlflow
di bidang Paket.
- Pilih Sumber Pustaka Maven dan masukkan
Tempat eksekusi MLflow dicatat
Semua eksekusi MLflow dicatat ke eksperimen aktif, yang dapat diatur menggunakan salah satu cara berikut:
- Gunakan perintah mlflow.set_experiment().
- Gunakan parameter
experiment_id
dalam perintah mlflow.start_run(). - Tetapkan salah satu variabel lingkungan MLflow yaitu MLFLOW_EXPERIMENT_NAME atau MLFLOW_EXPERIMENT_ID.
Jika tidak ada eksperimen aktif yang ditetapkan, eksekusi akan dicatat ke eksperimen notebook.
Untuk mencatatkan hasil eksperimen Anda ke server pelacakan MLflow yang dihosting dari jauh selain server yang digunakan untuk menjalankan eksperimen Anda, tetapkan URI pelacakan agar merujuk pada ruang kerja jarak jauh dengan mlflow.set_tracking_uri()
, dan tetapkan jalur menuju eksperimen Anda pada ruang kerja jarak jauh 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 DATABRICKS_HOST
variabel lingkungan 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")
Buku catatan contoh pengelogan
Notebook ini menunjukkan cara mencatat eksekusi ke eksperimen notebook dan ke eksperimen ruang kerja. 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 informasi tentang menampilkan eksekusi yang dicatat, lihat Melihat eksperimen notebook dan Melihat eksperimen ruang kerja.
Mencatat notebook eksekusi MLflow
Anda dapat menggunakan API MLflow Python, Java atau Scala, dan R untuk memulai eksekusi dan merekam data eksekusi. Untuk detailnya, lihat contoh notebook MLflow.
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:
- search_runs API klien MLflow Python mengembalikan pandas DataFrame.
- Sumber data eksperimen MLflow mengembalikan Apache Spark DataFrame.
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 melatih beberapa jenis model dan melacak data pelatihan di MLflow dan cara menyimpan data pelacakan di Delta Lake.