Sdílet prostřednictvím


Správa životního cyklu modelu v katalogu Unity

Důležité

Tento článek popisuje, jak používat modely v katalogu Unity jako součást pracovního postupu strojového učení ke správě celého životního cyklu modelů ML. Databricks poskytuje hostovanou verzi registru modelů MLflow v Katalogu Unity. Modely v katalogu Unity rozšiřují výhody katalogu Unity na modely ML, včetně centralizovaného řízení přístupu, auditování, rodokmenu a zjišťování modelů napříč pracovními prostory. Modely v katalogu Unity jsou kompatibilní s opensourcovým klientem Pythonu MLflow.

Přehled konceptů registru modelů najdete v tématu MLflow pro životní cyklus modelu ML.

MLflow 3 přináší významná vylepšení registru modelů MLflow v katalogu Unity, což umožňuje vašim modelům přímo zaznamenávat data, jako jsou parametry a metriky, a zpřístupnit je napříč všemi pracovními prostory a experimenty. Výchozí identifikátor URI registru v MLflow 3 je databricks-uc, což znamená, že se použije registr modelů MLflow v Katalogu Unity. Další podrobnosti najdete v tématu Začínáme s MLflow 3 a vylepšení registru modelů pomocí MLflow 3.

Požadavky

  1. Ve vašem pracovním prostoru musí být povolený katalog Unity. Viz Začněte používat Unity Catalog k vytvoření metadatového úložiště Unity Catalog, jeho povolení v pracovním prostoru a vytvoření katalogu. Pokud není katalog Unity povolený, použijte registr modelu pracovního prostoru .

  2. Musíte použít výpočetní prostředek, který má přístup ke katalogu Unity. U úloh ML to znamená, že režim přístupu pro výpočetní prostředky musí být Vyhrazený (dříve jeden uživatel). Další informace najdete v tématu Režimy accessu. S Databricks Runtime 15.4 LTS ML a novějšími můžete také použít režim vyhrazeného přístupu skupiny.

  3. K vytvoření nových registrovaných modelů potřebujete následující oprávnění:

    • USE SCHEMA a USE CATALOG oprávnění ke schématu a jeho příslušnému katalogu.
    • CREATE MODEL nebo CREATE FUNCTION oprávnění ke schématu. Pokud chcete udělit oprávnění, použijte uživatelské rozhraní Průzkumníka katalogu nebo příkaz SQLGRANT:
    GRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal>
    

Poznámka:

Váš pracovní prostor musí být připojen k metastoru katalogu Unity, který podporuje převzetí oprávnění. To platí pro všechny metastory vytvořené po 25. srpnu 2022. Pokud běží na starším metastoru, postupujte podle dokumentace k upgradu.

Instalace a konfigurace klienta MLflow pro katalog Unity

Tato část obsahuje pokyny pro instalaci a konfiguraci klienta MLflow pro katalog Unity.

Instalace klienta Pythonu MLflow

Podpora modelů v katalogu Unity je součástí Databricks Runtime 13.2 ML a vyšší (Databricks Runtime 15.0 ML a vyšší v Azure China).

Můžete také používat modely v Katalogu Unity na Databricks Runtime 11.3 LTS a vyšší tím, že do svého poznámkového bloku nainstalujete nejnovější verzi klienta MLflow v Pythonu, a to pomocí následujícího kódu.

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

Konfigurace klienta MLflow pro přístup k modelům v katalogu Unity

Pokud je výchozí katalog vašeho pracovního prostoru v katalogu Unity (ne hive_metastore) a buď spouštíte cluster pomocí Databricks Runtime 13.3 LTS nebo vyšší (Databricks Runtime 15.0 nebo vyšší v oblastech Azure China) nebo používáte MLflow 3, modely se automaticky vytvoří a načtou z výchozího katalogu.

