Udostępnij za pośrednictwem


Udostępnianie modeli między obszarami roboczymi

Ważne

Usługa Databricks zaleca używanie modeli w wykazie aparatu 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 tworzenia i wdrażania modelu między obszarami roboczymi usługa Databricks zaleca podejście do wdrażania kodu , w którym kod trenowania modelu jest wdrażany w wielu środowiskach.

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óry potrzebuje dostępu , tworzy osobisty token dostępu w rejestrze zdalnym i kopiuje ten token do menedżera wpisów tajnych 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

Najlepszym rozwiązaniem w zakresie zabezpieczeń w przypadku uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji usługa Databricks zaleca używanie osobistych tokenów dostępu należących do jednostek usługi zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.

Wszystkie metody klienta i płynnego interfejsu API dla rejestru modeli są obsługiwane w przypadku zdalnych obszarów 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 wpisy tajne do przechowywania tokenu dostępu i informacji o zdalnym obszarze roboczym:
    1. Utwórz zakres wpisu tajnego: 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ć zakres wpisu tajnego innym użytkownikom, ponieważ istnieje limit liczby zakresów wpisów tajnych na obszar roboczy.

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ć rejestr zdalny dla płynnych metod interfejsu API, wywołując najpierw:

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 stanie. Pliki tymczasowe można znaleźć w folderze /dbfs/databricks/mlflow/tmp-external-source/<run-id> .

Można również określić, aby tracking_uri wskazać usługę śledzenia MLflow w innym obszarze roboczym w podobny sposób do registry_uri. Oznacza to, że można uruchomić w zdalnym obszarze roboczym i zarejestrować jego 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 przy mlflow.<flavor>.load_model użyciu metod, ustawiając najpierw identyfikator URI rejestru:

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 identyfikatorze models:/ 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 notesu: Rejestr modeli zdalnych

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

Przykładowy notes rejestru modeli zdalnych

Pobierz notes