Delen via


Levenscyclus van modellen beheren in Unity Catalog

Belangrijk

In dit artikel wordt beschreven hoe u modellen in Unity Catalog gebruikt als onderdeel van uw machine learning-werkstroom om de volledige levenscyclus van ML-modellen te beheren. Databricks biedt een gehoste versie van MLflow Model Registry in Unity Catalog. Modellen in Unity Catalog breiden de voordelen van Unity Catalog uit naar ML-modellen, waaronder gecentraliseerd toegangsbeheer, controle, herkomst en modeldetectie in werkruimten. Modellen in Unity Catalog zijn compatibel met de opensource-MLflow Python-client.

Zie voor een overzicht van de modelregisterconcepten MLflow voor de levenscyclus van ML-modellen.

MLflow 3 maakt aanzienlijke verbeteringen aan het MLflow-modelregister in Unity Catalog, zodat uw modellen gegevens zoals parameters en metrische gegevens rechtstreeks kunnen vastleggen en beschikbaar kunnen maken in alle werkruimten en experimenten. De standaardregister-URI in MLflow 3 is databricks-uc, wat betekent dat het MLflow-modelregister in Unity Catalog wordt gebruikt. Zie Aan de slag met MLflow 3 voor modellen en modelregisterverbeteringen met MLflow 3 voor meer informatie.

Vereisten

  • Unity Catalog moet zijn ingeschakeld in uw werkruimte. Zie Aan de slag met Unity Catalog om een Unity Catalog-metastore te maken, deze in te schakelen in een werkruimte en een catalogus te maken. Als Unity Catalog niet is ingeschakeld, gebruikt u het register van het werkruimtemodel.

  • U moet een rekenresource gebruiken die toegang heeft tot Unity Catalog. Voor ML-workloads betekent dit dat de toegangsmodus van de rekeninstantie Toegewijd moet zijn (voorheen één gebruiker). Zie Access-modi voor meer informatie. Met Databricks Runtime 15.4 LTS ML en hoger kunt u ook toegewezen groepstoegangsmodus gebruiken.

  • Als u nieuwe geregistreerde modellen wilt maken, hebt u de volgende bevoegdheden nodig:

    • USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de bijbehorende catalogus.
    • CREATE MODEL of CREATE FUNCTION privilege op het schema. Als u bevoegdheden wilt verlenen, gebruikt u de gebruikersinterface van Catalog Explorer of de SQL-opdrachtGRANT:
    GRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal>
    
  • Als u autorisatieproblemen ondervindt bij het registreren van een model, kunt u de omgevingsvariabele MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC instellen op True. Neem een cel op in uw notitieblok met de volgende code:

    import os
    os.environ['MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC'] = 'True'
    

    Deze benadering kan niet worden gebruikt voor modellen die worden gedeeld met Delta Sharing die gebruikmaken van standaardopslag.

Notitie

Uw werkruimte moet zijn gekoppeld aan een Unity Catalog-metastore die overname van bevoegdheden ondersteunt. Dit geldt voor alle metastores die na 25 augustus 2022 zijn gemaakt. Als u op een oudere metastore werkt, volgt u de documenten voor een upgrade.

MLflow-client installeren en configureren voor Unity Catalog

Deze sectie bevat instructies voor het installeren en configureren van de MLflow-client voor Unity Catalog.

MLflow Python-client installeren

Ondersteuning voor modellen in Unity Catalog is opgenomen in Databricks Runtime 13.2 ML en hoger (Databricks Runtime 15.0 ML en hoger in Azure China).

U kunt ook modellen in Unity Catalog gebruiken in Databricks Runtime 11.3 LTS en hoger door de nieuwste versie van de MLflow Python-client in uw notebook te installeren met behulp van de volgende code.

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

MLflow-client configureren voor toegang tot modellen in Unity Catalog

