MLOps ZoomCamp Modul 2: MLflow untuk Pelacakan Eksperimen ML
Selamat datang di panduan lengkap tentang Modul 2 MLOps ZoomCamp, yang berfokus pada MLflow untuk Pelacakan Eksperimen Machine Learning (ML). Dalam postingan blog ini, kita akan membahas secara mendalam mengapa pelacakan eksperimen sangat penting, bagaimana MLflow dapat membantu Anda, dan bagaimana Anda dapat mengimplementasikannya secara efektif dalam alur kerja ML Anda. Artikel ini dirancang untuk memberikan panduan praktis dan komprehensif, baik Anda seorang praktisi ML pemula atau berpengalaman.
Mengapa Pelacakan Eksperimen Machine Learning Penting?
Sebelum kita menyelami MLflow, mari kita pahami mengapa pelacakan eksperimen ML sangat penting:
- Reproduksibilitas: Melacak parameter, metrik, dan artefak setiap eksperimen memastikan bahwa Anda dapat mereproduksi hasil dengan tepat. Ini sangat penting untuk debugging, validasi, dan penerapan model.
- Kolaborasi: Pelacakan eksperimen memfasilitasi kolaborasi antar anggota tim. Semua orang dapat dengan mudah melihat, membandingkan, dan menganalisis eksperimen yang berbeda.
- Pengorganisasian: Ketika Anda mengerjakan banyak eksperimen, pelacakan membantu Anda tetap terorganisir. Anda dapat dengan mudah menemukan eksperimen terbaik, membandingkan hasil, dan mengidentifikasi area untuk peningkatan.
- Auditabilitas: Pelacakan menyediakan catatan lengkap dari semua eksperimen, yang dapat digunakan untuk audit dan kepatuhan.
- Efisiensi: Dengan melacak eksperimen, Anda dapat menghindari duplikasi upaya dan dengan cepat mengidentifikasi pendekatan yang menjanjikan.
Tanpa sistem pelacakan yang tepat, mengelola eksperimen ML bisa menjadi mimpi buruk. Anda mungkin kehilangan parameter penting, lupa bagaimana Anda mendapatkan hasil tertentu, dan kesulitan berkolaborasi dengan orang lain.
Pengantar MLflow
MLflow adalah platform open-source untuk mengelola seluruh siklus hidup machine learning. Ini mencakup empat komponen utama:
- MLflow Tracking: Merekam parameter, kode, metrik, dan artefak saat Anda menjalankan kode ML Anda.
- MLflow Projects: Mengemas kode ML Anda dalam format yang dapat direproduksi untuk dibagikan dengan orang lain.
- MLflow Models: Mengelola dan menyebarkan model dari berbagai alat ML.
- MLflow Registry: Menyimpan, mengelola, dan mengelola siklus hidup model ML secara terpusat.
Dalam modul ini, kita akan fokus pada MLflow Tracking.
MLflow Tracking: Penjelasan Mendalam
MLflow Tracking adalah komponen MLflow yang memungkinkan Anda melacak eksperimen ML Anda. Ini menyediakan API dan UI untuk mencatat parameter, metrik, artefak, dan informasi lainnya yang relevan dengan eksperimen Anda.
Komponen Utama MLflow Tracking
- Runs: Run mewakili eksekusi tunggal kode ML. Setiap run mencatat informasi tentang parameter, metrik, artefak, dan lainnya.
- Parameters: Parameter adalah input untuk kode ML Anda. Misalnya, tingkat pembelajaran, ukuran batch, dan jumlah epoch.
- Metrics: Metrik adalah ukuran kinerja kode ML Anda. Misalnya, akurasi, presisi, dan recall.
- Artifacts: Artefak adalah file yang dihasilkan oleh kode ML Anda. Misalnya, model, plot, dan laporan.
- Tags: Tag adalah metadata yang dapat Anda gunakan untuk mengategorikan dan memfilter run. Misalnya, nama model, versi dataset, dan nama pengguna.
Cara Kerja MLflow Tracking
Berikut cara kerja MLflow Tracking:
- Inisialisasi Run: Sebelum Anda menjalankan kode ML Anda, Anda harus memulai run MLflow. Ini membuat run baru dalam MLflow Tracking server.
- Log Parameter: Saat kode ML Anda berjalan, Anda dapat mencatat parameter ke run MLflow.
- Log Metrik: Anda dapat mencatat metrik ke run MLflow saat kode ML Anda berjalan.
- Log Artefak: Anda dapat mencatat artefak ke run MLflow saat kode ML Anda berjalan.
- Akhiri Run: Setelah kode ML Anda selesai berjalan, Anda harus mengakhiri run MLflow. Ini menandai run sebagai selesai dan menyimpan semua data yang dicatat ke MLflow Tracking server.
Instalasi dan Setup MLflow
Untuk menggunakan MLflow, Anda perlu menginstalnya terlebih dahulu. Anda dapat menginstal MLflow menggunakan pip:
pip install mlflow
Setelah Anda menginstal MLflow, Anda dapat memulainya dengan beberapa cara:
- Local Tracking Server: Secara default, MLflow menggunakan server pelacakan lokal yang menyimpan data di sistem file. Ini mudah untuk memulai tetapi tidak cocok untuk lingkungan produksi.
- Remote Tracking Server: Anda dapat menggunakan server pelacakan jarak jauh yang menyimpan data di database. Ini lebih cocok untuk lingkungan produksi.
Untuk memulai server pelacakan lokal, Anda dapat menggunakan perintah berikut:
mlflow ui
Ini akan memulai server pelacakan lokal di http://localhost:5000. Anda dapat membuka URL ini di browser Anda untuk melihat UI MLflow.
Contoh Kode: Pelacakan Eksperimen dengan MLflow
Sekarang mari kita lihat contoh kode cara menggunakan MLflow untuk melacak eksperimen ML:
import mlflow
import mlflow.sklearn
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
# Muat data
data = pd.read_csv("data.csv") # Ganti dengan path ke data Anda
X = data.drop("target", axis=1)
y = data["target"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Mulai run MLflow
with mlflow.start_run():
# Log parameter
C = 0.1
mlflow.log_param("C", C)
# Latih model
model = LogisticRegression(C=C, solver='liblinear')
model.fit(X_train, y_train)
# Buat prediksi
y_pred = model.predict(X_test)
# Hitung metrik
accuracy = accuracy_score(y_test, y_pred)
mlflow.log_metric("accuracy", accuracy)
# Log model
mlflow.sklearn.log_model(model, "model")
# Log artefak (contoh: file CSV)
# data.to_csv("data_processed.csv", index=False)
# mlflow.log_artifact("data_processed.csv")
print(f"Akurasi: {accuracy}")
Dalam contoh ini, kita menggunakan MLflow untuk melacak parameter, metrik, dan model. Kita juga melacak sebuah artefak (data yang diproses). Pastikan untuk mengganti “data.csv” dengan path ke dataset Anda.
Penjelasan Kode
-
import mlflow
: Mengimpor pustaka MLflow. -
mlflow.start_run()
: Memulai run MLflow baru. -
mlflow.log_param("C", C)
: Mencatat parameterC
. -
mlflow.log_metric("accuracy", accuracy)
: Mencatat metrikaccuracy
. -
mlflow.sklearn.log_model(model, "model")
: Mencatat model. -
mlflow.log_artifact("data_processed.csv")
: Mencatat artefak.
Praktik Terbaik untuk Pelacakan Eksperimen dengan MLflow
Berikut beberapa praktik terbaik untuk pelacakan eksperimen dengan MLflow:
-
Gunakan Konteks Run: Selalu gunakan blok
with mlflow.start_run():
untuk memastikan bahwa run MLflow Anda diinisialisasi dan diakhiri dengan benar. - Log Semua Parameter yang Relevan: Log semua parameter yang relevan untuk eksperimen Anda. Ini akan membantu Anda mereproduksi hasil dan membandingkan eksperimen yang berbeda.
- Log Semua Metrik yang Relevan: Log semua metrik yang relevan untuk eksperimen Anda. Ini akan membantu Anda mengevaluasi kinerja model Anda.
- Log Artefak Penting: Log artefak penting, seperti model, plot, dan laporan. Ini akan membantu Anda berbagi dan menggunakan kembali hasil Anda.
- Gunakan Tag: Gunakan tag untuk mengategorikan dan memfilter run Anda. Ini akan membantu Anda menemukan eksperimen terbaik dan mengidentifikasi area untuk peningkatan.
- Struktur Kode Anda: Struktur kode Anda dengan cara yang logis dan terorganisir. Ini akan memudahkan Anda memahami dan memelihara kode Anda.
- Gunakan Kontrol Versi: Gunakan kontrol versi untuk melacak perubahan pada kode Anda. Ini akan membantu Anda mereproduksi hasil dan memecahkan masalah.
- Dokumentasikan Eksperimen Anda: Dokumentasikan eksperimen Anda dengan baik. Ini akan membantu Anda memahami apa yang Anda lakukan dan mengapa Anda melakukannya.
- Gunakan Penamaan yang Konsisten: Gunakan konvensi penamaan yang konsisten untuk parameter, metrik, artefak, dan tag Anda. Ini akan memudahkan Anda menemukan dan memahami data Anda.
- Gunakan Server Pelacakan Jarak Jauh untuk Produksi: Untuk lingkungan produksi, gunakan server pelacakan jarak jauh untuk menyimpan data Anda di database. Ini akan lebih andal dan dapat diskalakan daripada server pelacakan lokal.
Fitur Lanjutan MLflow Tracking
MLflow Tracking menawarkan beberapa fitur lanjutan yang dapat membantu Anda mengelola eksperimen ML Anda dengan lebih efektif.
MLflow Autologging
MLflow Autologging secara otomatis mencatat parameter, metrik, dan artefak dari eksperimen ML Anda. Ini dapat menghemat banyak waktu dan tenaga, terutama untuk pustaka ML yang populer seperti scikit-learn, TensorFlow, dan PyTorch.
import mlflow.sklearn
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
# Aktifkan autologging
mlflow.sklearn.autolog()
# Muat data
data = pd.read_csv("data.csv") # Ganti dengan path ke data Anda
X = data.drop("target", axis=1)
y = data["target"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Latih model
model = LogisticRegression(solver='liblinear') # Tidak perlu log parameter C secara manual lagi!
model.fit(X_train, y_train)
# Buat prediksi
y_pred = model.predict(X_test)
# Hitung metrik
accuracy = accuracy_score(y_test, y_pred)
# mlflow.log_metric("accuracy", accuracy) # Tidak perlu log akurasi secara manual lagi!
print(f"Akurasi: {accuracy}")
Dengan autologging diaktifkan, MLflow akan secara otomatis mencatat parameter, metrik, dan model dari eksperimen Anda. Ini dapat menghemat banyak waktu dan tenaga.
Nested Runs
Nested runs memungkinkan Anda membuat hierarki run. Ini berguna untuk melacak eksperimen yang kompleks yang melibatkan beberapa langkah. Misalnya, Anda dapat menggunakan nested runs untuk melacak setiap langkah dalam alur kerja ML.
import mlflow
with mlflow.start_run() as parent_run:
mlflow.log_param("parent_param", "parent_value")
with mlflow.start_run(nested=True) as child_run:
mlflow.log_param("child_param", "child_value")
Dalam contoh ini, kita membuat run induk dan run anak. Run anak berada di dalam run induk. Ini memungkinkan kita untuk mengatur eksperimen kita dengan lebih efektif.
MLflow UI: Analisis dan Perbandingan Eksperimen
MLflow UI menyediakan cara yang mudah digunakan untuk menganalisis dan membandingkan eksperimen. Anda dapat menggunakan UI untuk melihat parameter, metrik, dan artefak dari setiap run. Anda juga dapat menggunakan UI untuk membandingkan run yang berbeda dan mengidentifikasi eksperimen terbaik.
- Melihat Run: Anda dapat melihat detail dari setiap run, termasuk parameter, metrik, artefak, dan tag.
- Membandingkan Run: Anda dapat membandingkan run yang berbeda secara berdampingan untuk mengidentifikasi yang terbaik.
- Memfilter Run: Anda dapat memfilter run berdasarkan parameter, metrik, dan tag.
- Mencari Run: Anda dapat mencari run menggunakan kueri.
- Mengunduh Artefak: Anda dapat mengunduh artefak dari run.
Integrasi MLflow dengan Pustaka dan Framework ML Lainnya
MLflow berintegrasi dengan berbagai pustaka dan framework ML lainnya, termasuk:
- Scikit-learn: MLflow menyediakan integrasi otomatis dengan scikit-learn untuk melacak parameter, metrik, dan model.
- TensorFlow: MLflow menyediakan integrasi otomatis dengan TensorFlow untuk melacak parameter, metrik, dan model.
- PyTorch: MLflow menyediakan integrasi otomatis dengan PyTorch untuk melacak parameter, metrik, dan model.
- XGBoost: MLflow menyediakan integrasi otomatis dengan XGBoost untuk melacak parameter, metrik, dan model.
- Spark MLlib: MLflow menyediakan integrasi otomatis dengan Spark MLlib untuk melacak parameter, metrik, dan model.
Contoh Kasus: Penggunaan MLflow dalam Proyek Dunia Nyata
MLflow digunakan di berbagai proyek dunia nyata untuk melacak eksperimen ML, mengelola model, dan menyebarkan model.
- Netflix: Netflix menggunakan MLflow untuk mengelola dan menyebarkan model rekomendasi mereka.
- Databricks: Databricks menggunakan MLflow untuk menyediakan platform terpadu untuk pengembangan dan penyebaran ML.
- Microsoft: Microsoft menggunakan MLflow untuk melacak eksperimen ML mereka dan mengelola model mereka.
Pemecahan Masalah Umum dan Solusi
Berikut beberapa masalah umum yang mungkin Anda temui saat menggunakan MLflow dan solusinya:
-
Masalah: Tidak dapat terhubung ke server pelacakan MLflow.
Solusi: Pastikan bahwa server pelacakan MLflow berjalan dan bahwa Anda memiliki konfigurasi yang benar. -
Masalah: Tidak dapat mencatat parameter, metrik, atau artefak.
Solusi: Pastikan bahwa Anda menggunakan API MLflow dengan benar dan bahwa Anda memiliki izin yang benar untuk mencatat data. -
Masalah: Tidak dapat melihat run di MLflow UI.
Solusi: Pastikan bahwa server pelacakan MLflow berjalan dan bahwa Anda memiliki izin yang benar untuk melihat run.
Kesimpulan
MLflow Tracking adalah alat yang ampuh untuk melacak eksperimen ML Anda. Ini menyediakan API dan UI untuk mencatat parameter, metrik, artefak, dan informasi lainnya yang relevan dengan eksperimen Anda. Dengan menggunakan MLflow Tracking, Anda dapat meningkatkan reproduksibilitas, kolaborasi, pengorganisasian, auditabilitas, dan efisiensi eksperimen ML Anda.
Dalam postingan blog ini, kita telah membahas secara mendalam tentang MLflow Tracking, termasuk komponen utamanya, cara kerjanya, cara menginstalnya dan mengaturnya, dan praktik terbaik untuk menggunakannya. Kami juga telah membahas fitur lanjutan MLflow Tracking, seperti autologging dan nested runs. Terakhir, kita telah membahas beberapa contoh kasus tentang cara MLflow digunakan dalam proyek dunia nyata dan beberapa masalah umum dan solusinya.
Kami harap postingan blog ini bermanfaat. Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya di bagian komentar di bawah.
“`