Modell életciklusának kezelése a Unity Katalógusban

Fontos

Ez a cikk bemutatja, hogyan használhat modelleket a Unity Catalogban a gépi tanulási munkafolyamat részeként az ML-modellek teljes életciklusának kezeléséhez. A Databricks az MLflow modellregisztrációs adatbázis egy üzemeltetett verzióját biztosítja a Unity Catalogban. A Unity Catalog modelljei kiterjesztik a Unity Catalog előnyeit az ML-modellekre, beleértve a központosított hozzáférés-vezérlést, a naplózást, a leágazást és a modellfelderítést a munkaterületeken. A Unity Catalog modelljei kompatibilisek a nyílt forráskódú MLflow Python-ügyféllel.

A Modellregisztrációs adatbázis fogalmainak áttekintését lásd: MLflow on Databricks.

Az MLflow 3 jelentős fejlesztéseket tesz lehetővé az MLflow modellregisztrációs adatbázisában a Unity Katalógusban, így a modellek közvetlenül rögzíthet adatokat, például paramétereket és metrikákat, és elérhetővé tehetik őket az összes munkaterületen és kísérletben. Az MLflow 3 alapértelmezett beállításjegyzék-URI-ja az databricks-uc, ami azt jelenti, hogy a Rendszer a Unity Katalógus MLflow-modellregisztrációs adatbázisát fogja használni. További részletekért tekintse meg az MLflow 3 használatának első lépéseit a modellekhez és a Modellregisztrációs adatbázis MLflow 3-val kapcsolatos fejlesztéseit.

Követelmények

  • A Unity-katalógust engedélyezni kell a munkaterületen. Tekintse meg a Unity Catalog használatának első lépéseit egy Unity Catalog Metastore létrehozásához, engedélyezéséhez egy munkaterületen, és egy katalógus létrehozásához. Ha a Unity Catalog nincs engedélyezve, használja a munkaterület-modell beállításjegyzékét.

  • Olyan számítási erőforrást kell használnia, amely hozzáfér a Unity-katalógushoz. Az ml-számítási feladatok esetében ez azt jelenti, hogy a számítási módnak dedikáltnak (korábban egyfelhasználósnak) kell lennie. További információt az Access módokat ismertető cikkben talál. A Databricks Runtime 15.4 LTS ML és újabb verziók esetén dedikált csoporthozzáférési módot is használhat.

  • Új regisztrált modellek létrehozásához a következő jogosultságokra van szüksége:

    • USE SCHEMA és USE CATALOG hozzáférési jogok a sémán és a hozzá tartozó katalóguson.
    • CREATE MODEL vagy CREATE FUNCTION jogosultság a sémára. Jogosultságok megadásához használja a Catalog Explorer felhasználói felületét vagy az SQL-parancsotGRANT:
    GRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal>
    
  • Ha engedélyezési problémákba ütközik egy modell regisztrálásakor, próbálja meg beállítani a környezeti változót MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC a következőre True: . Helyezzen el egy cellát a jegyzetfüzetben a következő kóddal:

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

    Ez a módszer nem használható az alapértelmezett tárterületet használó Delta Sharing szolgáltatással megosztott modellekhez.

Feljegyzés

A munkaterületet egy olyan Unity Catalog-metaadattárhoz kell csatolni, amely támogatja a jogosultságöröklést. Ez a 2022. augusztus 25. után létrehozott összes metaadattárra igaz. Ha régebbi metaadattárban fut, a frissítéshez kövesse a dokumentumokat .

MLflow-ügyfél telepítése és konfigurálása a Unity Cataloghoz

Ez a szakasz útmutatást tartalmaz az MLflow-ügyfél Unity Cataloghoz való telepítéséhez és konfigurálásához.

MLflow Python-ügyfél telepítése

A Unity Catalog modelljeinek támogatása a Databricks Runtime 13.2 ML és újabb verziókban (Databricks Runtime 15.0 ML és újabb verziók az Azure China-ban).

