Databricks

MLflow Model Registry Deep Dive: Promotion, Stage Operations & Deployment

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

The MLflow Model Registry is the Databricks core feature that centralizes trained-model version management, promotion flows (Challenger → Champion), permission management, and deployment to Model Serving. Since 2024 Databricks has been pushing the migration from the Workspace Model Registry to the Unity Catalog (UC) Model Registry. The UC version adds enhancements such as aliases and cross-workspace sharing.

This article walks through the big picture of the Model Registry, the differences between the Workspace and UC versions, how to implement model registration and alias workflows, and how to design promotion flows.

Model Registry Overview

The Model Registry is the 'model catalog' component of the MLflow ecosystem. Once you register a model artifact from an MLflow Tracking experiment Run, the following management capabilities become available.

  • Version management: multiple versions live under the same model name. Each version keeps a link to the original MLflow Tracking Run and its Model Signature.
  • Alias / stage management: the UC version uses aliases (Champion / Challenger) while the legacy Workspace version uses stages (Staging / Production / Archived) to track model state.
  • Permission management: the UC version controls model access with GRANT / DENY. You can strictly govern who can register, read, or promote each model.
  • Model Serving integration: registered models deploy directly to Model Serving endpoints. Reassigning an alias automatically updates the inference model.

Legacy Workspace vs UC: Comparison Table

ItemLegacy Workspace versionUC version (recommended)
NamespaceFlat (model name only)Three-level (catalog.schema.model_name)
Model state managementStages (Staging / Production / Archived)Aliases (Champion / Challenger / freely defined)
Permission managementWorkspace ACLsUnity Catalog GRANT / DENY
Cross-workspaceNot supported (scoped to a single workspace)Supported (within the same UC metastore)
Lineage trackingLimitedAutomatic tracking down to the training data tables
Audit logsWorkspace logsUC System Tables (audit_logs)
WebhooksSupportedSupported
Future supportDeprecated (scheduled to be retired)Recommended and actively developed

Implementing Model Registration

Here is the basic flow for registering a model in the Model Registry.

import mlflow
from mlflow import MlflowClient

# 1. Point the Registry URI at UC
mlflow.set_registry_uri("databricks-uc")

# 2. Train and record with Tracking
with mlflow.start_run() as run:
    mlflow.autolog()
    model = train_model(X_train, y_train)  # training logic
    mlflow.sklearn.log_model(
        model,
        artifact_path="model",
        input_example=X_train[:5],
        signature=mlflow.models.infer_signature(X_train, y_pred)
    )

# 3. Register in the Model Registry
model_uri = f"runs:/{run.info.run_id}/model"
mv = mlflow.register_model(
    model_uri=model_uri,
    name="prod_catalog.ml_schema.churn_predictor"
)
print(f"Registered: version {mv.version}")

# 4. Attach an alias
client = MlflowClient()
client.set_registered_model_alias(
    name="prod_catalog.ml_schema.churn_predictor",
    alias="Challenger",
    version=mv.version
)

Aliases vs Legacy Stages: Detailed Comparison

CapabilityLegacy stages (Workspace)Aliases (UC)
DefinitionFixed set (None / Staging / Production / Archived)Freely defined (any string label)
Concurrent assignmentOnly one stage per versionMultiple aliases can be attached to a single version
Same stage across versionsNot allowed (Production always belongs to a single version)Each alias points to exactly one version (pointer-like behavior)
Reference formatmodels:/model_name/Productionmodels:/catalog.schema.model_name@Champion
A/B testing supportDifficult (only one Production exists)Easy (run Champion and Challenger aliases side by side)
Transition historyRecorded as stage transition eventsRecorded as alias change events

Model Promotion Flow

Here is the end-to-end promotion flow recommended for real-world use.

[Step 1: Train & Experiment]
  |  mlflow.start_run() -> autolog() -> log_model()
  |  => Recorded into an MLflow Tracking Run
  |
  v
[Step 2: Register]
  |  mlflow.register_model("runs:/{id}/model", "catalog.schema.model")
  |  => Version N is created in the Model Registry
  |
  v
[Step 3: Attach Challenger alias]
  |  client.set_registered_model_alias(..., "Challenger", N)
  |  => Marked as a production candidate
  |
  v
