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 části MLflow pro agenta generativní AI a životní cyklus modelu ML.

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 výpočetních prostředků musí být 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 nadřazeném katalogu.
    • CREATE_MODEL oprávnění ke schématu. K udělení tohoto oprávnění použijte uživatelské rozhraní Průzkumníka katalogu nebo následující příkaz SQL GRANT:
    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 dědičnost 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 (místo hive_metastore) a spouštíte cluster pomocí databricks Runtime 13.3 LTS nebo vyšší (Databricks Runtime 15.0 nebo novější v oblastech Azure China), modely se automaticky vytvoří a načtou z výchozího katalogu. Tento krok nemusíte provádět.

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 automatické protokolování Databricks, které automaticky protokoluje modely s podpisy pro mnoho oblíbených architektur ML. 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í (prod) a přidružená pravidla zásad správného řízení (například oprávnění je možné nastavit tak, aby z katalogu prod mohli odstranit 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.

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.register_model(
  "runs:/<run_uuid>/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.

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.

Nasazení modelů pomocí aliasů

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. Aliasy můžete spravovat napříč registrovaným modelem na stránce podrobností modelu a nakonfigurovat aliasy pro konkrétní verzi modelu na stránce podrobností o verzi modelu.

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 úlohy odvozování

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 můžou odkazovat na verzi modelu podle aliasu. Následující fragment kódu načte a použije verzi modelu Champion pro odvozování dávek. 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)

Model obsluhující koncové body může také odkazovat na verzi modelu podle aliasu. Můžete napsat pracovní postupy nasazení, abyste získali verzi modelu aliasem a aktualizovali koncový bod obsluhující model tak, aby sloužil této verzi, pomocí modelu , který obsluhuje rozhraní 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 tok sdílení Datbricks-to-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 rodokmenu modelů 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 původu se automaticky uloží a zobrazí se na kartě Rodokmen uživatelského rozhraní verze modelu v Průzkumníku katalogu.

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

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. Podrobnosti najdete v tématu oprávnění katalogu Unity a zabezpečitelné objekty. Osvědčené postupy pro uspořádání modelů napříč katalogy a schématy najdete v tématu Uspořádání dat.

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

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.

K přejmenování zaregistrovaného modelu použijte metodu rozhraní API klienta MLflow rename_registered_model():

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

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í PYTHON API MLflow copy_model_version():

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

Odstranění 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.

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

Upozorňující

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. Na stránce modelu nebo na stránce verze modelu klikněte v pravém horním rohu na nabídku Nabídka Kebab kebabu.

    Ze stránky modelu:

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

    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, u kterých probíhá ověření před nasazením validation_status:pending , a verze, u kterých došlo k vymazání nasazení s 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 search_registered_models() MLflow rozhraní Python API:

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

Zvýšení úrovně 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.
  • USE SCHEMA staging.ml_team prod.ml_team a schématech.
  • EXECUTEna .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 můžou pracovní modely do produkčního prostředí zvýšit pouze uživatelé, kteří můžou čí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ů.

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)
Referenční verze modelu podle pojmenovaných aliasů Fáze registru modelů: Přesuňte verze modelu do jedné ze čtyř pevných fází, aby na ně tato fáze odkazovala. 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 transition_model_version_stage() rozhraní API MLflow přesuňte verzi modelu do jiné fáze, 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. 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 .
  • Webhooky nejsou podporovány pro modely v katalogu Unity. 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 nebo search_model_versionssearch_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.