V případě jiných pracovních prostorů vytvoří klient Pythonu MLflow modely v registru modelů pracovního prostoru Databricks. Pokud chcete upgradovat na modely v katalogu Unity, pomocí následujícího kódu v poznámkových blocích nakonfigurujte klienta MLflow:

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

Pro malý počet pracovních prostor, kde byl výchozí katalog nastaven na katalog v Unity Catalog ještě před lednem 2024 a zároveň byl již před lednem 2024 použit registr modelů pracovního prostoru, je nutné ručně nastavit výchozí katalog na Unity Catalog pomocí výše uvedeného příkazu.

Trénování a registrace modelů kompatibilních s katalogem Unity

Oprávnění požadovaná: K vytvoření nového registrovaného modelu potřebujete oprávnění CREATE MODEL a USE SCHEMA u nadřazeného schématu a USE CATALOG oprávnění v nadřazeném katalogu. Pokud chcete vytvořit nové verze modelu v rámci registrovaného modelu, musíte být vlastníkem registrovaného modelu a mít USE SCHEMA a USE CATALOG oprávnění ke schématu a katalogu obsahujícímu tento model.

Verze modelu ML v UC musí mít podpis modelu. Pokud ještě nehlásíte modely MLflow s podpisy v trénovacích úlohách modelu, můžete:

  • Použijte Databricks autologging, které automaticky protokoluje modely s podpisy pro mnoho oblíbených rámců pro strojové učení. Viz podporované architektury v dokumentaci k MLflow.
  • S MLflow 2.5.0 a vyšší můžete zadat vstupní příklad volání mlflow.<flavor>.log_model a podpis modelu se automaticky odvodí. Další informace najdete v dokumentaci k MLflow.

Pak do rozhraní API MLflow ve formuláři <catalog>.<schema>.<model>předejte tříúrovňový název modelu.

Příklady v této části vytvářejí a přistupují k modelům ve schématu ml_team v katalogu prod.

Příklady trénování modelu v této části vytvoří novou verzi modelu a zaregistrují ji v katalogu prod. Použití katalogu prod nemusí nutně znamenat, že verze modelu obsluhuje produkční provoz. Verze modelu, která obsahuje katalog, schéma a zaregistrovaný model, odráží jeho prostředí () a přidružená pravidla zásad správného řízení (prodnapříklad oprávnění je možné nastavit tak, aby z katalogu mohli odstranit prod jenom správci), ale ne stav nasazení. Ke správě stavu nasazení použijte aliasy modelu.

Registrace modelu do katalogu Unity pomocí automatickéhologování

K registraci modelu použijte metodu rozhraní API register_model() klienta MLflow. Viz 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")

Registrace modelu pomocí rozhraní API

MLflow 3

mlflow.register_model(
  "models:/<model_id>", "prod.ml_team.iris_model"
)

MLflow 2.x

mlflow.register_model(
  "runs:/<run_id>/model", "prod.ml_team.iris_model"
)

Registrace modelu do katalogu Unity s automatickým odvozeným podpisem

Podpora automaticky odvozených podpisů je k dispozici v MLflow verze 2.5.0 a vyšší a je podporována v Databricks Runtime 11.3 LTS ML a vyšší. Pokud chcete používat automaticky odvozené podpisy, nainstalujte do poznámkového bloku nejnovějšího klienta Pythonu MLflow pomocí následujícího kódu:

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

Následující kód ukazuje příklad automaticky odvozeného podpisu.

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,
        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,
        registered_model_name="prod.ml_team.iris_model",
    )

Registrace modelu pomocí uživatelského rozhraní

Postupujte následovně:

  1. Na stránce spuštění experimentu klikněte v pravém horním rohu uživatelského rozhraní na Zaregistrovat model .

  2. V dialogovém okně vyberte katalogu Unity a v rozevíracím seznamu vyberte cílový model.

    Dialogové okno Registrace verze modelu s rozevírací nabídkou

  3. Klikněte na Zaregistrovat.

    Dialogové okno Registrace verze modelu s tlačítkem