A Unity Catalogban a Databricks Runtime 11.3 LTS és újabb verzióiban is használhat modelleket az MLflow Python-ügyfél legújabb verziójának a jegyzetfüzetbe való telepítésével, az alábbi kód használatával.

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

MLflow-ügyfél konfigurálása modellek elérésére a Unity Katalógusban

Ha a munkaterület alapértelmezett katalógusa a Unity Katalógusban található (nem hive_metastore), és a Databricks Runtime 13.3 LTS vagy újabb verzióját (Databricks Runtime 15.0 vagy újabb az Azure China régióban) vagy az MLflow 3-at használja, a modellek automatikusan létrejönnek és betöltenek az alapértelmezett katalógusból.

Más munkaterületek esetében az MLflow Python-ügyfél modelleket hoz létre a Databricks-munkaterületi modellregisztrációs adatbázisban. A Unity Catalog modelljeire való frissítéshez használja a jegyzetfüzetek következő kódját az MLflow-ügyfél konfigurálásához:

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

Azon munkaterületek kis száma esetén, ahol az alapértelmezett katalógus 2024 januárja előtt lett konfigurálva a Unity Katalógus katalógusára, és a munkaterület-modell beállításjegyzékét 2024 januárja előtt használták, manuálisan kell beállítania az alapértelmezett katalógust Unity Catalogra a fent látható paranccsal.

Unity Catalog-kompatibilis modellek betanítása és regisztrálása

Engedélyek szükségesek: Új regisztrált modell létrehozásához szüksége van a CREATE MODELUSE SCHEMA beágyazási sémán lévő jogosultságokra és USE CATALOG jogosultságokra a beágyazási katalógusban. Ha új modellverziókat szeretne létrehozni egy regisztrált modellben, a regisztrált modell tulajdonosának kell lennie, és USE SCHEMA és USE CATALOG jogosultságokkal kell rendelkeznie a modellt tartalmazó sémában és katalógusban.

Ha engedélyezési problémákba ütközik egy modell regisztrálásakor, próbálja meg beállítani a környezeti változót MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC a következőre True: . Ez a módszer nem használható az alapértelmezett tárterületet használó Delta Sharing szolgáltatással megosztott modellekhez. Lásd: Követelmények.

Az UC új ML-modellverzióinak rendelkezniük kell modellaláírással. Ha még nem naplózza az MLflow-modelleket aláírásokat tartalmazóan a modellbetanítási munkafolyamatok során, akkor a következőket teheti:

  • Használja a Databricks automatikus naplózását, amely automatikusan naplózza a modelleket aláírásokkal számos népszerű ML-keretrendszerhez. Tekintse meg a támogatott keretrendszereket az MLflow-dokumentációban.
  • Az MLflow 2.5.0-s vagy újabb verziója esetén megadhat egy bemeneti példát a mlflow.<flavor>.log_model hívásban, és a modell aláírása automatikusan kikövetkeztethető. További információkért tekintse meg az MLflow dokumentációját.

Ezután adja meg a modell háromszintű nevét az MLflow API-knak az űrlapon <catalog>.<schema>.<model>.

Az aláírásokkal nem rendelkező modellverziókra bizonyos korlátozások vonatkoznak. A korlátozások listájáért, valamint egy meglévő modellverzió aláírásának hozzáadásához vagy frissítéséhez lásd: Aláírás hozzáadása vagy frissítése meglévő modellverzióhoz.

Az ebben a szakaszban szereplő példák a ml_team katalógus alatti prod sémában hoznak létre és érnek el modelleket.

Az ebben a szakaszban szereplő modellbetanítási példák létrehoznak egy új modellverziót, és regisztrálják azt a prod katalógusban. prod A katalógus használata nem feltétlenül jelenti azt, hogy a modellverzió az üzemi forgalmat szolgálja ki. A modellverzió katalógust, sémát és regisztrált modellt tartalmazó modellje a környezetét (prod) és a kapcsolódó szabályozási szabályokat tükrözi (például a jogosultságok beállíthatók úgy, hogy csak a rendszergazdák törölhessenek a prod katalógusból), de az üzembe helyezés állapotát nem. Az üzembe helyezés állapotának kezeléséhez használja a modell aliasát.

