Gérer le cycle de vie du modèle dans Unity Catalog
Cette page documente les modèles dans Unity Catalog, ce que Databricks recommande pour gouverner et déployer des modèles. Si votre workspace n'est pas activé pour Unity Catalog, la fonctionnalité sur cette page n'est pas disponible. Consultez plutôt Gérer le cycle de vie du modèle à l’aide du Workspace Model Registry (hérité). Pour obtenir des conseils sur la mise à niveau de Workspace Model Registry vers Unity Catalog, consultez Migrer des workflows et des modèles vers Unity Catalog.
Cet article explique comment utiliser les modèles dans Unity Catalog dans le cadre de votre workflow de Machine Learning pour gérer le cycle de vie complet des modèles ML. Databricks propose une version hébergée de MLflow Model Registry dans Unity Catalog. Les modèles dans Unity Catalog étendent les avantages de Unity Catalog aux modèles ML, y compris le contrôle d'accès centralisé, l'audit, la lignée et la découverte de modèles à travers les workspaces. Les modèles dans Unity Catalog sont compatibles avec le client Python open source MLflow.
Pour un aperçu des concepts de Model Registry, consultez MLflow sur Databricks.
MLflow 3 apporte des améliorations significatives à MLflow Model Registry dans Unity Catalog, permettant à vos modèles de capturer directement des données comme les paramètres et les métriques et de les rendre disponibles dans tous les workspaces et les expérimentations. L'URI de registre default dans MLflow 3 est databricks-uc, ce qui signifie que le MLflow Model Registry dans Unity Catalog sera utilisé. Pour plus de détails, consultez Démarrer avec MLflow 3 pour les modèles et Améliorations de Model Registry avec MLflow 3.
Exigences
-
Unity Catalog doit être activé dans votre workspace. Consultez Prise en main de Unity Catalog pour créer un Metastore Unity Catalog, l'activer dans un workspace et créer un catalogue. Si Unity Catalog n'est pas activé, utilisez le registre de modèles du workspace.
-
Vous devez utiliser une ressource de compute qui a accès à Unity Catalog. Pour les charges de travail ML, cela signifie que le mode d'accès du compute doit être **Dédié** (anciennement utilisateur unique). Pour plus d'informations, consultez Modes d'accès. Avec Databricks Runtime 15.4 LTS ML et versions ultérieures, vous pouvez également utiliser le mode d'accès de groupe dédié.
-
Pour créer de nouveaux modèles enregistrés, vous avez besoin des privilèges suivants :
USE SCHEMAetUSE CATALOGprivilèges sur le schéma et son catalogue parent.CREATE MODELou le privilègeCREATE FUNCTIONsur le schéma. Pour accorder des privilèges, utilisez l'interface utilisateur Catalog Explorer ou la commande SQL GRANT:
SQLGRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal> -
Si vous utilisez Databricks sur AWS GovCloud, vous devez définir la variable d'environnement
MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UCsurTrue. Incluez une cellule dans votre Notebook avec le code suivant :Pythonimport os
os.environ['MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC'] = 'True'Ce paramètre peut également être utile dans d'autres cas si vous rencontrez des problèmes d'autorisation lors de l'enregistrement d'un modèle. Cette approche ne peut pas être utilisée pour les modèles partagés avec OpenSharing qui utilisent le stockage default.
Votre Workspace doit être associé à un métastore Unity Catalog qui prend en charge l'héritage des privilèges. Ceci est vrai pour tous les métastores créés après le 25 août 2022. Si vous utilisez un métastore plus ancien, suivez la documentation pour effectuer la mise à niveau.
Installer et configurer le client MLflow pour Unity Catalog
Cette section inclut des instructions pour installer et configurer le client MLflow pour Unity Catalog.
Installer le client MLflow Python
La prise en charge des modèles dans Unity Catalog est incluse dans Databricks Runtime 13,2 ML et versions supérieures.
Vous pouvez également utiliser des modèles dans Unity Catalog sur Databricks Runtime 11.3 LTS et versions ultérieures en installant la dernière version du client MLflow Python dans votre Notebook, à l'aide du code suivant.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Configurez le client MLflow pour accéder aux modèles dans Unity Catalog
Si le catalogue default de votre Workspace est dans Unity Catalog (plutôt que hive_metastore), et que vous exécutez un cluster utilisant Databricks Runtime 13.3 LTS ou version ultérieure ou que vous utilisez MLflow 3, les modèles sont automatiquement créés dans et chargés depuis le catalogue default. Vous n'avez pas à effectuer cette étape.
Pour les autres workspaces, le client MLflow Python crée des modèles dans le registre de modèles du workspace Databricks. Pour passer aux modèles dans Unity Catalog, utilisez le code suivant dans vos Notebooks pour configurer le client MLflow :
import mlflow
mlflow.set_registry_uri("databricks-uc")
Pour un petit nombre de Workspaces où le catalogue default a été configuré pour un catalogue dans Unity Catalog avant janvier 2024 et que le registre de modèles du Workspace a été utilisé avant janvier 2024, vous devez définir manuellement le catalogue default sur Unity Catalog à l'aide de la commande affichée ci-dessus.
Former et enregistrer des modèles compatibles Unity Catalog
Autorisations requises :
- Pour créer un nouveau modèle enregistré, vous avez besoin des privilèges
CREATE MODELetUSE SCHEMAsur le schéma d'encapsulation, ainsi que du privilègeUSE CATALOGsur le catalogue d'encapsulation. - Pour créer de nouvelles versions de modèles sous un modèle enregistré, vous devez être le propriétaire du modèle enregistré, ou disposer du privilège
CREATE MODEL VERSIONsur celui-ci, ainsi que des privilègesUSE SCHEMAetUSE CATALOGsur le schéma et le catalogue contenant le modèle.
Si vous rencontrez des problèmes d'autorisation lors de l'enregistrement d'un modèle, essayez de définir la variable d'environnement MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC sur True. Cette approche ne peut pas être utilisée pour les modèles partagés avec OpenSharing qui utilisent le stockage default. Voir les Exigences.
Si vous utilisez Databricks sur AWS GovCloud, vous devez définir la variable d'environnement MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC sur True. Voir les Exigences.
Les nouvelles versions de modèles ML dans UC doivent avoir une signature de modèle. Si vous n'enregistrez pas encore les modèles MLflow avec des signatures dans vos charges de travail de formation de modèles, vous pouvez :
- Utilisez l'autologging Databricks, qui logue automatiquement les modèles avec des signatures pour de nombreux frameworks ML populaires. Consultez les frameworks pris en charge dans la documentation MLflow.
- Avec MLflow 2.5.0 et versions ultérieures, vous pouvez spécifier un exemple d'entrée dans votre appel
mlflow.<flavor>.log_model, et la signature du modèle est automatiquement inférée. Pour plus d'informations, consultez la documentation MLflow.
Ensuite, transmettez le nom du modèle à trois niveaux aux APIs MLflow, sous la forme <catalog>.<schema>.<model>.
Les versions de modèle qui n’ont pas de signatures présentent certaines limitations. Pour obtenir la liste de ces limitations et ajouter ou mettre à jour une signature pour une version de modèle existante, consultez Ajouter ou mettre à jour une signature pour une version de modèle existante.
Les exemples de cette section créent et accèdent à des modèles dans le schéma ml_team sous le catalogue prod.
Les exemples de formation de modèle de cette section créent une nouvelle version de modèle et l'enregistrent dans le catalogue prod. L'utilisation du catalogue prod ne signifie pas nécessairement que la version du modèle sert le trafic de production. Le catalogue, le schéma et le modèle enregistré de la version du modèle reflètent son environnement (prod) et les règles de gouvernance associées (par exemple, les privilèges peuvent être configurés de manière à ce que seuls les administrateurs puissent supprimer du catalogue prod), mais pas son état de déploiement. Pour gérer l'état du déploiement, utilisez les alias de modèle.
Enregistrer un modèle dans Unity Catalog à l'aide de l'autologging
Pour enregistrer un modèle, utilisez la méthode register_model() de l'API client MLflow. Consultez mlflow.register_model.
- MLflow 3
- MLflow 2.x
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)
# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist,
# and the model version will contain all parameters and metrics
# logged with the corresponding MLflow Logged Model.
logged_model = mlflow.last_logged_model()
mlflow.register_model(logged_model.model_uri, "prod.ml_team.iris_model")
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)
# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist
autolog_run = mlflow.last_active_run()
model_uri = "runs:/{}/model".format(autolog_run.info.run_id)
mlflow.register_model(model_uri, "prod.ml_team.iris_model")
Enregistrer un modèle à l'aide de l'API
- MLflow 3
- MLflow 2.x
mlflow.register_model(
"models:/<model_id>", "prod.ml_team.iris_model"
)
mlflow.register_model(
"runs:/<run_id>/model", "prod.ml_team.iris_model"
)
Enregistrer un modèle dans Unity Catalog avec une signature automatiquement inférée
La prise en charge des signatures déduites automatiquement est disponible dans MLflow version 2.5.0 et versions ultérieures, et est prise en charge dans Databricks Runtime 11.3 LTS ML et versions ultérieures. Pour utiliser les signatures inférées automatiquement, utilisez le code suivant pour installer la dernière version du client MLflow Python dans votre Notebook :
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Le code suivant montre un exemple de signature automatiquement inférée. Notez que l'utilisation de registered_model_name dans l'appel log_model() enregistre le modèle dans Unity Catalog, donc vous devez fournir le nom complet à trois niveaux du modèle au format <catalog>.<schema>.<model>.
- MLflow 3
- MLflow 2.x
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
with mlflow.start_run():
# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)
# Take the first row of the training dataset as the model input example.
input_example = X.iloc[[0]]
# Log the model and register it as a new version in UC.
mlflow.sklearn.log_model(
sk_model=clf,
name="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_model",
)
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
with mlflow.start_run():
# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)
# Take the first row of the training dataset as the model input example.
input_example = X.iloc[[0]]
# Log the model and register it as a new version in UC.
mlflow.sklearn.log_model(
sk_model=clf,
artifact_path="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_model",
)
Enregistrer un modèle à l'aide de l'interface utilisateur
Suivez ces étapes :
-
Depuis la page d'exécution de l'Experimentation, cliquez sur Enregistrer le modèle dans le coin supérieur droit de l'interface utilisateur.
-
Dans la boîte de dialogue, sélectionnez Unity Catalog , et sélectionnez un modèle de destination dans la liste déroulante.

