Track and register a model with MLflow, govern it in Unity Catalog, then deploy it behind one autoscaling REST endpoint — custom model, foundation model, or external provider.
Mosaic AI Model Serving is a unified interface to deploy, govern, and query AI models for real-time and batch inference — every model becomes a REST endpoint; MLflow is how you track, package, and register what you serve.
It collapses the ML lifecycle into one path: MLflow logs and versions the model, Unity Catalog governs it, and Model Serving exposes it as a low-latency API that autoscales (and can scale to zero) — no infra to manage, the same surface whether you serve your own model, a Databricks-hosted LLM, or OpenAI.
Experiments group runs; each run logs params, metrics, and artifacts. log_model packages the model in the MLflow format (flavor) so any tool can load it.
The recommended registry: models live at catalog.schema.model with versions and aliases (e.g. @Champion). Replaces legacy Workspace Model Registry stages.
Your Python model (scikit-learn, XGBoost, PyTorch, transformers) registered in MLflow format and served on CPU or GPU compute.
Databricks-hosted open LLMs (e.g. Llama) — pay-per-token to start, provisioned throughput for production SLAs.
One endpoint in front of OpenAI, Anthropic, Cohere, Bedrock, Vertex AI — credentials encrypted and centrally governed.
Endpoints scale up/down with demand and can drop to zero replicas when idle; workload_size (Small/Medium/Large) sets the concurrency band.
log_model packages the model in the MLflow format.Python · MLflow → Unity Catalog → Model Servingimport mlflow
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput
mlflow.set_registry_uri("databricks-uc") # register into Unity Catalog
mv = mlflow.register_model("runs://model" , "main.ml.churn")
w = WorkspaceClient()
w.serving_endpoints.create(name="churn", config=EndpointCoreConfigInput(
served_entities=[ServedEntityInput(entity_name="main.ml.churn",
entity_version=mv.version, workload_size="Small",
scale_to_zero_enabled=True)])) # idle endpoint drops to 0 replicas
# then: POST /serving-endpoints/churn/invocations (or w.serving_endpoints.query)
GPU_* workload type.ai_query at the same endpoint over a table — and scale-to-zero kills cost on idle endpoints at the price of a cold start."Verified against docs.databricks.com · June 2026