Registrace modelu může nějakou dobu trvat. Pokud chcete sledovat průběh, přejděte v katalogu Unity k cílovému modelu a pravidelně aktualizujte.

Použití aliasů modelu

Aliasy modelů umožňují přiřadit proměnlivý pojmenovaný odkaz na konkrétní verzi registrovaného modelu. Aliasy můžete použít k označení stavu nasazení verze modelu. Můžete například přidělit alias "Šampion" verzi modelu, která je aktuálně v produkčním prostředí, a cílit na tento alias v úlohách, které používají produkční model. Produkční model pak můžete aktualizovat tak, že znovu přiřadíte alias "Champion" na jinou verzi modelu.

Nastavení a odstranění aliasů v modelech

požadovaná oprávnění: Vlastník registrovaného modelu a oprávnění USE SCHEMA a USE CATALOG pro schéma a katalog obsahující model.

Aliasy pro modely v katalogu Unity můžete nastavit, aktualizovat a odebrat pomocí Průzkumníka katalogu. Viz Zobrazení a správa modelů v uživatelském rozhraní.

Pokud chcete nastavit, aktualizovat a odstranit aliasy pomocí rozhraní API klienta MLflow, projděte si následující příklady:

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

Další podrobnosti o rozhraních API klientů aliasů najdete v dokumentaci k rozhraní API MLflow.

Načtení verze modelu podle aliasu pro inferenční úlohy

požadovaná oprávnění: EXECUTE oprávnění k registrovanému modelu a oprávnění USE SCHEMA a USE CATALOG pro schéma a katalog obsahující model.

Úlohy odvozování služby Batch mohou odkazovat na verzi modelu podle aliasu. Ukázka kódu níže načte a použije verzi modelu „Champion“ pro hromadné zpracování. Pokud se verze Champion aktualizuje tak, aby odkazovala na novou verzi modelu, úloha odvozování dávek ji automaticky převezme při příštím spuštění. To vám umožní oddělit nasazení modelu od dávkových úloh odvozování.

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)

Koncové body pro obsluhu modelů mohou také odkazovat na verzi modelu pomocí aliasu. Můžete napsat pracovní postupy nasazení, abyste získali verzi modelu podle aliasu a aktualizovali koncový bod obsluhující model tak, aby obsluhoval tuto verzi, pomocí rozhraní model serving REST API. Příklad:

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

Načtení verze modelu podle čísla verze pro úlohy odvozování

Verze modelu můžete načíst také podle čísla verze:

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)

Sdílení modelů mezi pracovními prostory

Sdílení modelů s uživateli ve stejné oblasti

Pokud máte příslušná oprávnění, můžete k modelům v Katalogu Unity přistupovat z libovolného pracovního prostoru připojeného k metastoru obsahujícímu daný model. Například můžete přistupovat k modelům z katalogu prod v pracovním prostoru pro vývoj, abyste usnadnili porovnávání nově vyvinutých modelů s produkčním směrnými plány.

Pokud chcete spolupracovat s ostatními uživateli (sdílet oprávnění k zápisu) u registrovaného modelu, který jste vytvořili, musíte udělit vlastnictví modelu skupině obsahující vás a uživatelům, se kterými chcete spolupracovat. Spolupracovníci musí mít také oprávnění USE CATALOG a USE SCHEMA v katalogu a schématu obsahujícím model. Podrobnosti najdete v tématu oprávnění katalogu Unity a zabezpečitelné objekty.

Sdílení modelů s uživateli v jiné oblasti nebo účtu

Pokud chcete sdílet modely s uživateli v jiných oblastech nebo účtech, použijte toku sdílení Delta Sharing Databricks-na-Databricks. Viz Přidání modelů do sdílení (pro poskytovatele) a Získání přístupu v modelu Databricks-to-Databricks (pro příjemce). Jako příjemce budete po vytvoření katalogu ze sdílené složky přistupovat k modelům v daném sdíleném katalogu stejným způsobem jako jakýkoli jiný model v katalogu Unity.

