Udostępnij przez


Udostępnianie modeli między obszarami roboczymi

Ważne

Databricks zaleca używanie modeli w katalogu Unity do udostępniania modeli między obszarami roboczymi. Podejście w tym artykule jest przestarzałe.

Usługa Azure Databricks obsługuje udostępnianie modeli między obszarami roboczymi. Można na przykład opracowywać i rejestrować model w obszarze roboczym programowania, a następnie uzyskiwać do niego dostęp i porównywać je z modelami w osobnym obszarze roboczym produkcyjnym. Jest to przydatne, gdy wiele zespołów udostępnia dostęp do modeli lub gdy organizacja ma wiele obszarów roboczych do obsługi różnych etapów programowania. W przypadku opracowywania i wdrażania modeli między różnymi obszarami roboczymi usługa Databricks zaleca podejście typu wdrożyć kod, gdzie kod treningu modelu jest wdrażany do wielu środowisk.

W sytuacjach obejmujących wiele obszarów roboczych można uzyskiwać dostęp do modeli w obszarach roboczych usługi Azure Databricks przy użyciu rejestru modeli zdalnych. Na przykład analitycy danych mogą uzyskać dostęp do rejestru modeli produkcyjnych z dostępem tylko do odczytu, aby porównać swoje modele programowania z bieżącymi modelami produkcyjnymi. Poniżej przedstawiono przykładową konfigurację z wieloma obszarami roboczymi.

Wiele obszarów roboczych

Dostęp do rejestru zdalnego jest kontrolowany przez tokeny. Każdy użytkownik lub skrypt, które potrzebują dostępu, tworzy osobisty token dostępu w rejestrze zdalnym i kopiuje ten token do menedżera sekretów swojego lokalnego obszaru roboczego. Każde żądanie interfejsu API wysyłane do obszaru roboczego rejestru zdalnego musi zawierać token dostępu; Rozwiązanie MLflow udostępnia prosty mechanizm określania wpisów tajnych, które mają być używane podczas wykonywania operacji rejestru modelu.

Uwaga

Databricks zaleca, aby w ramach najlepszych praktyk dotyczących bezpieczeństwa podczas uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji używać osobistych tokenów dostępu należących do kont serwisowych zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.

Wszystkie metody API typu klient i fluent dla rejestru modeli są obsługiwane w zdalnych obszarach roboczych.

Wymagania

Korzystanie z rejestru modeli w obszarach roboczych wymaga klienta języka Python MLflow w wersji 1.11.0 lub nowszej.

Uwaga

Ten przepływ pracy jest implementowany z logiki w kliencie MLflow. Upewnij się, że środowisko z uruchomionym klientem ma dostęp do wykonywania żądań sieciowych względem obszaru roboczego usługi Azure Databricks zawierającego rejestr modeli zdalnych. Typowym ograniczeniem wprowadzonym w obszarze roboczym rejestru jest lista dozwolonych adresów IP, która może uniemożliwić nawiązywanie połączeń z klientów MLflow uruchomionych w klastrze w innym obszarze roboczym.

Konfigurowanie tokenu interfejsu API dla rejestru zdalnego

  1. W obszarze roboczym rejestru modeli utwórz token dostępu.
  2. W lokalnym obszarze roboczym utwórz sekrety do przechowywania tokenu dostępu i informacji o zdalnych zasobach.
    1. Utwórz tajny zakres: databricks secrets create-scope <scope>.
    2. Wybierz unikatową nazwę docelowego obszaru roboczego, pokazaną tutaj jako <prefix>. Następnie utwórz trzy wpisy tajne:
      • databricks secrets put-secret <scope> <prefix>-host : wprowadź nazwę hosta obszaru roboczego rejestru modelu. Na przykład: https://westus.azuredatabricks.net/ lub https://adb-5555555555555555.19.azuredatabricks.net/.
      • databricks secrets put-secret <scope> <prefix>-token : wprowadź token dostępu z obszaru roboczego rejestru modelu.
      • databricks secrets put-secret <scope> <prefix>-workspace-id : wprowadź identyfikator obszaru roboczego rejestru modeli, który można znaleźć w adresie URL dowolnej strony.

Uwaga

Możesz udostępnić poufny zakres innym użytkownikom, ponieważ istnieje limit liczby poufnych zakresów na workspace.

Określanie rejestru zdalnego

Na podstawie zakresu wpisu tajnego i prefiksu nazwy utworzonego dla obszaru roboczego rejestru zdalnego można utworzyć identyfikator URI rejestru formularza:

registry_uri = f'databricks://<scope>:<prefix>'

Możesz użyć identyfikatora URI, aby określić zdalny rejestr dla metod Fluent API, najpierw wywołując:

mlflow.set_registry_uri(registry_uri)

Możesz też określić ją jawnie podczas tworzenia wystąpienia elementu MlflowClient:

client = MlflowClient(registry_uri=registry_uri)

W poniższych przepływach pracy przedstawiono przykłady obu podejść.

Rejestrowanie modelu w rejestrze zdalnym

Jednym ze sposobów zarejestrowania modelu jest użycie interfejsu mlflow.register_model API:

mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

Przykłady innych metod rejestracji modeli można znaleźć w notesie na końcu tej strony.

Uwaga

Zarejestrowanie modelu w zdalnym obszarze roboczym powoduje utworzenie tymczasowej kopii artefaktów modelu w systemie plików DBFS w zdalnym obszarze roboczym. Możesz usunąć tę kopię, gdy wersja modelu jest w READY statusie. Pliki tymczasowe można znaleźć w folderze /dbfs/databricks/mlflow/tmp-external-source/<run-id> .

Można również określić tracking_uri, aby wskazywał na usługę śledzenia MLflow w innym obszarze roboczym w podobny sposób do registry_uri. Oznacza to, że można uruchomić proces w zdalnym obszarze roboczym i zarejestrować model w bieżącym lub innym zdalnym obszarze roboczym.

Używanie modelu z rejestru zdalnego

Wersję modelu można załadować i użyć w rejestrze zdalnym, najpierw ustawiając identyfikator URI rejestru, przy użyciu metod mlflow.<flavor>.load_model.

mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

Możesz też jawnie określić rejestr zdalny w adresie URI:

model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

Obsługiwane są również inne metody pomocnicze uzyskiwania dostępu do plików modelu, takie jak:

client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

Zarządzanie modelem w rejestrze zdalnym

Możesz wykonać dowolną akcję na modelach w rejestrze zdalnym, o ile masz wymagane uprawnienia. Jeśli na przykład masz uprawnienia CAN MANAGE w modelu, możesz przenieść etap wersji modelu lub usunąć model przy użyciu MlflowClient metod:

client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Przykład notatnika: Zdalny rejestr modeli

Poniższy notebook ma zastosowanie w obszarach roboczych, które nie są włączone dla Unity Catalog. Pokazuje on, jak rejestrować modele na serwerze śledzenia MLflow z bieżącego obszaru roboczego i rejestrować modele w rejestrze modeli w innym obszarze roboczym. Databricks zaleca używanie modeli w katalogu Unity do udostępniania modeli między obszarami roboczymi.

Przykładowy notatnik rejestru modeli zdalnych

Weź notes