Als de standaardcatalogus van uw werkruimte zich in Unity Catalog bevindt (in plaats hive_metastorevan ) en u een cluster uitvoert met Databricks Runtime 13.3 LTS of hoger (Databricks Runtime 15.0 of hoger in Azure China-regio's) of met behulp van MLflow 3, worden modellen automatisch gemaakt en geladen vanuit de standaardcatalogus.

Voor andere werkruimten maakt de MLflow Python-client modellen in het databricks-werkruimtemodelregister. Als u wilt upgraden naar modellen in Unity Catalog, gebruikt u de volgende code in uw notebooks om de MLflow-client te configureren:

import mlflow
mlflow.set_registry_uri("databricks-uc")

Voor een klein aantal werkruimten waarin zowel de standaardcatalogus is geconfigureerd voor een catalogus in Unity Catalog vóór januari 2024 als het register van het werkruimtemodel vóór januari 2024 is gebruikt, moet u de standaardcatalogus handmatig instellen op Unity Catalog met behulp van de bovenstaande opdracht.

Met Unity Catalog compatibele modellen trainen en registreren

Vereiste machtigingen: als u een nieuw geregistreerd model wilt maken, hebt u de CREATE MODEL en USE SCHEMA bevoegdheden voor het omsluitschema en USE CATALOG bevoegdheden voor de insluitcatalogus nodig. Als u nieuwe modelversies wilt maken onder een geregistreerd model, moet u de eigenaar van het geregistreerde model zijn en beschikken over en USE SCHEMA bevoegdheden hebben USE CATALOG voor het schema en de catalogus met het model.

Als u autorisatieproblemen ondervindt bij het registreren van een model, kunt u de omgevingsvariabele MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC instellen op True. Deze benadering kan niet worden gebruikt voor modellen die worden gedeeld met Delta Sharing die gebruikmaken van standaardopslag. Raadpleeg Vereisten.

Nieuwe ML-modelversies in UC moeten een modelhandtekening hebben. Als u nog geen MLflow-modellen met modelhandtekeningen bijhoudt in uw werkbelastingen voor modeltraining, kunt u het volgende doen:

  • Gebruik automatische logboeken van Databricks, waarmee automatisch modellen worden bijgehouden met handtekeningen voor veel populaire ML-frameworks. Zie ondersteunde frameworks in de MLflow-documenten.
  • Met MLflow 2.5.0 en hoger kunt u een invoervoorbeeld opgeven in uw mlflow.<flavor>.log_model aanroep en wordt de modelhandtekening automatisch afgeleid. Raadpleeg de MLflow-documentatie voor meer informatie.

Geef vervolgens de naam van het model op drie niveaus door aan MLflow-API's, in de vorm <catalog>.<schema>.<model>.

Modelversies die geen handtekeningen hebben, hebben bepaalde beperkingen. Zie Een handtekening voor een bestaande modelversie toevoegen of bijwerken voor een bestaande modelversie voor een lijst met deze beperkingen en om een handtekening toe te voegen of bij te werken voor een bestaande modelversie.

De voorbeelden in deze sectie maken en openen modellen in het ml_team schema onder de prod catalogus.

In deze sectie wordt een nieuwe modelversie aangemaakt en geregistreerd in de prod catalogus met behulp van de voorbeelden van modeltraining. Het gebruik van de prod catalogus betekent niet noodzakelijkerwijs dat de modelversie productieverkeer bedient. De catalogus, het schema en het geregistreerde model van de modelversie weerspiegelen de omgeving (prod) en de bijbehorende governanceregels (bijvoorbeeld bevoegdheden kunnen zo worden ingesteld dat alleen beheerders uit de prod catalogus kunnen verwijderen), maar niet de implementatiestatus. Gebruik modelaliassen om de implementatiestatus te beheren.

Een model registreren bij Unity Catalog met automatische aanmelding

Als u een model wilt registreren, gebruikt u de MLflow Client-API-methode register_model() . Zie 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")

Een model registreren met behulp van de 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"
)

