Utiliser des bibliothèques personnalisées Python un service de modèle
Dans cet article, vous allez apprendre à inclure des bibliothèques ou des bibliothèques personnalisées à partir d’un serveur miroir privé lorsque vous connectez votre modèle, afin de pouvoir les utiliser avec des déploiements de modèles de service de modèle d’IA Mosaïque. Vous devez effectuer les étapes détaillées dans ce guide une fois que vous avez un modèle ML entraîné prêt à être déployé, mais avant de créer un point de terminaison de service de modèle Azure Databricks.
Le développement de modèles nécessite souvent l’utilisation de bibliothèques Python personnalisées qui contiennent des fonctions pour le prétraitement ou le post-traitement, des définitions de modèle personnalisées et d’autres utilitaires partagés. En outre, de nombreuses équipes de sécurité d’entreprise encouragent l’utilisation de miroirs PyPi privés, tels que Nexus ou Artifactory, pour réduire le risque d’attaques de chaîne logistique. Azure Databricks offre une prise en charge native pour l’installation de bibliothèques et de bibliothèques personnalisées à partir d’un miroir privé dans l’espace de travail Azure Databricks.
Spécifications
- MLflow 1.29 ou version ultérieure
Étape 1 : charger le fichier de dépendance
Databricks vous recommande de charger votre fichier de dépendances dans les volumes Unity Catalog. Vous pouvez également le charger dans le système de fichiers Databricks (DBFS) à l’aide de l’interface utilisateur Azure Databricks.
Pour vous assurer que votre bibliothèque est disponible dans votre notebook, vous devez l’installer à l’aide de %pip%
. L’utilisation de %pip
installe la bibliothèque dans le notebook actuel et télécharge la dépendance sur le cluster.
Étape 2 : journaliser le modèle avec une bibliothèque personnalisée
Important
Les conseils de cette section ne sont pas nécessaires si vous installez la bibliothèque privée en pointant vers un miroir PyPi personnalisé.
Après avoir installé la bibliothèque et téléchargé le fichier wheel Python sur les volumes Unity Catalog ou sur DBFS, incluez le code suivant dans votre script. Dans le extra_pip_requirements
, spécifiez le chemin d’accès de votre fichier de dépendance.
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])
Pour DBFS, procédez comme suit :
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])
Si vous disposez d’une bibliothèque personnalisée, vous devez spécifier toutes les bibliothèques Python personnalisées associées à votre modèle lorsque vous configurez la journalisation. Vous pouvez le faire avec les paramètres extra_pip_requirements
ou conda_env
dans log_model().
Important
Si vous utilisez DBFS, veillez à inclure une barre oblique, /
, avant votre chemin d’accès dbfs
lors de la journalisation extra_pip_requirements
. Pour en savoir plus sur les chemins DBFS, consultez Utiliser des fichiers sur 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)
Étape 3 : mettre à jour le modèle MLflow avec des fichiers wheel Python
MLflow fournit l’utilitaire add_libraries_to_model() pour journaliser votre modèle avec toutes ses dépendances pré-empaquetées en tant que fichiers wheel Python. Cela empaquette vos bibliothèques personnalisées à côté du modèle en plus de toutes les autres bibliothèques spécifiées en tant que dépendances de votre modèle. Cela garantit que les bibliothèques utilisées par votre modèle sont exactement celles accessibles à partir de votre environnement d’entraînement.
Dans l’exemple suivant, model_uri
référence le registre de modèles à l’aide de la syntaxe models:/<model-name>/<model-version>
.
Lorsque vous utilisez l’URI du Registre de modèles, cet utilitaire génère une nouvelle version sous votre modèle inscrit existant.
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
Étape 4 : servir votre modèle
Lorsqu’une nouvelle version de modèle avec les packages inclus est disponible dans le registre de modèles, vous pouvez ajouter cette version de modèle à un point de terminaison avec un service de modèle.