Använda anpassade Python-bibliotek med modellservering

I den här artikeln får du lära dig hur du inkluderar anpassade bibliotek eller bibliotek från en privat speglingsserver när du loggar din modell, så att du kan använda dem med distributioner av Mosaic AI Model Serving Model. Du bör slutföra stegen som beskrivs i den här guiden när du har en tränad ML-modell som är redo att distribueras, men innan du skapar en Azure Databricks Model Serving-slutpunkt.

Modellutveckling kräver ofta användning av anpassade Python-bibliotek som innehåller funktioner för för- eller efterbearbetning, anpassade modelldefinitioner och andra delade verktyg. Dessutom uppmuntrar många företagssäkerhetsteam att använda privata PyPi-speglar, till exempel Nexus eller Artifactory, för att minska risken för leveranskedjeattacker. Azure Databricks har inbyggt stöd för installation av anpassade bibliotek och bibliotek från en privat spegling på Azure Databricks-arbetsytan.

Krav

  • MLflow 1.29 eller senare

Steg 1: Ladda upp beroendefil

Databricks rekommenderar att du laddar upp din beroendefil till Unity Catalog-volymer. Du kan också ladda upp den till Databricks File System (DBFS) med hjälp av Azure Databricks-användargränssnittet.

För att säkerställa att biblioteket är tillgängligt för anteckningsboken måste du installera det med hjälp av %pip%. Med hjälp av %pip installerar biblioteket i den aktuella notebook-filen och laddar ned beroendet till klustret.

Steg 2: Logga modellen med ett anpassat bibliotek

Viktigt!

Vägledningen i det här avsnittet krävs inte om du installerar det privata biblioteket genom att peka på en anpassad PyPi-spegling.

När du har installerat biblioteket och laddat upp Python-hjulfilen till antingen Unity Catalog-volymer eller DBFS inkluderar du följande kod i skriptet. I ange extra_pip_requirements sökvägen till din beroendefil.

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

Använd följande för DBFS:

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

Om du har ett anpassat bibliotek måste du ange alla anpassade Python-bibliotek som är associerade med din modell när du konfigurerar loggning. Du kan göra det med parametrarna extra_pip_requirements eller conda_env i log_model().

Viktigt!

Om du använder DBFS måste du inkludera ett snedstreck, /, före sökvägen dbfs när du loggar extra_pip_requirements. Läs mer om DBFS-sökvägar i Arbeta med filer på 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)

Steg 3: Uppdatera MLflow-modellen med Python-hjulfiler

MLflow tillhandahåller verktyget add_libraries_to_model() för att logga din modell med alla dess beroenden förpaketerade som Python-hjulfiler. Detta paketerar dina anpassade bibliotek tillsammans med modellen utöver alla andra bibliotek som anges som beroenden för din modell. Detta garanterar att de bibliotek som används av din modell är exakt de som är tillgängliga från din träningsmiljö.

I följande exempel model_uri refererar till modellregistret med syntaxen models:/<model-name>/<model-version>.

När du använder modellregistrets URI genererar det här verktyget en ny version under din befintliga registrerade modell.

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

Steg 4: Hantera din modell

När en ny modellversion med de paket som ingår är tillgänglig i modellregistret kan du lägga till den här modellversionen till en slutpunkt med modellservern.