Zarządzanie cyklem życia modelu w wykazie aparatu Unity
Ważne
- Ten artykuł zawiera dokumenty Modele w wykazie aparatu Unity, który usługa Databricks zaleca zarządzanie i wdrażanie modeli. Jeśli obszar roboczy nie jest włączony dla wykazu aparatu Unity, funkcje na tej stronie nie są dostępne. Zamiast tego zobacz Zarządzanie cyklem życia modelu przy użyciu rejestru modeli obszaru roboczego (starsza wersja). Aby uzyskać wskazówki dotyczące uaktualniania z rejestru modeli obszarów roboczych do wykazu aparatu Unity, zobacz Migrowanie przepływów pracy i modeli do wykazu aparatu Unity.
- Modele w wykazie aparatu Unity nie są dostępne w regionach usługi Azure Government.
W tym artykule opisano sposób używania modeli w katalogu aparatu Unity w ramach przepływu pracy uczenia maszynowego w celu zarządzania pełnym cyklem życia modeli uczenia maszynowego. Usługa Databricks udostępnia hostowaną wersję rejestru modeli MLflow w katalogu aparatu Unity. Modele w wykazie aparatu Unity rozszerzają zalety wykazu aparatu Unity na modele uczenia maszynowego, w tym scentralizowaną kontrolę dostępu, inspekcję, pochodzenie i odnajdywanie modeli między obszarami roboczymi. Modele w wykazie aparatu Unity są zgodne z klientem języka Python MLflow typu open source.
Aby zapoznać się z omówieniem pojęć związanych z rejestrem modeli, zobacz Zarządzanie cyklem życia uczenia maszynowego przy użyciu platformy MLflow.
Wymagania
Wykaz aparatu Unity musi być włączony w obszarze roboczym. Zobacz Rozpoczynanie pracy z wykazem aparatu Unity w celu utworzenia magazynu metadanych wykazu aparatu Unity, włączenia go w obszarze roboczym i utworzenia wykazu. Jeśli wykaz aparatu Unity nie jest włączony, użyj rejestru modeli obszarów roboczych.
Musisz użyć zasobu obliczeniowego, który ma dostęp do wykazu aparatu Unity. 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.
Do utworzenia nowych zarejestrowanych modeli potrzebne są następujące uprawnienia:
USE SCHEMA
iUSE CATALOG
uprawnienia schematu i jego otaczającego wykazu.CREATE_MODEL
uprawnienia w schemacie. Aby udzielić tego uprawnienia, użyj interfejsu użytkownika Eksploratora wykazu lub następującego polecenia PROGRAMU SQL GRANT:
GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
Uwaga
Obszar roboczy musi być dołączony do magazynu metadanych wykazu aparatu Unity, który obsługuje dziedziczenie uprawnień. Dotyczy to wszystkich magazynów metadanych utworzonych po 25 sierpnia 2022 r. Jeśli korzystasz ze starszego magazynu metadanych, postępuj zgodnie z dokumentami, aby uaktualnić.
Instalowanie i konfigurowanie klienta MLflow dla wykazu aparatu Unity
Ta sekcja zawiera instrukcje dotyczące instalowania i konfigurowania klienta MLflow dla katalogu aparatu Unity.
Instalowanie klienta języka Python MLflow
Modele można również używać w wykazie aparatu Unity w środowisku Databricks Runtime 11.3 LTS lub nowszym, instalując najnowszą wersję klienta języka Python MLflow w notesie przy użyciu następującego kodu.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Konfigurowanie klienta MLflow w celu uzyskiwania dostępu do modeli w katalogu aparatu Unity
Jeśli domyślny wykaz obszaru roboczego znajduje się w wykazie aparatu Unity (a nie hive_metastore
) i korzystasz z klastra przy użyciu środowiska Databricks Runtime 13.3 LTS lub nowszego (środowisko Databricks Runtime 15.0 lub nowsze w regionach Azure China), modele są tworzone automatycznie i ładowane z katalogu domyślnego. Nie trzeba wykonywać tego kroku.
W przypadku innych obszarów roboczych klient języka Python MLflow tworzy modele w rejestrze modeli obszaru roboczego usługi Databricks. Aby przeprowadzić uaktualnienie do modeli w katalogu aparatu Unity, użyj następującego kodu w notesach, aby skonfigurować klienta MLflow:
import mlflow
mlflow.set_registry_uri("databricks-uc")
W przypadku niewielkiej liczby obszarów roboczych, w których katalog domyślny został skonfigurowany do wykazu w wykazie aparatu Unity przed styczniem 2024 r., a rejestr modeli obszarów roboczych był używany przed styczniem 2024 r., należy ręcznie ustawić domyślny wykaz na wykaz aparatu Unity, używając polecenia pokazanego powyżej.
Trenowanie i rejestrowanie modeli zgodnych z wykazem aparatu Unity
Wymagane uprawnienia: aby utworzyć nowy zarejestrowany model, potrzebne są CREATE_MODEL
uprawnienia i USE SCHEMA
w otaczającym schemacie oraz USE CATALOG
uprawnienia w wykazie otaczającym. Aby utworzyć nowe wersje modelu w ramach zarejestrowanego modelu, musisz być właścicielem zarejestrowanego modelu i mieć USE SCHEMA
USE CATALOG
uprawnienia do schematu i katalogu zawierającego 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 modeli i uzyskiwanie do ich dostępu w ml_team
schemacie w prod
katalogu.
Przykłady trenowania modelu w tej sekcji tworzą nową wersję modelu i rejestrują ją w wykazie prod
. prod
Użycie wykazu nie musi oznaczać, że wersja modelu obsługuje ruch produkcyjny. Katalog, schemat i zarejestrowany model wersji modelu odzwierciedlają swoje środowisko (prod
) i skojarzone reguły ładu (na przykład uprawnienia można skonfigurować tak, aby tylko administratorzy mogli usunąć z prod
katalogu), ale nie jego stan wdrożenia. Aby zarządzać stanem wdrożenia, użyj aliasów modelu.
Rejestrowanie modelu w wykazie aparatu Unity 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"
)
Rejestrowanie modelu w wykazie aparatu Unity z automatycznym 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 wybierz pozycję Wykaz aparatu Unity i wybierz model docelowy z listy rozwijanej.
Kliknij pozycję Zarejestruj.
Zarejestrowanie modelu może zająć trochę czasu. Aby monitorować postęp, przejdź do modelu docelowego w katalogu aparatu Unity i okresowo odświeżaj.
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 zaktualizować model produkcyjny, ponownie przypisując alias "Champion" do innej wersji modelu.
Ustawianie i usuwanie aliasów w modelach
Wymagane uprawnienia: właściciel zarejestrowanego modelu oraz USE SCHEMA
USE CATALOG
uprawnienia do schematu i katalogu zawierającego model.
Można ustawić, zaktualizować i usunąć aliasy dla modeli w wykazie aparatu Unity przy użyciu Eksploratora wykazu. Aliasy można zarządzać w ramach zarejestrowanego modelu na stronie szczegółów modelu i konfigurować aliasy dla określonej wersji modelu na stronie szczegółów wersji modelu.
Aby ustawić, zaktualizować i 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
Wymagane uprawnienia: EXECUTE
uprawnienia do zarejestrowanego modelu oraz USE SCHEMA
USE CATALOG
uprawnienia schematu i katalogu zawierającego 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żesz napisać przepływy pracy wdrażania, aby uzyskać wersję modelu według aliasu i zaktualizować punkt końcowy obsługujący model w celu obsługi tej wersji przy użyciu modelu obsługującego interfejs API REST. 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 katalogu aparatu Unity z dowolnego obszaru roboczego dołączonego do magazynu metadanych zawierającego model. Na przykład możesz uzyskać dostęp do modeli z prod
katalogu w obszarze roboczym deweloperskim, aby ułatwić porównywanie nowo opracowanych modeli z punktem odniesienia produkcyjnym.
Aby współpracować z innymi użytkownikami (udostępniać uprawnienia do zapisu) w zarejestrowanym modelu, musisz przyznać własność modelu grupie zawierającej siebie i użytkownikom, z którymi chcesz współpracować. Współpracownicy muszą również mieć USE CATALOG
uprawnienia i USE SCHEMA
w wykazie i schemacie zawierającym model. Aby uzyskać szczegółowe informacje, zobacz Uprawnienia wykazu aparatu Unity i zabezpieczane 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 Dodawanie modeli do udziału (dla dostawców) i Uzyskiwanie dostępu w modelu databricks-to-Databricks (dla adresatów). Jako odbiorca po utworzeniu wykazu na podstawie udziału uzyskujesz dostęp do modeli w tym wykazie udostępnionym tak samo jak w przypadku dowolnego innego modelu w wykazie aparatu Unity.
Śledzenie pochodzenia danych modelu w wykazie aparatu Unity
Uwaga
Obsługa pochodzenia tabel w wykazie aparatu Unity jest dostępna w środowisku MLflow 2.11.0 lub nowszym.
Podczas trenowania modelu w tabeli w wykazie aparatu Unity moż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 o tabeli wejściowej przy użyciu przebiegu platformy 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 wykazie aparatu Unity informacje o pochodzenia są automatycznie zapisywane i widoczne na karcie Pochodzenie interfejsu użytkownika wersji modelu w Eksploratorze wykazu.
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 wykazie aparatu Unity zarejestrowane modele są podtypem FUNCTION
zabezpieczanego obiektu. Aby udzielić dostępu do modelu zarejestrowanego w katalogu aparatu Unity, należy użyć polecenia GRANT ON FUNCTION
. Aby uzyskać szczegółowe informacje, zobacz Uprawnienia wykazu aparatu Unity i zabezpieczane obiekty. Aby uzyskać najlepsze rozwiązania dotyczące organizowania modeli między wykazami i schematami, zobacz Organizowanie danych.
Uprawnienia modelu można skonfigurować programowo przy użyciu interfejsu API REST Grantów. Podczas konfigurowania uprawnień modelu ustaw wartość securable_type
na "FUNCTION"
w żądaniach interfejsu API REST. Na przykład użyj polecenia PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
, aby zaktualizować zarejestrowane uprawnienia modelu.
Wyświetlanie modeli w interfejsie użytkownika
Wymagane uprawnienia: aby wyświetlić zarejestrowany model i jego wersje modelu w interfejsie użytkownika, potrzebujesz EXECUTE
uprawnień do zarejestrowanego modelu oraz USE SCHEMA
USE CATALOG
uprawnień w schemacie i wykazie zawierającym model
Zarejestrowane modele i wersje modeli można wyświetlać i zarządzać nimi w wykazie aparatu Unity przy użyciu Eksploratora wykazu.
Zmienianie nazwy modelu
Wymagane uprawnienia: właściciel zarejestrowanego modelu, CREATE_MODEL
uprawnienia do schematu zawierającego zarejestrowany model oraz USE CATALOG
uprawnienia schematu i USE SCHEMA
katalogu zawierającego 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 wykazie aparatu Unity.
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.
Wybierz model docelowy z listy rozwijanej i kliknij pozycję Kopiuj.
Kopiowanie modelu może zająć trochę czasu. Aby monitorować postęp, przejdź do modelu docelowego w katalogu aparatu Unity i okresowo odświeżaj.
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 USE SCHEMA
USE CATALOG
uprawnienia do schematu i katalogu zawierającego model.
Zarejestrowany model lub wersja modelu można usunąć w ramach zarejestrowanego modelu przy użyciu interfejsu użytkownika eksploratora wykazu lub interfejsu API.
Ostrzeżenie
Nie można cofnąć tej akcji. Po usunięciu modelu wszystkie artefakty modelu przechowywane przez wykaz aparatu Unity i wszystkie metadane skojarzone z zarejestrowanym modelem zostaną usunięte.
Usuwanie modelu lub wersji modelu przy użyciu interfejsu użytkownika
Aby usunąć wersję modelu lub modelu w katalogu aparatu Unity, 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:
Wybierz 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 ma APPLY_TAG
uprawnienia do zarejestrowanego modelu oraz USE SCHEMA
USE CATALOG
uprawnienia w schemacie i wykazie zawierającym model.
Zobacz Dodawanie i aktualizowanie tagów przy użyciu Eksploratora wykazu, aby dowiedzieć się, jak ustawiać i usuwać tagi przy użyciu interfejsu użytkownika.
Aby ustawić i usunąć tagi przy użyciu interfejsu API klienta MLflow, zobacz poniższe przykłady:
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 USE SCHEMA
USE CATALOG
uprawnienia do schematu i katalogu zawierającego model.
Możesz dołączyć opis tekstu dla dowolnego modelu lub wersji modelu w wykazie aparatu Unity. 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 wykazu aparatu 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 Generuj sztuczną inteligencję.
- 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 katalogu aparatu Unity, 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 zaktualizować opis zarejestrowanego modelu, użyj metody interfejsu API update_registered_model()
klienta MLflow:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Aby zaktualizować opis wersji modelu, użyj metody update_model_version()
interfejsu API klienta platformy MLflow:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
Wyświetlanie listy i wyszukiwanie modeli
Aby uzyskać listę zarejestrowanych modeli w katalogu aparatu Unity, użyj interfejsu API języka Python search_registered_models() platformy MLflow:
client=MlflowClient()
client.search_registered_models()
Aby wyszukać określoną nazwę modelu i uzyskać informacje o wersjach tego modelu, użyj polecenia 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 w przypadku modeli w katalogu aparatu Unity. 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 katalogu aparatu Unity, aby podwyższyć ich poziom w różnych środowiskach.
Do wykonania przykładowego kodu poniżej potrzebne są następujące uprawnienia:
USE CATALOG
w katalogachstaging
iprod
.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ład
W tym przykładzie pokazano, jak używać modeli w katalogu aparatu Unity do tworzenia aplikacji uczenia maszynowego.
Przykład modeli w wykazie aparatu Unity
Migrowanie przepływów pracy i modeli do wykazu aparatu Unity
Usługa Databricks zaleca używanie modeli w wykazie aparatu Unity w celu zwiększenia ładu, łatwego udostępniania w obszarach roboczych i środowiskach oraz bardziej elastycznych przepływów pracy metodyki MLOps. Tabela porównuje możliwości rejestru modeli obszarów roboczych i wykazu aparatu Unity.
Możliwość | Rejestr modeli obszaru roboczego (starsza wersja) | Modele w wykazie aparatu Unity (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ń wykazu aparatu Unity 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ęczne eksportowanie i importowanie modeli między obszarami roboczymi lub konfigurowanie połączeń z rejestrami modeli zdalnych przy użyciu osobistych tokenów dostępu i zakresów wpisów tajnych obszaru roboczego. | Poza zakresem dostępu do modeli między obszarami roboczymi na tym samym koncie. Nie jest wymagana żadna konfiguracja. |
Konfiguracja uprawnień | Ustaw uprawnienia na poziomie obszaru roboczego. | Ustaw uprawnienia na poziomie konta, które stosuje spójny nadzór między obszarami roboczymi. |
Uzyskiwanie dostępu do modeli w markplace usługi Databricks | Niedostępny. | Załaduj modele z platformy handlowej usługi Databricks do magazynu metadanych wykazu aparatu Unity i uzyskaj do nich dostęp w różnych obszarach roboczych. |
W poniższych artykułach opisano sposób migrowania przepływów pracy (zadań trenowania modelu i wnioskowania wsadowego) oraz modeli z rejestru modeli obszaru roboczego do wykazu aparatu Unity.
- Uaktualnianie przepływów pracy uczenia maszynowego do modeli docelowych w wykazie aparatu Unity
- Uaktualnianie modeli do wykazu aparatu Unity
Ograniczenia
- Etapy nie są obsługiwane w przypadku modeli w wykazie aparatu Unity. Usługa Databricks zaleca używanie trzy-poziomowej przestrzeni nazw w wykazie aparatu Unity do wyrażania środowiska, w których znajduje się model, i używania aliasów do promowania modeli na potrzeby wdrażania. Aby uzyskać szczegółowe informacje, zobacz Podwyższanie poziomu modelu w różnych środowiskach .
- Elementy webhook nie są obsługiwane w przypadku modeli w katalogu aparatu Unity. Zobacz sugerowane alternatywy w przewodniku uaktualniania.
- Niektóre pola i operatory interfejsu API wyszukiwania nie są obsługiwane w przypadku modeli w wykazie aparatu Unity. 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 wykazie aparatu Unity.
- Dziennik aktywności nie jest obsługiwany w przypadku modeli w wykazie aparatu Unity. Aby śledzić aktywność modeli w wykazie aparatu Unity, użyj dzienników inspekcji.
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 wyświetlić listę modeli w schemacie.