Modell regisztrálása a Unity-katalógusba automatikus kitöltéssel

Modell regisztrálásához használja az MLflow Client API-metódust register_model() . Lásd : 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")

Modell regisztrálása az API-val

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

Modell regisztrálása a Unity katalógusban automatikusan származtatott aláírással

Az automatikusan levezetett aláírások támogatása az MLflow 2.5.0 és újabb verzióiban érhető el, és a Databricks Runtime 11.3 LTS ML és újabb verzióiban is támogatott. Ha automatikusan levezetett aláírásokat szeretne használni, a következő kóddal telepítse a legújabb MLflow Python-ügyfelet a jegyzetfüzetében:

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

Az alábbi kód egy automatikusan kikövetkeztetett függvény aláírásra mutat példát. Vegye figyelembe, hogy a registered_model_name használata a log_model() hívásban regisztrálja a modellt a Unity Catalogban, ezért meg kell adnia a modell teljes háromszintű nevét a <catalog>.<schema>.<model> formátumban.

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

Modell regisztrálása a felhasználói felületen

Tegye a következők egyikét:

  1. A kísérletfuttatási lapon kattintson a Modell regisztrálása elemre a felhasználói felület jobb felső sarkában.

  2. A párbeszédpanelen válassza a Unity-katalógust, és válasszon ki egy célmodellt a legördülő listából.

    Modellverzió regisztrálása legördülő menüs párbeszédpanel

  3. Kattintson a Regisztráció gombra.

    Párbeszédpanel gomb a modellverzió regisztrálásához

A modell regisztrálása időt vehet igénybe. Az előrehaladás figyeléséhez keresse meg a célmodellt a Unity Catalogban, és rendszeresen frissítsen.

Aláírás hozzáadása vagy frissítése meglévő modellverzióhoz

Az aláírásokkal nem rendelkező modellverziókra a következő korlátozások vonatkoznak:

  • Ha aláírást ad meg, a modell bemeneteit a rendszer a következtetés alapján ellenőrzi, és hibaüzenet jelenik meg, ha a bemenetek nem egyeznek az aláírással. Aláírás nélkül nincs automatikus bemeneti kényszerítés, és a modelleknek képesnek kell lenniük a váratlan bemenetek kezelésére.
  • A modellverzió AI-függvényekkel való használatához sémát kell megadni a függvényhívásban.
  • A modellverzió modellkiszolgálóval való használata nem hoz létre automatikusan bemeneti példákat.

Modellverzió-aláírás hozzáadásához vagy frissítéséhez tekintse meg az MLflow dokumentációját.

Modell aliasainak használata

A modell aliasai lehetővé teszik, hogy egy regisztrált modell egy adott verziójára mutató, névvel ellátott táblát rendeljen hozzá. Aliasokkal jelezheti a modellverzió üzembehelyezési állapotát. Lefoglalhat például egy "Champion" aliast az éles környezetben lévő modellverzióhoz, és ezt az aliast az éles modellt használó számítási feladatokban célozhatja meg. Ezután frissítheti az éles modellt úgy, hogy a "Champion" aliast egy másik modellverzióhoz rendeli.

Aliasok beállítása és törlése modelleken

Szükséges engedélyek: A regisztrált modell tulajdonosa, valamint USE SCHEMAUSE CATALOG a modellt tartalmazó séma és katalógus jogosultságai.

A Unity Katalógusban beállíthatja, frissítheti és eltávolíthatja a modellek aliasát a Catalog Explorerrel. Lásd: Modellek megtekintése és kezelése a felhasználói felületen.

Az aliasok MLflow Client API használatával történő beállításához, frissítéséhez és törléséhez tekintse meg az alábbi példákat:

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

Az aliasügyfél API-kkal kapcsolatos további részletekért tekintse meg az MLflow API dokumentációját.

Modellverzió betöltése alias alapján a következtetési számítási feladatokhoz

Szükséges engedélyek: EXECUTE a regisztrált modell jogosultságai, valamint USE SCHEMAUSE CATALOG a modellt tartalmazó séma és katalógus jogosultságai.