-
Cliquez sur S'INSCRIRE .

L'enregistrement d'un modèle peut prendre du temps. Pour suivre la progression, accédez au modèle de destination dans Unity Catalog et refresh périodiquement.
Ajouter ou mettre à jour une signature pour une version de modèle existante
Les versions de modèle qui n’ont pas de signatures présentent les limitations suivantes :
- Si une signature est fournie, les entrées du modèle sont vérifiées lors de l'inférence et une erreur est signalée si les entrées ne correspondent pas à la signature. Sans signature, il n'y a pas d'application automatique des entrées, et les modèles doivent être capables de gérer les entrées inattendues.
- L'utilisation d'une version de modèle avec des Fonctions IA nécessite de fournir un schéma dans l'appel de fonction.
- L'utilisation d'une version de modèle avec Model Serving ne génère pas automatiquement d'exemples d'entrée.
Pour ajouter ou mettre à jour une signature de version de modèle, consultez la documentation MLflow.
Utiliser des alias de modèle
Les alias de modèle vous permettent d'attribuer une référence nommée et mutable à une version particulière d'un modèle enregistré. Vous pouvez utiliser des alias pour indiquer l'état de déploiement d'une version de modèle. Par exemple, vous pourriez attribuer un alias « Champion » à la version de modèle actuellement en production et cibler cet alias dans les charges de travail qui utilisent le modèle de production. Vous pouvez ensuite mettre à jour le modèle de production en réaffectant l'alias « Champion » à une version de modèle différente.
Définir et supprimer des alias sur des modèles
Autorisations requises : Propriétaire du modèle enregistré, ainsi que les privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle.
Vous pouvez définir, mettre à jour et supprimer des alias pour les modèles dans Unity Catalog à l'aide de Catalog Explorer. Voir Afficher et gérer les modèles dans l'interface utilisateur.
Pour définir, mettre à jour et supprimer des alias à l'aide de l'API cliente MLflow, consultez les exemples ci-dessous :
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")
# delete the alias
client.delete_registered_model_alias("prod.ml_team.iris_model", "Champion")
Pour plus de détails sur les API clientes d'alias, consultez la documentation de l'API MLflow.
Charger la version du modèle par alias pour les charges de travail d'inférence
Autorisations requises : privilège EXECUTE sur le modèle enregistré, ainsi que les privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle.
Les charges de travail d'inférence par batch peuvent référencer une version de modèle par alias. L'extrait ci-dessous charge et applique la version du modèle « Champion » pour l'inférence par batch. Si la version « Champion » est mise à jour pour référencer une nouvelle version de modèle, la charge de travail d'inférence par batch la récupère automatiquement lors de sa prochaine exécution. Cela vous permet de découpler les déploiements de modèles de vos charges de travail d'inférence en batch.
import mlflow.pyfunc
model_version_uri = "models:/prod.ml_team.iris_model@Champion"
champion_version = mlflow.pyfunc.load_model(model_version_uri)
champion_version.predict(test_x)
Les Endpoint de déploiement de modèles peuvent également référencer une version de modèle par alias. Vous pouvez rédiger des workflows de déploiement pour obtenir une version de modèle par alias et mettre à jour un Endpoint de déploiement de modèles pour servir cette version, à l’aide de l’ API REST de déploiement de modèles. Par exemple :
import mlflow
import requests
client = mlflow.tracking.MlflowClient()
champion_version = client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# Invoke the model serving REST API to update endpoint to serve the current "Champion" version
model_name = champion_version.name
model_version = champion_version.version
requests.request(...)
Charger la version du modèle par numéro de version pour les charges de travail d'inférence
Vous pouvez également charger les versions de modèle par numéro de version :
import mlflow.pyfunc
# Load version 1 of the model "prod.ml_team.iris_model"
model_version_uri = "models:/prod.ml_team.iris_model/1"
first_version = mlflow.pyfunc.load_model(model_version_uri)
first_version.predict(test_x)
Partager des modèles entre les workspaces
Partagez les modèles avec les utilisateurs de la même région
Tant que vous disposez des privilèges appropriés, vous pouvez accéder aux modèles dans Unity Catalog depuis n’importe quel workspace attaché au metastore contenant le modèle. Par exemple, vous pouvez accéder aux modèles du catalogue prod dans un workspace de développement, pour faciliter la comparaison des modèles nouvellement développés avec la base de référence de production.
Pour collaborer avec d'autres utilisateurs (partager des privilèges d'écriture) sur un modèle enregistré que vous avez créé, vous devez accorder la propriété du modèle à un groupe vous incluant, ainsi que les utilisateurs avec lesquels vous souhaitez collaborer. Les collaborateurs doivent également disposer des privilèges USE CATALOG et USE SCHEMA sur le catalogue et le schéma contenant le modèle. Consultez Référence des privilèges Unity Catalog pour plus de détails.
Partager des modèles avec des utilisateurs dans une autre région ou un autre compte
Pour partager des modèles avec des utilisateurs d’autres régions ou comptes, utilisez le flux de partage Databricks-to-Databricks OpenSharing. Consultez Ajouter des modèles à un partage (pour les fournisseurs) et Obtenir l'accès dans le modèle Databricks-to-Databricks (pour les destinataires). En tant que destinataire, après avoir créé un catalogue à partir d’un partage, vous accédez aux modèles de ce catalogue partagé de la même manière que tout autre modèle dans Unity Catalog.
Suivre le data lineage d'un modèle dans Unity Catalog
Le support de la traçabilité de table à modèle dans Unity Catalog est disponible dans MLflow 2.11.0 et versions supérieures.
Lorsque vous entraînez un modèle sur une table dans Unity Catalog, vous pouvez suivre le data lineage du modèle vers le ou les datasets en amont sur lesquels il a été entraîné et évalué. Pour ce faire, utilisez mlflow.log_input. Ceci enregistre les informations de la table d'entrée avec l'exécution MLflow qui a généré le modèle. Le data lineage est également automatiquement capturé pour les modèles journalisés à l'aide des APIs du Magasin de fonctionnalités. Voir Gouvernance des fonctionnalités et traçabilité.
Lorsque vous enregistrez le modèle dans Unity Catalog, les informations de lignage sont automatiquement enregistrées et sont visibles dans le **Lineage** tab sur la page de version du modèle dans l'Explorateur de catalogues. Consultez les informations sur la version et le lignage du modèle.
Le code suivant montre un exemple.
- MLflow 3
- MLflow 2.x
import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor
# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
columns = {
'sepal length (cm)':'sepal_length',
'sepal width (cm)':'sepal_width',
'petal length (cm)':'petal_length',
'petal width (cm)':'petal_width'},
inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")
# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
clf = RandomForestRegressor(n_estimators=100)
clf.fit(X, y)
mlflow.log_input(dataset, "training")
# Take the first row of the training dataset as the model input example.
input_example = X.iloc[[0]]
# Log the model and register it as a new version in UC.
mlflow.sklearn.log_model(
sk_model=clf,
name="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_classifier",
)
import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor
# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
columns = {
'sepal length (cm)':'sepal_length',
'sepal width (cm)':'sepal_width',
'petal length (cm)':'petal_length',
'petal width (cm)':'petal_width'},
inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")
# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
clf = RandomForestRegressor(n_estimators=100)
clf.fit(X, y)
mlflow.log_input(dataset, "training")
# Take the first row of the training dataset as the model input example.
input_example = X.iloc[[0]]
# Log the model and register it as a new version in UC.
mlflow.sklearn.log_model(
sk_model=clf,
artifact_path="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_classifier",
)
Contrôler l'accès aux modèles
Dans Unity Catalog, les modèles enregistrés sont un sous-type de l'objet sécurisable FUNCTION. Pour accorder l'accès à un modèle enregistré dans Unity Catalog, vous utilisez GRANT ON FUNCTION. Vous pouvez également utiliser Catalog Explorer pour définir la propriété et les autorisations du modèle. Pour plus de détails, consultez Gérer les privilèges dans Unity Catalog et Référence des objets sécurisables dans Unity Catalog.
Vous pouvez configurer les autorisations de modèle par programmation en utilisant l'API REST Grants. Lorsque vous configurez les autorisations de modèle, définissez securable_type sur "FUNCTION" dans les requêtes API REST. Par exemple, utilisez PATCH /api/2.1/unity-catalog/permissions/function/{full_name} pour mettre à jour les autorisations des modèles enregistrés.
Afficher et gérer les modèles dans l'interface utilisateur
Autorisations requises : pour afficher un modèle enregistré et ses versions de modèle dans l’interface utilisateur, vous avez besoin du privilège EXECUTE sur le modèle enregistré,
ainsi que des privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle
Vous pouvez afficher et gérer les modèles enregistrés et les versions de modèles dans Unity Catalog à l'aide de l'Explorateur de catalogues.
Afficher les informations du modèle
Pour afficher les modèles dans Catalog Explorer :
-
Cliquez sur
Catalogue dans la barre latérale.
-
Sélectionnez une ressource de compute dans la liste déroulante en haut à droite.
-
Dans l'arborescence de l'Explorateur de catalogues à gauche, ouvrez un catalogue et sélectionnez un schéma.
-
Si le schéma contient des modèles, ils apparaissent dans l'arborescence sous Modèles , comme illustré.

