Delen via


Aangepaste Python-bibliotheken gebruiken met Model Serving

In dit artikel leert u hoe u aangepaste bibliotheken of bibliotheken van een privéspiegelserver kunt opnemen wanneer u uw model aanmeldt, zodat u deze kunt gebruiken met modelimplementaties voor modelservers . Voer de stappen uit die in deze handleiding worden beschreven nadat u een getraind ML-model hebt dat klaar is voor implementatie, maar voordat u een Azure Databricks Model Serving-eindpunt maakt.

Modelontwikkeling vereist vaak het gebruik van aangepaste Python-bibliotheken die functies bevatten voor pre- of naverwerking, aangepaste modeldefinities en andere gedeelde hulpprogramma's. Daarnaast stimuleren veel bedrijfsbeveiligingsteams het gebruik van privé-PyPi-spiegels, zoals Nexus of Artifactory, om het risico op supply chain-aanvallen te verminderen. Azure Databricks biedt systeemeigen ondersteuning voor de installatie van aangepaste bibliotheken en bibliotheken vanuit een privéspiegel in de Azure Databricks-werkruimte.

Vereisten

  • MLflow 1.29 of hoger

Stap 1: Afhankelijkheidsbestand uploaden

Databricks raadt u aan uw afhankelijkheidsbestand te uploaden naar Unity Catalog-volumes. U kunt het ook uploaden naar Databricks File System (DBFS) met behulp van de Gebruikersinterface van Azure Databricks.

Om ervoor te zorgen dat uw bibliotheek beschikbaar is voor uw notitieblok, moet u deze installeren met behulp van %pip%. Als %pip u de bibliotheek in het huidige notebook installeert en de afhankelijkheid naar het cluster downloadt.

Stap 2: Het model registreren met een aangepaste bibliotheek

Belangrijk

De richtlijnen in deze sectie zijn niet vereist als u de persoonlijke bibliotheek installeert door te verwijzen naar een aangepaste PyPi-spiegel.

Nadat u de bibliotheek hebt geïnstalleerd en het Python-wielbestand hebt geüpload naar Unity Catalog-volumes of DBFS, neemt u de volgende code op in uw script. Geef in het extra_pip_requirements afhankelijkheidsbestand het pad op.

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

Gebruik voor DBFS het volgende:

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

Als u een aangepaste bibliotheek hebt, moet u alle aangepaste Python-bibliotheken opgeven die aan uw model zijn gekoppeld wanneer u logboekregistratie configureert. U kunt dit doen met de extra_pip_requirements of conda_env parameters in log_model().

Belangrijk

Als u DBFS gebruikt, moet u ervoor zorgen dat u een slash opneemt, /vóór uw dbfs pad wanneer u zich aanmeldt extra_pip_requirements. Meer informatie over DBFS-paden in Werken met bestanden in 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)

Stap 3: MLflow-model bijwerken met Python-wielbestanden

MLflow biedt het hulpprogramma add_libraries_to_model() om uw model te registreren met alle afhankelijkheden die vooraf zijn verpakt als Python-wielbestanden. Hiermee worden uw aangepaste bibliotheken naast het model verpakt naast alle andere bibliotheken die zijn opgegeven als afhankelijkheden van uw model. Dit garandeert dat de bibliotheken die door uw model worden gebruikt, precies de bibliotheken zijn die toegankelijk zijn vanuit uw trainingsomgeving.

In het volgende voorbeeld model_uri verwijst u naar het modelregister met behulp van de syntaxis models:/<model-name>/<model-version>.

Wanneer u de register-URI van het model gebruikt, genereert dit hulpprogramma een nieuwe versie onder uw bestaande geregistreerde model.

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

Stap 4: Uw model bedienen

Wanneer een nieuwe modelversie met de meegeleverde pakketten beschikbaar is in het modelregister, kunt u deze modelversie toevoegen aan een eindpunt met Model Serving.