A kötegelt következtetési feladatok alias alapján hivatkozhatnak a modellverzióra. Az alábbi kódrészlet betölti és alkalmazza a "Champion" modellverziót a tételes következtetésekre. Ha a "Champion" verzió frissítve van, hogy hivatkozzon egy új modellverzióra, a kötegelt következtetési számítási feladat automatikusan felveszi azt a következő végrehajtáskor. Ez lehetővé teszi, hogy elválassza a modelltelepítéseket a kötegelt következtetési munkafolyamatoktól.

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)

A végpontokat kiszolgáló modell alias alapján is hivatkozhat a modellverzióra. Az üzembehelyezési munkafolyamatok írásával alias alapján lekérheti a modellverziót, és frissítheti a modellt kiszolgáló végpontot az adott verzió kiszolgálásához a REST API-kiszolgáló modell használatával. Példa:

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

Modellverzió betöltése verziószám alapján a következtetési számítási feladatokhoz

A modellverziókat verziószám alapján is betöltheti:

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)

Modellek megosztása munkaterületek között

Modellek megosztása ugyanabban a régióban lévő felhasználókkal

Mindaddig, amíg rendelkezik a megfelelő jogosultságokkal, a Unity Katalógusban lévő modelleket bármely olyan munkaterületről elérheti, amely a modellt tartalmazó metaadattárhoz van csatolva. Például egy fejlesztői munkaterület prod katalógusából érheti el a modelleket, hogy megkönnyítse az újonnan kifejlesztett modellek és az éles alapkonfiguráció összehasonlítását.

Ha más felhasználókkal szeretne együttműködni (írási jogosultságok megosztása) egy ön által létrehozott regisztrált modellen, meg kell adnia a modell tulajdonjogát egy olyan csoportnak, amely saját magát és azokat a felhasználókat tartalmazza, akivel együtt szeretne dolgozni. A közreműködőknek USE CATALOG és USE SCHEMA jogosultságokkal is rendelkezniük kell a modellt tartalmazó katalógusban és sémában. Részletekért tekintse meg a Unity Catalog jogosultságokra vonatkozó hivatkozását .

Modellek megosztása másik régióban vagy fiókban lévő felhasználókkal

A modellek más régiókban vagy fiókokban lévő felhasználókkal való megosztásához használja a Delta Sharing Databricks-to-Databricks megosztási folyamatot. Lásd: Modellek hozzáadása megosztáshoz (szolgáltatóknak) és hozzáférés kérése a Databricks-to-Databricks modellben (címzettek számára). Címzettként, miután létrehozott egy katalógust egy megosztásból, a megosztott katalógusban lévő modelleket ugyanúgy érheti el, mint a Unity Catalog bármely más modelljét.

Modell adatsorának nyomon követése a Unity Katalógusban

Feljegyzés

A táblázat és modell közötti kapcsolat támogatása a Unity Katalógusban az MLflow 2.11.0 vagy újabb verzióiban érhető el.

Amikor betanít egy modellt egy táblára a Unity Catalogban, nyomon követheti a modell származását azokon a forrásadatkészleteken, amelyeken betanították és kiértékelték. Ehhez használja a mlflow.log_inputot. Ez elmenti a bemeneti tábla adatait azzal az MLflow-futtatással, amely létrehozta a modellt. A rendszer automatikusan rögzíti az adatsorokat a funkciótár API-kkal naplózott modellekhez is. Lásd: Funkciószabályozás és -leállás.

Amikor regisztrálja a modellt a Unity Catalogban, a rendszer automatikusan menti a termékinformációkat, és azok a Katalóguskezelő modellverzió lapján, a Lineage lapon jelennek meg. Lásd: A modell verzióadatainak és a származási adatainak megtekintése.

Az alábbi kód erre mutat egy példát.

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

A modellek hozzáférésének szabályozása

