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 Catalogvoor hulp bij het upgraden van het werkruimtemodelregister naar Unity Catalog.
- Modellen in Unity Catalog is niet beschikbaar in Azure Government-regio's.
In dit artikel wordt beschreven hoe u modellen gebruikt in Unity Catalog als onderdeel van uw machine learning-werkstroom om de volledige levenscyclus van ML-modellen te beheren. Databricks biedt een gehoste versie van het MLflow-modelregister in Unity-Catalog. Modellen in Unity Catalog breidt de voordelen van Unity Catalog uit naar ML-modellen, waaronder gecentraliseerd toegangsbeheer, controle, herkomst en modeldetectie in werkruimten. Modellen in Unity Catalog is compatibel met de opensource-MLflow Python-client.
Zie MLflow voor gen AI-agent en ML-Modellevenscyclusvoor een overzicht van de concepten van modelregisters.
Vereisten
Unity Catalog moet ingeschakeld zijn in uw werkruimte. Zie Get zijn begonnen met het gebruik van Unity Catalog om een Unity Catalog Metastore te maken, deze in te schakelen in een werkruimte en een catalogte 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 voor de berekening één gebruiker moet zijn. 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
enUSE CATALOG
bevoegdheden voor de schema en het insluiten van catalog. -
CREATE_MODEL
privilege op de schema. Als u deze bevoegdheid wilt grant, 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
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 gebruiken in Unity Catalog op 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 standaard-catalog van uw werkruimte zich in Unity Catalog bevindt (in plaats van hive_metastore
) 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 standaard-catalog. 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 where zowel de standaard-catalog is geconfigureerd voor een catalog in Unity Catalog vóór januari 2024 en het register van het werkruimtemodel vóór januari 2024 is gebruikt, moet u de standaard set handmatig catalog voor Unity Catalog met behulp van de bovenstaande opdracht.
Unity Catalog-compatibele modellen trainen en registreren
machtigingen die zijn vereist: als u een nieuw geregistreerd model wilt maken, hebt u de CREATE_MODEL
- en USE SCHEMA
bevoegdheden voor het insluiten van schemaen USE CATALOG
bevoegdheden voor het insluiten van catalognodig. Als u nieuwe modelversies wilt maken onder een geregistreerd model, moet u de eigenaar van het geregistreerde model zijn en USE SCHEMA
en USE CATALOG
bevoegdheden hebben voor de schema en catalog die het model bevatten.
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 de ml_team
schema onder de prod
catalog.
In de voorbeelden van modeltraining in deze sectie maakt u een nieuwe modelversie en registreert u deze in de prod
catalog. Het gebruik van de prod
catalog betekent niet per se dat de modelversie productieverkeer bedient. De modelversie die catalog, schemaen het geregistreerde model omsluit, weerspiegelt de omgeving (prod
) en de bijbehorende governanceregels (bijvoorbeeld bevoegdheden kunnen worden set, zodat alleen beheerders de prod
catalogkunnen verwijderen), maar niet de implementatiestatus. Gebruik modelaliassen om de implementatiestatus te beheren.
Een model registreren bij Unity Catalog met behulp van autologging
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 afgeleide ondertekening
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:
Klik op de uitvoeringspagina van het experiment op Model registreren in de rechterbovenhoek van de gebruikersinterface.
In het dialoogvenster selectUnity Catalogen select een doelmodel uit de vervolgkeuzelijst list.
Klik op Registreren.
Het registreren van een model kan enige tijd in beslag nemen. Als u de voortgang wilt controleren, gaat u regelmatig naar het doelmodel in Unity Catalog en refresh.
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 update door de alias “Champion” opnieuw toe te wijzen aan een andere modelversie.
Set en aliassen op modellen verwijderen
vereiste machtigingen: Eigenaar van het geregistreerde model, plus USE SCHEMA
- en USE CATALOG
-bevoegdheden voor de schema en catalog die het model bevatten.
U kunt set, updateen remove aliassen voor modellen in Unity Catalog 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 te set, te updateen 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
machtigingen zijn vereist: EXECUTE
bevoegdheid voor het geregistreerde model, plus USE SCHEMA
en USE CATALOG
bevoegdheden voor de schema en catalog die het model bevatten.
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 uitrolwerkstromen schrijven om een modelversie te get via een alias en een eindpunt voor modelbediening te update voor die versie, met behulp van de modelbeheer REST API. 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
catalog 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 grant voor een groep met uzelf en de gebruikers waarmee u wilt samenwerken. Medewerkers moeten ook de USE CATALOG
- en USE SCHEMA
-bevoegdheden hebben op de catalog en schema die het model bevatten. 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 Get in het Databricks-naar-Databricks-model (voor recipients). Als ontvanger hebt u, nadat u een catalog hebt gemaakt op basis van een share, toegang tot modellen in die gedeelde catalog op dezelfde manier als bij elk ander model in Unity Catalog.
De gegevensherkomst van een model bijhouden in Unity Catalog
Notitie
Ondersteuning voor table voor modeloorsprong in Unity Catalog is beschikbaar in MLflow 2.11.0 en hoger.
Wanneer u een model traint op een table 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 wordt de informatie van invoer table opgeslagen tijdens 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 worden deze weergegeven 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 Catalogzijn geregistreerde modellen een subtype van het FUNCTION
beveiligbaar object. Als u toegang wilt grant tot een model dat is geregistreerd in Unity Catalog, gebruikt u GRANT ON FUNCTION
. Zie Unity-Catalog-bevoegdheden en beveiligbare objectenvoor meer informatie. Zie catalogsvoor aanbevolen procedures voor het ordenen van modellen in en schema's.
U kunt modelmachtigingen programmatisch configureren met behulp van de Grant REST API. Wanneer u modelmachtigingen configureert, betreft dit setsecurable_type
tot "FUNCTION"
in REST API-aanvragen. Gebruik bijvoorbeeld modelmachtigingen van PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
tot update.
Modellen weergeven in de gebruikersinterface
machtigingen die zijn vereist: als u een geregistreerd model en de bijbehorende modelversies in de gebruikersinterface wilt weergeven, hebt u EXECUTE
bevoegdheid nodig voor het geregistreerde model, plus USE SCHEMA
en USE CATALOG
bevoegdheden voor de schema en catalog met het model
U kunt geregistreerde modellen en modelversies bekijken en beheren in Unity Catalog met behulp van de Catalog Explorer-.
De naam van een model wijzigen
machtigingen vereist: eigenaar van het geregistreerde model, CREATE_MODEL
bevoegdheid voor de schema die het geregistreerde model bevat, en USE SCHEMA
en USE CATALOG
bevoegdheden voor de schema en catalog die het model bevatten.
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:
Klik op de pagina met modelversies op Deze versie kopiëren in de rechterbovenhoek van de gebruikersinterface.
Select Selecteer een doelmodel in de vervolgkeuzelijst list en klik op Kopiëren.
Het kopiëren van een model kan enige tijd in beslag nemen. Als u de voortgang wilt controleren, gaat u regelmatig naar het doelmodel in Unity Catalog en refresh.
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 de schema en catalog die het model bevatten.
U kunt een geregistreerd model of een modelversie in 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 Catalogwilt verwijderen, volgt u deze stappen.
Klik op de pagina van de modelpagina of modelversie op het menu
van de version van het model in de rechterbovenhoek.
Op de modelpagina:
Op de pagina met modelversies:
Select verwijderen.
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
.
machtigingen zijn vereist: eigenaar van of APPLY_TAG
bevoegdheid hebben voor het geregistreerde model, plus USE SCHEMA
- en USE CATALOG
bevoegdheden voor de schema en catalog die het model bevatten.
Zie Tags toevoegen en update met behulp van Catalog Explorer- over het set en verwijderen van tags met behulp van de gebruikersinterface.
Zie de onderstaande voorbeelden voor het set en verwijderen van tags met 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 de schema en catalog die het model bevatten.
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-generate.
- Als u uw eigen opmerkingen wilt toevoegen, klikt u op Toevoegen. Voer uw opmerkingen in het dialoogvenster in en klik op Opslaan.
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:
Klik op de pagina met modelversies op het potloodpictogram onder Beschrijving.
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 geregistreerde modelbeschrijving wilt update, gebruikt u de MLflow-client-API update_registered_model()
methode:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Voor het update van een modelversiebeschrijving 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>"
)
List en zoekmodellen
Als u een get met geregistreerde modellen in Unity listwilt Catalog, gebruikt u de search_registered_models() Python-API van MLflow:
client=MlflowClient()
client.search_registered_models()
Als u wilt zoeken naar een specifieke modelnaam en get informatie 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 in verschillende omgevingen te promoten.
U hebt de volgende bevoegdheden nodig om de onderstaande voorbeeldcode uit te voeren:
-
USE CATALOG
op destaging
enprod
catalogs. -
USE SCHEMA
op destaging.ml_team
enprod.ml_team
schema's. -
EXECUTE
opstaging.ml_team.fraud_detection
.
Daarnaast moet u de eigenaar van het geregistreerde model prod.ml_team.fraud_detection
zijn.
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
, qa
en prod
. Toegangsbeheer wordt afgedwongen zoals geconfigureerd in elke omgeving.
voorbeeldnotitieblok
In dit voorbeeldnotebook ziet u hoe u modellen gebruikt in Unity Catalog API's 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.
Modellen in Unity Catalog voorbeeldnotebook
Werkstromen en modellen migreren naar Unity Catalog
Databricks raadt aan modellen te gebruiken in Unity Catalog voor verbeterde governance, eenvoudig delen tussen werkruimten en omgevingen en flexibelere MLOps-werkstromen. De table vergelijkt de mogelijkheden van het Werkruimte Modelregister en Unity-Catalog.
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 over werkruimten of configureer connections voor externe modelregisters met behulp van persoonlijke toegangstokens en werkruimtegeheimenbereiken. | Out-of-the-box-toegang tot modellen in werkruimten in hetzelfde account. Er is geen configuratie vereist. |
Machtigingen configureren | Set-machtigingen op werkruimteniveau. | Set machtigingen op accountniveau, waarmee consistente governance in werkruimten wordt toegepast. |
Toegang tot modellen in de Databricks Marketplace | Onbeschikbaar. | Laad modellen uit de Databricks-marketplace in uw Unity Catalog metastore en krijg er toegang toe via verschillende werkruimtes. |
In de onderstaande artikelen wordt beschreven hoe u werkstromen (modeltrainings- en batchdeductietaken) en modellen uit het werkruimtemodelregister migreert naar Unity Catalog.
Beperkingen
- Fasen worden niet ondersteund voor modellen in Unity Catalog. Databricks raadt het gebruik van de naamruimte op drie niveaus in Unity Catalog aan om de omgeving uit te drukken waarin een model zich bevindt en het gebruik van aliassen 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 voorsearch_model_versions
ofsearch_registered_models
. - Andere operatoren dan exacte gelijkheid (bijvoorbeeld
LIKE
,ILIKE
,!=
) worden niet ondersteund voorsearch_model_versions
ofsearch_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.
- De
- 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. Als u activiteiten op modellen in Unity Catalogwilt bijhouden, gebruikt u auditlogboeken.
-
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 listte schema, zodat de meest recente resultaten worden gegarandeerd.