Aller au contenu principal

Suivez le développement du modèle à l'aide de MLflow

Le suivi MLflow vous permet d'enregistrer les Notebooks et les datasets d'entraînement, les parameters, les métriques, les tags et les artefacts liés à l'entraînement d'un modèle de Machine Learning ou d'apprentissage profond. Pour un exemple de Notebook pour démarrer avec MLflow, consultez Didacticiel : modèles ML classiques de bout en bout sur Databricks.

Suivi MLflow avec des expérimentations, des exécutions et des modèles

Le processus de développement de modèles est itératif, et il peut être difficile de suivre votre travail pendant que vous développez et optimisez un modèle. Dans Databricks, vous pouvez utiliser le suivi MLflow pour vous aider à suivre le processus de développement du modèle, y compris les paramètres ou combinaisons que vous avez essayés et comment ils ont affecté les performances du modèle.

Le suivi MLflow utilise des experimentations , des exécutions et des modèles pour Log et suivre le développement de vos modèles de ML et de deep learning. Une exécution est une seule exécution de code de modèle. Lors d'une exécution MLflow, vous pouvez enregistrer les paramètres et les résultats du modèle. Une expérience est une collection d'exécutions connexes. Dans une Experimentation, vous pouvez comparer et filtrer les exécutions pour comprendre comment votre modèle se comporte et comment ses performances dépendent des paramètres, des données d'entrée, etc. Un modèle est une collection d'artefacts qui représentent un modèle de machine learning entraîné.

Avec MLflow 3, LoggedModels élève le concept d'un modèle produit par une exécution, l'établissant comme une entité distincte pour suivre le cycle de vie du modèle à travers différentes exécutions d'entraînement et d'évaluation.

remarque

À compter du 27 mars 2024, MLflow impose une limite de quota sur le nombre total de paramètres, de tags et d'étapes de métriques pour toutes les exécutions existantes et nouvelles, ainsi que sur le nombre total d'exécutions pour toutes les expérimentations existantes et nouvelles. Consultez les limites des ressources. Si vous atteignez le quota d'exécutions par Experimentation, Databricks vous recommande de supprimer les exécutions dont vous n'avez plus besoin à l'aide de l'API de suppression d'exécutions en Python. Si vous atteignez d'autres limites de quota, Databricks recommande d'ajuster votre stratégie de Logs pour rester en dessous de la limite. Si vous avez besoin d'une augmentation de cette limite, nous vous prions de contacter votre équipe de compte Databricks en fournissant une brève explication de votre cas d'utilisation, des raisons pour lesquelles les approches d'atténuation suggérées ne fonctionnent pas, ainsi que la nouvelle limite que vous demandez.

API de suivi MLflow

L’ MLflow Tracking API Log les paramètres, les métriques, les étiquettes et les artefacts d’une exécution de modèle. L’API de suivi communique avec un serveur de suivi MLflow. Lorsque vous utilisez Databricks, un serveur de suivi hébergé par Databricks enregistre les données. Le serveur de suivi MLflow hébergé dispose d’API Python, Java et R.

MLflow est préinstallé sur les clusters Databricks Runtime ML. Pour utiliser MLflow sur un cluster Databricks Runtime, vous devez installer la bibliothèque mlflow. Pour obtenir des instructions sur l'installation d'une bibliothèque sur un cluster, consultez Installer une bibliothèque sur un cluster. Pour utiliser MLflow 3 et ses capacités de suivi de pointe, assurez-vous de passer à la dernière version (voir Installer MLflow 3).

Où les exécutions MLflow sont enregistrées

Databricks fournit un serveur de suivi MLflow hébergé qui stocke vos données d'expérimentation dans votre workspace sans aucune configuration requise. Vous pouvez également configurer MLflow pour utiliser différents serveurs de suivi si nécessaire.

Le suivi MLflow est contrôlé par deux paramètres :

  • URI de suivi : détermine le serveur à utiliser (default, le Workspace Databricks actuel)
  • Expérimentation : Détermine l'expérimentation dans ce serveur à laquelle se connecter.
Python
import mlflow

