Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
- Organiser des exécutions de formation avec des expériences MLflow
- Suivre et comparer des modèles à l’aide de modèles journalisés MLflow
- Afficher les résultats d’entraînement avec les exécutions MLflow
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 :
- Utilisez la commande mlflow.set_experiment ().
- Utilisez le paramètre
experiment_id
dans la commande mlflow.start_run(). - Définissez l'une des variables d'environnement MLflow MLFLOW_EXPERIMENT_NAME ou MLFLOW_EXPERIMENT_ID.
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
MLflow 2.x
Notebook Python avec journalisation automatique MLflow
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
MLflow 2.x
Notebook Python avec l’API de journalisation MLflow
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 :
- L' API Search_runs python client MLflow retourne un tableau pandas.
- La source de données d' expérimentation MLflow retourne un Apache Spark tableau.
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.