Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
- Diese Seite dokumentiert Modelle im Unity-Katalog, die Databricks für die Verwaltung und Bereitstellung von Modellen empfiehlt. Wenn Ihr Arbeitsbereich für Unity Catalog nicht aktiviert ist, ist die Funktionalität auf dieser Seite nicht verfügbar. Lesen Sie stattdessen Verwalten des Lebenszyklus von Modellen mithilfe der Arbeitsbereichsmodellregistrierung (Legacy). Einen Leitfaden zum Upgrade der Arbeitsbereichsmodellregistrierung zu Unity Catalog finden Sie unter Migrieren von ML-Workflows und -Modellen zu Unity Catalog.
- Modelle im Unity-Katalog sind in Azure Government-Regionen nicht verfügbar.
In diesem Artikel wird beschrieben, wie Sie die Modelle in Unity Catalog als Teil Ihres Machine Learning-Workflows verwenden, um den gesamten Lebenszyklus von ML-Modellen zu verwalten. Databricks stellt eine gehostete Version der MLflow-Modellregistrierung in Unity Catalog bereit. Modelle in Unity Catalog erweitern die Vorteile von Unity Catalog auf ML-Modelle, einschließlich zentralisierter Zugriffssteuerung, Überwachung, Herkunft und arbeitsbereichübergreifende Modellsuche. Modelle in Unity Catalog sind mit dem Open-Source-MLflow-Python-Client kompatibel.
Eine Übersicht über Modellregistrierungskonzepte finden Sie unter MLflow für den ML-Modelllebenszyklus.
MLflow 3 verbessert die MLflow-Modellregistrierung im Unity-Katalog erheblich, sodass Ihre Modelle Daten wie Parameter und Metriken direkt erfassen und für alle Arbeitsbereiche und Experimente zur Verfügung stellen können. Der Standardregistrierungs-URI in MLflow 3 lautet databricks-uc, was bedeutet, dass die MLflow-Modellregistrierung im Unity-Katalog verwendet wird. Weitere Informationen finden Sie unter " Erste Schritte mit MLflow 3" für Modelle und Modellregistrierungsverbesserungen mit MLflow 3.
Anforderungen
Unity Catalog muss in Ihrem Arbeitsbereich aktiviert sein. Weitere Informationen zum Erstellen und Aktivieren eines Unity Catalog-Metastores in einem Arbeitsbereich sowie zum Erstellen eines Katalogs finden Sie unter Erste Schritte mit Unity Catalog. Wenn Unity Catalog nicht aktiviert ist, verwenden Sie das Arbeitsbereichsmodell-Register.
Sie müssen eine Computeressource verwenden, die Zugriff auf Unity Catalog hat. Für ML-Workloads bedeutet dies, dass der Computezugriffsmodus Dediziert (zuvor Einzelbenutzermodus) sein muss. Weitere Informationen finden Sie unter Zugriffsmodi. Mit Databricks Runtime 15.4 LTS ML und höher können Sie auch den dedizierten Gruppenzugriffsmodus verwenden.
Zum Erstellen neuer registrierter Modelle brauchen Sie die folgenden Berechtigungen:
- Die Berechtigungen
USE SCHEMAundUSE CATALOGfür das Schema und den dazugehörigen Katalog. - Eine der Berechtigungen
CREATE MODELoderCREATE FUNCTIONfür das Schema. Um Berechtigungen zu gewähren, verwenden Sie die Benutzeroberfläche des Katalog-Explorers oder den SQL-BefehlGRANT:
GRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal>- Die Berechtigungen
Wenn beim Versuch, ein Modell zu registrieren, Autorisierungsprobleme auftreten, versuchen Sie, die Umgebungsvariable
MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UCaufTruefestzulegen. Fügen Sie eine Zelle in Ihr Notizbuch mit dem folgenden Code ein:import os os.environ['MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC'] = 'True'Dieser Ansatz kann nicht für Modelle verwendet werden, die mit Delta Sharing geteilt werden und den Standardspeicher verwenden.
Hinweis
Ihr Arbeitsbereich muss an einen Unity Catalog-Metastore angefügt sein, der die Vererbung von Berechtigungen unterstützt. Dies gilt für alle Metastores, die nach dem 25. August 2022 erstellt wurden. Wenn Sie einen älteren Metastore verwenden, finden Sie in dieser Dokumentation Informationen zum Upgraden.
Installieren und Konfigurieren des MLflow-Client für Unity Catalog
Dieser Abschnitt enthält Anweisungen zum Installieren und Konfigurieren des MLflow-Client für Unity Catalog.
Installieren des MLflow-Python-Clients
Unterstützung für Modelle im Unity-Katalog ist in Databricks Runtime 13.2 ML und höher enthalten (Databricks Runtime 15.0 ML und höher in Azure China).
Sie können Modelle in Unity Catalog auch unter Databricks Runtime 11.3 LTS und höher verwenden, indem Sie die neueste Version des MLflow Python-Clients in Ihrem Notebook mithilfe des folgenden Codes installieren.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Konfigurieren des MLflow-Clients für den Zugriff auf Modelle in Unity Catalog
Wenn sich der Standardkatalog Ihres Arbeitsbereichs im Unity-Katalog (statt hive_metastore) befindet und Sie entweder einen Cluster mit Databricks Runtime 13.3 LTS oder höher (Databricks Runtime 15.0 oder höher in Azure China-Regionen) oder mit MLflow 3 ausführen, werden Modelle automatisch im Standardkatalog erstellt und geladen.
Für andere Arbeitsbereiche erstellt der MLflow-Python-Client Modelle in der Databricks-Arbeitsbereichsmodellregistrierung. Um ein Upgrade auf Modelle in Unity Catalog durchzuführen, verwenden Sie den folgenden Code in Ihrem Notebook zum Konfigurieren des MLflow-Client:
import mlflow
mlflow.set_registry_uri("databricks-uc")
Bei einer kleinen Zahl von Arbeitsbereichen, in denen sowohl der Standardkatalog vor Januar 2024 auf einen Katalog in Unity Catalog konfiguriert wurde als auch die Arbeitsbereichsmodellregistrierung vor Januar 2024 verwendet wurde, müssen Sie den Standardkatalog mit dem obigen Befehl manuell auf Unity Catalog festlegen.
Trainieren und Registrieren von Unity Catalog-kompatiblen Modellen
Erforderliche Berechtigungen: Um ein neues registriertes Modell zu erstellen, benötigen Sie die Berechtigungen CREATE MODEL und USE SCHEMA für das Schema, das das Modell enthält, sowie die Berechtigung USE CATALOG für den Katalog, der das Modell enthält. Um neue Modellversionen unter einem registrierten Modell zu erstellen, müssen Sie der Besitzer des registrierten Modells sein und über die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog verfügen, die das Modell enthalten.
Wenn beim Versuch, ein Modell zu registrieren, Autorisierungsprobleme auftreten, versuchen Sie, die Umgebungsvariable MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC auf True festzulegen. Dieser Ansatz kann nicht für Modelle verwendet werden, die mit Delta Sharing geteilt werden und den Standardspeicher verwenden. Siehe Anforderungen.
Neue ML-Modellversionen in UC müssen über eine Modellsignatur verfügen. Wenn Sie noch keine MLflow-Modelle mit Signaturen in Ihren Modelltrainings-Workloads protokollieren, können Sie entweder:
- Verwenden Sie Databricks autologging, das Modelle automatisch mit Signaturen für viele gängige ML-Frameworks protokolliert. Informationen zu den unterstützten Frameworks finden Sie in der MLflow-Dokumentation.
- Mit MLflow 2.5.0 und höher können Sie in Ihrem
mlflow.<flavor>.log_model-Aufruf ein Eingabebeispiel angeben. Die Modellsignatur wird automatisch abgeleitet. Weitere Informationen finden Sie in der MLflow-Dokumentation.
Übergeben Sie dann den dreiteiligen Namen des Modells im Format <catalog>.<schema>.<model> an MLflow-APIs.
Modellversionen, die keine Signaturen besitzen, weisen bestimmte Einschränkungen auf. Eine Liste dieser Einschränkungen und zum Hinzufügen oder Aktualisieren einer Signatur für eine vorhandene Modellversion finden Sie unter Hinzufügen oder Aktualisieren einer Signatur für eine vorhandene Modellversion.
In den Beispielen in diesem Abschnitt wird das Schema ml_team unter dem Katalog prod für die Erstellung von und den Zugriff auf Modelle verwendet.
Mit den Modelltrainingsbeispielen in diesem Abschnitt wird eine neue Modellversion erstellt und im Katalog prod registriert. Die Verwendung des prod-Katalogs bedeutet nicht unbedingt, dass die Modellversion den Produktionsverkehr bedient. Der eingeschlossene Katalog, das Schema und das registrierte Modell der Modellversion spiegeln seine Umgebung (prod) und die zugehörigen Governanceregeln wider (z. B. können Berechtigungen so eingerichtet werden, dass nur Administratoren aus dem prod Katalog gelöscht werden können), aber nicht den Bereitstellungsstatus. Verwenden Sie Modellaliase, um den Bereitstellungsstatus zu verwalten.
Registrieren eines Modells bei Unity Catalog mithilfe der automatischen Protokollierung
Verwenden Sie zum Registrieren eines Modells die Methode register_model() der MLflow-Client-API. Siehe mlflow.register_model.
MLflow 3
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")
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
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")
Registrieren eines Modells über die API
MLflow 3
mlflow.register_model(
"models:/<model_id>", "prod.ml_team.iris_model"
)
MLflow 2.x
mlflow.register_model(
"runs:/<run_id>/model", "prod.ml_team.iris_model"
)
Registrieren eines Modells bei Unity Catalog mit einer automatisch abgeleiteten Signatur
Unterstützung für automatisch abgeleitete Signaturen ist in MLflow Version 2.5.0 und höher verfügbar und wird in Databricks Runtime 11.3 LTS ML und höher unterstützt. Um automatisch abgeleitete Signaturen zu nutzen, verwenden Sie den folgenden Code, um den neuesten MLflow Python-Client in Ihrem Notebook zu installieren:
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Der folgende Code zeigt ein Beispiel für eine automatisch abgeleitete Signatur. Beachten Sie, dass die Verwendung registered_model_name im Aufruf das Modell im log_model() Unity-Katalog registriert, sodass Sie den vollständigen Namen der drei Ebenen des Modells im Format <catalog>.<schema>.<model>angeben müssen.
MLflow 3
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",
)
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,
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",
)
Registrieren eines Modells über die Benutzeroberfläche
Führen Sie folgende Schritte aus:
Klicken Sie auf der Experimentausführungsseite in der oberen rechten Ecke der Benutzeroberfläche auf Modell registrieren.
Wählen Sie im Dialogfeld Unity Catalog aus, und wählen Sie in der Einblendliste ein Zielmodell aus.
Klicken Sie auf Registrieren.
Das Registrieren eines Modells kann Zeit in Anspruch nehmen. Um den Fortschritt zu überwachen, navigieren Sie zum Zielmodell in Unity Catalog und aktualisieren Sie regelmäßig.
Hinzufügen oder Aktualisieren einer Signatur für eine vorhandene Modellversion
Modellversionen, die nicht über Signaturen verfügen, weisen die folgenden Einschränkungen auf:
- Wenn eine Signatur bereitgestellt wird, werden Modelleingaben bei Rückschlüssen überprüft, und ein Fehler wird gemeldet, wenn die Eingaben nicht mit der Signatur übereinstimmen. Ohne Signatur gibt es keine automatische Eingabeerzwingung, und Modelle müssen unerwartete Eingaben verarbeiten können.
- Die Verwendung einer Modellversion mit KI-Funktionen erfordert die Bereitstellung eines Schemas im Funktionsaufruf.
- Die Verwendung einer Modellversion mit Model Serving generiert keine Automatisch generierten Eingabebeispiele.
Informationen zum Hinzufügen oder Aktualisieren einer Modellversionssignatur finden Sie in der MLflow-Dokumentation.
Verwenden von Modellaliasen
Mithilfe von Modellaliasen können Sie einer bestimmten Version eines registrierten Modells einen veränderlichen, benannten Verweis zuweisen. Sie können Aliase verwenden, um den Bereitstellungsstatus einer Modellversion anzugeben. Beispielsweise können Sie der Modellversion, die sich derzeit in der Produktion befindet, den Alias „Champion“ zuordnen und ihn in Workloads, die das Produktionsmodell nutzen, als Ziel verwenden. Anschließend können Sie das Produktionsmodell aktualisieren, indem Sie den Alias „Champion“ einer anderen Modellversion neu zuweisen.
Festlegen und Löschen von Aliasen für Modelle
Erforderliche Berechtigungen: Besitzer des registrierten Modells sowie die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Sie können Aliase für Modelle im Unity-Katalog mithilfe des Katalog-Explorers festlegen, aktualisieren und entfernen. Siehe Anzeigen und Verwalten von Modellen in der Benutzeroberfläche.
Informationen zum Festlegen, Aktualisieren und Löschen von Aliasen mithilfe der MLflow-Client-API finden Sie in den folgenden Beispielen:
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")
Weitere Informationen zu Aliasclient-APIs finden Sie in der Dokumentation zur MLflow-API.
Laden der Modellversion nach Alias für Rückschlussworkloads
Erforderliche Berechtigungen: Berechtigung EXECUTE für das registrierte Modell sowie die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Batch-Rückschlussworkloads können nach Alias auf eine Modellversion verweisen. Im folgenden Codeausschnitt wird die „Champion“-Modellversion für Batchrückschlüsse geladen und angewendet. Wenn die „Champion“-Version aktualisiert wird und auf eine neue Modellversion verweist, wird sie automatisch von der Batch-Rückschlussworkload bei der nächsten Ausführung ausgewählt. Dadurch können Sie Modellimplementierungen von Ihren Batch-Rückschlussworkloads entkoppeln.
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)
Modellbereitstellungsendpunkte können ebenfalls über den Alias auf eine Modellversion verweisen. Sie können Bereitstellungsworkflows schreiben, um eine Modellversion über den Alias abzurufen, und ein Modell aktualisieren, das den Endpunkt für die Bereitstellung dieser Version bereitstellt, indem Sie die REST-API für die Modellbereitstellung verwenden. Zum Beispiel:
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(...)
Laden der Modellversion nach Versionsnummer für Rückschlussworkloads
Sie können Modellversionen auch über die Versionsnummer laden:
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)
Arbeitsbereichsübergreifendes Freigeben von Modellen
Freigeben von Modellen für Benutzer in derselben Region
Sofern Sie über die entsprechenden Berechtigungen verfügen, können Sie von jedem Arbeitsbereich aus, der an den Metastore mit dem Modell angefügt ist, auf Modelle in Unity Catalog zugreifen. Sie können beispielsweise auf Modelle im prod-Katalog in einem Entwicklungsarbeitsbereich zugreifen, um den Vergleich neu entwickelter Modelle mit der Produktionsbaseline zu ermöglichen.
Um mit anderen Benutzern zusammenzuarbeiten und Schreibrechte für ein registriertes Modell, das Sie erstellt haben, zu teilen, müssen Sie dessen Eigentum einer Gruppe übertragen, die Sie selbst sowie die Benutzer umfasst, mit denen Sie zusammenarbeiten möchten. Projektmitarbeiter müssen außerdem über die Berechtigungen USE CATALOG und USE SCHEMA für den Katalog und das Schema verfügen, die das Modell enthalten. Weitere Informationen finden Sie unter Unity Catalog-Berechtigungen und sicherungsfähige Objekte.
Freigeben von Modellen für Benutzer in einer anderen Region oder einem anderen Konto
Um Modelle für Benutzer und Benutzerinnen in anderen Regionen oder Konten freizugeben, verwenden Sie den Databricks-zu-Databricks-Freigabeflow von Delta Sharing. Siehe Hinzufügen von Modellen zu einer Freigabe (für Anbieter) und Erhalten von Zugriff im Databricks-zu-Databricks-Modell (für Empfänger). Nachdem Sie einen Katalog aus einer Freigabe erstellt haben, greifen Sie als Empfänger auf Modelle in diesem freigegebenen Katalog genauso wie auf jedes andere Modell in Unity Catalog zu.
Nachverfolgen der Datenherkunft eines Modells in Unity Catalog
Hinweis
Die Unterstützung für Tabellen zur Datenherkunft eines Modells in Unity Catalog ist in MLflow 2.11.0 und höher verfügbar.
Wenn Sie ein Modell anhand einer Tabelle in Unity Catalog trainieren, können Sie den Ursprung des Modells bis zu den ursprünglichen Datensätzen nachverfolgen, auf denen es trainiert und ausgewertet wurde. Verwenden Sie dazu mlflow.log_input. Die Informationen der Eingabetabelle werden mit dem MLflow-Lauf gespeichert, der das Modell erzeugt hat. Die Datenherkunft wird auch automatisch für Modelle erfasst, die mithilfe von Featurespeicher-APIs protokolliert werden. Weitere Informationen finden Sie unter Datenherkunft des Featurespeichers anzeigen.
Wenn Sie das Modell im Unity-Katalog registrieren, werden Zeileninformationen automatisch gespeichert und auf der Registerkarte "Lineage " auf der Modellversionsseite im Katalog-Explorer angezeigt. Weitere Informationen finden Sie unter Anzeigen von Modellversionsinformationen und Modellherkunft.
Der folgende Code enthält hierzu ein Beispiel.
MLflow 3
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",
)
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,
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",
)
Steuern des Zugriffs auf Modelle
In Unity Catalog sind registrierte Modelle ein Untertyp des sicherungsfähigen Objekts FUNCTION. Zugriff auf ein Modell, das in Unity Catalog registriert ist, gewähren Sie mit GRANT ON FUNCTION. Sie können auch den Katalog-Explorer verwenden, um Modellbesitz und Berechtigungen festzulegen. Ausführliche Informationen finden Sie unter Verwalten von Berechtigungen im Unity-Katalog und im Unity-Katalog-Objektmodell.
Modellberechtigungen können Sie mithilfe der Grants REST-API programmgesteuert konfigurieren. Legen Sie beim Konfigurieren von Modellberechtigungen securable_type in REST-API-Anfragen auf "FUNCTION" fest. Verwenden Sie beispielsweise PATCH /api/2.1/unity-catalog/permissions/function/{full_name}, um registrierte Modellberechtigungen zu aktualisieren.
Anzeigen und Verwalten von Modellen in der Benutzeroberfläche
Erforderliche Berechtigungen: Um ein registriertes Modell und dessen Modellversionen auf der Benutzeroberfläche anzuzeigen, benötigen Sie die Berechtigung EXECUTE für das registrierte Modell sowie die Berechtigungen USE SCHEMAund USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Sie können registrierte Modelle und Modellversionen im Unity-Katalog mithilfe des Katalog-Explorers anzeigen und verwalten.
Anzeigen von Modellinformationen
Zum Anzeigen von Modellen im Katalog-Explorer:
Klicken Sie auf
Katalog in der Randleiste.
Wählen Sie in der Dropdownliste oben rechts eine Computeressource aus.
Öffnen Sie in der Katalog-Explorer-Struktur links einen Katalog, und wählen Sie ein Schema aus.
Wenn das Schema Modelle enthält, werden sie wie dargestellt in der Struktur unter "Modelle" angezeigt.
Klicken Sie auf ein Modell, um weitere Informationen anzuzeigen. Auf der Modelldetailseite wird eine Liste der Modellversionen mit zusätzlichen Informationen angezeigt.
Festlegen von Modellaliasen
So legen Sie einen Modellalias mithilfe der Benutzeroberfläche fest:
- Zeigen Sie auf der Modelldetailseite mit der Maus auf die Zeile für die Modellversion, der Sie einen Alias hinzufügen möchten. Die Schaltfläche " Alias hinzufügen " wird angezeigt.
- Klicken Sie auf "Alias hinzufügen".
- Geben Sie einen Alias ein, oder wählen Sie ihn im Dropdownmenü aus. Sie können im Dialogfeld mehrere Aliase hinzufügen.
- Klicken Sie auf "Aliase speichern".
So entfernen Sie einen Alias:
- Zeigen Sie mit der Maus auf die Zeile für die Modellversion, und klicken Sie neben dem Alias auf das Bleistiftsymbol.
- Klicken Sie im Dialogfeld auf den
Xneben dem Alias, den Sie entfernen möchten. - Klicken Sie auf "Aliase speichern".
Modellversionsinformationen und Modelllinien anzeigen
Wenn Sie weitere Informationen zu einer Modellversion anzeigen möchten, klicken Sie in der Liste der Modelle auf den Namen. Die Modellversionsseite wird angezeigt. Diese Seite enthält einen Link zum MLflow-Quelldurchlauf, der die Version erstellt hat. In MLflow 3 können Sie auch alle Parameter und Metriken anzeigen, die mit dem entsprechenden protokollierten MLflow-Modell protokolliert werden.
MLflow 3
MLflow 2.x
Auf dieser Seite können Sie die Linien des Modells wie folgt anzeigen:
Wählen Sie die Registerkarte "Linie" aus . Die linke Randleiste zeigt Komponenten an, die mit dem Modell protokolliert wurden.
Klicken Sie auf Siehe Liniendiagramm. Das Liniendiagramm wird angezeigt. Ausführliche Informationen zum Untersuchen des Liniendiagramms finden Sie unter Erfassen und Erkunden von Linien.
Klicken Sie zum Schließen des Abstammungsgraphen auf die Schließen-Schaltfläche
in der oberen rechten Ecke.
Umbenennen eines Modells
Erforderliche Berechtigungen: Besitzer des registrierten Modells, Berechtigung CREATE MODEL für das Schema, das das registrierte Modell enthält, und die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Um ein registriertes Modell umzubenennen, verwenden Sie die MLflow-Client-API-Methode rename_registered_model() , wobei <full-model-name> der vollständige Name der 3-Ebene des Modells und <new-model-name> der Modellname ohne den Katalog oder das Schema ist.
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Der folgende Code ändert z. B. den Namen des Modells hello_world in hello.
client=MlflowClient()
client.rename_registered_model("docs.models.hello_world", "hello")
Kopieren einer Modellversion
Sie können eine Modellversion aus einem Modell in einen anderen im Unity Catalog kopieren.
Kopieren einer Modellversion mithilfe der Benutzeroberfläche
Führen Sie folgende Schritte aus:
Klicken Sie auf der Modellversionsseite in der oberen rechten Ecke der Benutzeroberfläche auf Diese Version kopieren.
Wählen Sie in der Dropdownliste ein Zielmodell aus, und klicken Sie auf Kopieren.
Das Kopieren eines Modells kann Zeit in Anspruch nehmen. Um den Fortschritt zu überwachen, navigieren Sie zum Zielmodell in Unity Catalog und aktualisieren Sie regelmäßig.
Kopieren einer Modellversionen mithilfe der API
Verwenden Sie zum Kopieren einer Modellversion die python-API von MLflow copy_model_version()
client = MlflowClient()
client.copy_model_version(
"models:/<source-model-name>/<source-model-version>",
"<destination-model-name>",
)
Löschen eines Modells oder einer Modellversion
Erforderliche Berechtigungen: Besitzer des registrierten Modells sowie die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Sie können ein registriertes Modell oder eine Modellversion innerhalb eines registrierten Modells mithilfe der Benutzeroberfläche oder der API löschen.
Warnung
Dieser Vorgang lässt sich nicht rückgängig machen. Wenn Sie ein Modell löschen, werden alle Modellartefakte, die in Unity Catalog gespeichert sind, und alle zugehörigen Metadaten des registrierten Modells gelöscht.
Löschen einer Modellversion oder eines Modells über die Benutzeroberfläche
Gehen Sie zum Löschen eines Modell oder einer Modellversion in Unity Catalog nach den folgenden Schritten vor.
Im Katalog-Explorer klicken Sie auf der Modellseite oder der Modellversionsseite auf das Kebab-Menü
in der oberen rechten Ecke.
Von der Modellseite:
Auf der Modellversionsseite:
Klicken Sie auf Löschen.
Ein Bestätigungsdialogfeld wird angezeigt. Klicken Sie auf Löschen, um den Vorgang zu bestätigen.
Löschen einer Modellversion oder eines Modells über die API
Verwenden Sie zum Löschen einer Modellversion die Methode delete_model_version() der MLflow-Client-API:
# 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)
Verwenden Sie zum Löschen eines Modells die Methode delete_registered_model() der MLflow-Client-API:
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Verwenden von Tags für Modelle
Tags sind Schlüssel-Wert-Paare, die Sie registrierten Modellen und Modellversionen zuordnen können, sodass Sie sie nach Funktion oder Status bezeichnen und kategorisieren können. Sie können beispielsweise ein Tag mit dem Schlüssel "task" und dem Wert "question-answering" (wird auf der Benutzeroberfläche als task:question-answering angezeigt) auf registrierte Modelle anwenden, deren Aufgabe es sein soll, Fragen zu beantworten. Auf Modellversionsebene könnten Sie Versionen, die vor der Bereitstellung noch überprüft werden, mit validation_status:pending und Versionen, die bereits für die Bereitstellung zugelassen sind, mit validation_status:approved taggen.
Erforderliche Berechtigungen: Besitzer oder Inhaber der Berechtigung APPLY TAG für das registrierte Modell sowie die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Informationen zum Festlegen und Löschen von Tags mithilfe der Benutzeroberfläche finden Sie unter Anwenden von Tags auf sicherbare Objekte im Unity-Katalog.
Informationen zum Festlegen und Löschen von Tags mithilfe der MLflow-Client-API finden Sie in den folgenden Beispielen:
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")
Sowohl registrierte Modell- als auch Modellversionstags müssen die plattformweiten Einschränkungen erfüllen.
Weitere Informationen zu Tagclient-APIs finden Sie in der Dokumentation zur MLflow-API.
Hinzufügen einer Beschreibung (Kommentare) zu einem Modell oder einer Modellversion
Erforderliche Berechtigungen: Besitzer des registrierten Modells sowie die Berechtigungen USE SCHEMA und USE CATALOG für das Schema und den Katalog, die das Modell enthalten.
Sie können eine Textbeschreibung für ein Modell oder eine Modellversion in Unity Catalog aufnehmen. Beispielsweise können Sie eine Übersicht über das Problem oder Informationen zur verwendeten Methodik und zum Algorithmus angeben.
Für Modelle haben Sie auch die Möglichkeit, KI-generierte Kommentare zu verwenden. Siehe Hinzufügen von KI-generierten Kommentaren zu Unity Catalog-Objekten.
Hinzufügen einer Beschreibung zu einem Modell über die Benutzeroberfläche
Zum Hinzufügen einer Beschreibung für ein Modell können Sie KI-generierte Kommentare verwenden oder eigene Kommentare eingeben. Sie können KI-generierte Kommentare nach Bedarf bearbeiten.
- Klicken Sie zum Hinzufügen automatisch generierter Kommentare auf die Schaltfläche Mit KI generieren.
- Klicken Sie zum Hinzufügen eigener Kommentare auf Hinzufügen. Geben Sie Ihre Kommentare in das Dialogfeld ein und klicken Sie auf Speichern.
Hinzufügen einer Beschreibung zu einer Modellversion über die Benutzeroberfläche
Gehen Sie zum Hinzufügen einer Beschreibung zu einer Modellversion in Unity Catalog nach diesen Schritten vor:
Klicken Sie auf der Modellversionsseite unter Beschreibung auf das Stiftsymbol.
Geben Sie Ihre Kommentare in das Dialogfeld ein und klicken Sie auf Speichern.
Hinzufügen einer Beschreibung zu einem Modell oder einer Modellversion über die API
Verwenden Sie die update_registered_model()-Methode der MLflow-Client-API, um die Beschreibung eines registrierten Modells zu aktualisieren:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Verwenden Sie die Methode update_model_version() der MLflow-Client-API, um die Beschreibung einer Modellversion zu aktualisieren:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
Auflisten und Suchen von Modellen
Um eine Liste der registrierten Modelle im Unity-Katalog abzurufen, verwenden Sie die search_registered_models() Python-API von MLflow:
mlflow.search_registered_models()
Um nach einem bestimmten Modellnamen zu suchen und Informationen zu den Versionen dieses Modells zu erhalten, verwenden Sie search_model_versions()Folgendes:
from pprint import pprint
[pprint(mv) for mv in mlflow.search_model_versions("name='<model-name>'")]
Hinweis
Nicht alle API-Suchfelder und -operatoren werden für Modelle in Unity Catalog unterstützt. Ausführliche Informationen finden Sie unter Einschränkungen.
Herunterladen von Modelldateien (erweiterter Anwendungsfall)
In den meisten Fällen sollten Sie zum Laden von Modellen MLflow-APIs wie mlflow.pyfunc.load_model oder mlflow.<flavor>.load_model (z. B. mlflow.transformers.load_model für HuggingFace-Modelle) verwenden.
In einigen Fällen müssen Sie möglicherweise Modelldateien herunterladen, um Modellverhalten oder Ladeprobleme beim Modell zu debuggen. Sie können Modelldateien mithilfe von mlflow.artifacts.download_artifacts wie folgt herunterladen:
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)
Höherstufen eines Modell in mehreren Umgebungen
Databricks empfiehlt, ML-Pipelines als Code bereitzustellen. Dadurch entfällt die Notwendigkeit, Modelle umgebungsübergreifend höher zu stufen, da alle Produktionsmodelle durch automatisierte Trainingsworkflows in einer Produktionsumgebung generiert werden können.
In einigen Fällen kann es jedoch zu teuer sein, Modelle umgebungsübergreifend erneut zu trainieren. Stattdessen können Sie Modellversionen zwischen registrierten Modellen in Unity Catalog kopieren, um sie umgebungsübergreifend höher zu stufen.
Sie benötigen die folgenden Berechtigungen, um den folgenden Beispielcode auszuführen:
-
USE CATALOGfür die Katalogestagingundprod -
USE SCHEMAfür die Schemasstaging.ml_teamundprod.ml_team -
EXECUTEfürstaging.ml_team.fraud_detection
Darüber hinaus müssen Sie Besitzer*in des registrierten Modells prod.ml_team.fraud_detection sein.
Das folgende Codeausschnitt verwendet die copy_model_versionMLflow Client API, die in MLflow Version 2.8.0 und höher verfügbar ist.
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)
Wenn sich die Modellversion in der Produktionsumgebung befindet, können Sie alle erforderlichen Überprüfungsschritte vor der Bereitstellung durchführen. Anschließend können Sie die Modellversion für die Bereitstellung mithilfe von Aliasen markieren.
client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)
Im obigen Beispiel können nur Benutzer*innen, die aus dem registrierten Modell staging.ml_team.fraud_detection lesen und in das registrierte Modell prod.ml_team.fraud_detection schreiben können, die Staging-Modelle in die Produktionsumgebung überführen. Dieselben Benutzer*innen können auch Aliase verwenden, um zu verwalten, welche Modellversionen in der Produktionsumgebung bereitgestellt werden. Sie müssen keine anderen Regeln oder Richtlinien konfigurieren, um die Modellförderung und -bereitstellung zu steuern.
Sie können diesen Flow anpassen, um die Modellversion in mehreren Umgebungen höher zu stufen, die Ihrem Setup entsprechen, z. B. dev, qa und prod. Die Zugriffssteuerung wird in jeder Umgebung wie konfiguriert erzwungen.
Beispielnotizbuch
Dieses Beispielnotizbuch veranschaulicht die Verwendung von Modellen in Unity-Katalog-APIs zum Verwalten von Modellen im Unity-Katalog, einschließlich des Registrierens von Modellen und Modellversionen, Hinzufügen von Beschreibungen, Laden und Bereitstellen von Modellen, Verwenden von Modellaliasen und Löschen von Modellen und Modellversionen.
MLflow 3
Modelle im Unity-Katalog-Beispielnotizbuch für MLflow 3
MLflow 2.x
Modelle im Beispielnotizbuch "Unity-Katalog"
Begrenzungen
- Phasen werden für Modelle in Unity Catalog nicht unterstützt. Databricks empfiehlt die Verwendung des dreistufigen Namespace in Unity Catalog zum Angeben der Umgebung, in der sich ein Modell befindet, sowie die Verwendung von Aliasen zum Heraufstufen von Modellen für die Bereitstellung. Weitere Informationen finden Sie unter Umgebungenübergreifendes Höherstufen eines Modells.
- Webhooks werden für Modelle in Unity Catalog nicht unterstützt. Alternativvorschläge finden Sie im Upgradeleitfaden.
- Einige API-Suchfelder und -operatoren werden für Modelle in Unity Catalog nicht unterstützt. Dieses Problem kann entschärft werden, indem Sie die Such-APIs mithilfe unterstützter Filter aufrufen und die Ergebnisse überprüfen. Hier einige Beispiele:
- Der Parameter
order_bywird in den search_model_versions- und search_registered_models-Client-APIs nicht unterstützt. - Tagbasierte Filter (
tags.mykey = 'myvalue') werden fürsearch_model_versionsundsearch_registered_modelsnicht unterstützt. - Andere Operatoren als exakte Gleichheit (z. B.
LIKE,ILIKE,!=) werden fürsearch_model_versionsundsearch_registered_modelsnicht unterstützt. - Die Suche nach registrierten Modellen nach Namen (z. B.
search_registered_models(filter_string="name='main.default.mymodel'")) wird nicht unterstützt. Um ein bestimmtes registriertes Modell basierend auf seinem Namen abzurufen, verwenden Sie get_registered_model.
- Der Parameter
- Email-Benachrichtigungen und Threads mit Diskussionskommentaren zu registrierten Modellen und Modellversionen werden in Unity Catalog nicht unterstützt.
- Das Aktivitätsprotokoll wird für Modelle in Unity Catalog nicht unterstützt. Verwenden Sie Überwachungsprotokolle zum Nachverfolgen der Aktivität für Modelle in Unity Catalog.
-
search_registered_modelskann veraltete Ergebnisse für Modelle zurückgeben, die über Delta Sharing freigegeben wurden. Um die neuesten Ergebnisse sicherzustellen, verwenden Sie die Databricks-CLI oder -SDK, um die Modelle in einem Schema auflisten.