A Unity Katalógusban a regisztrált modellek a FUNCTION biztonságos objektum altípusai. A Unity Catalogban regisztrált modellhez való hozzáférés engedélyezéséhez használja a GRANT ON FUNCTION. A Katalóguskezelővel a modell tulajdonjogát és engedélyeit is beállíthatja. További részletekért lásd: Jogosultságok kezelése a Unity Catalogban és a Unity Catalog objektummodelljében.

A modellengedélyeket programozott módon konfigurálhatja a Grants REST API használatával. A modellengedélyek konfigurálásakor állítsa securable_type-t "FUNCTION"-re a REST API-kérésekben. Például a PATCH /api/2.1/unity-catalog/permissions/function/{full_name} használatával frissítheti a regisztrált modellengedélyeket.

Modellek megtekintése és kezelése a felhasználói felületen

Szükséges engedélyek: A regisztrált modell és modellverzióinak felhasználói felületen való megtekintéséhez jogosultságra van szüksége EXECUTE a regisztrált modellen, valamint USE SCHEMAUSE CATALOG a modellt tartalmazó sémán és katalóguson lévő jogosultságokra.

A Katalóguskezelővel megtekintheti és kezelheti a regisztrált modelleket és modellverziókat a Unity Katalógusban.

Modelladatok megtekintése

Modellek megtekintése a Catalog Explorerben:

  1. Kattintson az Adatok ikonra.Katalógus az oldalsávon.

  2. Válasszon ki egy számítási erőforrást a jobb felső legördülő listából.

  3. A katalóguskezelő bal oldali fájában nyisson meg egy katalógust, és válasszon egy sémát.

  4. Ha a séma tartalmaz modelleket, azok megjelennek a Modellek alatti fában, ahogy az látható.

    A katalóguskezelő fa modellekkel foglalkozó szakasza.

  5. További információkért kattintson egy modellre. A Modell részletei lapon a modellverziók listája látható további információkkal.

    modell részleteinek lapja

Modell aliasainak beállítása

Modellalias beállítása a felhasználói felületen:

  1. A modell részletei lapon vigye az egérmutatót annak a modellverziónak a sorára, amelyhez aliast szeretne hozzáadni. Megjelenik az Alias hozzáadása gomb.
  2. Kattintson az Alias hozzáadása elemre.
  3. Adjon meg egy aliast, vagy válasszon egyet a legördülő menüből. A párbeszédpanelen több aliast is hozzáadhat.
  4. Kattintson az Aliasok mentése gombra.

Hogyan adhatunk hozzá alias-t egy modell verziójához a modell részletek oldalán.

Alias eltávolítása:

  1. Vigye az egérmutatót a modellverzió sora fölé, és kattintson a név melletti ceruza ikonra.
  2. A párbeszédpanelen kattintson az X eltávolítani kívánt alias melletti elemre.
  3. Kattintson az Aliasok mentése gombra.

Hogyan lehet eltávolítani egy álnevet a modellverzióról a modell részleteinek oldalán.

Modellverzió adatainak és modelléletvonalának megtekintése

A modellverzióval kapcsolatos további információk megtekintéséhez kattintson a nevére a modellek listájában. Megjelenik a modellverzió lapja. Ez a lap a verziót létrehozó MLflow-forrásfuttatásra mutató hivatkozást tartalmaz. Az MLflow 3-ban a megfelelő MLflow naplózott modellel naplózott összes paramétert és metrikát is megtekintheti.

MLflow 3

Az MLflow 3 modell verziólapja

MLflow 2.x

MLflow 2.x modell verziólapja

Ezen a lapon az alábbiak szerint tekintheti meg a modell életútját:

  1. Válassza a Lineage lapot. A bal oldali oldalsáv a modellel naplózott összetevőket jeleníti meg.

    A Katalóguskezelő modelloldalának Vonalasság lapja

  2. Kattintson a Vonaldiagram megtekintése gombra. Megjelenik az életútdiagram. A származási gráf feltárásával kapcsolatos részletekért lásd: Rögzítés és a leszármazás feltárása.

    vonalas képernyő

  3. A vonaldiagram bezárásához kattintson a jobb felső sarokban található vonaldiagram bezárás gombjára.

Modell átnevezése