Sledování rodokmenu dat modelu v katalogu Unity

Poznámka:

Podpora vazby mezi tabulkami a modely v Katalogu Unity je dostupná v MLflow 2.11.0 a novějších.

Při trénování modelu na tabulce v katalogu Unity můžete sledovat rodokmen modelu k nadřazeným datovým sadám, na které byl natrénován a vyhodnocen. K tomu použijte mlflow.log_input. Tím se uloží informace o vstupní tabulce pomocí spuštění MLflow, které vygenerovalo model. Rodokmen dat se také automaticky zaznamenává pro modely protokolované pomocí rozhraní API úložiště funkcí. Viz zásady správného řízení a rodokmen funkcí.

Když model zaregistrujete do katalogu Unity, informace o rodokmenu se automaticky uloží a zobrazí se na kartě Rodokmen na stránce verze modelu v Průzkumníku katalogu. Viz Zobrazení informací o verzi modelu a rodokmenu modelu.

Následující kód znázorňuje příklad.

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,
        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,
        registered_model_name="prod.ml_team.iris_classifier",
    )

Řízení přístupu k modelům

Zaregistrované modely jsou v katalogu Unity podtyp FUNCTION zabezpečitelného objektu. Pokud chcete udělit přístup k modelu registrovanému v katalogu Unity, použijte GRANT ON FUNCTION. Průzkumníka katalogu můžete také použít k nastavení vlastnictví a oprávnění modelu. Podrobnosti najdete v tématu Správa oprávnění v katalogu Unity a objektový model Unity Catalog.

Oprávnění modelu můžete nakonfigurovat programově pomocí rozhraní REST API grantů. Při konfiguraci oprávnění modelu nastavte securable_type na "FUNCTION" v požadavcích rozhraní REST API. K aktualizaci registrovaných oprávnění modelu můžete například použít PATCH /api/2.1/unity-catalog/permissions/function/{full_name}.

Zobrazení a správa modelů v uživatelském rozhraní

požadovaná oprávnění: Pokud chcete zobrazit zaregistrovaný model a jeho verze modelu v uživatelském rozhraní, potřebujete EXECUTE oprávnění k registrovanému modelu a USE SCHEMA a USE CATALOG oprávnění ke schématu a katalogu obsahujícímu model.

Registrované modely a verze modelů můžete zobrazit a spravovat v katalogu Unity pomocí Průzkumníka katalogu.

Zobrazení informací o modelu

Zobrazení modelů v Průzkumníku katalogu:

  1. Klikněte na ikonu Data.Katalog na bočním panelu

  2. V rozevíracím seznamu v pravém horním rohu vyberte výpočetní prostředek.

  3. Ve stromu Průzkumníka katalogu vlevo otevřete katalog a vyberte schéma.

  4. Pokud schéma obsahuje nějaké modely, zobrazí se ve stromu v části Modely, jak je znázorněno.

    Část stromu průzkumníka katalogu zobrazující modely

  5. Kliknutím na model zobrazíte další informace. Na stránce podrobností modelu se zobrazí seznam verzí modelu s dalšími informacemi.

    stránka s podrobnostmi o modelu

Nastavení aliasů modelu

Nastavení aliasu modelu pomocí uživatelského rozhraní:

  1. Na stránce podrobností modelu najeďte myší na řádek pro verzi modelu, ke které chcete přidat alias. Zobrazí se tlačítko Přidat alias .
  2. Klikněte na Přidat alias.
  3. Zadejte alias nebo ho vyberte z rozevírací nabídky. V dialogovém okně můžete přidat více aliasů.
  4. Klikněte na Uložit aliasy.

Postup přidání aliasu do verze modelu ze stránky podrobností modelu

