Freigeben über


Verwalten des Lebenszyklus von Modellen in Unity Catalog

Wichtig

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 Konzepte zur Modellregistrierung finden Sie unter ML-Lebenszyklusverwaltung mit MLflow.

Anforderungen

  1. 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 die klassische Arbeitsbereichsmodellregistrierung.

  2. Sie müssen eine Computeressource verwenden, die Zugriff auf Unity Catalog hat. Für ML-Workloads bedeutet dies, dass der Zugriffsmodus für den Compute Einzelbenutzer sein muss. Weitere Informationen finden Sie unter Zugriffsmodi.

  3. Zum Erstellen neuer registrierter Modelle brauchen Sie die folgenden Berechtigungen:

    • Berechtigungen USE SCHEMA und USE CATALOG für das Schema und Katalog, in dem es enthalten ist.
    • Die Berechtigung CREATE_MODEL für das Schema . Verwenden Sie zum Gewähren dieser Berechtigung die Benutzeroberfläche des Katalog-Explorers oder den folgenden SQL-GRANT-Befehl:
    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

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

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 in Unity Catalog (und nicht in hive_metastore) befindet und Sie einen Cluster mit Databricks Runtime 13.3 LTS oder höher (Databricks Runtime 15.0 oder höher in Azure China-Regionen) ausführen, werden Modelle automatisch im Standardkatalog erstellt und geladen. Sie müssen diesen Schritt nicht ausführen.

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.

ML-Modellversionen in Unity Catalog müssen über eine Modellsignatur verfügen. Wenn Sie MLflow-Modelle in Ihren Modelltrainingsworkloads noch nicht mit Signaturen protokollieren, haben Sie die folgenden Möglichkeiten:

  • Verwenden der automatischen Databricks-Protokollierung, die 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.

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 Katalogs prod bedeutet nicht unbedingt, dass die Modellversion dem Produktionsdatenverkehr dient. Der Katalog, das Schema und das registrierte Modell, die die Modellversion einschließen, spiegeln ihre die Umgebung (prod) und die zugehörigen Governanceregeln wider (z. B. können Berechtigungen eingerichtet werden, sodass nur Administratoren aus dem Katalog prod löschen können), nicht aber ihren 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.

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.register_model(
  "runs:/<run_uuid>/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.

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",
    )

Registrieren eines Modells über die Benutzeroberfläche

Führen Sie folgende Schritte aus:

  1. Klicken Sie auf der Experimentausführungsseite in der oberen rechten Ecke der Benutzeroberfläche auf Modell registrieren.

  2. Wählen Sie im Dialogfeld Unity Catalog aus, und wählen Sie in der Einblendliste ein Zielmodell aus.

    Dialogfeld „Modellversion registrieren“ mit Dropdownmenü

  3. Klicken Sie auf Registrieren.

    Dialogfeld „Modellversion registrieren“ mit Schaltfläche

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.

Bereitstellen von Modellen mit Aliasen

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 in Unity Catalog mithilfe des Katalog-Explorers festlegen, aktualisieren und entfernen. Sie können Aliase für ein registriertes Modell auf der Seite Modelldetails verwalten und Aliase für eine bestimmte Modellversion auf der Seite Details zur Modellversion konfigurieren.

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 Alias-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.

Batchrückschlussworkloads können über den 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 Batchrückschlussworkload bei der nächsten Ausführung ausgewählt. Dadurch können Sie Modellbereitstellungen von Ihren Batchrü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 über die 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 an einem registrierten Modell, das Sie erstellt haben, zusammenzuarbeiten (Schreibberechtigungen freigeben), müssen Sie eine Gruppe als Besitzer des Modells festlegen, die Sie selbst und die Benutzer enthält, 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 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 die Datasets des Modells bis zu den vorgelagerten Datasets nachverfolgen, auf denen es trainiert und ausgewertet wurde. Verwenden Sie dazu mlflow.log_input. Dadurch werden die Informationen der Eingabetabelle mit der MLflow-Ausführung gespeichert, die das Modell generiert hat. Die Datenherkunft wird auch automatisch für Modelle erfasst, die mithilfe von Featurespeicher-APIs protokolliert werden. Weitere Informationen finden Sie unter Featuregovernance und Datenherkunft.

Wenn Sie das Modell in Unity Catalog registrieren, werden die Informationen zur Datenherkunft automatisch gespeichert und auf der Registerkarte Lineage (Datenherkunft) der Modellversions-Benutzeroberfläche in Catalog Explorer angezeigt.

Der folgende Code enthält hierzu ein Beispiel.

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",
    )

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. Weitere Informationen finden Sie unter Unity Catalog-Rechte und sicherungsfähige Objekte. Bewährte Methoden zum Organisieren von Modellen in Katalogen und Schemas finden Sie unter Organisieren von Daten.

Modellberechtigungen können Sie mithilfe der REST-API für Zuweisungen 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 von Modellen auf 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 in Unity Catalog mit dem Katalog-Explorer anzeigen und verwalten.

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.

Verwenden Sie die Methode rename_registered_model() der MLflow-Client-API, um ein registriertes Modell umzubenennen:

client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")

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:

  1. Klicken Sie auf der Modellversionsseite in der oberen rechten Ecke der Benutzeroberfläche auf Diese Version kopieren.

  2. Wählen Sie in der Dropdownliste ein Zielmodell aus, und klicken Sie auf Kopieren.

    Dialogfeld „Modellversion 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 copy_model_version()-Python-API von MLflow:

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 in einem registrierten Modell über die Benutzeroberfläche des Katalog-Explorers oder die 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.

  1. Klicken Sie der Seite mit dem Modell oder der Seite mit der Modellversion oben rechts auf das Drei-Punkte-Menü Kebab-Menü.

    Auf der Modellseite:

    Drei-Punkte-Menü der Modellseite mit „Löschen“

    Auf der Modellversionsseite:

    Drei-Punkte-Menü der Modellversionsseite mit „Löschen“

  2. Klicken Sie auf Löschen.

  3. 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 Hinzufügen und Aktualisieren von Tags über den Katalog-Explorer.

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.