-
Cliquez sur un modèle pour voir plus d'informations. La page des détails du modèle affiche une liste des versions du modèle avec des informations supplémentaires.

Définir les alias de modèle
Pour définir un alias de modèle à l’aide de l’interface utilisateur :
- Sur la page des détails du modèle, passez la souris sur la ligne de la version du modèle à laquelle vous souhaitez ajouter un alias. Le bouton **Ajouter un alias** apparaît.
- Cliquez sur Ajouter un alias .
- Saisissez un alias ou sélectionnez-en un dans le menu déroulant. Vous pouvez ajouter plusieurs alias dans la boîte de dialogue.
- Cliquez sur Enregistrer les alias .

Pour supprimer un alias :
- Passez le curseur sur la ligne de la version du modèle et cliquez sur l'icône en forme de crayon à côté de l'alias.
- Dans la boîte de dialogue, cliquez sur le
Xà côté de l'alias que vous souhaitez supprimer. - Cliquez sur Enregistrer les alias .

Afficher les informations de version du modèle et la lignée du modèle
Pour afficher plus d'informations sur une version de modèle, cliquez sur son nom dans la liste des modèles. La page de version du modèle apparaît. Cette page comprend un link vers l'exécution source MLflow qui a créé la version. Dans MLflow 3, vous pouvez également consulter tous les paramètres et métriques enregistrés avec le modèle Log MLflow correspondant.
- MLflow 3
- MLflow 2.x