Een model registreren bij Unity Catalog met automatisch uitgestelde handtekening

Ondersteuning voor automatisch afgeleide handtekeningen is beschikbaar in MLflow versie 2.5.0 en hoger en wordt ondersteund in Databricks Runtime 11.3 LTS ML en hoger. Als u automatisch uitgestelde handtekeningen wilt gebruiken, gebruikt u de volgende code om de nieuwste MLflow Python-client in uw notebook te installeren:

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

De volgende code toont een voorbeeld van een automatisch uitgestelde handtekening. Houd er rekening mee dat het model in de registered_model_name-aanroep wordt geregistreerd bij Unity Catalog door gebruik te maken van log_model(), dus u moet de volledige drielaags naam van het model opgeven in de indeling <catalog>.<schema>.<model>.

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

Een model registreren met behulp van de gebruikersinterface

Volg vervolgens deze stappen:

  1. Klik op de uitvoeringspagina van het experiment op Model registreren in de rechterbovenhoek van de gebruikersinterface.

  2. Selecteer Unity Catalog in het dialoogvenster en selecteer een doelmodel in de vervolgkeuzelijst.

    Dialoogvenster Modelversie registreren met vervolgkeuzemenu

  3. Klik op Registreren.

    Dialoogvenster Modelversie registreren met knop

Het registreren van een model kan enige tijd in beslag nemen. Als u de voortgang wilt controleren, gaat u naar het doelmodel in Unity Catalog en vernieuwt u periodiek.

Een handtekening toevoegen of bijwerken voor een bestaande modelversie

Modelversies die geen handtekeningen hebben, hebben de volgende beperkingen:

  • Als er een handtekening wordt opgegeven, worden modelinvoer gecontroleerd bij deductie en wordt er een fout gerapporteerd als de invoer niet overeenkomt met de handtekening. Zonder een handtekening is er geen automatische invoer afdwinging en moeten modellen onverwachte invoer kunnen verwerken.
  • Voor het gebruik van een modelversie met AI-functies is een schema vereist in de functie-aanroep.
  • Het gebruik van een modelversie met Model Serving genereert geen invoervoorbeelden automatisch.

Raadpleeg de MLflow-documentatie om een modelversiehandtekening toe te voegen of bij te werken.

Modelaliassen gebruiken

Met modelaliassen kunt u een onveranderbare, benoemde verwijzing toewijzen aan een bepaalde versie van een geregistreerd model. U kunt aliassen gebruiken om de implementatiestatus van een modelversie aan te geven. U kunt bijvoorbeeld een 'Kampioen'-alias toewijzen aan de modelversie die momenteel in productie is en deze alias targeten in workloads die gebruikmaken van het productiemodel. Vervolgens kunt u het productiemodel bijwerken door de alias 'Champion' opnieuw toe te wijden aan een andere modelversie.

Aliassen instellen en verwijderen op modellen

Vereiste machtigingen: eigenaar van het geregistreerde model, plus USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de catalogus met het model.

U kunt aliassen instellen, bijwerken en verwijderen voor modellen in Unity Catalog met behulp van Catalog Explorer. Zie Modellen weergeven en beheren in de gebruikersinterface.

Zie de onderstaande voorbeelden om aliassen in te stellen, bij te werken en te verwijderen met behulp van de MLflow-client-API:

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

Zie de documentatie van de MLflow-API voor meer informatie over aliasclient-API's.

Modelversie laden met een alias voor inference workloads

Vereiste machtigingen: EXECUTE bevoegdheden voor het geregistreerde model, plus USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de catalogus met het model.

Batchdeductieworkloads kunnen verwijzen naar een modelversie per alias. Het codefragment hieronder laadt en past de modelversie 'Champion' toe voor batch-inferentie. Als de versie 'Champion' wordt bijgewerkt om te verwijzen naar een nieuwe modelversie, wordt deze automatisch door de workload voor batchdeductie opgehaald bij de volgende uitvoering. Hiermee kunt u modelimplementaties loskoppelen van uw batchdeductieworkloads.

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)