Szükséges engedélyek: A regisztrált modell tulajdonosa, CREATE MODEL a regisztrált modellt tartalmazó séma jogosultsága, valamint USE SCHEMAUSE CATALOG a modellt tartalmazó séma és katalógus jogosultságai.

Regisztrált modell átnevezéséhez használja az MLflow Ügyfél API-metódust rename_registered_model() , ahol <full-model-name> a modell teljes 3 szintű neve található, és <new-model-name> a modell neve katalógus vagy séma nélkül.

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

Az alábbi kód például a modell hello_world nevét a következőre hellomódosítja.

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

Modellverzió másolása

A Unity Katalógusban átmásolhat egy modellverziót az egyik modellből a másikba.

Modellverzió másolása a felhasználói felületen

Tegye a következők egyikét:

  1. A modell verziólapján kattintson a Felhasználói felület jobb felső sarkában található Verzió másolása elemre.

  2. Válasszon ki egy célmodellt a legördülő listából, és kattintson a Másolás gombra.

    Modellverzió másolása párbeszédpanel

A modell másolása időt vehet igénybe. Az előrehaladás figyeléséhez keresse meg a célmodellt a Unity Catalogban, és rendszeresen frissítsen.

Modellverzió másolása az API használatával

Modellverzió másolásához használja az MLflow copy_model_version() Python API-t :

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

Modell vagy modellverzió törlése

Szükséges engedélyek: A regisztrált modell tulajdonosa, valamint USE SCHEMAUSE CATALOG a modellt tartalmazó séma és katalógus jogosultságai.

A regisztrált modell vagy modellverzió a felhasználói felületen vagy az API-val törölhető egy regisztrált modellen belül.

Figyelmeztetés

Ezt a műveletet nem vonhatja vissza. Egy modell törlésekor a Unity Catalog által tárolt összes modellösszetevő és a regisztrált modellhez társított összes metaadat törlődik.

Modellverzió vagy modell törlése a felhasználói felületen

Ha törölni szeretne egy modellt vagy modellverziót a Unity Catalogban, kövesse az alábbi lépéseket.

  1. A Katalóguskezelőben a modelloldalon vagy a modellverzió lapján kattintson a kebab menü Kebab menüikonjára. a jobb felső sarokban.

    A modelloldalon:

    modell oldal kebab menü törléssel

    Modell verzióoldalán:

    modellváltozat oldalán a kebab menü törlése

  2. Válassza a Törlés lehetőséget.

  3. Megjelenik a jóváhagyást kérő párbeszéd. A megerősítéshez kattintson a Törlés gombra.

Modellverzió vagy modell törlése az API-val

A modellverziók törléséhez használja az MLflow-ügyfél API delete_model_version() metódusát:

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

A modellek törléséhez használja az MLflow-ügyfél API delete_registered_model() metódusát:

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

Címkék használata modelleken

A címkék kulcs-érték párok, amelyeket a regisztrált modellekhez és modellverziókhoz társít, így függvény vagy állapot szerint címkézheti és kategorizálhatja őket. Például alkalmazhat egy olyan címkét, amelynek kulcsa "task" és értéke "question-answering" van (a felhasználói felületen task:question-answering néven jelenik meg) a kérdések megválaszolására szánt regisztrált modellek esetében. A modellek verziószintjén megjelölheti azokat a verziókat, amelyek az üzembe helyezés előtti ellenőrzésen validation_status:pending állnak, és azokat, amelyek készen állnak a telepítésre validation_status:approved.

Szükséges engedélyek: A regisztrált modell tulajdonosa vagy APPLY TAG jogosultsága a modellre, plusz USE SCHEMA és USE CATALOG jogosultság a modellt tartalmazó sémára és katalógusra.

A Címkék alkalmazása a Unity Catalog biztonságos objektumaira című cikkből megtudhatja, hogyan állíthat be és törölhet címkéket a felhasználói felületen.

Ha címkéket szeretne beállítani és törölni az MLflow Client API használatával, tekintse meg az alábbi példákat:

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

A regisztrált modell- és modellverzió-címkéknek egyaránt meg kell felelniük a platformszintű korlátozásoknak.