# By default MLflow logs to the Databricks-hosted workspace tracking server. You can connect to a different server using the tracking URI.
mlflow.set_tracking_uri("databricks://remote-workspace-url")

# Set experiment in the tracking server
mlflow.set_experiment("/Shared/my-experiment")

Si aucune expérience active n'est définie, les exécutions sont consignées dans l'expérience du Notebook.

Pour plus d'informations sur la façon de contrôler où vos données MLflow sont stockées, consultez Choisir l'emplacement de stockage de vos données MLflow.

Log runs and models to an expérimentation.

MLflow peut enregistrer automatiquement le code d’entraînement écrit dans de nombreux frameworks de Machine Learning et de deep learning. C'est le moyen le plus simple de start l'utilisation du suivi MLflow. Consultez l’ exemple de Notebook.

Pour un meilleur contrôle sur les parameters et les métriques Log, ou pour Log des artefacts supplémentaires tels que des fichiers CSV ou des tracés, utilisez l'API de Log MLflow. Consultez l' exemple de Notebook.

Utilisez l'autologging pour suivre le développement de modèles

Ce Notebook exemple montre comment utiliser l'autologging avec scikit-learn. Pour plus d'information sur l'autologging avec d'autres bibliothèques Python, consultez la documentation d'autologging MLflow.

Notebook Python d'autologging MLflow pour MLflow 3

Utilisez l'API de journalisation pour suivre le développement du modèle

Ce Notebook d'exemple montre comment utiliser l'API de journalisation Python. MLflow dispose également d'APIs REST, R et Java.

Notebook Python de l'API de journalisation MLflow pour MLflow 3

Consigner les exécutions dans une expérimentation de Workspace

Par default, lorsque vous entraînez un modèle dans un Notebook Databricks, les exécutions sont Loguées dans l'Experimentation du Notebook. Seules les exécutions MLflow initiées au sein d'un Notebook peuvent être consignées dans l'Experimentation du Notebook.

Les exécutions MLflow lancées depuis n’importe quel Notebook ou depuis les APIs peuvent être Log dans une Experimentation de Workspace. Pour effectuer des Logs d'exécutions dans une Experimentation de Workspace, utilisez un code similaire à celui-ci dans votre Notebook ou votre appel API :

Python
experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)

Pour obtenir des instructions sur la création d'une expérimentation de Workspace, consultez Créer une expérimentation de Workspace. Pour plus d'information sur l'affichage des exécutions enregistrées, consultez Voir l'Experimentation de Notebook et Voir l'Experimentation de Workspace.

Analyser les runs MLflow par programme

Vous pouvez accéder aux données d'exécution MLflow par programmation en utilisant les deux API DataFrame suivantes :

Cet exemple montre comment utiliser le client MLflow Python pour créer un tableau de bord qui visualise les changements des métriques d'évaluation au fil du temps, suit le nombre d'exécutions démarrées par un utilisateur spécifique et mesure le nombre total d'exécutions pour tous les utilisateurs :

Pourquoi les métriques et les sorties de l'entraînement du modèle peuvent varier

De nombreux algorithmes utilisés en ML comportent un élément aléatoire, tel que l'échantillonnage ou des conditions initiales aléatoires au sein de l'algorithme lui-même. Lorsque vous entraînez un modèle à l'aide de l'un de ces algorithmes, les résultats pourraient ne pas être les mêmes à chaque exécution, même si vous start l'exécution avec les mêmes conditions. De nombreuses bibliothèques offrent un mécanisme d'amorçage pour fixer les conditions initiales de ces éléments stochastiques. Cependant, il peut y avoir d'autres sources de variation qui ne sont pas contrôlées par des graines. Certains algorithmes sont sensibles à l'ordre des données, et les algorithmes de ML distribués peuvent également être affectés par la manière dont les données sont partitionnées. Cette variation n'est pas significative et n'est pas importante dans le processus de développement du modèle.

Pour contrôler la variation causée par les différences d'ordre et de partitionnement, utilisez les fonctions PySpark repartition et sortWithinPartitions.

Exemples de suivi MLflow

Les Notebooks suivants démontrent comment suivre le développement de modèles à l'aide de MLflow.