Suivre les exécutions de formation de Machine Learning et de Deep Learning
Le composant de suivi MLflow vous permet de journaliser les propriétés, les paramètres, les métriques, les balises et les artefacts de la source liés à la formation d’un modèle de Machine Learning ou de Deep Learning. Pour commencer à utiliser MLflow, essayez l’un des didacticiels de démarrage rapide MLflow.
Suivi MLflow avec des expériences et des exécutions
Le suivi MLflow est basé sur deux concepts, expériences et exécutions:
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.
Une expérience MLflow est l’unité principale d’organisation et de contrôle d’accès pour les exécutions de formation du modèle de Machine Learning MLflow ; toutes les exécutions MLflow appartiennent à une expérience. Les expériences vous permettent de visualiser, de rechercher et de comparer des exécutions, ainsi que de télécharger des artefacts d'exécution et des métadonnées pour les analyser dans d'autres outils.
Une exécution MLflow correspond à une seule exécution de code de modèle.
Organiser des exécutions de formation avec des expériences 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.
Remarque
MLflow est 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. Les packages spécifiques à installer pour MLflow sont les suivants :
- Pour Python, sélectionnez bibliothèque source PyPI et entrez
mlflow
dans le champ package. - Pour R, sélectionnez bibliothèque source cran et entrez
mlflow
dans le champ package . - Pour Scala, installez les deux packages suivants :
- Sélectionnez bibliothèque source Maven et entrez
org.mlflow:mlflow-client:1.11.0
dans le champ Coordonnées. - Pour Python, sélectionnez bibliothèque source PyPI et entrez
mlflow
dans le champ package.
- Sélectionnez bibliothèque source Maven et entrez
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")
Exemple de notebook de journalisation
Ce bloc-notes montre comment enregistrer des séries dans une expérience de bloc-notes et une expérience d’espace de travail. 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 plus d’informations sur l’affichage des exécutions journalisées, consultez View Notebook expériment et View Workspace expérience.
Journal MLflow exécute le bloc-notes
Vous pouvez utiliser MLflow Python, Java ou Scala et les API R pour démarrer des exécutions et enregistrer des données d’exécution. Pour plus d’informations, consultez les exemples de notebooks MLflow.
Accéder au serveur de suivi MLflow depuis l’extérieur d’Azure Databricks
Vous pouvez également écrire et lire à partir du serveur de suivi à partir de l’extérieur Azure Databricks, par exemple à l’aide de l’interface CLI MLflow. Consultez Accéder au serveur de suivi MLflow depuis l'extérieur d'Azure Databricks.
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 blocs-notes suivants montrent comment former plusieurs types de modèles et suivre les données d’apprentissage dans MLflow et comment stocker les données de suivi dans Delta Lake.