Databricks for Data & AI Engineers
Trang chủ / Module 9
🧪 Module 9 / 14 · 2 tuần

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.

MLflowModel RegistryReproducibility
📌 Vì sao module này quan trọng

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

Thử nghiệm & đăng ký model

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

✅ 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ả