Model-serve-uitgangspunten kunnen ook verwijzen naar een modelversie via een alias. U kunt implementatiewerkstromen schrijven om een modelversie op te halen op basis van alias en een model bij te werken dat eindpunt voor die versie dient, met behulp van het model dat REST API biedt. Voorbeeld:

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(...)

Modelversie laden met versienummer voor inferentielast

U kunt modelversies ook laden op versienummer:

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)

Modellen delen in werkruimten

Modellen delen met gebruikers in dezelfde regio

Zolang u over de juiste bevoegdheden beschikt, hebt u toegang tot modellen in Unity Catalog vanuit elke werkruimte die is gekoppeld aan de metastore die het model bevat. U kunt bijvoorbeeld toegang krijgen tot modellen uit de prod catalogus in een ontwikkelwerkruimte om het vergelijken van nieuw ontwikkelde modellen met de productiebasislijn te vergemakkelijken.

Als u wilt samenwerken met andere gebruikers (schrijfbevoegdheden delen) voor een geregistreerd model dat u hebt gemaakt, moet u het eigendom van het model verlenen aan een groep met uzelf en de gebruikers waarmee u wilt samenwerken. Samenwerkers moeten ook de USE CATALOG en USE SCHEMA bevoegdheden voor de catalogus en het schema met het model hebben. Zie Unity Catalog-bevoegdheden en beveiligbare objecten voor meer informatie.

Modellen delen met gebruikers in een andere regio of account

Als u modellen wilt delen met gebruikers in andere regio's of accounts, gebruikt u de Delta Sharing Databricks-to-Databricks deelstroom. Zie Modellen toevoegen aan een share (voor providers) en toegang krijgen in het Databricks-naar-Databricks-model (voor ontvangers). Als geadresseerde hebt u, nadat u een catalogus hebt gemaakt op basis van een share, op dezelfde manier toegang tot modellen in die gedeelde catalogus als tot elk ander model in Unity Catalog.

De gegevensherkomst van een model bijhouden in Unity Catalog

Notitie

Ondersteuning voor de afstamming van tabel naar model in Unity Catalog is beschikbaar in MLflow 2.11.0 en hoger.

Wanneer u een model traint in een tabel in Unity Catalog, kunt u de herkomst van het model bijhouden naar de upstream-gegevensset(s) waarop het is getraind en geëvalueerd. Gebruik hiervoor mlflow.log_input. Hiermee worden de invoertabelgegevens opgeslagen met de MLflow-uitvoering die het model heeft gegenereerd. Gegevensherkomst wordt ook automatisch vastgelegd voor modellen die zijn vastgelegd met behulp van API's voor het functiearchief. Zie Functiebeheer en herkomst.

Wanneer u het model registreert bij Unity Catalog, worden herkomstgegevens automatisch opgeslagen en zichtbaar op het tabblad Herkomst op de pagina van de modelversie in Catalog Explorer. Zie Modelversiegegevens en modelherkomst weergeven.

De volgende code laat een voorbeeld zien.

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

Toegang tot modellen beheren

In Unity Catalog zijn geregistreerde modellen een subtype van het FUNCTION beveiligbare object. Als u toegang wilt verlenen tot een model dat is geregistreerd in Unity Catalog, gebruikt u GRANT ON FUNCTION. U kunt Catalog Explorer ook gebruiken om modeleigendom en -machtigingen in te stellen. Zie Bevoegdheden beheren in Unity Catalog en het Unity Catalog-objectmodel voor meer informatie.

U kunt modelmachtigingen programmatisch configureren met behulp van de Grant REST API. Wanneer u modelmachtigingen configureert, stelt u deze in securable_type"FUNCTION" REST API-aanvragen in. Gebruik bijvoorbeeld PATCH /api/2.1/unity-catalog/permissions/function/{full_name} om geregistreerde modelmachtigingen bij te werken.