Az ügyfél API-k címkézésével kapcsolatos további részletekért tekintse meg az MLflow API dokumentációját.

Leírás (megjegyzések) hozzáadása egy modellhez vagy modellverzióhoz

Szükséges engedélyek: A regisztrált modell tulajdonosa, valamint USE SCHEMAUSE CATALOG a modellt tartalmazó séma és katalógus jogosultságai.

A Unity Katalógusban bármilyen modellhez vagy modellverzióhoz megadhat szöveges leírást. Például áttekintést adhat a problémáról, vagy információkat kaphat az alkalmazott módszertanról és algoritmusról.

Modellek esetén az AI által létrehozott megjegyzéseket is használhatja. Lásd: AI által létrehozott megjegyzések hozzáadása Unity Catalog-objektumokhoz.

Leírás hozzáadása egy modellhez a felhasználói felületen

Ha leírást szeretne adni egy modellhez, használhatja az AI által létrehozott megjegyzéseket, vagy beírhatja saját megjegyzéseit. Szükség esetén szerkesztheti az AI által létrehozott megjegyzéseket.

  • Az automatikusan létrehozott megjegyzések hozzáadásához kattintson az AI-létrehozás gombra.
  • Saját megjegyzés hozzáadásához kattintson a Hozzáadás gombra. Írja be a megjegyzéseit a párbeszédpanelen, és kattintson a Mentés gombra.

uc modell leírás gombjai

Leírás hozzáadása egy modellverzióhoz a felhasználói felület használatával

Ha leírást szeretne hozzáadni egy modellverzióhoz a Unity Catalogban, kövesse az alábbi lépéseket:

  1. A modellverzió oldalán kattintson a ceruza ikonra a Leírás területen.

    ceruza ikon a modellverzió megjegyzéseihez való hozzáadásához

  2. Írja be a megjegyzéseit a párbeszédpanelen, és kattintson a Mentés gombra.

Leírás hozzáadása modellhez vagy modellverzióhoz az API használatával

A regisztrált modell leírásának frissítéséhez használja az MLflow Client API update_registered_model() metódust:

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

A modellverzió leírásának frissítéséhez használja az MLflow Client API update_model_version() metódust:

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

Lista- és keresési modellek

A Regisztrált modellek listájának a Unity Catalogban való lekéréséhez használja az MLflow search_registered_models() Python API-t :

mlflow.search_registered_models()

Egy adott modellnév kereséséhez és a modell verzióival kapcsolatos információk lekéréséhez használja a következőt search_model_versions():

from pprint import pprint

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

Feljegyzés

A Unity Catalogban nem minden keresési API-mező és operátor támogatott modellekhez. További részletekért lásd : Korlátozások .

Modellfájlok letöltése (speciális használati eset)

A modellek betöltéséhez a legtöbb esetben MLflow API-kat mlflow.pyfunc.load_modelmlflow.<flavor>.load_model kell használnia(például mlflow.transformers.load_model HuggingFace-modellekhez).

Bizonyos esetekben előfordulhat, hogy modellfájlokat kell letöltenie a modell viselkedésének hibakereséséhez vagy a modell betöltésével kapcsolatos problémák elhárításához. A modellfájlokat mlflow.artifacts.download_artifactsaz alábbiak szerint töltheti le:

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)

Modell átvitele a környezetek között

A Databricks azt javasolja, hogy az ML-folyamatokat kódként telepítse. Ez szükségtelenné teszi a modellek átvitelét a különböző környezetekbe, mivel minden gyártási modell létrehozható automatizált betanítási folyamatokkal egy produkciós környezetben.

Bizonyos esetekben azonban túl költséges lehet a modellek újratanítása a környezetekben. Ehelyett átmásolhatja a modellverziókat a regisztrált modellekre a Unity Katalógusban, hogy előléptesse őket a környezetek között.

Az alábbi példakód végrehajtásához a következő jogosultságokra van szüksége:

  • USE CATALOG a staging és prod katalógusokban.
  • USE SCHEMA a staging.ml_team és prod.ml_team sémákon.
  • EXECUTE rajta staging.ml_team.fraud_detection.

