Zarządzanie cyklem życia modelu w usłudze Unity Catalog
Ważne
- Ten artykuł dokumentuje modele w Unity Catalog, które Databricks zaleca do zarządzania i wdrażania modeli. Jeśli obszar roboczy nie jest włączony dla Unity Catalog, funkcjonalność na tej stronie nie jest dostępna. Zamiast tego zobacz Zarządzanie cyklem życia modelu przy użyciu rejestru modeli obszaru roboczego (starsza wersja). Aby uzyskać wskazówki dotyczące uaktualniania rejestru modeli obszarów roboczych do
aparatu Unity, zobacz Migrate workflows and models to Unity (Migrowanie przepływów pracy i modeli do środowiska Unity). - Modele w środowisku Unity Catalog nie są dostępne w regionach usługi Azure Government.
W tym artykule opisano sposób używania modeli w środowisku Unity Catalog w ramach przepływu pracy uczenia maszynowego w celu zarządzania pełnym cyklem życia modeli uczenia maszynowego. Databricks udostępnia hostowaną wersję rejestru modeli MLflow w Unity Catalog. Modele w środowisku Unity Catalog rozszerzają korzyści płynące z Unity Catalog na modele uczenia maszynowego, w tym scentralizowaną kontrolę dostępu, inspekcję, pochodzenie i odnajdywanie modeli między obszarami roboczymi. Modele w środowisku Unity Catalog są zgodne z klientem języka Python MLflow typu open source.
Aby zapoznać się z omówieniem pojęć związanych z rejestrem modeli, zobacz MLflow for gen AI agent and ML model lifecycle.
Wymagania
Unity Catalog musi być włączone w twoim obszarze roboczym. Zobacz, jak Get rozpocząć korzystanie z Unity Catalog w celu stworzenia Metastore Unity Catalog, włączenia go w obszarze roboczym i utworzenia catalog. Jeśli Catalog Unity nie jest włączone, użyj rejestru modeli obszarów roboczych .
Musisz użyć zasobu obliczeniowego, który ma dostęp do środowiska Unity Catalog. W przypadku obciążeń uczenia maszynowego oznacza to, że tryb dostępu dla obliczeń musi być pojedynczym użytkownikiem. Aby uzyskać więcej informacji, zobacz Tryby dostępu. W środowisku Databricks Runtime 15.4 LTS ML i nowszym można również użyć trybu dedykowanego dostępu grupy.
Do utworzenia nowych zarejestrowanych modeli potrzebne są następujące uprawnienia:
-
USE SCHEMA
iUSE CATALOG
uprawnienia na schema i na otaczającym catalog. -
CREATE_MODEL
uprawnienia w schema. Aby grant tego uprawnienia, użyj interfejsu użytkownika eksploratora Catalog lub następującego polecenia SQL GRANT:
GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
-
Uwaga
Obszar roboczy musi być dołączony do magazynu metadanych Unity Catalog, który obsługuje dziedziczenie uprawnień. Dotyczy to wszystkich metastores utworzonych po 25 sierpnia 2022 r. Jeśli korzystasz ze starszego magazynu metadanych, postępuj zgodnie z dokumentami, aby uaktualnić.
Zainstaluj i skonfiguruj klienta MLflow dla Unity Catalog
Ta sekcja zawiera instrukcje dotyczące instalowania i konfigurowania klienta MLflow dla środowiska Unity Catalog.
Instalowanie klienta języka Python MLflow
Obsługa modeli w środowisku Unity Catalog jest uwzględniona w środowisku Databricks Runtime 13.2 ML i nowszych (Databricks Runtime 15.0 ML i nowszych na platformie Azure w Chinach).
Można również używać modeli w środowisku Unity Catalog w Databricks Runtime 11.3 LTS lub nowszym, instalując najnowszą wersję klienta MLflow w języku Python w notatniku, przy użyciu następującego kodu.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Konfigurowanie klienta MLflow w celu dostępu do modeli w Unity Catalog
Jeśli domyślny
W przypadku innych obszarów roboczych klient języka Python MLflow tworzy modele w rejestrze modeli obszaru roboczego usługi Databricks. Aby zaktualizować modele w Unity Catalog, użyj następującego kodu w notatnikach, aby skonfigurować klienta MLflow:
import mlflow
mlflow.set_registry_uri("databricks-uc")
W przypadku niewielkiej liczby obszarów roboczych where, jeśli domyślne ustawienie catalog było skonfigurowane na catalog w systemie Unity Catalog przed styczniem 2024 roku, a rejestr modeli obszarów roboczych był używany przed styczniem 2024 roku, należy ręcznie set domyślne ustawienie catalog do Unity Catalog, korzystając z polecenia pokazanego powyżej.
Trenowanie i rejestrowanie modeli zgodnych z platformą Unity Catalog
Uprawnienia wymagane: Aby utworzyć nowy zarejestrowany model, musisz posiadać uprawnienia CREATE_MODEL
i USE SCHEMA
w otaczającej schemaoraz uprawnienie USE CATALOG
w otaczającej catalog. Aby utworzyć nowe wersje modelu w ramach zarejestrowanego modelu, musisz być właścicielem zarejestrowanego modelu i mieć uprawnienia USE SCHEMA
i USE CATALOG
w schema i catalog zawierających model.
Wersje modelu uczenia maszynowego w interfejsie użytkownika muszą mieć podpis modelu. Jeśli nie rejestrujesz jeszcze modeli MLflow z podpisami w obciążeniach trenowania modelu, możesz wykonać następujące czynności:
- Użyj automatycznego rejestrowania usługi Databricks, które automatycznie rejestruje modele z podpisami dla wielu popularnych platform uczenia maszynowego. Zobacz obsługiwane platformy w dokumentacji platform MLflow.
- W przypadku platformy MLflow 2.5.0 lub nowszej można określić przykład danych wejściowych w
mlflow.<flavor>.log_model
wywołaniu, a podpis modelu jest automatycznie wnioskowany. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją platformy MLflow.
Następnie przekaż trzypoziomową nazwę modelu do interfejsów API MLflow w postaci <catalog>.<schema>.<model>
.
Przykłady w tej sekcji umożliwiają tworzenie i uzyskiwanie do nich dostępu w ml_team
schema w prod
catalog.
Przykłady szkoleniowe modelu w tej sekcji tworzą nową wersję modelu i rejestrują ją w prod
catalog. Użycie prod
catalog niekoniecznie oznacza, że wersja modelu obsługuje ruch produkcyjny. Wersja modelu obejmująca catalog, schemaoraz zarejestrowany model odzwierciedla swoje środowisko (prod
) i powiązane z nim reguły zarządzania (na przykład, uprawnienia mogą być set, aby tylko administratorzy mogli usuwać z prod
catalog), ale nie obejmuje statusu wdrożenia. Aby zarządzać stanem wdrożenia, użyj aliasów modelu.
Zarejestruj model w Unity Catalog przy użyciu automatycznego rejestrowania
Aby zarejestrować model, użyj metody interfejsu API register_model()
klienta MLflow. Zobacz 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")
Rejestrowanie modelu przy użyciu interfejsu API
mlflow.register_model(
"runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)
Zarejestruj model w usłudze Unity Catalog z automatycznie wnioskowanym podpisem
Obsługa automatycznie wnioskowanych podpisów jest dostępna w środowisku MLflow w wersji 2.5.0 lub nowszej i jest obsługiwana w środowisku Databricks Runtime 11.3 LTS ML i nowszym. Aby użyć automatycznie wnioskowanych podpisów, użyj następującego kodu, aby zainstalować najnowszego klienta języka Python MLflow w notesie:
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Poniższy kod przedstawia przykład automatycznie wnioskowanego 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",
)
Rejestrowanie modelu przy użyciu interfejsu użytkownika
Wykonaj te kroki:
Na stronie przebiegu eksperymentu kliknij pozycję Zarejestruj model w prawym górnym rogu interfejsu użytkownika.
W oknie dialogowym selectUnity Catalogi select wybierz model docelowy z listy rozwijanej list.
Kliknij pozycję Zarejestruj.
Zarejestrowanie modelu może zająć trochę czasu. Aby monitorować postęp, okresowo przechodź do modelu docelowego w środowisku Unity Catalog i refresh.
Wdrażanie modeli przy użyciu aliasów
Aliasy modelu umożliwiają przypisanie modyfikowalnego, nazwanego odwołania do określonej wersji zarejestrowanego modelu. Możesz użyć aliasów, aby wskazać stan wdrożenia wersji modelu. Można na przykład przydzielić alias "Champion" do wersji modelu obecnie w środowisku produkcyjnym i określić ten alias w obciążeniach korzystających z modelu produkcyjnego. Następnie można update modelu produkcyjnego, ponownie przypisując alias "Champion" do innej wersji modelu.
Set oraz usuń aliasy na modelach
Wymagane uprawnienia: właściciel zarejestrowanego modelu oraz uprawnienia USE SCHEMA
i USE CATALOG
w schema i catalog zawierających model.
Możesz
Aby wykonać set, updateoraz usunąć aliasy przy użyciu interfejsu API klienta MLflow, zapoznaj się z poniższymi przykładami:
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")
Aby uzyskać więcej informacji na temat interfejsów API klienta aliasów, zobacz dokumentację interfejsu API platformy MLflow.
Ładowanie wersji modelu według aliasu dla obciążeń wnioskowania
Uprawnienia wymagane: uprawnienia EXECUTE
na zarejestrowanym modelu oraz uprawnienia USE SCHEMA
i USE CATALOG
na schema i catalog zawierających model.
Obciążenia wnioskowania wsadowego mogą odwoływać się do wersji modelu według aliasu. Poniższy fragment kodu ładuje i stosuje wersję modelu "Champion" na potrzeby wnioskowania wsadowego. Jeśli wersja "Champion" zostanie zaktualizowana w celu odwołania się do nowej wersji modelu, obciążenie wnioskowania wsadowego automatycznie podniesie go podczas następnego wykonania. Dzięki temu można rozdzielić wdrożenia modelu z obciążeń wnioskowania wsadowego.
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)
Punkty końcowe obsługujące model mogą również odwoływać się do wersji modelu według aliasu. Można pisać przepływy pracy wdrażania w celu get wersji modelu z użyciem aliasu i update punktu końcowego serwującego model do obsługi tej wersji, używając REST API modelu . Na przykład:
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(...)
Ładowanie wersji modelu według numeru wersji dla obciążeń wnioskowania
Wersje modelu można również załadować według numeru wersji:
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)
Udostępnianie modeli między obszarami roboczymi
Udostępnianie modeli użytkownikom w tym samym regionie
Jeśli masz odpowiednie uprawnienia, możesz uzyskać dostęp do modeli w środowisku Unity Catalog z dowolnego obszaru roboczego dołączonego do magazynu metadanych zawierającego model. Na przykład można uzyskać dostęp do modeli z prod
catalog w obszarze roboczym deweloperskim, aby ułatwić porównywanie nowo opracowanych modeli do produkcyjnego punktu odniesienia.
Aby współpracować z innymi użytkownikami (udostępniać uprawnienia do zapisu) w utworzonym modelu, musisz grant własność modelu do grupy zawierającej siebie i użytkowników, z którymi chcesz współpracować. Współpracownicy muszą również mieć uprawnienia USE CATALOG
i USE SCHEMA
w catalog i schema zawierających model. Aby uzyskać szczegółowe informacje, zobacz przywileje Unity Catalog i zabezpieczalne obiekty.
Udostępnianie modeli użytkownikom w innym regionie lub koncie
Aby udostępnić modele użytkownikom w innych regionach lub kontach, użyj przepływu udostępniania danych usługi Delta Sharing Databricks-to-Databricks. Zobacz Dodaj modele do udziału (dla providers) oraz Get dostęp w modelu Databricks-do-Databricks (dla recipients). Jako odbiorca po utworzeniu catalog ze współdzielenia uzyskujesz dostęp do modeli w tym udostępnionym catalog tak samo jak w przypadku dowolnego innego modelu w Unity Catalog.
Śledzenie pochodzenia danych modelu w środowisku Unity Catalog
Uwaga
Obsługa table dla modelowania pochodzenia w systemie Unity Catalog jest dostępna w MLflow w wersji 2.11.0 lub nowszej.
Podczas trenowania modelu na table w środowisku Unity Catalogmożna śledzić pochodzenie modelu do nadrzędnych zestawów danych, na których został wytrenowany i oceniony. W tym celu użyj mlflow.log_input. Spowoduje to zapisanie informacji wejściowych table w przebiegu MLflow, który wygenerował model. Pochodzenie danych jest również automatycznie przechwytywane dla modeli rejestrowanych przy użyciu interfejsów API magazynu funkcji. Zobacz Zarządzanie funkcjami i pochodzenie danych.
Po zarejestrowaniu modelu w Unity Cataloginformacje o pochodzeniu są automatycznie zapisywane i są widoczne na karcie Pochodzenie w interfejsie użytkownika wersji modelu w eksploratorze Catalog.
Poniższy kod przedstawia przykład.
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",
)
Kontrola dostępu do modeli
W Unity Catalogzarejestrowane modele są podtypem zabezpieczalnego obiektu FUNCTION
. Aby uzyskać grant dostęp do modelu zarejestrowanego w usłudze Unity Catalog, należy użyć GRANT ON FUNCTION
. Aby uzyskać szczegółowe informacje, zobacz przywileje Unity Catalog i zabezpieczane obiekty. Aby uzyskać najlepsze rozwiązania dotyczące organizowania modeli w catalogs i schematach, zobacz Organizowanie danych.
Uprawnienia modelu można skonfigurować programowo przy użyciu interfejsu API REST Grantów. Podczas konfigurowania uprawnień modelu setsecurable_type
do "FUNCTION"
podczas wykonywania żądań w interfejsie API REST. Na przykład użyj zarejestrowanych uprawnień modelu od PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
do update.
Wyświetlanie modeli w interfejsie użytkownika
Uprawnienia wymagane: aby wyświetlić zarejestrowany model i jego wersje modelu w interfejsie użytkownika, musisz mieć uprawnienia EXECUTE
w zarejestrowanym modelu oraz uprawnienia USE SCHEMA
i USE CATALOG
w schema i catalog zawierającego model
Zarejestrowane modele i wersje modeli można wyświetlać i zarządzać nimi w środowisku Unity Catalog przy użyciu eksploratora Catalog.
Zmienianie nazwy modelu
Uprawnienia wymagane: właściciel zarejestrowanego modelu, uprawnienia CREATE_MODEL
do schema zawierającego zarejestrowany model oraz uprawnienia USE SCHEMA
i USE CATALOG
do schema i catalog zawierających model.
Aby zmienić nazwę zarejestrowanego modelu, użyj metody rename_registered_model()
interfejsu API klienta platformy MLflow:
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Kopiowanie wersji modelu
Wersję modelu można skopiować z jednego modelu do innego w środowisku Unity Catalog.
Kopiowanie wersji modelu przy użyciu interfejsu użytkownika
Wykonaj te kroki:
Na stronie wersja modelu kliknij pozycję Kopiuj tę wersję w prawym górnym rogu interfejsu użytkownika.
Select model docelowy z listy rozwijanej list i kliknij pozycję Kopiuj.
Kopiowanie modelu może zająć trochę czasu. Aby monitorować postęp, okresowo przechodź do modelu docelowego w środowisku Unity Catalog i refresh.
Kopiowanie wersji modelu przy użyciu interfejsu API
Aby skopiować wersję modelu, użyj interfejsu API języka Python copy_model_version() platformy MLflow:
client = MlflowClient()
client.copy_model_version(
"models:/<source-model-name>/<source-model-version>",
"<destination-model-name>",
)
Usuwanie modelu lub wersji modelu
Wymagane uprawnienia: właściciel zarejestrowanego modelu oraz uprawnienia USE SCHEMA
i USE CATALOG
w schema i catalog zawierających model.
Zarejestrowany model lub wersja modelu można usunąć w ramach zarejestrowanego modelu przy użyciu interfejsu użytkownika programu Catalog Explorer lub interfejsu API.
Ostrzeżenie
Nie można cofnąć tej akcji. Po usunięciu modelu wszystkie artefakty modelu przechowywane przez Unity Catalog oraz wszystkie metadane związane z zarejestrowanym modelem zostaną usunięte.
Usuwanie modelu lub wersji modelu przy użyciu interfejsu użytkownika
Aby usunąć model lub wersję modelu w środowisku Unity Catalog, wykonaj następujące kroki.
Na stronie modelu lub wersji modelu kliknij menu kebab w prawym górnym rogu.
Na stronie modelu:
Na stronie wersji modelu:
Select Usuń.
Pojawia się okno dialogowe potwierdzenia. Kliknij przycisk Usuń , aby potwierdzić.
Usuwanie modelu lub wersji modelu przy użyciu interfejsu API
Aby usunąć wersję modelu, użyj metody delete_model_version()
interfejsu API klienta platformy MLflow:
# 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)
Aby usunąć model, użyj metody delete_registered_model()
interfejsu API klienta platformy MLflow:
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Używanie tagów w modelach
Tagi to pary klucz-wartość, które są skojarzone z zarejestrowanymi modelami i wersjami modelu, co umożliwia etykietowanie i kategoryzowanie ich według funkcji lub stanu. Można na przykład zastosować tag z kluczem "task"
i wartością "question-answering"
(wyświetlaną w interfejsie użytkownika jako task:question-answering
) do zarejestrowanych modeli przeznaczonych do zadań odpowiadania na pytania. Na poziomie wersji modelu można oznaczyć wersje w ramach weryfikacji przed wdrożeniem za pomocą polecenia validation_status:pending
i te, które zostały wyczyszczone do wdrożenia za pomocą polecenia validation_status:approved
.
Wymagane uprawnienia: właściciel lub posiadacz uprawnienia APPLY_TAG
na zarejestrowanym modelu oraz uprawnienia USE SCHEMA
i USE CATALOG
na schema i catalog zawierających model.
Zobacz Dodawanie i update tagów przy użyciu programu Catalog Explorer na temat set i usuwania tagów przy użyciu interfejsu użytkownika.
Aby użyć set i usunąć tagi przy użyciu interfejsu API klienta MLflow, należy zapoznać się z poniższymi przykładami.
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")
Zarówno zarejestrowane tagi modelu, jak i wersji modelu muszą spełniać ograniczenia dotyczące całej platformy.
Aby uzyskać więcej informacji na temat interfejsów API klienta tagów, zobacz dokumentację interfejsu API platformy MLflow.
Dodawanie opisu (komentarzy) do wersji modelu lub modelu
Wymagane uprawnienia: właściciel zarejestrowanego modelu oraz uprawnienia USE SCHEMA
i USE CATALOG
w schema i catalog zawierających model.
Możesz dołączyć opis tekstu dla dowolnego modelu lub wersji modelu w środowisku Unity Catalog. Na przykład możesz podać omówienie problemu lub informacji na temat używanej metodologii i algorytmu.
W przypadku modeli można również używać komentarzy generowanych przez sztuczną inteligencję. Zobacz Dodawanie komentarzy generowanych przez sztuczną inteligencję do obiektów Catalog Unity.
Dodawanie opisu do modelu przy użyciu interfejsu użytkownika
Aby dodać opis modelu, możesz użyć komentarzy generowanych przez sztuczną inteligencję lub wprowadzić własne komentarze. W razie potrzeby można edytować komentarze generowane przez sztuczną inteligencję.
- Aby dodać automatycznie wygenerowane komentarze, kliknij przycisk AI generate.
- Aby dodać własne komentarze, kliknij przycisk Dodaj. Wprowadź komentarze w oknie dialogowym, a następnie kliknij przycisk Zapisz.
Dodawanie opisu do wersji modelu przy użyciu interfejsu użytkownika
Aby dodać opis do wersji modelu w środowisku Unity Catalog, wykonaj następujące kroki:
Na stronie wersja modelu kliknij ikonę ołówka w obszarze Opis.
Wprowadź komentarze w oknie dialogowym, a następnie kliknij przycisk Zapisz.
Dodawanie opisu do modelu lub wersji modelu przy użyciu interfejsu API
Aby update zarejestrowanego opisu modelu, użyj metody update_registered_model()
interfejsu API klienta MLflow:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Aby opisać wersję modelu update, użyj metody interfejsu API klienta MLflow update_model_version()
.
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
modele List i modele wyszukiwania
Aby
client=MlflowClient()
client.search_registered_models()
Aby wyszukać określoną nazwę modelu i get informacje o wersjach tego modelu, użyj search_model_versions()
:
from pprint import pprint
client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]
Uwaga
Nie wszystkie pola i operatory interfejsu API wyszukiwania są obsługiwane dla modeli w Unity Catalog. Zobacz Ograniczenia, aby poznać szczegóły.
Pobieranie plików modelu (zaawansowany przypadek użycia)
W większości przypadków, aby załadować modele, należy użyć interfejsów API MLflow, takich jak mlflow.pyfunc.load_model
lub mlflow.<flavor>.load_model
(na przykład mlflow.transformers.load_model
w przypadku modeli HuggingFace).
W niektórych przypadkach może być konieczne pobranie plików modelu w celu debugowania zachowania modelu lub problemów z ładowaniem modelu. Pliki modelu można pobrać przy użyciu metody mlflow.artifacts.download_artifacts
w następujący sposób:
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)
Podwyższanie poziomu modelu w różnych środowiskach
Usługa Databricks zaleca wdrożenie potoków uczenia maszynowego jako kodu. Eliminuje to konieczność promowania modeli w różnych środowiskach, ponieważ wszystkie modele produkcyjne mogą być tworzone za pośrednictwem zautomatyzowanych przepływów pracy trenowania w środowisku produkcyjnym.
Jednak w niektórych przypadkach ponowne trenowanie modeli w różnych środowiskach może być zbyt kosztowne. Zamiast tego można kopiować wersje modeli między zarejestrowanymi modelami w Unity Catalog, aby promować je w różnych środowiskach.
Do wykonania przykładowego kodu poniżej potrzebne są następujące uprawnienia:
-
USE CATALOG
wstaging
iprod
catalogs. -
USE SCHEMA
staging.ml_team
w schematach iprod.ml_team
. -
EXECUTE
na .staging.ml_team.fraud_detection
Ponadto musisz być właścicielem zarejestrowanego modelu prod.ml_team.fraud_detection
.
Poniższy fragment kodu używa interfejsu API klienta MLflow dostępnego copy_model_version
w środowisku MLflow w wersji 2.8.0 lub nowszej.
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)
Gdy wersja modelu znajduje się w środowisku produkcyjnym, możesz wykonać dowolną niezbędną weryfikację przed wdrożeniem. Następnie możesz oznaczyć wersję modelu do wdrożenia przy użyciu aliasów.
client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)
W powyższym przykładzie tylko użytkownicy, którzy mogą odczytywać z zarejestrowanego staging.ml_team.fraud_detection
modelu i zapisywać prod.ml_team.fraud_detection
w zarejestrowanym modelu, mogą promować modele przejściowe do środowiska produkcyjnego. Ci sami użytkownicy mogą również używać aliasów do zarządzania wersjami modelu wdrożonych w środowisku produkcyjnym. Nie musisz konfigurować żadnych innych reguł ani zasad w celu nadzorowania podwyższania poziomu i wdrażania modelu.
Możesz dostosować ten przepływ, aby podwyższyć poziom wersji modelu w wielu środowiskach, które pasują do konfiguracji, takich jak dev
, qa
i prod
. Kontrola dostępu jest wymuszana zgodnie z konfiguracją w każdym środowisku.
przykładowy notes
W tym przykładowym notesie pokazano, jak używać modeli w interfejsach API Catalog Unity do zarządzania modelami w interfejsach API CatalogUnity, w tym rejestrowania modeli i wersji modeli, dodawania opisów, ładowania i wdrażania modeli, używania aliasów modelu oraz usuwania modeli i wersji modeli.
Modele w przykładzie notebooku Unity Catalog
Migrowanie przepływów pracy i modeli do platformy Unity Catalog
Databricks zaleca używanie modeli w Unity Catalog dla lepszego zarządzania, łatwego udostępniania w różnych obszarach roboczych i środowiskach oraz bardziej elastycznych przepływów pracy MLOps. table porównuje możliwości Rejestru Modeli Workspace i Unity Catalog.
Możliwość | Rejestr modeli obszaru roboczego (starsza wersja) | Modele w Unity Catalog (zalecane) |
---|---|---|
Odwołania do wersji modelu według nazwanych aliasów | Etapy rejestru modeli: przenieś wersje modelu do jednego z czterech stałych etapów, aby odwoływać się do nich według tego etapu. Nie można zmienić nazwy lub dodać etapów. | Aliasy rejestru modeli: utwórz maksymalnie 10 niestandardowych i ponownie przypisanych nazwanych odwołań do wersji modelu dla każdego zarejestrowanego modelu. |
Tworzenie środowisk kontrolowanych dostępem dla modeli | Etapy rejestru modeli: użyj etapów w jednym zarejestrowanym modelu, aby oznaczyć środowisko jego wersji modelu z mechanizmami kontroli dostępu tylko dla dwóch z czterech stałych etapów (Staging i Production ). |
Zarejestrowane modele: utwórz zarejestrowany model dla każdego środowiska w przepływie pracy metodyki MLOps, korzystając z trzech poziomów przestrzeni nazw i uprawnień środowiska Unity Catalog do wyrażania ładu. |
Podwyższanie poziomu modeli w różnych środowiskach (wdrażanie modelu) | Użyj interfejsu transition_model_version_stage() API klienta MLflow, aby przenieść wersję modelu na inny etap, potencjalnie powodując niezgodność przepływów pracy odwołujących się do poprzedniego etapu. |
Użyj interfejsu copy_model_version() API klienta MLflow, aby skopiować wersję modelu z jednego zarejestrowanego modelu do innego. |
Uzyskiwanie dostępu do modeli i udostępnianie ich w obszarach roboczych | Ręcznie eksportuj i importuj modele między obszarami roboczymi lub skonfiguruj connections do zdalnych rejestrów modeli przy użyciu osobistych tokenów dostępu i tajnych zakresów w obszarze roboczym. | Poza zakresem dostępu do modeli między obszarami roboczymi na tym samym koncie. Nie jest wymagana żadna konfiguracja. |
Konfiguracja uprawnień | Set uprawnienia na poziomie obszaru roboczego. | Set uprawnienia na poziomie konta, które stosuje spójne zarządzanie w obszarach roboczych. |
Uzyskiwanie dostępu do modeli w markplace usługi Databricks | Niedostępny. | Załaduj modele z marketplace Databricks do metastore Unity Catalog i uzyskaj do nich dostęp we wszystkich obszarach roboczych. |
Poniższe artykuły opisują, jak migrować procedury (zadania trenowania modeli i wnioskowania wsadowego) oraz modele z rejestru modeli obszaru roboczego do środowiska Unity Catalog.
- Aktualizowanie przepływów pracy dla uczenia maszynowego na modele docelowe w środowisku Unity Catalog
- Uaktualnianie modeli do platformy Unity Catalog
Ograniczenia
- Etapy nie są obsługiwane w przypadku modeli w środowisku Unity Catalog. Databricks zaleca używanie trójpoziomowej przestrzeni nazw w Unity Catalog do wyrażania środowiska, w jakim znajduje się model, oraz używanie aliasów do promowania modeli do wdrożenia. Aby uzyskać szczegółowe informacje, zobacz Podwyższanie poziomu modelu w różnych środowiskach .
- Elementy webhook nie są obsługiwane w przypadku modeli w środowisku Unity Catalog. Zobacz sugerowane alternatywy w przewodniku uaktualniania.
- Niektóre pola i operatory interfejsu API wyszukiwania nie są obsługiwane w przypadku modeli w środowisku Unity Catalog. Można temu zapobiec, wywołując interfejsy API wyszukiwania przy użyciu obsługiwanych filtrów i skanując wyniki. Poniżej przedstawiono kilka przykładów:
- Parametr
order_by
nie jest obsługiwany w interfejsach API klienta search_model_versions ani search_registered_models . - Filtry oparte na tagach (
tags.mykey = 'myvalue'
) nie są obsługiwane dlasearch_model_versions
programu lubsearch_registered_models
. - Operatory inne niż dokładna równość (na przykład ,
LIKE
,ILIKE
)!=
nie są obsługiwane dlasearch_model_versions
lubsearch_registered_models
. - Wyszukiwanie zarejestrowanych modeli według nazwy (na przykład
MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'")
nie jest obsługiwane. Aby pobrać określony zarejestrowany model według nazwy, użyj get_registered_model.
- Parametr
- Powiadomienia e-mail i wątki dyskusji o komentarzach dotyczące zarejestrowanych modeli i wersji modelu nie są obsługiwane w środowisku Unity Catalog.
- Dziennik aktywności nie jest obsługiwany w przypadku modeli w środowisku Unity Catalog. Aby śledzić aktywność modeli w Unity Catalog, skorzystaj z dzienników audytu .
-
search_registered_models
może zwracać nieaktualne wyniki dla modeli udostępnionych za pośrednictwem funkcji udostępniania różnicowego. Aby zapewnić najnowsze wyniki, użyj interfejsu wiersza polecenia usługi Databricks lub zestawu SDK , aby list modele w schema.