Schaltflächen für Modellbeschreibung in UC

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:

  1. Klicken Sie auf der Modellversionsseite unter Beschreibung auf das Stiftsymbol.

    Stiftsymbol zum Hinzufügen von Kommentaren zu einer Modellversion

  2. 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

Eine Liste der registrierten Modelle in Unity Catalog können Sie über die Python-API search_registered_models() von MLflow abrufen:

client=MlflowClient()
client.search_registered_models()

Verwenden Sie search_model_versions() zum Suchen nach einem bestimmten Modellnamen und zum Abrufen von Informationen zu den Versionen dieses Modells:

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.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 CATALOG für die Kataloge staging und prod
  • USE SCHEMA für die Schemas staging.ml_team und prod.ml_team
  • EXECUTE für staging.ml_team.fraud_detection

Darüber hinaus müssen Sie Besitzer*in des registrierten Modells prod.ml_team.fraud_detection sein.

Das folgende Codeschnipsel verwendet die MLflow-Client-API copy_model_version, 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, Stagingmodelle in die Produktionsumgebung höher stufen. 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 Modellhöherstufung 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.

Beispiel

In diesem Beispiel wird veranschaulicht, wie Sie Modelle in Unity Catalog zum Erstellen einer Machine Learning-Anwendung verwenden.

Beispiel für Modelle in Unity Catalog

Migrieren von Workflows und Modellen zu Unity Catalog

Databricks empfiehlt die Verwendung von Modellen in Unity Catalog, um die Governance zu verbessern, die Freigabe über Arbeitsbereiche und Umgebungen hinweg zu erleichtern und flexiblere MLOps-Workflows zu ermöglichen. In der Tabelle werden die Funktionen der Arbeitsbereichsmodellregistrierung und von Unity Catalog verglichen.

Funktion Arbeitsbereichsmodellregistrierung (Legacy) Modelle in Unity Catalog (empfohlen)
Verweis auf Modellversionen durch benannte Aliasse Modellregistrierungsphasen: Verschieben Sie Modellversionen in eine von vier festen Phasen, um auf sie in dieser Phase zu verweisen. Phasen können nicht umbenannt oder hinzugefügt werden. Modellregistrierungs-Aliasse: Erstellen Sie für jedes registrierte Modell bis zu 10 benutzerdefinierte und neu zuweisbare benannte Verweise auf Modellversionen.
Erstellen von zugriffsgesteuerten Umgebungen für Modelle Modellregistrierungsphasen: Verwenden Sie Phasen innerhalb eines registrierten Modells, um die Umgebung der Modellversionen mit Zugriffssteuerungen für nur zwei der vier festen Phasen (Staging und Production) zu kennzeichnen. Registrierte Modelle: Erstellen Sie ein registriertes Modell für jede Umgebung in Ihrem MLOps-Workflow, und verwenden Sie dabei die Namespace-Notation und Berechtigungen auf drei Ebenen von Unity Catalog, um Governance auszudrücken.
Höherstufen von Modellen in Umgebungen (Modell bereitstellen) Verwenden Sie die MLflow-Client-API transition_model_version_stage(), um eine Modellversion in eine andere Phase zu verschieben, was möglicherweise zu einer Unterbrechung von Workflows führen kann, die auf die vorherige Phase verweisen. Verwenden Sie die MLflow-Client-API copy_model_version(), um eine Modellversion von einem registrierten Modell in ein anderes zu kopieren.
Arbeitsbereichsübergreifendes Zugreifen auf und Freigeben von Modellen Exportieren und importieren Sie Modelle manuell und arbeitsbereichsübergreifend, oder konfigurieren Sie Verbindungen mit Remotemodellregistrierungen mithilfe von persönlichen Zugriffstoken und Arbeitsbereichsgeheimnisbereichen. Greifen Sie direkt auf Modelle in anderen Arbeitsbereichen desselben Kontos zu. Es ist keine Konfiguration erforderlich.
Konfigurieren von Berechtigungen Legen Sie Berechtigungen auf Arbeitsbereichsebene fest. Legen Sie Berechtigungen auf Kontoebene fest, was eine einheitliche Governance für alle Arbeitsbereiche sicherstellt.
Zugreifen auf Modelle im Databricks-Marketplace Nicht verfügbar. Laden Sie Modelle aus dem Databricks-Marketplace in Ihren Unity Catalog-Metastore, und greifen Sie auf sie in allen Arbeitsbereichen zu.

In den unten verlinkten Artikeln wird beschrieben, wie Workflows (Modelltraining und Batchrückschlussaufträge) und Modelle aus der Arbeitsbereichsmodellregistrierung zu Unity Catalog migriert werden.

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_by wird in den search_model_versions- und search_registered_models-Client-APIs nicht unterstützt.
    • Tagbasierte Filter (tags.mykey = 'myvalue') werden für search_model_versions und search_registered_modelsnicht unterstützt.
    • Andere Operatoren als exakte Gleichheit (z. B. LIKE, ILIKE, !=) werden für search_model_versions und search_registered_models nicht unterstützt.
    • Die Suche nach registrierten Modellen nach Namen (z. B. MlflowClient().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.
  • 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_models kann 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.