Odebrání aliasu:

  1. Najeďte myší na řádek verze modelu a klikněte na ikonu tužky vedle aliasu.
  2. V dialogovém okně klikněte na X vedle aliasu, který chcete odebrat.
  3. Klikněte na Uložit aliasy.

Odebrání aliasu z verze modelu na stránce podrobností modelu

Zobrazení informací o verzi modelu a rodokmenu modelu

Pokud chcete zobrazit další informace o verzi modelu, klikněte na jeho název v seznamu modelů. Zobrazí se stránka verze modelu. Tato stránka obsahuje odkaz na běh MLflow, který vytvořil tuto verzi. V MLflow 3 můžete zobrazit také všechny parametry a metriky protokolované pomocí odpovídajícího protokolovaného modelu MLflow.

MLflow 3

stránka verze modelu

MLflow 2.x

stránka verze modelu

Na této stránce můžete zobrazit rodokmen modelu následujícím způsobem:

  1. Vyberte kartu Původ. Levý boční panel zobrazuje komponenty, které byly protokolovány pomocí modelu.

    Karta Provenience na stránce modelu v Průzkumníku katalogů

  2. Klikněte na Zobrazit graf rodokmenu. Zobrazí se graf rodokmenu. Podrobnosti o zkoumání grafu linie najdete v tématu Zachycení a prozkoumání linie.

    obrazovka rodokmenu

  3. Pokud chcete graf rodokmenu zavřít, klikněte na tlačítko zavřít pro graf rodokmenu v pravém horním rohu.

Přejmenování modelu

Oprávnění požadovaná: Vlastník registrovaného modelu, CREATE MODEL oprávnění ke schématu obsahujícímu zaregistrovaný model, USE SCHEMA a USE CATALOG oprávnění ke schématu a katalogu obsahujícímu tento model.

Pokud chcete přejmenovat zaregistrovaný model, použijte metodu rozhraní API rename_registered_model() klienta MLflow, kde <full-model-name> je úplný název 3 úrovně modelu a <new-model-name> jedná se o název modelu bez katalogu nebo schématu.

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

Například následující kód změní název modelu hello_world na hello.

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

Kopírování verze modelu

Verzi modelu můžete zkopírovat z jednoho modelu do jiného v katalogu Unity.

Kopírování verze modelu pomocí uživatelského rozhraní

Postupujte následovně:

  1. Na stránce verze modelu klikněte v pravém horním rohu uživatelského rozhraní na Kopírovat tuto verzi .

  2. V rozevíracím seznamu vyberte cílový model a klikněte na Kopírovat.

    Dialogové okno Kopírovat verzi modelu

Kopírování modelu může nějakou dobu trvat. Pokud chcete sledovat průběh, přejděte v katalogu Unity k cílovému modelu a pravidelně aktualizujte.

Kopírování verze modelu pomocí rozhraní API

Pokud chcete zkopírovat verzi modelu, použijte rozhraní API Pythonu pro MLflow copy_model_version():

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

Odstranit model nebo jeho verzi

požadovaná oprávnění: Vlastník registrovaného modelu a oprávnění USE SCHEMA a USE CATALOG pro schéma a katalog obsahující model.

Registrovaný model nebo verzi modelu můžete odstranit v rámci registrovaného modelu pomocí uživatelského rozhraní nebo rozhraní API.

Varování

Tuto akci nelze vrátit zpět. Když odstraníte model, odstraní se všechny artefakty modelu uložené v katalogu Unity a všechna metadata přidružená k registrovanému modelu.

Odstranění verze modelu nebo celého modelu pomocí uživatelského rozhraní

Pokud chcete odstranit model nebo verzi modelu v katalogu Unity, postupujte takto.

  1. V Průzkumníku katalogu klikněte na stránce modelu nebo na stránce verze modelu na ikonu nabídky Kebab. V pravém horním rohu klikněte na ikonu nabídky Kebab.

    Ze stránky modelu:

    Kontekstová nabídka na stránce modelu s možností odstranění

    Ze stránky verze modelu:

    nabídka stránky kebab verze modelu s odstraněním

  2. Vyberte Odstranit.

  3. Zobrazí se dialogové okno s potvrzením. Kliknutím na Odstranit potvrďte.