[Step 4: Validation (automated)]
  |  |- Accuracy tests (AUC >= 0.85 / RMSE <= threshold)
  |  |- Data drift detection (PSI / KS statistics)
  |  |- Latency test (p99 < 100ms)
  |  \- Fairness test (prediction gap across protected attributes)
  |
  v
[Step 5: Approval (manual or automated)]
  |  |- All tests pass -> ML lead approves
  |  \- Tests fail -> rejected with feedback
  |
  v
[Step 6: Champion promotion]
  |  client.set_registered_model_alias(..., "Champion", N)
  |  => Model Serving automatically switches to the new version
  |
  v
[Step 7: Previous Champion -> Archived]
     client.delete_registered_model_alias(..., "Champion")  # old version
     => Kept for reference, removed from inference

Integration with Model Serving

Models in the UC Model Registry deploy directly to Databricks Model Serving. If you specify an alias when creating the endpoint, simply reassigning that alias updates the inference model end-to-end.

Deployment styleConfigurationUpdate procedure
Version-pinnedSpecify the model version number explicitlyCreate a new version and update the endpoint configuration manually
Alias-based (recommended)Reference the @Champion aliasReassign the alias to a new version and the update happens automatically
# Load the model via its alias (inference time)
import mlflow

model = mlflow.pyfunc.load_model(
    "models:/prod_catalog.ml_schema.churn_predictor@Champion"
)
predictions = model.predict(new_data)

Exam Focus Points

  • 'Which Databricks feature provides model versioning and promotion flows?' → UC Model Registry
  • 'What is the biggest difference between the UC and Workspace versions?' → aliases vs stages, three-level namespace, and cross-workspace sharing
  • 'What does mlflow.register_model() do?' → registers the model artifact from a Tracking Run into the Registry so it becomes a versioned object
  • 'How do you update a model on Model Serving?' → reassign the Champion alias to the new version
  • 'What is the model reference URI format?' → models:/catalog.schema.model_name@Champion

Check with a Practice Question

ML Associate / ML Professional

問題 1

An ML engineer has registered a model in the UC Model Registry and wants to run an A/B test. Which design best keeps the current production model (Version 3) live while routing some traffic to a new model (Version 5)?

  1. Keep Version 3's stage as Production and set Version 5's stage to Staging
  2. Attach the Champion alias to Version 3 and the Challenger alias to Version 5, then split traffic with Model Serving's traffic-splitting feature
  3. Delete Version 3 and promote Version 5 to the Production stage
  4. Register them under two separate model names and route requests manually

正解: B

The UC Model Registry manages model state with aliases, not stages. The standard design is to run Champion and Challenger aliases side by side and split traffic in Model Serving to run the A/B test. Option A's 'Staging/Production' belongs to the legacy Workspace Model Registry and does not exist in the UC version. Deletion is risky, and registering under two separate model names complicates operations.

Frequently Asked Questions

How do I migrate from the Workspace Model Registry to the UC Model Registry?

Yes. Databricks provides mlflow.copy_model_version() and an Upgrade API that let you migrate models registered in the Workspace Model Registry to the UC Model Registry. During migration you specify the model's three-level namespace (catalog.schema.model_name). After the migration you must update references to the old Workspace-version models, so adjust your inference pipelines and Model Serving endpoint configurations as well. A staged migration (new models go directly to UC, existing ones are migrated incrementally) is recommended.

What is the difference between mlflow.register_model() and mlflow.log_model()?

mlflow.log_model() saves a trained model as an artifact inside an MLflow Tracking Run. mlflow.register_model() then 'registers' that artifact into the Model Registry, bringing it under version management, alias management, and permission management. log_model() alone does not register anything in the Model Registry, so you cannot version it or attach aliases. The standard flow is to save with log_model() first and then register with register_model().

Is there any downtime when updating a model on a Model Serving endpoint?

Usually there is none. When the Databricks Model Serving endpoint is configured with an alias (for example, pointing at the Champion alias), reassigning the alias to a new version causes Model Serving to automatically spin up a container for the new version and shift traffic away from the old one (effectively blue-green). Both versions run in parallel during the cutover, so no requests are dropped.

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.