Emellett a regisztrált modell prod.ml_team.fraud_detectiontulajdonosának kell lennie.

Az alábbi kódrészlet az copy_model_versionMLflow Client API-t használja, amely az MLflow 2.8.0-s és újabb verziójában érhető el.

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)

Miután a modell verziója éles környezetben van, elvégezheti a szükséges üzembe helyezés előtti ellenőrzést. Ezután aliasok használatával megjelölheti a modellverziót az üzembe helyezéshez.

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

A fenti példában csak azok a felhasználók léptethetik elő az előkészítési modelleket az éles környezetbe, akik tudnak olvasni a staging.ml_team.fraud_detection regisztrált modellből és írni a prod.ml_team.fraud_detection regisztrált modellbe. Ugyanezek a felhasználók aliasokkal is kezelhetik, hogy mely modellverziók legyenek üzembe helyezve az éles környezetben. Nem kell más szabályokat vagy szabályzatokat konfigurálnia a modell előléptetésének és üzembe helyezésének szabályozásához.

Ezt a folyamatot testreszabhatja úgy, hogy a modellverziót több olyan környezetben is előléptesse, amelyek megfelelnek a beállításnak, például dev: , qaés prod. A hozzáférés-vezérlés az egyes környezetekben konfigurált módon van kényszerítve.

példajegyzetfüzet

Ez a példajegyzetfüzet bemutatja, hogyan használhat modelleket a Unity Catalog API-kban a modellek kezelésére a Unity Catalogban, beleértve a modellek és modellverziók regisztrálását, a leírások hozzáadását, a modellek betöltését és üzembe helyezését, a modellaliasok használatát, valamint a modellek és modellverziók törlését.

MLflow 3

Modellek a Unity Catalog példajegyzetfüzetében az MLflow 3-hoz

Jegyzetfüzet lekérése

MLflow 2.x

Modellek a Unity Catalog példajegyzetfüzetében

Jegyzetfüzet lekérése

Korlátozások

  • A Unity Catalog modelljei nem támogatják a fázisokat. A Databricks a Unity Catalog háromszintű névterének használatát javasolja a modell környezetének kifejezéséhez, valamint aliasok használatával előlépteti a modelleket az üzembe helyezéshez. Részletekért lásd : Modell előléptetése környezetek között .
  • A webhookok nincsenek támogatva a Unity Catalog modellek esetében. A javasolt alternatívákat a frissítési útmutatóban találja.
  • Egyes keresési API-mezők és operátorok nem támogatottak a Unity Catalog modelljeihez. Ez a keresési API-k támogatott szűrőkkel való meghívásával és az eredmények vizsgálatával csökkenthető. Az alábbiakban néhány példát mutatunk be:
    • A order_by paraméter nem támogatott az search_model_versions vagy search_registered_models ügyfél API-kban.
    • A címkealapú szűrők (tags.mykey = 'myvalue') nem támogatottak a(z) search_model_versions vagy a(z) search_registered_models esetében.
    • A pontos egyenlőségen kívül más operátorok (például LIKE, ILIKE, !=) nem támogatottak vagy search_model_versionsnem támogatottak search_registered_models .
    • Regisztrált modellek név szerinti keresése (például search_registered_models(filter_string="name='main.default.mymodel'") nem támogatott). Ha név alapján szeretne lekérni egy adott regisztrált modellt, használja a get_registered_model.
  • A Unity Catalog nem támogatja az e-mail-értesítéseket és a megjegyzésekkel kapcsolatos vitafórumokat a regisztrált modelleken és modellverziókon.
  • A tevékenységnapló nem támogatott a Unity Catalog modelljeinél. A Unity Catalog modelljeinek tevékenységének nyomon követéséhez használja az auditnaplókat.
  • search_registered_models elavult eredményeket adhat vissza a Delta Sharing használatával megosztott modellek esetében. A legújabb eredmények biztosításához használja a Databricks parancssori felületét vagy az SDK-t a sémák modelljeinek listázásához.