Modellen weergeven en beheren in de gebruikersinterface

Vereiste machtigingen: als u een geregistreerd model en de bijbehorende modelversies in de gebruikersinterface wilt weergeven, hebt u bevoegdheden nodig EXECUTE voor het geregistreerde model, plus USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de catalogus met het model

U kunt geregistreerde modellen en modelversies weergeven en beheren in Unity Catalog met behulp van Catalog Explorer.

Modelgegevens weergeven

Modellen weergeven in Catalog Explorer:

  1. Klik op het pictogram Gegevens.Catalogus in de zijbalk.

  2. Selecteer een rekenresource in de vervolgkeuzelijst rechtsboven.

  3. In de Catalogusverkennerboom aan de linkerkant, open een catalogus en selecteer een schema.

  4. Als het schema modellen bevat, worden deze weergegeven in de structuur onder Modellen, zoals wordt weergegeven.

    Onderdeel van catalogusverkennerboom dat modellen toont.

  5. Klik op een model voor meer informatie. Op de pagina met modeldetails ziet u een lijst met modelversies met aanvullende informatie.

    pagina met modeldetails

Modelaliassen instellen

Een modelalias instellen met behulp van de gebruikersinterface:

  1. Plaats op de pagina met modeldetails de muisaanwijzer op de rij voor de modelversie waaraan u een alias wilt toevoegen. De knop Alias toevoegen wordt weergegeven.
  2. Klik op Alias toevoegen.
  3. Voer een alias in of selecteer een alias in de vervolgkeuzelijst. U kunt meerdere aliassen toevoegen in het dialoogvenster.
  4. Klik op Aliassen opslaan.

Een alias toevoegen aan een modelversie vanaf de pagina met modeldetails.

Een alias verwijderen:

  1. Beweeg de muisaanwijzer over de rij voor de modelversie en klik op het potloodpictogram naast de alias.
  2. Klik in het venster op de X naast de alias die u wilt verwijderen.
  3. Klik op Aliassen opslaan.

Een alias verwijderen uit een modelversie op de pagina met modeldetails.

Modelversiegegevens en modelherkomst weergeven

Als u meer informatie over een modelversie wilt bekijken, klikt u op de naam in de lijst met modellen. De pagina met modelversies wordt weergegeven. Deze pagina bevat een koppeling naar de MLflow-bronuitvoering die de versie heeft gemaakt. In MLflow 3 kunt u ook alle parameters en metrische gegevens weergeven die zijn vastgelegd met het bijbehorende MLflow-logboekmodel.

MLflow 3

Pagina met MLflow 3-modelversie

MLflow 2.x

MLflow 2.x-modelversiepagina

Op deze pagina kunt u de herkomst van het model als volgt bekijken:

  1. Selecteer het tabblad Herkomst. In de linkerzijbalk ziet u onderdelen die met het model zijn gelogd.

    Lijn tab op modelpagina in Catalog Explorer

  2. Klik op Herkomstgrafiek weergeven. De herkomstgrafiek wordt weergegeven. Zie voor meer informatie over het verkennen van de herkomstgrafiek Vastleggen en verkennen van herkomst.

    afstammingsscherm

  3. Als u de herkomstgrafiek wilt sluiten, klikt u op knop Sluiten voor herkomstgrafiek in de rechterbovenhoek.

De naam van een model wijzigen

Vereiste machtigingen: eigenaar van het geregistreerde model, CREATE MODEL bevoegdheden voor het schema met het geregistreerde model en USE SCHEMAUSE CATALOG bevoegdheden voor het schema en de catalogus met het model.

Als u de naam van een geregistreerd model wilt wijzigen, gebruikt u de MLflow Client-API-methode rename_registered_model() , waarbij <full-model-name> de volledige naam van het model op drie niveaus is en <new-model-name> de modelnaam is zonder de catalogus of het schema.

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

Met de volgende code wordt bijvoorbeeld de naam van het model hello_world gewijzigd in hello.

