MLflow — Experiment Tracking & Model Registry
MLflow Tracking, MLflow Models, Model Registry trên Unity Catalog, vòng đời model từ thực nghiệm đến production.
Không có tracking có hệ thống, quá trình thử nghiệm model nhanh chóng biến thành hỗn loạn: không nhớ config nào cho ra kết quả nào, không tái tạo lại được model đã deploy 3 tháng trước. MLflow (do chính Databricks khởi xướng, nay là dự án mã nguồn mở độc lập được dùng rộng rãi) giải quyết đúng vấn đề này, và tích hợp sẵn, liền mạch trên nền tảng Databricks.
🎯 Mục tiêu học tập
- Ghi lại (log) tham số, metric, artifact của mỗi lần thực nghiệm bằng MLflow Tracking
- Đóng gói model theo chuẩn MLflow Models để phục vụ (serving) nhất quán bất kể framework
- Quản lý vòng đời model qua Model Registry tích hợp Unity Catalog (staging → production)
- Hiểu vì sao reproducibility (tái tạo lại đúng kết quả) là yêu cầu bắt buộc, không phải tuỳ chọn
MLflow Tracking
import mlflow
mlflow.set_experiment("/Shared/customer_churn_model")
with mlflow.start_run(run_name="xgboost_v3"):
mlflow.log_param("max_depth", 6)
mlflow.log_param("learning_rate", 0.1)
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
mlflow.log_metric("accuracy", accuracy)
mlflow.log_metric("f1_score", f1)
mlflow.sklearn.log_model(model, "model") # lưu cả artifact model
Mỗi lần chạy (run) được ghi lại đầy đủ: tham số đầu vào, metric đầu ra, artifact (model
file, biểu đồ, file dữ liệu mẫu) — tất cả xem lại được qua UI, so sánh trực quan giữa nhiều run để chọn
cấu hình tốt nhất, không cần tự ghi chép thủ công vào spreadsheet.
MLflow Models — đóng gói thống nhất đa framework
MLflow định nghĩa một định dạng đóng gói chung ("flavor") cho model từ nhiều framework
khác nhau (scikit-learn, XGBoost, PyTorch, TensorFlow, thậm chí cả LLM pipeline tuỳ chỉnh qua
pyfunc) — một khi đã log theo MLflow Models, việc load lại để dự đoán hoặc serving (Module
10) dùng chung một API bất kể model được huấn luyện bằng công cụ gì:
model = mlflow.pyfunc.load_model("models:/customer_churn/production")
predictions = model.predict(new_data)
Model Registry trên Unity Catalog
Model Registry hiện nay tích hợp trực tiếp vào Unity Catalog (thay vì registry riêng biệt như phiên bản
cũ) — model được quản lý theo cùng namespace catalog.schema.model_name, cùng cơ chế
GRANT/REVOKE, cùng data lineage như bảng dữ liệu (Module 5). Vòng đời model dùng alias
(ví dụ @champion, @production) thay vì stage cố định của phiên bản cũ, linh hoạt
hơn khi cần A/B test nhiều phiên bản model cùng lúc:
import mlflow
mlflow.set_registry_uri("databricks-uc")
mlflow.register_model("runs://model", "prod.ml.customer_churn")
client = mlflow.MlflowClient()
client.set_registered_model_alias("prod.ml.customer_churn", "champion", version=3)
Vì sao Reproducibility là bắt buộc
Kết hợp MLflow (ghi lại config/code version nào tạo ra model nào) với Delta Lake Time Travel (Module 3 — biết chính xác dữ liệu ở version nào được dùng để huấn luyện), bạn có đủ thông tin để tái tạo lại chính xác một model đã huấn luyện trong quá khứ — yêu cầu bắt buộc trong các ngành có kiểm toán/tuân thủ (tài chính, y tế), và cực kỳ hữu ích khi cần điều tra "vì sao model tuần trước dự đoán khác tuần này" (data drift hay code thay đổi?).
🏋️ Bài tập thực hành
Huấn luyện 3 phiên bản của cùng 1 model (đổi 1-2 hyperparameter mỗi lần) trên 1 dataset mẫu, log đầy đủ bằng MLflow Tracking. So sánh 3 run trên UI, chọn model tốt nhất và đăng ký vào Model Registry (Unity Catalog), gán alias @champion. Load lại model bằng mlflow.pyfunc.load_model và chạy dự đoán thử trên dữ liệu mới.
📚 Tài nguyên học tập
-
MLflow — DocumentationTài liệu chính thức dự án mã nguồn mở MLflowDocs
-
Databricks — MLflow guideTài liệu MLflow tích hợp trên DatabricksDocs
-
Databricks — Models in Unity CatalogQuản lý vòng đời model qua Unity CatalogDocs
✅ Tự đánh giá hoàn thành
- Log được tham số/metric/artifact đầy đủ cho một thực nghiệm bằng MLflow Tracking
- Đóng gói và load lại được model qua MLflow Models (pyfunc)
- Đăng ký model vào Model Registry và quản lý bằng alias
- Giải thích được vì sao kết hợp MLflow + Delta Time Travel giúp tái tạo kết quả