Depuis cette page, vous pouvez afficher la traçabilité du modèle comme suit :
-
Sélectionnez l'onglet Traçabilité . La barre latérale gauche affiche les composants qui ont été enregistrés avec les Logs du modèle.

-
Cliquez sur Voir le graphe de traçabilité . Le graphe de traçabilité s'affiche. Pour plus de détails sur l'exploration du graphe de traçabilité, consultez Capturer et explorer la traçabilité.

-
Pour fermer le graphe de traçabilité, cliquez sur
dans le coin supérieur droit.
Renommer un modèle
Autorisations requises : Propriétaire du modèle enregistré, CREATE MODEL privilège sur le schéma contenant le modèle enregistré,USE SCHEMA et USE CATALOG privilèges et sur le schéma et le catalogue contenant le modèle.
Pour renommer un modèle enregistré, utilisez la méthode rename_registered_model() de l'API MLflow Client, où <full-model-name> est le nom complet à 3 niveaux du modèle et <new-model-name> est le nom du modèle sans le catalogue ou le schéma.
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Par exemple, le code suivant modifie le nom du modèle hello_world en hello.
client=MlflowClient()
client.rename_registered_model("docs.models.hello_world", "hello")
Copier une version de modèle
Vous pouvez copier une version de modèle d'un modèle à un autre dans Unity Catalog.
Copier une version de modèle à l'aide de l'interface utilisateur
Suivez ces étapes :
-
Depuis la page de version du modèle, cliquez sur Copier cette version dans le coin supérieur droit de l'interface utilisateur.
-
Sélectionnez un modèle de destination dans la liste déroulante et cliquez sur Copier .