client=MlflowClient()
client.rename_registered_model("docs.models.hello_world", "hello")

Een modelversie kopiëren

U kunt een modelversie van het ene model naar het andere kopiëren in Unity Catalog.

Een modelversie kopiëren met behulp van de gebruikersinterface

Volg vervolgens deze stappen:

  1. Klik op de pagina met modelversies op Deze versie kopiëren in de rechterbovenhoek van de gebruikersinterface.

  2. Selecteer een doelmodel in de vervolgkeuzelijst en klik op Kopiëren.

    Dialoogvenster Modelversie kopiëren

Het kopiëren van een model kan enige tijd in beslag nemen. Als u de voortgang wilt controleren, gaat u naar het doelmodel in Unity Catalog en vernieuwt u periodiek.

Een modelversie kopiëren met behulp van de API

Als u een modelversie wilt kopiëren, gebruikt u de Python-API van MLflow copy_model_version() :

client = MlflowClient()
client.copy_model_version(
  "models:/<source-model-name>/<source-model-version>",
  "<destination-model-name>",
)

Een model of modelversie verwijderen

Vereiste machtigingen: eigenaar van het geregistreerde model, plus USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de catalogus met het model.

U kunt een geregistreerd model of een modelversie binnen een geregistreerd model verwijderen met behulp van de gebruikersinterface of de API.

Waarschuwing

U kunt deze actie niet ongedaan maken. Wanneer u een model verwijdert, worden alle modelartefacten die zijn opgeslagen door Unity Catalog en alle metagegevens die aan het geregistreerde model zijn gekoppeld, verwijderd.

Een modelversie of model verwijderen met behulp van de gebruikersinterface

Als u een model of modelversie in Unity Catalog wilt verwijderen, volgt u deze stappen.

  1. Klik in Catalog Explorer, op de modelpagina of modelversiepagina, op het driepuntjesmenu-pictogram. in de rechterbovenhoek.

    Op de modelpagina:

    modelpagina kebabmenu met verwijderen

    Op de pagina met modelversies:

    kebabmenu voor modelversieversie van pagina met verwijderen

  2. Selecteer Verwijderen.

  3. Er wordt een bevestigingsvenster weergegeven. Klik op Verwijderen om te bevestigen.

Een modelversie of model verwijderen met behulp van de API

Als u een modelversie wilt verwijderen, gebruikt u de methode delete_model_version() van de 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)

Als u een model wilt verwijderen, gebruikt u de methode delete_registered_model() van de MLflow-client-API:

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

Tags gebruiken voor modellen

Tags zijn sleutel-waardeparen die u koppelt aan geregistreerde modellen en modelversies, zodat u ze kunt labelen en categoriseren op functie of status. U kunt bijvoorbeeld een tag met sleutel "task" en waarde "question-answering" (weergegeven in de gebruikersinterface als task:question-answering) toepassen op geregistreerde modellen die zijn bedoeld voor het beantwoorden van taken. Op modelversieniveau kunt u versies taggen die validatie ondergaan voor implementatie met validation_status:pending en degene die zijn goedgekeurd voor implementatie met validation_status:approved.

Vereiste machtigingen: eigenaar van of bevoegd zijn APPLY TAG voor het geregistreerde model, plus USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de catalogus met het model.

Zie Tags toepassen op beveiligbare objecten van Unity Catalog voor meer informatie over het instellen en verwijderen van tags met behulp van de gebruikersinterface.

Zie de onderstaande voorbeelden om tags in te stellen en te verwijderen met behulp van de MLflow Client-API:

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

Zowel geregistreerde model- als modelversietags moeten voldoen aan de platformbrede beperkingen.

Zie de documentatie van de MLflow-API voor meer informatie over tagclient-API's.

Een beschrijving (opmerkingen) toevoegen aan een model of modelversie

Vereiste machtigingen: eigenaar van het geregistreerde model, plus USE SCHEMA en USE CATALOG bevoegdheden voor het schema en de catalogus met het model.

