Partager via


Suivre le développement de modèles à l’aide de MLflow

Le suivi MLflow vous permet de journaliser des notebooks et des jeux de données d’apprentissage, des paramètres, des métriques, des étiquettes et des artefacts liés à l’apprentissage d’un modèle de Machine Learning ou de Deep Learning. Pour un exemple de notebook permettant de démarrer avec MLflow, consultez Tutoriel : Modèles ML classiques de bout en bout sur Azure Databricks.

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

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

Le suivi MLflow utilise des expériences, des exécutions et des modèles pour journaliser et suivre votre développement de modèles ML et Deep Learning. Une exécution est une seule exécution du code de modèle. Pendant une exécution MLflow, vous pouvez consigner les paramètres et les résultats du modèle. Une expérience est une collection d’exécutions liées. Dans une expérience, vous pouvez comparer et filtrer des exécutions pour comprendre comment votre modèle fonctionne et comment ses performances dépendent des paramètres de paramètre, des données d’entrée, et ainsi de suite. Un modèle est une collection d’artefacts qui représentent un modèle Machine Learning entraîné.

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

Note

À compter du 27 mars 2024, MLflow impose une limite de quota sur le nombre total de paramètres, d’étiquettes et d’étapes de métrique pour toutes les exécutions existantes et nouvelles, ainsi que sur le nombre total d’exécutions pour toutes les expériences existantes et nouvelles. Veuillez consulter la section Limites de ressources. Si vous atteignez la limite de quota d’exécutions par expérience, Databricks recommande de supprimer les exécutions dont vous n’avez plus besoin en utilisant l’API delete runs en Python. Si vous atteignez d’autres limites de quota, Databricks recommande d’ajuster votre stratégie de journalisation pour rester en dessous de la limite. Si vous avez besoin d’une augmentation de cette limite, contactez votre équipe de compte Databricks en fournissant une brève explication de votre cas d’usage, des raisons pour lesquelles les approches d’atténuation des risques proposées ne fonctionnent pas, ainsi que la nouvelle limite souhaitée.

API de suivi MLflow

L' API de suivi MLflow journalise les paramètres, les métriques, les balises et les artefacts d’une exécution de modèle. L’API de suivi communique avec un serveur de suiviMLflow. Lorsque vous utilisez Databricks, un serveur de suivi hébergé par Databricks journalise les données. Le serveur de suivi MLflow hébergé contient des API Python, Java et R.

MLflow est préinstallé sur les clusters ML Databricks Runtime. 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 fonctionnalités de suivi de pointe, veillez à effectuer une mise à niveau vers la dernière version (consultez Installer MLflow 3).

Où les exécutions MLflow sont journalisées

Databricks fournit un serveur de suivi MLflow hébergé qui stocke vos données d’expérience dans votre espace de travail sans 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 (par défaut, espace de travail Databricks actuel)
  • Expérience : détermine l’expérience dans ce serveur à connecter
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 le contrôle de l’emplacement de stockage de vos données MLflow, consultez Choisir l’emplacement de stockage de vos données MLflow.

Consigner des exécutions et des modèles dans une expérience

MLflow peut journaliser automatiquement le code d’apprentissage écrit dans de nombreux frameworks Machine Learning et Deep Learning. Il s’agit du moyen le plus simple de commencer à utiliser le suivi MLflow. Consultez l’exemple de notebook.

Pour plus de contrôle sur les paramètres et les métriques journalisés, ou pour journaliser des artefacts supplémentaires tels que des fichiers ou des tracés CSV, utilisez l’API de journalisation MLflow. Consultez l’exemple de notebook.

Utiliser la journalisation automatique pour suivre le développement de modèles

Cet exemple de notebook montre comment utiliser l’autologging avec scikit-learn. Pour plus d’informations sur la synchronisation automatique avec d’autres bibliothèques Python, consultez la documentation sur la synchronisation automatique MLflow.

MLflow 3

Notebook Python de journalisation automatique MLflow pour MLflow 3

Obtenir le notebook

MLflow 2.x

Notebook Python avec journalisation automatique MLflow

Obtenir le notebook

Utiliser l’API de journalisation pour suivre le développement de modèles

Cet exemple de notebook montre comment utiliser l’API de journalisation Python. MLflow dispose également d’API REST, R et Java.

MLflow 3

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

Obtenir le notebook

MLflow 2.x

Notebook Python avec l’API de journalisation MLflow

Obtenir le notebook

Journaliser les exécutions dans une expérience d’espace de travail

Par défaut, quand vous entraînez un modèle dans un notebook Databricks, les exécutions sont journalisées dans l’expérience du notebook. Seules les exécutions MLflow lancées dans un Notebook peuvent être enregistrées dans l’expérience du Notebook.

Les exécutions de MLflow lancées à partir de n’importe quel Notebook ou à partir des API peuvent être enregistrées dans une expérience de l’espace de travail. Pour journaliser les exécutions dans une expérience d’espace de travail, utilisez du code similaire à ce qui suit dans votre bloc-notes ou appel d’API :

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

Pour obtenir des instructions sur la création d’une expérience d’espace de travail, consultez Créer une expérience d’espace de travail. Pour plus d’informations sur l’affichage des exécutions journalisées, consultez View Notebook expériment et View Workspace expérience.

Analyser les exécutions MLflow par programmation

Vous pouvez accéder à MLflow exécuter des données par programme à l’aide des deux API tableau suivantes :

Cet exemple montre comment utiliser le client python MLflow pour créer un tableau de bord qui visualise les modifications apportées aux mesures d’évaluation au fil du temps, effectue le suivi du nombre d’exécutions démarrées par un utilisateur spécifique et mesure le nombre total de séries pour tous les utilisateurs :

Pourquoi est-ce que les métriques et les sorties de l’apprentissage du modèle peuvent varier

La plupart des algorithmes utilisés en ML ont 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 effectuez l’apprentissage d’un modèle à l’aide de l’un de ces algorithmes, les résultats peuvent ne pas être les mêmes à chaque exécution, même si vous démarrez l’exécution avec les mêmes conditions. De nombreuses bibliothèques offrent un mécanisme d’amorçage pour corriger les conditions initiales de ces éléments stochastiques. Toutefois, il peut y avoir d’autres sources de variation non contrôlées par les valeurs initiales. Certains algorithmes sont sensibles à l’ordre des données, tout comme les algorithmes ML distribués peuvent également être affectés par la façon dont les données sont partitionnées. Cette variation n’est pas significative et n’est pas importante dans le processus de développement de modèle.

Pour contrôler les variations causées par les différences de classement et de partitionnement, utilisez les fonctions PySpark repartition et triWithinPartitions.

Exemples de suivi MLflow

Les notebooks suivants montrent comment suivre le développement de modèles en utilisant MLflow.