Uaktualnianie przepływów pracy uczenia maszynowego do modeli docelowych w wykazie aparatu Unity

W tym artykule wyjaśniono, jak migrować i uaktualniać przepływy pracy uczenia maszynowego do modeli docelowych w katalogu aparatu Unity.

Wymagania

Przed rozpoczęciem upewnij się, że spełniasz wymagania w temacie Wymagania. W szczególności upewnij się, że użytkownicy lub podmioty zabezpieczeń używane do wykonywania przepływów pracy trenowania, wdrażania i wnioskowania modelu mają niezbędne uprawnienia do zarejestrowanego modelu w wykazie aparatu Unity:

  • Trenowanie: własność zarejestrowanego modelu (wymagane do utworzenia nowych wersji modelu) oraz USE CATALOGUSE SCHEMA uprawnienia do otaczającego katalogu i schematu.
  • Wdrożenie: własność zarejestrowanego modelu (wymagane do ustawienia aliasów w modelu) oraz USE CATALOGUSE SCHEMA uprawnienia w otaczającym wykazie i schemacie.
  • Wnioskowanie: EXECUTE uprawnienie do zarejestrowanego modelu (wymagane do odczytywania i wnioskowania z wersjami modelu) oraz USE CATALOG uprawnień UŻYJ SCHEMATu w wykazie i schemacie.

Tworzenie równoległego trenowania, wdrażania i przepływów pracy

Aby uaktualnić przepływy pracy trenowania i wnioskowania modelu do katalogu aparatu Unity, usługa Databricks zaleca przyrostowe podejście, w którym tworzysz potok równoległego trenowania, wdrażania i wnioskowania, który korzysta z modeli w wykazie aparatu Unity. Gdy wyniki są wygodne przy użyciu wykazu aparatu Unity, można przełączyć odbiorców podrzędnych, aby odczytać dane wyjściowe wnioskowania wsadowego lub zwiększyć ruch kierowany do modeli w wykazie aparatu Unity w obsługujących punkty końcowe.

Przepływ pracy trenowania modelu

Sklonuj przepływ pracy trenowania modelu. Następnie upewnij się, że:

  1. Klaster przepływu pracy ma dostęp do katalogu aparatu Unity i spełnia wymagania opisane w temacie Wymagania.
  2. Podmiot z systemem przepływu pracy ma niezbędne uprawnienia do zarejestrowanego modelu w wykazie aparatu Unity.

Następnie zmodyfikuj kod trenowania modelu w sklonowanym przepływie pracy. Może być konieczne sklonowanie notesu uruchamianego przez przepływ pracy lub utworzenie nowej gałęzi git w sklonowanym przepływie pracy. Wykonaj następujące kroki , aby zainstalować niezbędną wersję biblioteki MLflow, skonfigurować klienta tak, aby był przeznaczony dla katalogu aparatu Unity w kodzie treningowym, a następnie zaktualizować kod trenowania modelu, aby zarejestrować modele w katalogu aparatu Unity.

Przepływ pracy wdrażania modelu

Sklonuj przepływ pracy wdrażania modelu, wykonując podobne kroki, jak w przepływie pracy trenowania modelu, aby zaktualizować konfigurację obliczeniową w celu umożliwienia dostępu do wykazu aparatu Unity.

Upewnij się, że podmiot będący właścicielem sklonowanego przepływu pracy ma niezbędne uprawnienia. Jeśli masz logikę walidacji modelu w przepływie pracy wdrażania, zaktualizuj ją, aby załadować wersje modelu z interfejsu użytkownika. Użyj aliasów do zarządzania wdrożeniami modelu produkcyjnego.

Przepływ pracy wnioskowania modelu

Przepływ pracy wnioskowania wsadowego

Wykonaj podobne kroki, jak w przepływie pracy trenowania modelu, aby sklonować przepływ pracy wnioskowania wsadowego i zaktualizować konfigurację obliczeniową, aby umożliwić dostęp do wykazu aparatu Unity. Upewnij się, że podmiot zabezpieczeń z uruchomionym sklonowanym zadaniem wnioskowania wsadowego ma uprawnienia niezbędne do załadowania modelu na potrzeby wnioskowania.

Przepływ pracy obsługujący model

Jeśli używasz usługi Databricks Model Serving, nie musisz klonować istniejącego punktu końcowego. Zamiast tego można użyć funkcji podziału ruchu, aby skierować niewielki ułamek ruchu do modeli w wykazie aparatu Unity.

Najpierw upewnij się, że podmiot będący właścicielem punktu końcowego obsługującego model ma niezbędne uprawnienia do ładowania modelu na potrzeby wnioskowania. Następnie zaktualizuj sklonowany przepływ pracy wdrażania modelu, aby przypisać niewielki procent ruchu do wersji modelu w wykazie aparatu Unity.

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. W takich scenariuszach można kopiować wersje modeli między zarejestrowanymi modelami w katalogu aparatu Unity, aby promować je w różnych środowiskach.

Do wykonania przykładowego kodu poniżej potrzebne są następujące uprawnienia:

  • USE CATALOG w katalogach staging i prod .
  • USE SCHEMAstaging.ml_team w schematach i prod.ml_team .
  • EXECUTEna .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_versionw ś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, qai prod. Kontrola dostępu jest wymuszana zgodnie z konfiguracją w każdym środowisku.

Używanie elementów webhook zadań do ręcznego zatwierdzania wdrożenia modelu

Usługa Databricks zaleca zautomatyzowanie wdrażania modelu, jeśli to możliwe, przy użyciu odpowiednich testów i testów podczas procesu wdrażania modelu. Jeśli jednak musisz wykonać ręczne zatwierdzenia w celu wdrożenia modeli produkcyjnych, możesz użyć elementów webhook zadań, aby wywołać zewnętrzne systemy ciągłej integracji/ciągłego wdrażania w celu żądania ręcznego zatwierdzenia wdrożenia modelu po pomyślnym zakończeniu zadania trenowania modelu. Po ręcznym zatwierdzeniu system ciągłej integracji/ciągłego wdrażania może następnie wdrożyć wersję modelu w celu obsługi ruchu, na przykład przez ustawienie aliasu "Champion" na nim.