U kunt een tekstbeschrijving opnemen voor elk model of elke modelversie in Unity Catalog. U kunt bijvoorbeeld een overzicht geven van het probleem of informatie over de gebruikte methodologie en het gebruikte algoritme.

Voor modellen hebt u ook de mogelijkheid om door AI gegenereerde opmerkingen te gebruiken. Zie AI-gegenereerde opmerkingen toevoegen aan Unity Catalog-objecten.

Een beschrijving toevoegen aan een model met behulp van de gebruikersinterface

Als u een beschrijving voor een model wilt toevoegen, kunt u door AI gegenereerde opmerkingen gebruiken of uw eigen opmerkingen invoeren. U kunt indien nodig door AI gegenereerde opmerkingen bewerken.

  • Als u automatisch gegenereerde opmerkingen wilt toevoegen, klikt u op de knop AI-genereren .
  • Als u uw eigen opmerkingen wilt toevoegen, klikt u op Toevoegen. Voer uw opmerkingen in het dialoogvenster in en klik op Opslaan.

de knoppen voor de beschrijving van het uc-model

Een beschrijving toevoegen aan een modelversie met behulp van de gebruikersinterface

Voer de volgende stappen uit om een beschrijving toe te voegen aan een modelversie in Unity Catalog:

  1. Klik op de pagina met modelversies op het potloodpictogram onder Beschrijving.

    potloodpictogram om opmerkingen toe te voegen aan een modelversie

  2. Voer uw opmerkingen in het dialoogvenster in en klik op Opslaan.

Een beschrijving toevoegen aan een model of modelversie met behulp van de API

Als u een beschrijving van een geregistreerd model wilt bijwerken, gebruikt u de MLflow Client-API-methode update_registered_model() :

client = MlflowClient()
client.update_registered_model(
  name="<model-name>",
  description="<description>"
)

Als u een beschrijving van een modelversie wilt bijwerken, gebruikt u de update_model_version() methode van de MLflow-client-API:

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

Modellen weergeven en zoeken

Als u een lijst met geregistreerde modellen in Unity Catalog wilt ophalen, gebruikt u de Python-API van MLflow search_registered_models():

client=MlflowClient()
client.search_registered_models()

Als u wilt zoeken naar een specifieke modelnaam en informatie wilt ophalen over de versies van dat model, gebruikt u search_model_versions():

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

Notitie

Niet alle zoek-API-velden en -operators worden ondersteund voor modellen in Unity Catalog. Zie Beperkingen voor details.

Modelbestanden downloaden (geavanceerde use case)

In de meeste gevallen moet u MLflow-API's mlflow.pyfunc.load_model zoals of mlflow.<flavor>.load_model (bijvoorbeeld mlflow.transformers.load_model voor HuggingFace-modellen) gebruiken om modellen te laden.

In sommige gevallen moet u mogelijk modelbestanden downloaden om problemen met modelgedrag of modellaadproblemen op te sporen. U kunt modelbestanden als volgt downloaden:mlflow.artifacts.download_artifacts

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)

Een model promoten in omgevingen

Databricks raadt u aan ML-pijplijnen als code te implementeren. Dit elimineert de noodzaak om modellen in verschillende omgevingen te promoten, omdat alle productiemodellen kunnen worden geproduceerd via geautomatiseerde trainingswerkstromen in een productieomgeving.

In sommige gevallen kan het echter te duur zijn om modellen opnieuw te trainen in verschillende omgevingen. In plaats daarvan kunt u modelversies kopiëren naar geregistreerde modellen in Unity Catalog om ze te promoten in omgevingen.

U hebt de volgende bevoegdheden nodig om de onderstaande voorbeeldcode uit te voeren:

  • USE CATALOG op de staging en prod catalogi.
  • USE SCHEMA op de staging.ml_team en prod.ml_team schema's.
  • EXECUTE op staging.ml_team.fraud_detection.

