Databricks

Model Governance on Databricks: Approval Flow, Audit & Reproducibility

2026-03-26
更新: 2026-03-27
NicheeLab Editorial Team

Model governance is the discipline of managing and controlling the entire lifecycle of ML models — answering the question "who deployed which model to production, when, and why?" In regulated industries such as finance, healthcare, and insurance, auditability of model decisions is often a legal requirement.

On Databricks, model governance is achieved by combining MLflow Tracking (reproducibility), Unity Catalog Model Registry (approval flow), and Unity Catalog audit logs (audit trail). This article walks through all three pillars and how to design them in practice.

The Three Pillars of Model Governance

PillarPurposeHow Databricks delivers it
Approval flowEnforce quality checks and approvals before production deploymentUC Model Registry + aliases (Champion/Challenger) + Webhooks
Audit trailRecord who changed what, and whenUnity Catalog Audit Log + MLflow Tracking run history
ReproducibilityRe-train and re-evaluate past models under identical conditionsMLflow Tracking (parameters, metrics, artifacts, environment info)

Unity Catalog Model Registry

UC Model Registry manages MLflow-trained models inside Unity Catalog's three-level namespace (catalog.schema.model_name). Compared with the legacy Workspace Model Registry, the key differences are:

  • Three-level namespace: models live at catalog.schema.model_name. UC's permission model (GRANT / DENY) applies to models as well.
  • Aliases: replace fixed stages (Staging/Production) with freely-defined aliases (e.g., Champion / Challenger / Baseline). A single version can hold multiple aliases.
  • Cross-workspace sharing: any workspace under the same UC metastore can access the same model.
  • Lineage tracking: automatically tracks which tables a model was trained from.
import mlflow

# Register a model in UC Model Registry
mlflow.set_registry_uri("databricks-uc")
model_uri = f"runs:/{run_id}/model"
mlflow.register_model(model_uri, "prod_catalog.ml_schema.fraud_detector")

# Assign an alias
from mlflow import MlflowClient
client = MlflowClient()
client.set_registered_model_alias(
    name="prod_catalog.ml_schema.fraud_detector",
    alias="Champion",
    version=3
)

Designing Alias Operations

AliasUseAssignment criteria
ChampionModel version currently serving production trafficAll validation checks + approval passed
ChallengerVersion being A/B tested as a Champion candidateBasic validation passed + approval to start A/B test
BaselineReference version used as the comparison point for drift detectionInitial production model, or a designated reference model
ArchivedRetired versions kept for referencePrevious version replaced by a new Champion

Reproducibility with MLflow Tracking

Model reproducibility is guaranteed by recording these four elements:

ElementHow to recordHow it is used at reproduction time
Codemlflow.log_artifact() / Git integration (source code hash auto-captured)Re-train using the same code
DataLog the Delta table version (timestamp / version number) via log_paramRead the same data with spark.read.option("versionAsOf", N)
EnvironmentAutomatic capture of conda.yaml / pip requirements.txt (MLflow Model Signature)Rebuild the environment with the same library versions
ParametersAutomatically captured via mlflow.log_param() / autolog()Re-train with the same hyperparameters

Designing the Approval Flow

Promoting a production model (Challenger → Champion) should follow an approval flow like this:

[Data Scientist]
  │
  ├─ 1. Train model + record with MLflow Tracking
  │     └─ mlflow.log_param / log_metric / log_model
  │
  ├─ 2. Register in UC Model Registry
  │     └─ mlflow.register_model("runs:/{run_id}/model", "catalog.schema.model")
  │
  ├─ 3. Attach the Challenger alias
  │     └─ client.set_registered_model_alias(..., "Challenger", version=N)
  │
  [CI/CD pipeline (automated)]
  │
  ├─ 4. Run validation tests
  │     ├─ Accuracy threshold (AUC > 0.85)
  │     ├─ Data drift detection
  │     ├─ Latency requirement (p99 < 100ms)
  │     └─ Fairness / bias checks
  │
  ├─ 5. Record test results in the MLflow run
  │
  [ML lead / risk officer (manual approval)]
  │
  ├─ 6. Review test results, approve or reject
  │
  ├─ 7. On approval, swap the Champion alias
  │     └─ client.set_registered_model_alias(..., "Champion", version=N)
  │
  └─ 8. Move the previous Champion to Archived

Audit Trail

The Unity Catalog audit log automatically records the following operations against a model:

  • Model registration (CREATE_REGISTERED_MODEL)
  • Version creation (CREATE_MODEL_VERSION)
  • Alias change (SET_REGISTERED_MODEL_ALIAS)
  • Permission change (UPDATE_GRANTS)
  • Model deletion (DELETE_REGISTERED_MODEL)

