Używanie niestandardowych bibliotek języka Python z obsługą modelu

Z tego artykułu dowiesz się, jak dołączać biblioteki niestandardowe lub biblioteki z prywatnego serwera dublowania podczas rejestrowania modelu, aby można było ich używać z wdrożeniami modelu obsługującego model. Kroki opisane w tym przewodniku należy wykonać po zakończeniu wdrażania wytrenowanego modelu uczenia maszynowego, ale przed utworzeniem punktu końcowego obsługującego model usługi Azure Databricks.

Tworzenie modelu często wymaga użycia niestandardowych bibliotek języka Python, które zawierają funkcje do przetwarzania wstępnego lub końcowego, niestandardowych definicji modelu i innych udostępnionych narzędzi. Ponadto wiele zespołów ds. zabezpieczeń przedsiębiorstwa zachęca do korzystania z prywatnych dublowania PyPi, takich jak Nexus lub Artifactory, w celu zmniejszenia ryzyka ataków łańcucha dostaw. Usługa Azure Databricks oferuje natywną obsługę instalacji bibliotek niestandardowych i bibliotek z prywatnego dublowania w obszarze roboczym usługi Azure Databricks.

Wymagania

  • MLflow 1.29 lub nowszy

Krok 1. Przekazywanie pliku zależności

Usługa Databricks zaleca przekazanie pliku zależności do woluminów wykazu aparatu Unity. Alternatywnie możesz przekazać go do systemu plików usługi Databricks (DBFS) przy użyciu interfejsu użytkownika usługi Azure Databricks.

Aby upewnić się, że biblioteka jest dostępna dla notesu, należy zainstalować ją przy użyciu programu %pip%. Za pomocą polecenia %pip zainstaluje bibliotekę w bieżącym notesie i pobierze zależność do klastra.

Krok 2. Rejestrowanie modelu przy użyciu biblioteki niestandardowej

Ważne

Wskazówki zawarte w tej sekcji nie są wymagane, jeśli zainstalujesz bibliotekę prywatną, wskazując na niestandardowe dublowanie PyPi.

Po zainstalowaniu biblioteki i przekazaniu pliku wheel języka Python do woluminów wykazu aparatu Unity lub systemu plików DBFS dołącz następujący kod w skrypcie. W polu extra_pip_requirements określ ścieżkę pliku zależności.

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])

W przypadku systemu plików DBFS użyj następujących elementów:

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])

Jeśli masz bibliotekę niestandardową, podczas konfigurowania rejestrowania należy określić wszystkie niestandardowe biblioteki języka Python skojarzone z modelem. Można to zrobić za pomocą parametrów extra_pip_requirements lub w log_model()conda_env.

Ważne

Jeśli używasz systemu plików DBFS, pamiętaj o dołączeniu ukośnika do przodu , /przed dbfs ścieżką podczas rejestrowania extra_pip_requirements. Dowiedz się więcej o ścieżkach systemu plików DBFS w temacie Praca z plikami w usłudze Azure Databricks.

from mlflow.utils.environment import _mlflow_conda_env
conda_env =  _mlflow_conda_env(
            additional_conda_deps= None,
            additional_pip_deps= ["/volumes/path/to/dependency"],
            additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)

Krok 3. Aktualizowanie modelu MLflow przy użyciu plików wheel języka Python

Narzędzie MLflow udostępnia narzędzie add_libraries_to_model() do rejestrowania modelu ze wszystkimi jego zależnościami wstępnie spakowanym jako pliki wheel języka Python. Spowoduje to skonfigurowanie bibliotek niestandardowych wraz z modelem oprócz wszystkich innych bibliotek, które są określone jako zależności modelu. Gwarantuje to, że biblioteki używane przez model są dokładnie tymi, które są dostępne w środowisku trenowania.

W poniższym przykładzie model_uri odwołuje się do rejestru modeli przy użyciu składni models:/<model-name>/<model-version>.

Jeśli używasz identyfikatora URI rejestru modelu, to narzędzie generuje nową wersję w ramach istniejącego zarejestrowanego modelu.

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

Krok 4. Obsługa modelu

Gdy nowa wersja modelu z dołączonymi pakietami jest dostępna w rejestrze modeli, możesz dodać tę wersję modelu do punktu końcowego z obsługą modelu.