Delen via


Levenscyclus van modellen beheren in Unity Catalog

Belangrijk

  • Dit artikel documenteert modellen in Unity Catalog, die Databricks aanbeveelt voor het beheren en implementeren van modellen. Als uw werkruimte niet is ingeschakeld voor Unity Catalog, is de functionaliteit op deze pagina niet beschikbaar. Zie In plaats daarvan de levenscyclus van het model beheren met behulp van het werkruimtemodelregister (verouderd). Zie Werkstromen en modellen migreren naar Unity Catalog voor hulp bij het upgraden van het werkruimtemodelregister naar Unity Catalog.
  • Modellen in Unity Catalog zijn niet beschikbaar in Azure Government-regio's.

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 ML-levenscyclusbeheer met behulp van MLflow voor een overzicht van de concepten van modelregisters.

Vereisten

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

  2. U moet een rekenresource gebruiken die toegang heeft tot Unity Catalog. Voor ML-workloads betekent dit dat de toegangsmodus voor de berekening één gebruiker moet zijn. Zie Access-modi voor meer informatie.

  3. 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 bevoegdheid voor het schema. Als u deze bevoegdheid wilt verlenen, gebruikt u de gebruikersinterface van Catalog Explorer of de volgende SQL GRANT-opdracht:
    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

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 een oudere metastore uitvoert, volgt u de documenten om een upgrade uit te voeren.

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

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), worden modellen automatisch gemaakt en geladen vanuit de standaardcatalogus. U hoeft deze stap niet uit te voeren.

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 CATALOG bevoegdheden hebben USE SCHEMA voor het schema en de catalogus met het model.

ML-modelversies in UC moeten een modelhandtekening hebben. Als u MLflow-modellen nog niet met handtekeningen in uw werkbelastingen voor modeltrainingen aanmeldt, 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>.

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

In de voorbeelden van modeltraining in deze sectie maakt u een nieuwe modelversie en registreert u deze in de prod catalogus. 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.

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.register_model(
  "runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)

Een model registreren bij Unity Catalog met automatisch uitgestelde handtekening

Ondersteuning voor automatisch uitgestelde 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.

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

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.

Modellen implementeren met aliassen

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 voor modellen in Unity Catalog instellen, bijwerken en verwijderen met behulp van Catalog Explorer. U kunt aliassen beheren voor een geregistreerd model op de pagina met modeldetails en aliassen configureren voor een specifieke modelversie op de pagina met details van de modelversie.

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 op alias voor deductieworkloads

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 onderstaande codefragment wordt geladen en past de modelversie 'Champion' toe voor batchdeductie. 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 voor eindpunten kan ook verwijzen naar een modelversie per 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 op versienummer voor deductieworkloads

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 stroom voor delen van Delta Sharing Databricks-to-Databricks. 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, hebt u op dezelfde manier toegang tot modellen in die gedeelde catalogus als elk ander model in Unity Catalog.

De gegevensherkomst van een model bijhouden in Unity Catalog

Notitie

Ondersteuning voor tabelherkomst 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 van de gebruikersinterface van de modelversie in Catalog Explorer.

De volgende code laat een voorbeeld zien.

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

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 GRANT ON FUNCTIONu . Zie Unity Catalog-bevoegdheden en beveiligbare objecten voor meer informatie. Zie Uw gegevens ordenen voor aanbevolen procedures voor het ordenen van modellen in verschillende catalogi en schema's.

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 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 in Unity Catalog bekijken en beheren met behulp van De Catalogusverkenner.

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 SCHEMA USE CATALOG bevoegdheden voor het schema en de catalogus met het model.

Als u de naam van een geregistreerd model wilt wijzigen, gebruikt u de methode rename_registered_model() van de MLflow-client-API:

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

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 van Catalog Explorer 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 op de pagina van de modelpagina of modelversie op het menu Menu VanGelezen van de version van het model in de rechterbovenhoek.

    Op de modelpagina:

    menu modelpagina-pagina met verwijderen

    Op de pagina met modelversies:

    menu van modelversie van de pagina-sdk 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 validation_status:pending vóór de implementatie ondergaan en versies die zijn gewist 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 toevoegen en bijwerken met Behulp van Catalog Explorer voor 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 Door 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 de beschrijving van een modelversie wilt bijwerken, gebruikt u de methode update_model_version() 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 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_version MLflow 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 lezen en schrijven naar het prod.ml_team.fraud_detection geregistreerde model, faseringsmodellen 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.

Opmerking

In dit voorbeeld ziet u hoe u modellen in Unity Catalog gebruikt om een machine learning-toepassing te bouwen.

Voorbeeld van modellen in Unity Catalog

Werkstromen en modellen migreren naar Unity Catalog

Databricks raadt het gebruik van modellen in Unity Catalog aan voor verbeterde governance, eenvoudig delen tussen werkruimten en omgevingen en flexibelere MLOps-werkstromen. In de tabel worden de mogelijkheden van het werkruimtemodelregister en de Unity-catalogus vergeleken.

Mogelijkheid Werkruimtemodelregister (verouderd) Modellen in Unity Catalog (aanbevolen)
Referentiemodelversies met benoemde aliassen Modelregisterfasen: verplaats modelversies naar een van de vier vaste fasen om ernaar te verwijzen in die fase. Kan de namen van fasen niet wijzigen of toevoegen. Modelregisteraliassen: maak maximaal 10 aangepaste en opnieuw toegewezen benoemde verwijzingen naar modelversies voor elk geregistreerd model.
Door toegang beheerde omgevingen maken voor modellen Modelregisterfasen: gebruik fasen binnen één geregistreerd model om de omgeving van de modelversies aan te geven, met toegangsbeheer voor slechts twee van de vier vaste fasen (Staging en Production). Geregistreerde modellen: Maak een geregistreerd model voor elke omgeving in uw MLOps-werkstroom, met behulp van naamruimten op drie niveaus en machtigingen van Unity Catalog om governance uit te drukken.
Modellen promoten in omgevingen (model implementeren) Gebruik de transition_model_version_stage() MLflow-client-API om een modelversie te verplaatsen naar een andere fase, mogelijk belangrijke werkstromen die verwijzen naar de vorige fase. Gebruik de copy_model_version() MLflow Client-API om een modelversie van het ene geregistreerde model naar het andere te kopiëren.
Modellen in werkruimten openen en delen Exporteer en importeer modellen handmatig in werkruimten of configureer verbindingen met externe modelregisters met behulp van persoonlijke toegangstokens en werkruimtegeheimbereiken. Out-of-the-box-toegang tot modellen in werkruimten in hetzelfde account. Er is geen configuratie vereist.
Machtigingen configureren Machtigingen instellen op werkruimteniveau. Stel machtigingen in op accountniveau, waarmee consistent beheer voor werkruimten wordt toegepast.
Access-modellen in de Databricks-markplace Onbeschikbaar. Laad modellen uit de Databricks-marketplace in uw Unity Catalog-metastore en open ze in werkruimten.

In de onderstaande artikelen wordt beschreven hoe u werkstromen (modeltraining en batchdeductietaken) en modellen van het werkruimtemodelregister naar Unity Catalog migreert.

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 niet ondersteund in de search_model_versions - of search_registered_models client-API's.
    • 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.