Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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
- W obszarze roboczym rejestru modeli utwórz token dostępu.
- W lokalnym obszarze roboczym utwórz sekrety do przechowywania tokenu dostępu i informacji o zdalnych zasobach.
- Utwórz tajny zakres:
databricks secrets create-scope <scope>. - 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/lubhttps://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.
-
- Utwórz tajny zakres:
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.