La copie d'un modèle peut prendre du temps. Pour suivre la progression, accédez au modèle de destination dans Unity Catalog et refresh périodiquement.
Copier une version de modèle à l'aide de l'API
Pour copier une version de modèle, utilisez l'API Python copy_model_version() de MLflow :
client = MlflowClient()
client.copy_model_version(
"models:/<source-model-name>/<source-model-version>",
"<destination-model-name>",
)
Supprimer un modèle ou une version de modèle
Autorisations requises : Propriétaire du modèle enregistré, ainsi que les privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle.
Vous pouvez supprimer un modèle enregistré ou une version de modèle au sein d'un modèle enregistré à l'aide de l'interface utilisateur ou de l'API.
Vous ne pouvez pas annuler cette action. Lorsque vous supprimez un modèle, tous les artefacts de modèle stockés par Unity Catalog et toutes les métadonnées associées au modèle enregistré sont supprimés.
Supprimer une version de modèle ou un modèle à l'aide de l'interface utilisateur.
Pour supprimer un modèle ou une version de modèle dans Unity Catalog, suivez les étapes suivantes.
-
Dans l’Explorateur de catalogues, sur la page du modèle ou de la version du modèle, cliquez sur le menu kebab
dans le coin supérieur droit.
À partir de la page du modèle :