These logs are queryable via the audit_logs table in System Tables, so you can retroactively trace "who promoted which model version to Champion, and when." This is the evidence required for model risk management and other regulatory compliance regimes (e.g., SR 11-7).

Practical Design Guidelines

  • Standardize model naming: use catalog.schema.{team}_{use_case} consistently to keep models discoverable and manageable (e.g., prod_catalog.ml.fraud_detection_xgboost).
  • Enable autolog() by default: turn on mlflow.autolog() across the team so parameters and metrics are never accidentally omitted.
  • Record the Delta table version: log the training data's Delta version via log_param so the exact same data can be re-read for retraining.
  • Apply least-privilege GRANTs: data scientists get model registration only; promoting to Champion is restricted to the ML lead or the CI/CD pipeline.

What the Exam Tests

  • "How does Databricks manage promotion of models to production?" → UC Model Registry + aliases
  • "What must you log to guarantee model reproducibility?" → Code, data, environment, parameters
  • "What is the difference between aliases and stages?" → Aliases are freely-defined and multi-assignable; stages are fixed and limited to 3
  • "How do you audit operations on a model?" → UC audit log (System Tables)

Test Your Understanding

ML Professional

問題 1

An ML team just trained a new model version. Before production deployment, it must pass accuracy tests, drift detection, and latency checks, and then receive ML lead approval before serving production traffic. What is the most appropriate way to implement this promotion process in UC Model Registry?

  1. Move the model to the 'Staging' stage, then transition it to the 'Production' stage after testing
  2. Attach the 'Challenger' alias to the new version, and after the tests pass and the ML lead approves, swap to the 'Champion' alias
  3. Share the model to another workspace via Delta Sharing and copy it back after testing
  4. Operate the model so that even-numbered versions go to production and odd-numbered versions serve as validation

正解: B

UC Model Registry uses aliases — not stages — to manage promotion. The standard pattern is to run tests under the Challenger alias and, once every validation check passes, swap the Champion alias to the new version. The Staging/Production stages in option A are a legacy Workspace Model Registry feature and are deprecated in the UC version.

Frequently Asked Questions

What is the difference between UC Model Registry 'aliases' and the legacy Workspace 'stages'?

In the legacy Workspace Model Registry, every model version was assigned one of three fixed stages: Staging, Production, or Archived. UC Model Registry replaces stages with freely-defined aliases (e.g., Champion / Challenger / Baseline). Aliases can be applied to multiple versions at once and named however you like, which makes flexible workflows such as A/B testing straightforward. Stage transitions were heavyweight state changes, whereas swapping an alias is a lightweight pointer move.

What is the minimum information you should log with MLflow Tracking?

For reproducibility you should log at least these four things: (1) hyperparameters (mlflow.log_param), (2) evaluation metrics (mlflow.log_metric), (3) the version or path of the training data, and (4) the runtime dependency information (pip requirements / conda env). Enabling mlflow.autolog() captures all of this automatically for frameworks like scikit-learn, XGBoost, and PyTorch.

How can I automate the model approval flow?

You can automate it by combining Databricks Workflows, Webhooks, and the MLflow API. The flow looks like this: (1) when a new model version is registered, a webhook triggers the CI/CD pipeline, (2) the pipeline runs validation tests (accuracy thresholds, data drift detection, A/B test results), and (3) if every check passes, the MLflow API moves the Champion alias to the new version. When manual approval is required, insert a Slack or email notification step so a human can sign off before the alias is moved.

Check what you learned with practice questions

Practice with certification-focused question sets

無料で問題を解いてみる
Author

NicheeLab Editorial Team

NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.


Related articles
Databricks

Databricks Certifications: All 7 Exams, Difficulty & Study Plan (2026)

Complete guide to all 7 Databricks certifications — Data Eng...

Databricks

Databricks Exam Difficulty Ranking: All 7 Certs Compared (2026)

Every Databricks certification ranked by difficulty, with st...

Databricks

Databricks Study Guide: Fastest Pass Route & Time Estimates (2026)

How to pass Databricks certifications efficiently. Official ...

Databricks

Databricks Data Engineer Associate: Complete Guide (2026)

Domain-by-domain breakdown of the Databricks Certified Data ...

Databricks

Databricks Data Engineer Professional: Complete Guide (2026)

Tactics for the Databricks Certified Data Engineer Professio...

Browse all Databricks articles (110)
© 2026 NicheeLab All rights reserved.