What you will be able to do
- Explain why a model's catalog shows its environment while an alias shows its deployment status
- Place the Challenger and Champion aliases correctly in a training, validation and deployment workflow
- Promote a Challenger to Champion with MlflowClient.set_registered_model_alias or the Databricks CLI, and name the permissions this requires
- Tell aliases apart from tags and from the legacy Workspace Model Registry stages
Key concept
Model alias — A named pointer that you can move, attached to exactly one version of a registered model in Unity Catalog. To promote a model, you move the pointer (for example, Champion) to a new version. Workloads that use the alias then pick up that version, and their code does not change.
1.Where a model lives versus what it is doing
In Unity Catalog, every registered model has a three-level name, <catalog>.<schema>.<model>, such as prod.ml_team.iris_model. That name answers one question: which environment is this model in, and which governance rules apply? The Databricks documentation gives an example of such a rule: privileges can be set so that only admins can delete from the prod catalog. The name does not tell you which version is serving predictions. In the documentation's words, the enclosing catalog, schema and registered model reflect the environment, "but not its deployment status."
A separate mechanism tracks deployment status: model aliases. The documentation says this directly: "To manage the deployment status, use model aliases." So you hold two facts about each model at once. The namespace says where it lives. Its aliases say which versions are in use and for what.
If you used the legacy Workspace Model Registry, you might reach for stages such as Staging and Production. Models in Unity Catalog do not support them. Databricks recommends a split of responsibilities instead: the three-level namespace shows the environment, and aliases handle promotion for deployment.
An alias is a named reference that you can move, and it is attached to one specific version. The documentation's example is a "Champion" alias on the version currently in production. Workloads that use the production model target that alias. To change the production model, you reassign "Champion" to a different version. Nothing in the consuming workload has to change, because it asks for "Champion", not for version 3 or version 4.
Checkpoint 1 of 8· Check yourself
Your team is moving from the Workspace Model Registry to Models in Unity Catalog. A pipeline step used to move a model version to the Production stage. What should that step do now?
Unity Catalog does not support stages. Databricks recommends the namespace for the environment and aliases for promoting models to deployment. Tags label models but are not how a model is called.
“Stages are not supported for models in Unity Catalog.”Source: docs.databricks.com
Sources1
2.How a version earns Challenger, then Champion
The names Champion and Challenger come from the Databricks MLOps workflow. Each alias marks a checkpoint in a pipeline. Databricks recommends a multitask workflow. Its first task is the model training pipeline, followed by a model validation task and a model deployment task. The training task produces a model URI, and you can pass it to the validation task with task values.
Training. The pipeline trains and tunes the model, then logs parameters, metrics and artifacts to MLflow Tracking. It then evaluates the model on held-out data. The aim of evaluation is to find out whether the new model is better than the current production model. After training, the model is registered to the Unity Catalog catalog for the environment the pipeline ran in.
Validation. This pipeline loads the model from Unity Catalog using the URI from training, then runs validation checks. The checks depend on context. Basic checks confirm the format and required metadata. A highly regulated industry might add predefined compliance checks and confirm performance on selected slices of data. The pipeline's main job is to decide whether the model should go on to deployment. If the model passes, it can be assigned the Challenger alias in Unity Catalog. If the checks fail, the process ends, and you can set up the job to notify users.
Deployment. The deployment pipeline then does one of two things. It either promotes the Challenger directly to Champion with an alias update, or it compares the existing Champion with the new Challenger first. This pipeline can also set up inference infrastructure, such as Model Serving endpoints.
So Challenger means "passed validation and is a candidate." Champion means "the version production workloads target." Promotion is the moment the Champion alias moves to the Challenger's version.
Checkpoint 2 of 8· Put it in order
Put the tasks of the recommended multitask workflow in order, from first to last
- 1.Model validation: load the model by URI, run checks, and assign Challenger if it passes
- 2.Model training: train, evaluate and register the model, producing a model URI
- 3.Model deployment: promote Challenger to Champion with an alias update, or compare the two first
Training comes first and produces the URI. Validation decides whether the model may go ahead and assigns Challenger. Deployment carries out the promotion to Champion.
“the first task is the model training pipeline, followed by model validation and model deployment tasks”Source: docs.databricks.com
Checkpoint 3 of 8· Exam question
A data science team has been running two model versions in shadow mode against `prod.forecasting.demand_model`: version 3, currently aliased `champion`, and version 5, aliased `challenger`, which just cleared a validation job with better offline metrics. Production inference code loads the model via `models:/prod.forecasting.demand_model@champion` and the team wants that code to start serving version 5 with no code changes and no new model version created. Which action accomplishes this?
Correct answer: A — Call `MlflowClient().set_registered_model_alias("prod.forecasting.demand_model", "champion", 5)` to reassign the `champion` alias directly onto version 5.
- A. Reassigning the `champion` alias to version 5 with `set_registered_model_alias` is exactly how Unity Catalog promotion works: the alias is a mutable pointer, so inference code that loads `@champion` picks up version 5 on its next call with no code edit.
- B. Copying artifacts into a new version is unnecessary work; version 5 is already a fully registered model version, so the alias can be pointed at it directly without duplicating it.
- C. Stage-based transitions like `transition_model_version_stage` are the deprecated workspace-registry mechanism; Unity Catalog registered models use aliases instead of stages for this kind of promotion.
- D. Hardcoding the inference code to the `challenger` alias bypasses the promotion mechanism entirely and leaves the `champion` alias stale on version 3, defeating the point of alias-stable inference code.
Sources2
3.Moving the alias: MlflowClient, the CLI and the permissions you need
The promotion itself is a single alias assignment. You can set, update and remove aliases in Catalog Explorer, and you can do the same with the MLflow Client API. In code, the method is set_registered_model_alias. It takes the three-level model name, the alias name and a version number. Calling it a second time with the same alias and a different version *reassigns* the alias. This is what promotion looks like in code. get_model_version_by_alias tells you which version an alias currently points to.
from mlflow import MlflowClient
client = MlflowClient()
# create "Champion" alias for version 1 of model "prod.ml_team.iris_model"
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1)
# reassign the "Champion" alias to version 2
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2)
# get a model version by alias
client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")Checkpoint 4 of 8· Fill the gap
Version 2 has beaten the current Champion. Which client method completes this promotion?
# reassign the "Champion" alias to version 2
client. ? ("prod.ml_team.iris_model", "Champion", 2)Promotion means pointing the Champion alias at a new version, which set_registered_model_alias does. Stage transitions are not supported in Unity Catalog. A tag labels a version but does not make it the version that workloads call. get_model_version_by_alias only reads an alias.
Source: docs.databricks.comYou can do the same from the command line. The databricks registered-models set-alias command takes three positional arguments: FULL_NAME (the model's full name), ALIAS, and VERSION_NUM, the version the alias should point to.
databricks registered-models set-alias main.my_schema.my_model production 1Permissions are where promotion pipelines tend to fail. Setting an alias requires ownership of the registered model. A principal that can create new versions does not automatically have that. The model lifecycle page lists the requirements: the owner of the registered model, plus USE SCHEMA and USE CATALOG on the schema and catalog that contain it. The CLI reference also allows a metastore admin, and a model owner must also have USE_CATALOG and USE_SCHEMA on the parent catalog and schema. By contrast, a principal can create a new model version with only the CREATE MODEL VERSION privilege on the model. So a training job's service principal might be able to register new versions and still be unable to promote any of them.
Checkpoint 5 of 8· Check yourself
A service principal has USE CATALOG, USE SCHEMA and CREATE MODEL VERSION on prod.ml_team.iris_model. It registers version 5 without trouble, but its call to set_registered_model_alias fails. What is the most likely fix?
Setting an alias requires ownership of the registered model (the CLI reference also allows a metastore admin). EXECUTE covers loading or deploying, and CREATE MODEL covers creating models. Neither grants alias management.
“To set an alias on a registered model, the principal must be the owner of the registered model.”Source: docs.databricks.com
Checkpoint 6 of 8· Exam question
A data scientist who does not own the registered model `prod.risk.credit_model`, but who holds `USE CATALOG` on `prod` and `USE SCHEMA` on `prod.risk`, runs `client.set_registered_model_alias("prod.risk.credit_model", "champion", 4)` and gets a permission error. What is the most likely cause, and what should the team grant to let this person promote model versions with aliases going forward?
Correct answer: A — The data scientist lacks the model-owner permission required to set aliases; grant them ownership of the registered model, or have the current owner perform the alias reassignment instead.
- A. Setting an alias requires being the model owner (or a role with equivalent rights) on top of the catalog and schema usage privileges, so granting ownership, or routing the change through the owner, resolves the permission error.
- B. Alias assignment is a model-registry operation and does not check privileges on the underlying training-data table, so granting table-level `MODIFY` would not address the actual permission gap.
- C. Aliases can be set programmatically or through the model page UI by anyone with owner rights and catalog/schema usage; an account-admin role is not required and is not the mechanism being blocked here.
- D. There is no separate `CREATE MODEL` privilege gating `set_registered_model_alias`; the missing requirement is ownership of the registered model itself, not an additional catalog-level create grant.
4.Aliases, tags and the stages they replaced
In the Workspace Model Registry, stages did two jobs. They let you *call* a model ("give me the Production model"), and they *labelled* it. Unity Catalog splits those jobs between two tools: aliases for calling a model, and tags for labelling it.
The split also changes how many versions can share a name. In the Workspace Model Registry, several versions could sit in the same stage, and referencing the stage returned the latest of them. In Unity Catalog, an alias is assigned to one unique model version. At any moment, "Champion" names exactly one version. That is why reassigning it amounts to a promotion.
Tags take over the labelling. During migration, you can tag versions as "Production", "Staging" or "Archived", or with any other label. Unity Catalog allows at most 50 tags per object. In Catalog Explorer you can search for models by tag, but not for model versions, and the MLflow client cannot search models by Unity Catalog tags.
Approvals change as well. Under stages, a transition request needed human approval. In Unity Catalog, a deployment job manages a model version's lifecycle, with each task in the job corresponding to a "stage". Deployment jobs can still include human approvals.
| Concern | Workspace Model Registry (legacy) | Models in Unity Catalog |
|---|---|---|
| Calling a model for deployment | By stage, such as Production | By alias, such as Champion |
| Versions per name | Several versions can share a stage, and the latest is returned | An alias is assigned to one unique model version |
| Labelling lifecycle state | The stage itself | Tags such as Production, Staging or Archived (up to 50 per object) |
| Lifecycle and approvals | Transition requests that need human approval | A deployment job, whose tasks act as stages and can include human approvals |
Checkpoint 7 of 8· Match them up
Match each Unity Catalog mechanism to the job it does in a champion/challenger setup
Tap a term, then the definition that fits it.
Unity Catalog splits the old stage concept: aliases for calling a model and tags for labelling it. The namespace shows the environment, and deployment jobs manage the lifecycle.
“In Unity Catalog, stages have been replaced by aliases for calling a model and by tags for labeling models.”Source: docs.databricks.com
Checkpoint 8 of 8· Exam question
A team promotes version 6 of `prod.marketing.churn_model` to `champion` by reassigning the alias, but a downstream monitoring job flags a sudden accuracy drop within an hour. The team wants to immediately restore production traffic to version 5, the previous champion, while keeping version 6 registered for later investigation. Which action does this with the least disruption?
Correct answer: A — Run `client.set_registered_model_alias("prod.marketing.churn_model", "champion", 5)` to point the `champion` alias back at version 5; code loading `@champion` then resolves to version 5 on its next call.
- A. Reassigning the `champion` alias back to version 5 is a single, low-risk metadata update, and since inference code already resolves the model through the alias URI, traffic shifts back without redeploying anything.
- B. Deleting a model version does not automatically reassign an alias to a fallback version; deleting version 6 would also destroy the artifact needed for the investigation the team wants to keep.
- C. Unity Catalog registered models do not use stage-based transitions for serving lookups, so archiving and re-promoting stages would have no effect on which version the `champion` alias, and therefore inference code, actually resolves to.
- D. A full endpoint redeploy is unnecessary churn; aliases remain reassignable at any time regardless of how recently a version claimed them, so this overstates a limitation that does not exist.
Sources4
Exam traps
Each one states something that sounds right. Open it to see what is actually true.
1.Registering a model version into the prod catalog puts it into production.Why is that wrong?
The catalog shows the environment and its governance rules, not deployment status. A version serves production only when an alias such as Champion points to it.
Covered in Where a model lives versus what it is doing
2.Like a Production stage, the Champion alias can be held by several versions, and the latest one wins.Why is that wrong?
A Unity Catalog alias points to exactly one version. Reassigning it moves it off the previous Champion.
Covered in Aliases, tags and the stages they replaced
3.Any principal that can create new model versions can also promote a Challenger to Champion.Why is that wrong?
CREATE MODEL VERSION is enough to add versions, but setting an alias requires ownership of the registered model (or, according to the CLI reference, metastore admin).
Covered in Moving the alias: MlflowClient, the CLI and the permissions you need
4.A model that passes validation becomes Champion automatically.Why is that wrong?
Passing validation earns the Challenger alias. The deployment pipeline then promotes it with an alias update, or compares it with the current Champion first.
Practise it for real
Promote version 2 of a Unity Catalog model to Champion and confirm which version the alias points to
1.Make sure a registered model such as prod.ml_team.iris_model has at least two versions, and that you own it and have USE CATALOG and USE SCHEMA on its catalog and schema.
Why: Setting an alias requires ownership of the registered model plus those two privileges.
You should see: You can open the model in Catalog Explorer and see version 1 and version 2.
2.Create an MlflowClient and call client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1).
Why: This sets up the existing Champion.
You should see: The call finishes without a permission error, and Catalog Explorer shows the Champion alias on version 1.
3.Call client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2).
Why: Reassigning the alias is the promotion. An alias belongs to one unique version, so it moves off version 1.
You should see: Catalog Explorer now shows Champion on version 2 only.
4.Call client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion").
Why: This confirms what any workload that targets the alias will now get.
You should see: The returned model version is version 2.
Stuck? Get a nudge
If step 2 fails with a permission error even though you can register versions, check who owns the registered model. CREATE MODEL VERSION is not enough to set an alias.
Sources
Every claim above is drawn from one of these pages, quoted as it was written on the date shown.
- 1.
“To manage the deployment status, use model aliases.”
↩︎ Where a model lives versus what it is doing“using aliases to promote models for deployment”
↩︎ Where a model lives versus what it is doing“You can use aliases to indicate the deployment status of a model version.”
↩︎ Where a model lives versus what it is doing“You can set, update, and remove aliases for models in Unity Catalog using Catalog Explorer.”
↩︎ Moving the alias: MlflowClient, the CLI and the permissions you need“Permissions required: Owner of the registered model, plus USE SCHEMA and USE CATALOG privileges on the schema and catalog containing the model.”
↩︎ Moving the alias: MlflowClient, the CLI and the permissions you need“Model aliases allow you to assign a mutable, named reference to a particular version of a registered model.”
↩︎ Key concept“Using the prod catalog doesn't necessarily mean that the model version serves production traffic.”
↩︎ Exam trap 1“Using the prod catalog doesn't necessarily mean that the model version serves production traffic.”
↩︎ Prediction“Stages are not supported for models in Unity Catalog.”
↩︎ Checkpoint - 2.
“The purpose of evaluation is to determine if the newly developed model performs better than the current production model.”
↩︎ How a version earns Challenger, then Champion“The primary function of the model validation pipeline is to determine whether a model should proceed to the deployment step.”
↩︎ How a version earns Challenger, then Champion“The model training task yields a model URI that the model validation task can use.”
↩︎ How a version earns Challenger, then Champion“using an alias update, or facilitates a comparison between the existing”
↩︎ Exam trap 4“the first task is the model training pipeline, followed by model validation and model deployment tasks”
↩︎ Checkpoint - 3.https://docs.databricks.com/aws/en/machine-learning/manage-model-lifecycle/upgrade-workflowsOfficial docs
“or have the CREATE MODEL VERSION privilege on it.”
↩︎ Moving the alias: MlflowClient, the CLI and the permissions you need“To set an alias on a registered model, the principal must be the owner of the registered model.”
↩︎ Checkpoint - 4.https://docs.databricks.com/aws/en/machine-learning/manage-model-lifecycle/migrate-to-ucOfficial docs
“In the Workspace Model Registry, multiple model versions could be in the same stage”
↩︎ Aliases, tags and the stages they replaced“In Unity Catalog, the lifecycle of a model version is managed by a deployment job.”
↩︎ Aliases, tags and the stages they replaced“Deployment jobs still accommodate human approvals.”
↩︎ Aliases, tags and the stages they replaced“In Unity Catalog, an alias is assigned to a unique model version.”
↩︎ Exam trap 2“In Unity Catalog, stages have been replaced by aliases for calling a model and by tags for labeling models.”
↩︎ Checkpoint
Also cited
“The caller must be a metastore admin or an owner of the registered model.”
↩︎ Exam trap 3