Depuis la page de version du modèle :

-
Sélectionnez Supprimer .
-
Une boîte de dialogue de confirmation apparaît. Cliquez sur Supprimer pour confirmer.
Supprimer une version de modèle ou un modèle à l'aide de l'API
Pour supprimer une version de modèle, utilisez la méthode d'API Client MLflow delete_model_version() :
# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
client.delete_model_version(name="<model-name>", version=version)
Pour supprimer un modèle, utilisez la méthode delete_registered_model() de l'API client MLflow :
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Utilisez des balises sur les modèles
Les Tags sont des paires clé-valeur que vous associez aux modèles enregistrés et aux versions de modèle, vous permettant de les étiqueter et de les catégoriser par fonction ou statut. Par exemple, vous pouvez appliquer une balise avec la clé "task" et la valeur "question-answering" (affichée dans l'interface utilisateur comme task:question-answering) aux modèles enregistrés destinés aux tâches de réponse aux questions. Au niveau de la version du modèle, vous pouvez étiqueter les versions faisant l'objet d'une validation pré-déploiement avec validation_status:pending et celles autorisées au déploiement avec validation_status:approved.
Autorisations requises : Propriétaire ou titulaire du privilège APPLY TAG sur le modèle enregistré, plus les privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle.
Consultez Appliquer des tags aux objets sécurisables d'Unity Catalog pour apprendre à définir et à supprimer des tags à l'aide de l'interface utilisateur.
Pour définir et supprimer des balises à l'aide de l'API cliente MLflow, veuillez consulter les exemples ci-dessous :
from mlflow import MlflowClient
client = MlflowClient()
# Set registered model tag
client.set_registered_model_tag("prod.ml_team.iris_model", "task", "classification")
# Delete registered model tag
client.delete_registered_model_tag("prod.ml_team.iris_model", "task")
# Set model version tag
client.set_model_version_tag("prod.ml_team.iris_model", "1", "validation_status", "approved")
# Delete model version tag
client.delete_model_version_tag("prod.ml_team.iris_model", "1", "validation_status")
Les tags de modèle enregistré et de version de modèle doivent respecter les contraintes à l'échelle de la plateforme.
Pour plus de détails sur les APIs client de tags, consultez la documentation de l'API MLflow.
Ajouter une description (commentaires) à un modèle ou à une version de modèle
Autorisations requises : Propriétaire du modèle enregistré, ainsi que les privilèges USE SCHEMA et USE CATALOG sur le schéma et le catalogue contenant le modèle.
Vous pouvez inclure une description textuelle pour tout modèle ou version de modèle dans Unity Catalog. Par exemple, vous pouvez fournir un aperçu du problème ou des informations sur la méthodologie et l'algorithme utilisés.
Pour les modèles, vous avez également la possibilité d'utiliser des commentaires générés par l'IA. Voir Ajouter des commentaires générés par l'IA aux objets Unity Catalog.
Ajouter une description à un modèle à l’aide de l’interface utilisateur
Pour ajouter une description à un modèle, vous pouvez utiliser des commentaires générés par l'IA ou saisir vos propres commentaires. Vous pouvez modifier les commentaires générés par l'IA si nécessaire.
- Pour ajouter des commentaires générés automatiquement, cliquez sur le bouton Générer par l'IA .
- Pour ajouter vos propres commentaires, cliquez sur Ajouter . Saisissez vos commentaires dans la boîte de dialogue, puis cliquez sur Enregistrer .

Ajouter une description à une version de modèle à l'aide de l'interface utilisateur
Pour ajouter une description à une version de modèle dans Unity Catalog, suivez ces étapes :
-
Sur la page de la version du modèle, cliquez sur l'icône en forme de crayon sous Description .

-
Saisissez vos commentaires dans la boîte de dialogue, et cliquez sur Enregistrer .
Ajouter une description à un modèle ou à une version de modèle à l'aide de l'API
Pour mettre à jour la description d'un modèle enregistré, utilisez la méthode update_registered_model() de l'API cliente MLflow :
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Pour mettre à jour la description d’une version de modèle, utilisez la méthode update_model_version() de l’API cliente MLflow :
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
Lister et rechercher des modèles
Pour obtenir une liste des modèles enregistrés dans Unity Catalog, utilisez l’API Python search_registered_models() de MLflow :
mlflow.search_registered_models()
Pour rechercher un nom de modèle spécifique et obtenir des informations sur les versions de ce modèle, utilisez search_model_versions():
from pprint import pprint
[pprint(mv) for mv in mlflow.search_model_versions("name='<model-name>'")]
Tous les champs et opérateurs de l'API de recherche ne sont pas pris en charge pour les modèles dans Unity Catalog. Voir Limitations pour les détails.
download model files (cas d'utilisation avancé)
Dans la plupart des cas, pour charger des modèles, vous devez utiliser les APIs MLflow comme mlflow.pyfunc.load_model ou mlflow.<flavor>.load_model (par exemple, mlflow.transformers.load_model pour les modèles HuggingFace).
Dans certains cas, vous pourriez avoir besoin de download les fichiers de modèle pour déboguer le comportement du modèle ou les problèmes de chargement de modèle. Vous pouvez download les fichiers de modèle à l'aide de mlflow.artifacts.download_artifacts, comme suit :
import mlflow
mlflow.set_registry_uri("databricks-uc")
model_uri = f"models:/{model_name}/{version}" # reference model by version or alias
destination_path = "/local_disk0/model"
mlflow.artifacts.download_artifacts(artifact_uri=model_uri, dst_path=destination_path)
Promouvoir un modèle dans différents environnements
Databricks vous recommande de déployer les Pipelines de ML sous forme de code. Cela élimine la nécessité de promouvoir des modèles entre les environnements, car tous les modèles de production peuvent être produits via des workflows d'entraînement automatisés dans un environnement de production.
Cependant, dans certains cas, le réentraînement des modèles dans différents environnements peut être trop coûteux. Au lieu de cela, vous pouvez copier les versions de modèle entre les modèles enregistrés dans Unity Catalog pour les promouvoir dans différents environnements.
Vous avez besoin des privilèges suivants pour exécuter l'exemple de code ci-dessous :
USE CATALOGsur lesstagingetprodcatalogues.USE SCHEMAsur les schémasstaging.ml_teametprod.ml_team.EXECUTEsurstaging.ml_team.fraud_detection.
De plus, vous avez besoin soit d’être propriétaire du modèle de destination prod.ml_team.fraud_detection, soit de disposer du privilège CREATE MODEL VERSION sur celui-ci.
L’extrait de code suivant utilise l’ API Client MLflow copy_model_version, disponible dans MLflow version 2.8.0 et supérieure.
import mlflow
mlflow.set_registry_uri("databricks-uc")
client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)
Une fois la version du modèle dans l'environnement de production, vous pouvez effectuer toutes les validations nécessaires avant le déploiement. Ensuite, vous pouvez marquer la version du modèle pour le déploiement à l'aide d'alias.
client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)
Dans l'exemple ci-dessus, seuls les utilisateurs qui peuvent lire le modèle enregistré staging.ml_team.fraud_detection et écrire dans le modèle enregistré prod.ml_team.fraud_detection peuvent promouvoir les modèles intermédiaires vers l'environnement de production. Les mêmes utilisateurs peuvent également utiliser des alias pour gérer les versions de modèles déployées dans l'environnement de production. Vous n'avez pas besoin de configurer d'autres règles ou politiques pour régir la promotion et le déploiement de modèles.
Vous pouvez personnaliser ce flux pour promouvoir la version du modèle dans plusieurs environnements qui correspondent à votre configuration, tels que dev, qa et prod. Le contrôle d'accès est appliqué tel que configuré dans chaque environnement.
Exemple de Notebook
Ce Notebook d'exemple illustre comment utiliser les APIs de modèles dans Unity Catalog pour gérer les modèles dans Unity Catalog, y compris l'enregistrement des modèles et des versions de modèle, l'ajout de descriptions, le chargement et le déploiement de modèles, l'utilisation d'alias de modèle et la suppression de modèles et de versions de modèle.
- MLflow 3
- MLflow 2.x
Notebook d'exemple de modèles dans Unity Catalog pour MLflow 3
Notebook d'exemple de modèles dans Unity Catalog
Limitations
-
Les étapes ne sont pas prises en charge pour les modèles dans Unity Catalog. Databricks recommande d'utiliser l'espace de noms à trois niveaux dans Unity Catalog pour exprimer l'environnement dans lequel se trouve un modèle, et d'utiliser des alias pour promouvoir les modèles pour le déploiement. Consultez Promouvoir un modèle entre les environnements pour plus de détails.
-
Les webhooks ne sont pas pris en charge pour les modèles dans Unity Catalog. Consultez les alternatives suggérées dans le guide de mise à niveau.
-
Certains champs et opérateurs de l'API de recherche ne sont pas pris en charge pour les modèles dans Unity Catalog. Ceci peut être atténué en appelant les APIs de recherche à l'aide de filtres pris en charge et en analysant les résultats. Voici quelques exemples :
- Le
order_byparameter n'est pas pris en charge dans les APIs client search_model_versions ou search_registered_models. - Les filtres basés sur les tags (
tags.mykey = 'myvalue') ne sont pas pris en charge poursearch_model_versionsousearch_registered_models. - Les opérateurs autres que l'égalité exacte (par exemple,
LIKE,ILIKE,!=) ne sont pas pris en charge poursearch_model_versionsousearch_registered_models. - La recherche de modèles enregistrés par nom (par exemple,
search_registered_models(filter_string="name='main.default.mymodel'")n'est pas prise en charge. Pour récupérer un modèle enregistré particulier par nom, utilisez get_registered_model.
- Le
-
Les notifications par e-mail et les fils de discussion des commentaires sur les modèles et les versions de modèle enregistrés ne sont pas pris en charge dans Unity Catalog.
-
Le log d'activité n'est pas pris en charge pour les modèles dans Unity Catalog. Pour suivre l'activité sur les modèles dans Unity Catalog, utilisez les logs d'audit.
-
search_registered_modelspeut renvoyer des résultats obsolètes pour les modèles partagés via OpenSharing. Pour garantir les résultats les plus récents, utilisez la Databricks CLI ou le SDK pour répertorier les modèles dans un schéma.