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 des expériences, des exécutions et des 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 distincte pour suivre le cycle de vie du modèle dans 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, 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, consultez les Limites de ressources. Si vous atteignez la limite du quota d’exécutions par expérience, Databricks vous recommande de supprimer les exécutions dont vous n’avez plus besoin à l’aide de l’API de suppression des exécutions dans Python. Si vous atteignez d’autres limites de quota, Databricks recommande d’ajuster votre stratégie de journalisation pour qu’elle reste sous 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, et en précisant pourquoi les approches d’atténuation suggérées ne fonctionnent pas et la nouvelle limite que vous demandez.

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 de MLflow sont enregistrées

Toutes les exécutions MLflow sont consignées dans l’expérience active, qui peut être définie de l’une des manières suivantes :

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

Pour enregistrer les résultats de votre expérience sur un serveur de suivi MLflow hébergé à distance dans un espace de travail autre que celui dans lequel vous exécutez votre expérience, définissez l’URI de suivi pour référencer l’espace de travail distant avec mlflow.set_tracking_uri(), puis définissez le chemin d’accès à votre expérience dans l’espace de travail distant à l’aide de mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Si vous exécutez des expériences localement et que vous souhaitez journaliser des résultats d’expériences dans le serveur de suivi MLflow Databricks, fournissez votre instance d’espace de travail (DATABRICKS_HOST) et jeton d’accès personnel Databricks (DATABRICKS_TOKEN). Ensuite, vous pouvez définir l’URI de suivi pour référencer l’espace de travail avec mlflow.set_tracking_uri(), puis définissez le chemin d’accès vers votre expérience en utilisant mlflow.set_experiment(). Consultez Effectuer une authentification à l’aide de jetons d’accès personnels Azure Databricks pour obtenir des informations sur l’emplacement des valeurs pour des variables d’environnement DATABRICKS_HOST et DATABRICKS_TOKEN.

L’exemple de code suivant montre la définition de ces valeurs :


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

Enregistrer les exécutions et les 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 pour autologging MLflow de 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 en général pas significative et n’est pas importante dans le processus de développement du 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.