Odstranění verze modelu nebo celého modelu pomocí rozhraní API

Pokud chcete odstranit verzi modelu, použijte metodu rozhraní API klienta MLflow delete_model_version():

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

Pokud chcete odstranit celý model, použijte metodu rozhraní API klienta MLflow delete_registered_model():

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

Použití značek u modelů

Značky jsou páry klíč-hodnota, které přidružíte k registrovaným modelům a verzím modelů, takže je můžete označovat a kategorizovat podle funkce nebo stavu. Můžete například použít značku s klíčem "task" a hodnotou "question-answering" (zobrazenou v uživatelském rozhraní jako task:question-answering) pro registrované modely určené pro úlohy zodpovězení otázek. Na úrovni verze modelu byste mohli označovat verze, které procházejí ověřením před nasazením pomocí validation_status:pending a ty, které jsou schválené pro nasazení, pomocí validation_status:approved.

požadovaná oprávnění: Vlastník nebo osoba s oprávněním APPLY TAG k registrovanému modelu a s oprávněními USE SCHEMA a USE CATALOG ke schématu a katalogu obsahujícímu model.

Viz Přidání a aktualizace značek pomocí Průzkumníka katalogů o tom, jak nastavit a odstranit značky pomocí uživatelského rozhraní.

Pokud chcete nastavit a odstranit značky pomocí klientského rozhraní API MLflow, projděte si následující příklady:

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

Registrované značky modelu i verze modelu musí splňovat omezení pro celou platformu.

Další podrobnosti o rozhraních API pro označování klientů najdete v dokumentaci k rozhraní API MLflow.

Přidání popisu (komentářů) do modelu nebo verze modelu

požadovaná oprávnění: Vlastník registrovaného modelu a oprávnění USE SCHEMA a USE CATALOG pro schéma a katalog obsahující model.

Do katalogu Unity můžete zahrnout textový popis libovolného modelu nebo verze modelu. Můžete například poskytnout přehled problému nebo informace o metodologii a použitém algoritmu.

U modelů máte také možnost používat komentáře generované AI. Viz Přidání komentářů generovaných AI do objektů katalogu Unity.

Přidání popisu do modelu pomocí uživatelského rozhraní

Pokud chcete přidat popis modelu, můžete použít komentáře generované AI nebo můžete zadat vlastní komentáře. Komentáře generované AI můžete upravit podle potřeby.

  • Pokud chcete přidat automaticky generované komentáře, klikněte na tlačítko AI generovat.
  • Pokud chcete přidat vlastní komentáře, klikněte na Přidat. Do dialogového okna zadejte komentáře a klikněte na Uložit.

Tlačítka popisu modelu uc

Přidání popisu do verze modelu pomocí uživatelského rozhraní

Pokud chcete přidat popis do verze modelu v katalogu Unity, postupujte takto:

  1. Na stránce verze modelu klikněte v části Popis na ikonu tužky.

    Ikona tužky pro přidání komentářů do verze modelu

  2. Do dialogového okna zadejte komentáře a klikněte na Uložit.

Přidání popisu do modelu nebo verze modelu pomocí rozhraní API

Pokud chcete aktualizovat popis registrovaného modelu, použijte metodu rozhraní API klienta MLflow update_registered_model():

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

Pokud chcete aktualizovat popis verze modelu, použijte metodu rozhraní API klienta MLflow update_model_version():

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

Seznam a vyhledávání modelů

Pokud chcete získat seznam registrovaných modelů v katalogu Unity, použijte rozhraní API pythonu MLflow search_registered_models():

client=MlflowClient()
client.search_registered_models()

Pokud chcete vyhledat konkrétní název modelu a získat informace o jeho verzích, použijte search_model_versions():

