Formation
Module
تسجيل نموذج MLflow في Azure التعلم الآلي - Training
تعرف على كيفية تسجيل نموذج Mlflow في Azure التعلم الآلي.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Important
Cet article explique comment utiliser Models dans Unity Catalog dans le cadre de votre flux de travail de l’apprentissage automatique pour gérer le cycle de vie complet des modèles ML. Databricks fournit une version hébergée du registre de modèles MLflow dans Unity Catalog. Dans Unity Catalog, Models étend les avantages de Unity Catalog aux modèles ML, notamment le contrôle d’accès centralisé, l’audit, la traçabilité et la découverte de modèles dans les espaces de travail. Dans Unity Catalog, Models est compatible avec le client Python MLflow open source.
Pour obtenir une vue d’ensemble des concepts du registre des modèles, consultez l’article MLflow pour l’assistant IA gen et le cycle de vie du modèle ML.
Unity Catalog doit être activé dans votre espace de travail. Consultez Prise en main d’Unity Catalog pour créer un metastore Unity Catalog, l’activer dans un espace de travail et créer un catalogue. Si Unity Catalog n’est pas activé, utilisez le registre de modèles d’espace de travail.
Vous devez utiliser une ressource de calcul qui a accès à Unity Catalog. Pour les charges de travail ML, cela signifie que le mode d’accès pour le calcul doit être Utilisateur unique. Pour plus d’informations, consultez les modes d’accès. Avec Databricks Runtime 15.4 LTS ML et versions ultérieures, vous pouvez également utiliser mode d’accès de groupe dédié.
Pour créer des modèles inscrits, vous avez besoin des privilèges suivants :
USE SCHEMA
et USE CATALOG
sur le schéma et son catalogue englobant.CREATE_MODEL
sur le schéma. Pour accorder ce privilège, utilisez l’interface utilisateur de l’Explorateur de catalogues ou la commande SQL GRANT suivante:GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
Note
Votre espace de travail doit être attaché à un metastore Unity Catalog qui prend en charge l’héritage des privilèges. Cela est vrai pour tous les metastores créés après le 25 août 2022. Si vous exécutez sur un metastore plus ancien, suivez la documentation pour effectuer la mise à niveau.
Cette section contient des instructions pour l’installation et la configuration du client MLflow pour Unity Catalog.
La prise en charge des modèles dans le catalogue Unity est incluse dans Databricks Runtime 13.2 ML et versions ultérieures (Databricks Runtime 15.0 ML et versions ultérieures dans Azure Chine).
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 Python MLflow dans votre notebook, à l’aide du code suivant.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Si le catalogue par défaut de votre espace de travail est dans Unity Catalog (et non pas dans hive_metastore
) et que vous exécutez un cluster en utilisant Databricks Runtime 13.3 LTS ou ultérieur (Databricks Runtime 15.0 ou ultérieur dans les régions Azure Chine), les modèles sont automatiquement créés et chargés à partir du catalogue par défaut. Vous n’avez pas besoin d’effectuer cette étape.
Pour les autres espaces de travail, le client Python MLflow crée des modèles dans le registre de modèles d’espace de travail Databricks. Pour effectuer une mise à niveau vers des modèles dans Unity Catalog, utilisez le code suivant des vos notebooks pour configurer le client MLflow :
import mlflow
mlflow.set_registry_uri("databricks-uc")
Pour un petit nombre d’espaces de travail où le catalogue par défaut a été configuré sur un catalogue dans Unity Catalog avant janvier 2024 et que le registre de modèles d’espace de travail a été utilisé avant janvier 2024, vous devez définir manuellement le catalogue par défaut sur Unity Catalog à l’aide de la commande ci-dessus.
Autorisations requises : pour créer un modèle inscrit, vous avez besoin des privilèges CREATE_MODEL
et USE SCHEMA
sur le schéma englobant et USE CATALOG
sur le catalogue englobant. Pour créer de nouvelles versions de modèle sous un modèle inscrit, vous devez être le propriétaire du modèle inscrit et disposer des privilèges USE SCHEMA
et USE CATALOG
sur le schéma et le catalogue contenant le modèle.
Les versions de modèle ML dans UC doivent avoir une signature de modèle. Si vous n’enregistrez pas déjà les modèles MLflow avec des signatures dans vos charges de travail d’apprentissage de modèle, vous pouvez procéder comme suit :
mlflow.<flavor>.log_model
, et la signature du modèle est inférée automatiquement. Pour plus d’informations, consultez la documentation MLflow.Ensuite, transmettez le nom à trois niveaux du modèle aux API MLflow, sous la forme <catalog>.<schema>.<model>
.
Les exemples de cette section créent des modèles, et y accèdent, dans le schéma ml_team
sous le catalogue prod
.
Les exemples d’apprentissage de modèles de cette section créent une version de modèle et l’inscrivent 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 englobant, le schéma et le modèle inscrit de la version du modèle reflètent son environnement (prod
) et les règles de gouvernance associées (par exemple, des privilèges peuvent être configurés de sorte que seuls les administrateurs puissent supprimer du catalogue prod
), mais pas son état de déploiement. Pour gérer les états de déploiement, utilisez des alias de modèle.
Pour inscrire un modèle, utilisez la méthode register_model()
de l’API cliente MLflow. Consultez mlflow.register_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")
mlflow.register_model(
"runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)
La prise en charge des signatures inférées automatiquement est disponible dans MLflow 2.5.0 et versions ultérieures, et prise en charge dans Databricks Runtime 11.3 LTS ML et versions ultérieures. Pour utiliser automatiquement les signatures inférées, utilisez le code suivant pour installer le dernier client Python MLflow dans votre notebook :
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Le code suivant montre un exemple de signature inférée automatiquement.
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,
registered_model_name="prod.ml_team.iris_model",
)
Effectuez les étapes suivantes :
Dans la page d’exécution de l’expérience, cliquez sur Inscrire le modèle dans le coin supérieur droit de l’interface utilisateur.
Dans la boîte de dialogue, sélectionnez Unity Catalog, puis sélectionnez un modèle de destination dans la liste déroulante.
Cliquez sur S'inscrire.
L’inscription d’un modèle peut prendre du temps. Pour surveiller la progression, accédez au modèle de destination dans Unity Catalog et actualisez régulièrement la page.
Les alias de modèle vous permettent d’affecter une référence nommée mutable à une version particulière d’un modèle inscrit. Vous pouvez utiliser des alias pour indiquer l’état de déploiement d’une version de modèle. Par exemple, vous pouvez allouer un alias « Champion » à la version du 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 autre version du modèle.
Autorisations requises : propriétaire du modèle inscrit, 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. Vous pouvez gérer les alias sur un modèle inscrit sur la page des détails du modèle et configurer des alias pour une version de modèle spécifique dans la page des détails de version du modèle.
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 d’informations sur les API clientes d’alias, consultez la documentation de l’API MLflow.
Autorisations requises : privilège EXECUTE
sur le modèle inscrit, 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 lots peuvent référencer une version de modèle par alias. L’extrait de code ci-dessous charge et applique la version du modèle « Champion » pour l’inférence par lots. Si la version « Champion » est mise à jour pour référencer une nouvelle version du modèle, la charge de travail d’inférence par lots la sélectionne automatiquement lors de sa prochaine exécution. Cela vous permet de dissocier les déploiements de modèles de vos charges de travail d’inférence par lots.
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 points de terminaison de service de modèle peuvent également référencer une version de modèle par alias. Vous pouvez écrire des flux de travail de déploiement pour obtenir une version de modèle par alias et mettre à jour un point de terminaison de service de modèle pour traiter cette version, à l’aide de l’API REST du modèle de service. 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(...)
Vous pouvez également charger des 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)
Tant que vous disposez des privilèges appropriés, vous pouvez accéder aux modèles dans Unity Catalog à partir de n’importe quel espace de travail attaché au metastore contenant le modèle. Par exemple, vous pouvez accéder aux modèles à partir du catalogue prod
dans un espace de travail de développement, pour faciliter la comparaison des modèles récemment développés avec la base de référence de production.
Pour collaborer avec d’autres utilisateurs (partage de privilèges d’écriture) sur un modèle inscrit que vous avez créé, vous devez accorder la propriété du modèle à un groupe qui inclut les utilisateurs avec lesquels vous souhaitez collaborer et vous-même. 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 Privilèges Unity Catalog et objets sécurisables.
Pour partager des modèles avec des utilisateurs dans d’autres régions ou comptes, utilisez le flux de partage Databricks-à-Databricksde Delta Sharing. Consultez Ajouter des modèles à un partage (pour les fournisseurs) et Accéder au modèle Databricks-à-Databricks (pour les destinataires). En tant que destinataire, après votre création de catalogue à partir d’un partage, vous accédez à des modèles dans ce catalogue partagé de la même façon que tout autre modèle dans Unity Catalog.
Note
La prise en charge de la traçabilité des tables vers les modèles dans Unity Catalog est disponible dans MLflow 2.11.0 et ultérieur.
Quand vous effectuez l’apprentissage d’un modèle sur une table dans Unity Catalog, vous pouvez suivre la traçabilité du modèle vers le ou les jeux de données en amont sur lesquels il a effectué son apprentissage et a été évalué. Pour cela, utilisez mlflow.log_input. Ceci enregistre les informations des tables d’entrée avec l’exécution MLflow qui a généré le modèle. La traçabilité des données est également capturée automatiquement pour les modèles enregistrés en utilisant des API du magasin de fonctionnalités. Consultez Gouvernance et traçabilité des fonctionnalités.
Quand vous inscrivez le modèle dans Unity Catalog, les informations de traçabilité sont automatiquement enregistrées et sont visibles dans l’onglet Traçabilité de l’interface utilisateur des versions du modèle dans Catalog Explorer.
Le code ci-après présente un exemple.
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,
registered_model_name="prod.ml_team.iris_classifier",
)
Dans Unity Catalog, les modèles inscrits sont un sous-type de l’objet sécurisable FUNCTION
. Pour permettre d’accéder à un modèle inscrit dans Unity Catalog, vous devez utiliser GRANT ON FUNCTION
. Pour plus de détails, consultez Privilèges Unity Catalog et objets sécurisables. Pour connaître les meilleures pratiques relatives à l’organisation des modèles entre catalogues et schémas, consultez Organiser vos données.
Vous pouvez configurer des autorisations de modèle par programmation à l’aide de l’API REST Grants. Lorsque vous configurez des autorisations de modèle, définissez securable_type
sur "FUNCTION"
dans les requêtes d’API REST. Par exemple, utilisez PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
pour mettre à jour les autorisations de modèle inscrites.
Autorisations requises : pour afficher un modèle inscrit et ses versions de modèle dans l’interface utilisateur, vous avez besoin du privilège EXECUTE
sur le modèle inscrit, 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 inscrits et les versions de modèles dans Unity Catalog à l’aide de Catalog Explorer.
Autorisations requises : propriétaire du modèle inscrit, privilège CREATE_MODEL
sur le schéma contenant le modèle inscrit ainsi que les privilèges USE SCHEMA
et USE CATALOG
sur le schéma et le catalogue contenant le modèle.
Pour renommer un modèle inscrit, utilisez la méthode rename_registered_model()
de l’API cliente MLflow :
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Vous pouvez copier une version de modèle d’un modèle à un autre dans catalogue Unity Catalog.
Effectuez les étapes suivantes :
Depuis la page de version de 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, puis cliquez sur Copier.
La copie d’un modèle peut prendre du temps. Pour surveiller la progression, accédez au modèle de destination dans Unity Catalog et actualisez régulièrement la page.
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>",
)
Autorisations requises : propriétaire du modèle inscrit, 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 inscrit ou une version de modèle dans un modèle inscrit à l’aide de l’interface utilisateur Catalog Explorer ou de l’API.
Avertissement
Vous ne pouvez pas annuler cette action. Quand vous supprimez un modèle, tous les artefacts de modèle stockés par Unity Catalog sont supprimés, de même que toutes les métadonnées associées au modèle inscrit.
Pour supprimer un modèle ou une version de modèle dans Unity Catalog, procédez comme suit.
Dans le coin supérieur droit de la page du modèle ou de la version du modèle, cliquez sur le menu kebab .
À partir de la page du modèle :
À partir de la page de version du modèle :
Sélectionnez Supprimer.
Une boîte de dialogue de confirmation s’affiche. Cliquez sur Delete (Supprimer) pour confirmer.
Pour supprimer une version de modèle, utilisez la méthode delete_model_version()
de l’API cliente MLflow :
# 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 cliente MLflow :
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Les balises sont des paires clé-valeur que vous associez aux modèles inscrits et aux versions de modèle, ce qui vous permet de les étiqueter et de les classer par fonction ou état. Par exemple, vous pouvez appliquer une balise avec la clé "task"
et la valeur "question-answering"
(affichées dans l’interface utilisateur sous la forme task:question-answering
) aux modèles inscrits destinés aux tâches de réponses aux questions. Au niveau de la version du modèle, vous pouvez affecter la balise validation_status:pending
aux versions en cours de validation avant le déploiement et la balise validation_status:approved
à celles qui sont approuvées pour le déploiement.
Autorisations requises : propriétaire ou le privilège APPLY_TAG
sur le modèle inscrit, ainsi que les privilèges USE SCHEMA
et USE CATALOG
sur le schéma et le catalogue contenant le modèle.
Consultez Ajouter et mettre à jour des balises à l’aide de l’Explorateur de catalogues sur la façon de définir et de supprimer des balises à l’aide de l’interface utilisateur.
Pour définir et supprimer des balises à l’aide de l’API cliente MLflow, consultez 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 balises de modèle inscrit et de version de modèle doivent respecter les contraintes à l’échelle de la plateforme.
Pour plus d’informations sur les API clientes de balise, consultez la documentation de l’API MLflow.
Autorisations requises : propriétaire du modèle inscrit, 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 de texte pour tout de modèle ou n’importe quelle version de modèle dans Unity Catalog. Par exemple, vous pouvez fournir une vue d’ensemble du problème ou des informations sur la méthodologie et l’algorithme employés.
Pour les modèles, vous avez également l’option d’utiliser des commentaires générés par l’IA. Consultez Ajouter des commentaires générés par l’IA aux objets Unity Catalog.
Pour ajouter une description à un modèle, vous pouvez utiliser des commentaires générés par l’IA ou entrer vos propres commentaires. Vous pouvez modifier les commentaires générés par l’IA, si nécessaire.
Pour ajouter une description à une version de modèle dans Unity Catalog, procédez comme suit :
Dans la page de la version de modèle, cliquez sur l’icône de crayon sous Description.
Entrez vos commentaires dans la boîte de dialogue, puis cliquez sur Enregistrer.
Pour mettre à jour la description du 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>"
)
Pour répertorier les modèles inscrits dans Unity Catalog, utilisez l’API Python search_registered_models() de MLflow :
client=MlflowClient()
client.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
client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]
Note
Tous les champs et opérateurs de l’API de recherche ne sont pas pris en charge pour les modèles dans le catalogue Unity. Pour plus d’informations, consultez les Limitations .
Dans la plupart des cas, pour charger des modèles, vous devez utiliser des API 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 devrez peut-être télécharger des fichiers de modèle pour déboguer les problèmes de comportement de modèle ou de chargement de modèle. Vous pouvez télécharger des 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)
Databricks vous recommande de déployer les pipelines ML sous forme de code. Cela vous évite ainsi de promouvoir les modèles dans tous les environnements, car tous les modèles de production peuvent être produits par le biais de workflows de formation automatisés dans un environnement de production.
Toutefois, dans certains cas, il peut être trop coûteux de réentraîner des modèles dans différents environnements. Au lieu de cela, vous pouvez copier des versions de modèle sur des modèles inscrits dans Unity Catalog pour les promouvoir dans les environnements.
Vous avez besoin des privilèges suivants pour exécuter l’exemple de code ci-dessous :
USE CATALOG
sur les catalogues staging
et prod
.USE SCHEMA
sur les schémas staging.ml_team
et prod.ml_team
.EXECUTE
sur staging.ml_team.fraud_detection
.En outre, vous devez être le propriétaire du modèle inscrit prod.ml_team.fraud_detection
.
L’extrait de code suivant utilise l’ copy_model_version
API Client MLflow, disponible dans MLflow version 2.8.0 et ulté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 toute validation préalable au déploiement nécessaire. 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 à partir du modèle inscrit staging.ml_team.fraud_detection
et écrire dans le modèle inscrit prod.ml_team.fraud_detection
peuvent promouvoir des modèles intermédiaires dans l’environnement de production. Les mêmes utilisateurs peuvent également utiliser des alias pour gérer les versions de modèle déployées dans l’environnement de production. Vous n’avez pas besoin de configurer d’autres règles ou stratégies pour régir la promotion et le déploiement des 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é comme configuré dans chaque environnement.
Cet exemple de notebook montre comment utiliser les modèles dans les API Unity Catalog pour gérer les modèles dans Unity Catalog, notamment l’enregistrement de modèles et de versions de modèles, l’ajout de descriptions, le chargement et le déploiement de modèles, l’utilisation d’alias de modèles et la suppression de modèles et de versions de modèles.
Databricks recommande d’utiliser des modèles dans Unity Catalog pour une meilleure gouvernance, un partage facile entre les espaces de travail et les environnements, et des workflows MLOps plus flexibles. Le tableau compare les fonctionnalités du registre de modèles d’espace de travail et de Unity Catalog.
Fonctionnalité | Registre de modèles d’espaces de travail (hérité) | Modèles dans Unity Catalog (recommandé) |
---|---|---|
Versions de modèle de référence par alias nommés | Phases du Registre de modèles : déplacez les versions de modèle vers l’une des quatre phases fixes pour les référencer à cette phase. Impossible de renommer ou d’ajouter des phases. | Alias du Registre de modèles : créez jusqu’à 10 références nommées personnalisées et réattribuables aux versions de modèle pour chaque modèle inscrit. |
Créer des environnements contrôlés par l’accès pour les modèles | Phases du Registre de modèles : utilisez des étapes au sein d’un modèle inscrit pour désigner l’environnement de ses versions de modèle, avec des contrôles d’accès pour seulement deux des quatre phases fixes (Staging et Production ). |
Modèles inscrits : créez un modèle inscrit pour chaque environnement dans votre flux de travail MLOps, en utilisant des espaces de noms et des autorisations de trois niveaux de Unity Catalog pour exprimer la gouvernance. |
Promouvoir des modèles dans des environnements (déployer un modèle) | Utilisez l’API cliente MLflow transition_model_version_stage() pour déplacer une version de modèle vers une autre étape, potentiellement des flux de travail cassants qui référencent l’étape précédente. |
Utilisez l’API cliente MLflow copy_model_version() pour copier une version de modèle d’un modèle inscrit vers un autre. |
Accéder et partager des modèles entre les espaces de travail | Exportez et importez manuellement des modèles entre des espaces de travail ou configurez des connexions à des registres de modèles distants à l’aide de jetons d’accès personnels et d’étendues secrètes d’espace de travail. | Accès prêt à l’emploi aux modèles entre les espaces de travail du même compte. Aucune configuration n’est requise. |
Configurer les autorisations | Définissez les autorisations au niveau de l’espace de travail. | Définissez des autorisations au niveau du compte, qui applique une gouvernance cohérente entre les espaces de travail. |
Accéder aux modèles dans la Place de marché Databricks | Non disponible. | Chargez des modèles à partir de la Place de marché Databricks dans votre metastore Unity Catalog et accédez-y entre les espaces de travail. |
Les articles liés ci-dessous décrivent comment migrer des flux de travail (apprentissage de modèle et travaux d’inférence par lots) et des modèles du Registre de modèles d’espaces de travail vers Unity Catalog.
order_by
n’est pas pris en charge dans les API clientes search_model_versions ou search_registered_models.tags.mykey = 'myvalue'
) ne sont pas pris en charge pour search_model_versions
ou search_registered_models
.LIKE
, ILIKE
, !=
) ne sont pas pris en charge pour search_model_versions
ou search_registered_models
.MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'")
n’est pas prise en charge. Pour extraire un modèle inscrit particulier par son nom, utilisez get_registered_model.search_registered_models
peut retourner des résultats obsolètes pour les modèles partagés via Delta Sharing. Pour garantir les résultats les plus récents, utilisez l’interface CLI Databricks ou le Kit de développement logiciel (SDK) pour répertorier les modèles dans un schéma.Formation
Module
تسجيل نموذج MLflow في Azure التعلم الآلي - Training
تعرف على كيفية تسجيل نموذج Mlflow في Azure التعلم الآلي.
Documentation
إدارة دورة حياة النموذج باستخدام Workspace Model Registry (قديم) - Azure Databricks
تعرف على كيفية إدارة دورة حياة نماذج MLflow في سجل نموذج مساحة العمل (قديم).
تعقب التعلم الآلي وتشغيل التدريب على التعلم العميق - Azure Databricks
تعرف على التجارب وتتبع عمليات تشغيل التدريب على التعلم الآلي باستخدام MLflow.
Databricks Autologging - Azure Databricks
تعرف على Azure Databricks Autologging باستخدام MLflow، وهو حل بدون تعليمات برمجية يوسع حل التسجيل التلقائي ل MLflow لتتبع تجارب التدريب على التعلم الآلي.