Menghentikan budaya notebook bertebaran: mencatat setiap eksperimen dengan MLflow/W&B, membandingkan run secara sistematis, menyimpan artifact, dan mengelola model registry untuk menjawab satu pertanyaan penting — model mana yang sedang live, dan kenapa

Setelah di episode 5 kita membangun pipeline training yang jujur, sekarang muncul pertanyaan yang tidak bisa dihindari dalam proyek nyata: bagaimana mengingat semua eksperimen? Tanpa tracking, proyek ML berubah menjadi kekacauan: file model_final_v2_benar_pakai_inipake2.pkl, angka akurasi yang tersebar di chat, dan tidak ada yang bisa menjelaskan kenapa model produksi adalah model itu.
Pernah dengar istilah "lost experiment"? Ini masalah klasik: kalian tuning semalaman, menemukan konfigurasi terbaik, tapi tidak mencatat hyperparameter, data, atau seed-nya — dan tidak bisa mereproduksinya. Experiment tracking dan model registry adalah jawaban sistematis untuk masalah ini, dan menjadi pembeda utama antara data science hobby dan ML engineering profesional.
Tiga pertanyaan yang harus bisa dijawab setiap saat:
Tanpa sistem, jawaban pertanyaan ketiga biasanya bergantung pada ingatan seseorang — dan itu cara yang buruk untuk menjalankan sistem produksi.
MLflow adalah toolkit open source yang paling banyak dipakai untuk tracking dan registry. Konsep dasarnya sederhana: setiap kali kalian training, satu run dibuat yang mencatat parameters, metrics, artifacts, dan tags.
import mlflow
with mlflow.start_run(run_name="gbm-v1") as run:
mlflow.log_param("n_estimators", 300)
mlflow.log_param("max_depth", 6)
mlflow.log_metric("roc_auc", 0.812)
mlflow.log_metric("f1", 0.774)
mlflow.log_artifact("model.pkl")
mlflow.set_tag("dataset", "events_2026_q2")Tracking paling berharga saat otomatis, bukan manual:
import mlflow
from sklearn.ensemble import GradientBoostingClassifier
with mlflow.start_run():
mlflow.autolog()
model = GradientBoostingClassifier(n_estimators=300, max_depth=6).fit(X_train, y_train)
# autolog mencatat params, metrics, dan model artifact otomatisautolog mencatat hyperparameter, metrik hasil fit, dan model artifact tanpa satu baris manual. Untuk deep learning, PyTorch dan Transformers juga didukung autolog di episode 12-13.
Setelah belasan run, kalian perlu membandingkan secara sistematis. Lewat UI MLflow (mlflow ui) atau programatik:
import mlflow
from mlflow.tracking import MlflowClient
client = MlflowClient()
runs = client.search_runs(
experiment_ids=["1"],
order_by=["metrics.roc_auc DESC"],
)
for run in runs[:5]:
print(run.info.run_id, run.data.metrics.get("roc_auc"), run.data.params)Kebiasaan yang harus dibangun: satu ide → satu run yang terdokumentasi. Setiap perubahan hyperparameter, feature, atau data harus menjadi run baru dengan tag yang jelas — bukan menimpa variabel lama di notebook.
Weights & Biases (W&B) menawarkan hal serupa dengan UI kolaboratif yang lebih mewah, integrasi dataset artifacts, dan fitur sweeps untuk hyperparameter search terdistribusi. Pilihannya antara MLflow (self-hosted, open source, integrasi ketat) dan W&B (SaaS, kolaborasi tim, sweeps) — konsep dasarnya sama, dan skill-nya portable.
Tracking mencatat proses; registry mengelola produk. Model registry menjawab: model mana yang staging, production, atau archived.
| Stage | Arti | Pemakaian |
|---|---|---|
| None / New | Model hasil training | Menunggu evaluasi |
| Staging | Lolos evaluasi awal | Uji coba, shadow deploy |
| Production | Live di serving | Dipakai API produksi |
| Archived | Sudah diganti | Riwayat, rollback |
from mlflow.tracking import MlflowClient
client = MlflowClient()
result = mlflow.register_model(
model_uri="runs:/<RUN_ID>/model",
name="churn-predictor",
)
client.transition_model_version_stage(
name="churn-predictor",
version=result.version,
stage="Staging",
)Setiap versi model memiliki lineage: run id, hyperparameter, metrik, dan dataset yang dipakai. Saat ada masalah di produksi, kalian bisa menelusuri langsung ke konfigurasi yang menyebabkannya — itu kekuatan sebenarnya registry.
Siklus ini menjadi dasar eval-driven development yang akan kita bahas lebih dalam di episode 24 — di mana evaluasi formal menjadi gerbang sebelum model naik ke produksi.
Warning
Registrasi model tanpa metrik yang lengkap adalah jebakan: tim yang "tinggal" register model dari run yang paling baru, bukan yang paling baik, perlahan menurunkan kualitas produksi. Buat aturan bahwa hanya run yang lolos gerbang evaluasi yang boleh masuk Production.
| Pitfall | Dampak | Pencegahan |
|---|---|---|
| Tracking manual & tidak lengkap | Run tidak bisa dibandingkan | autolog |
| Menimpa model lama tanpa versioning | Tidak bisa rollback | Model registry + stage |
Nama run generik (run_2) | Sulit mencari konfigurasi tertentu | Tag & nama run deskriptif |
| Artifact tidak disimpan | Model tidak bisa di-deploy ulang | log_artifact / autolog |
| Eksperimen tanpa seed tetap | Hasil tidak reproducible | Seed konsisten per run |
Pada episode 6 ini, kalian telah membangun sistem ingatan untuk eksperimen:
Di episode 7 selanjutnya kita akan membahas Model Evaluation & Metrics — memilih metrik yang benar-benar mencerminkan tujuan bisnis, menetapkan threshold, memeriksa kalibrasi, dan menerjemahkan performa teknis menjadi dampak bisnis yang bisa dipertanggungjawabkan. Sampai jumpa di episode 7!