from pprint import pprint

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

Poznámka:

Pro modely v katalogu Unity nejsou podporována všechna pole a operátory rozhraní API vyhledávání. Podrobnosti viz Omezení.

Stažení souborů modelu (případ rozšířeného použití)

Ve většině případů byste k načtení modelů měli použít rozhraní API MLflow, jako mlflow.pyfunc.load_model nebo mlflow.<flavor>.load_model (například, mlflow.transformers.load_model pro modely HuggingFace).

V některých případech možná budete muset stáhnout soubory modelu, abyste mohli ladit chování modelu nebo problémy s načítáním modelu. Soubory modelu si můžete stáhnout následujícím způsobem 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)

Nasazení modelu napříč prostředími

Databricks doporučuje nasadit kanály ML jako kód. To eliminuje potřebu propagovat modely napříč prostředími, protože všechny produkční modely je možné vytvářet prostřednictvím automatizovaných trénovacích pracovních postupů v produkčním prostředí.

V některých případech ale může být přetrénování modelů napříč prostředími příliš nákladné. Místo toho můžete kopírovat verze modelů napříč registrovanými modely v Unity Catalog a podporovat je napříč prostředími.

K provedení následujícího ukázkového kódu potřebujete následující oprávnění:

  • USE CATALOG v katalozích staging a prod.
  • na USE SCHEMA, staging.ml_team a prod.ml_team schématech.
  • EXECUTE na staging.ml_team.fraud_detection.

Kromě toho musíte být vlastníkem registrovaného modelu prod.ml_team.fraud_detection.

Následující fragment kódu používá copy_model_versionrozhraní API klienta MLflow dostupné v MLflow verze 2.8.0 a vyšší.

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)

Jakmile je verze modelu v produkčním prostředí, můžete provést jakékoli nezbytné ověření před nasazením. Potom můžete označit verzi modelu pro nasazení pomocí aliasů.

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

V předchozím příkladu mohou do produkčního prostředí testovací modely povýšit pouze uživatelé, kteří mohou číst z registrovaného staging.ml_team.fraud_detection modelu a zapisovat do registrovaného prod.ml_team.fraud_detection modelu. Stejní uživatelé můžou také používat aliasy ke správě verzí modelu nasazených v produkčním prostředí. Pro řízení povýšení a nasazení modelu nemusíte konfigurovat žádná další pravidla ani zásady.

Tento tok můžete přizpůsobit tak, aby podporoval verzi modelu napříč několika prostředími, která odpovídají vašemu nastavení, například dev, qaa prod. Řízení přístupu se vynucuje podle konfigurace v každém prostředí.

ukázkový poznámkový blok

Tento ukázkový poznámkový blok ukazuje, jak používat modely v rozhraních API katalogu Unity ke správě modelů v katalogu Unity, včetně registrace modelů a verzí modelů, přidání popisů, načítání a nasazování modelů, používání aliasů modelů a odstraňování modelů a verzí modelů.

MLflow 3

Příklady modelů v poznámkovém bloku Unity Catalog pro MLflow 3

Získejte poznámkový blok

MLflow 2.x

Modely v ukázkovém poznámkovém bloku katalogu Unity

Získejte poznámkový blok

Migrace pracovních postupů a modelů do katalogu Unity

Databricks doporučuje používat modely v katalogu Unity pro vylepšené zásady správného řízení, snadné sdílení pracovních prostorů a prostředí a flexibilnější pracovní postupy MLOps. Tabulka porovnává možnosti registru modelů pracovního prostoru a katalogu Unity.