Daarnaast moet u de eigenaar van het geregistreerde model prod.ml_team.fraud_detectionzijn.

Het volgende codefragment maakt gebruik van de copy_model_versionMLflow Client-API, beschikbaar in MLflow versie 2.8.0 en hoger.

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)

Nadat de modelversie zich in de productieomgeving bevindt, kunt u de benodigde validatie vóór de implementatie uitvoeren. Vervolgens kunt u de modelversie markeren voor implementatie met behulp van aliassen.

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

In het bovenstaande voorbeeld kunnen alleen gebruikers die van het staging.ml_team.fraud_detection geregistreerde model kunnen lezen en naar het prod.ml_team.fraud_detection geregistreerde model kunnen schrijven, modellen in de overgangsfase promoveren naar de productieomgeving. Dezelfde gebruikers kunnen ook aliassen gebruiken om te beheren welke modelversies worden geïmplementeerd in de productieomgeving. U hoeft geen andere regels of beleidsregels te configureren om modelpromotie en -implementatie te beheren.

U kunt deze stroom aanpassen om de modelversie te promoten in meerdere omgevingen die overeenkomen met uw installatie, zoals dev, qaen prod. Toegangsbeheer wordt afgedwongen zoals geconfigureerd in elke omgeving.

voorbeeldnotitieblok

In dit voorbeeldnotebook ziet u hoe u modellen in Unity Catalog-API's kunt gebruiken voor het beheren van modellen in Unity Catalog, waaronder het registreren van modellen en modelversies, het toevoegen van beschrijvingen, het laden en implementeren van modellen, het gebruik van modelaliassen en het verwijderen van modellen en modelversies.

MLflow 3

Modellen in Unity Catalog-voorbeeldnotebook voor MLflow 3

Notebook krijgen

MLflow 2.x

Voorbeeldnotebook met modellen in Unity Catalog

Notebook krijgen

Beperkingen

  • Fasen worden niet ondersteund voor modellen in Unity Catalog. Databricks raadt aan om de naamruimte op drie niveaus in Unity Catalog te gebruiken om de omgeving aan te geven waarin een model zich bevindt en aliassen te gebruiken om modellen voor implementatie te promoten. Zie Niveau verhogen van een model in omgevingen voor meer informatie.
  • Webhooks worden niet ondersteund voor modellen in Unity Catalog. Zie voorgestelde alternatieven in de upgradehandleiding.
  • Sommige zoek-API-velden en -operators worden niet ondersteund voor modellen in Unity Catalog. Dit kan worden verzacht door de zoek-API's aan te roepen met behulp van ondersteunde filters en het scannen van de resultaten. Hier volgen enkele voorbeelden:
    • De order_by-parameter wordt nog niet ondersteund in de search_model_versions of search_registered_models client-API.
    • Filters op basis van tags (tags.mykey = 'myvalue') worden niet ondersteund voor search_model_versions of search_registered_models.
    • Andere operatoren dan exacte gelijkheid (bijvoorbeeld LIKE, ILIKE, !=) worden niet ondersteund voor search_model_versions of search_registered_models.
    • Het zoeken naar geregistreerde modellen op naam (bijvoorbeeld MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") wordt niet ondersteund. Als u een bepaald geregistreerd model op naam wilt ophalen, gebruikt u get_registered_model.
  • E-mailmeldingen en discussiethreads met opmerkingen over geregistreerde modellen en modelversies worden niet ondersteund in Unity Catalog.
  • Het activiteitenlogboek wordt niet ondersteund voor modellen in Unity Catalog. Gebruik auditlogboeken om activiteiten op modellen in Unity Catalog bij te houden.
  • search_registered_models kan verlopen resultaten retourneren voor modellen die worden gedeeld via Delta Sharing. Gebruik de Databricks CLI of SDK om de modellen in een schema weer te geven om ervoor te zorgen dat de meest recente resultaten worden weergegeven.