Schopnost Registr modelů pracovního prostoru (starší verze) Modely v katalogu Unity (doporučeno)
Verze referenčních modelů podle pojmenovaných aliasů Fáze registru modelů: Přesuňte verze modelu do jedné ze čtyř pevných fází, abyste je mohli odkazovat podle této fáze. Fáze nelze přejmenovat ani přidat. Aliasy registru modelů: Vytvořte až 10 vlastních a znovu přiřaditelných pojmenovaných odkazů na verze modelu pro každý registrovaný model.
Vytváření prostředí řízených přístupem pro modely Fáze registru modelů: Použití fází v rámci jednoho registrovaného modelu k označení prostředí jeho verzí modelu s řízením přístupu pouze pro dva ze čtyř pevných fází (Staging a Production). Registrované modely: Vytvořte zaregistrovaný model pro každé prostředí v pracovním postupu MLOps s využitím tříúrovňových oborů názvů a oprávnění katalogu Unity k vyjádření zásad správného řízení.
Propagace modelů napříč prostředími (nasazení modelu) Pomocí klientského rozhraní API MLflow přesuňte verzi modelu do jiné fáze, což může potenciálně rozbít pracovní postupy, které odkazují na předchozí fázi. Pomocí klientského copy_model_version() rozhraní API MLflow zkopírujte verzi modelu z jednoho registrovaného modelu do jiného.
Přístup k modelům a jejich sdílení napříč pracovními prostory Ručně exportujte a importujte modely mezi pracovními prostory nebo nakonfigurujte připojení ke vzdáleným registrům modelů pomocí osobních přístupových tokenů a rozsahů utajených údajů pracovního prostoru. Okamžitý přístup k modelům napříč pracovními prostory ve stejném účtu. Nevyžaduje se žádná konfigurace.
Konfigurace oprávnění Nastavte oprávnění na úrovni pracovního prostoru. Nastavte oprávnění na úrovni účtu, která používá konzistentní zásady správného řízení napříč pracovními prostory.
Přístup k modelům na marketplace Databricks Nedostupný. Načtěte modely z Databricks Marketplace do metastoru Unity Catalog a získejte k nim přístup ve všech pracovních prostorech.

Níže uvedené články popisují migraci pracovních postupů (trénování modelů a dávkových odvozovacích úloh) a modelů z registru modelů pracovního prostoru do katalogu Unity.

Omezení

  • Fáze nejsou podporovány pro modely v katalogu Unity. Databricks doporučuje použít tříúrovňový obor názvů v katalogu Unity k vyjádření prostředí, ve které je model, a použití aliasů k propagaci modelů pro nasazení. Podrobnosti najdete v tématu Zvýšení úrovně modelu napříč prostředími .
  • Webhook není podporován pro modely v Unity Catalog. Podívejte se na navrhované alternativy v průvodci upgradem.
  • Některá pole a operátory rozhraní API vyhledávání nejsou podporována pro modely v katalogu Unity. To je možné zmírnit voláním rozhraní API vyhledávání pomocí podporovaných filtrů a prohledáváním výsledků. Tady je několik příkladů:
    • Parametr order_by není podporován v rozhraních API klienta search_model_versions ani search_registered_models .
    • Filtry založené na značkách (tags.mykey = 'myvalue') nejsou podporovány pro search_model_versions nebo search_registered_models.
    • Operátory jiné než přesná rovnost (například LIKE, ILIKE, !=) nejsou podporovány pro search_model_versions nebo search_registered_models.
    • Vyhledávání registrovaných modelů podle názvu (například MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") se nepodporuje. Pokud chcete načíst konkrétní registrovaný model podle názvu, použijte get_registered_model.
  • E-mailová oznámení a vlákna diskuze o komentářích v registrovaných modelech a verzích modelů nejsou v katalogu Unity podporována.
  • Protokol aktivit není podporován pro modely v katalogu Unity. Pokud chcete sledovat aktivitu modelů v katalogu Unity, použijte protokoly auditu .
  • search_registered_models můžou vrátit zastaralé výsledky pro modely sdílené prostřednictvím rozdílového sdílení. K zajištění nejnovějších výsledků použijte rozhraní příkazového řádku Databricks nebo SDK k výpisu modelů ve schématu.