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:

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.

Pour savoir comment contrôler l’accès aux expériences, consultez Partager les expérience et modifier les autorisations pour l’expérience.

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.0dans le champ Coordonnées.
    • Pour Python, sélectionnez bibliothèque source PyPI et entrez mlflow dans le champ package.

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")

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

Obtenir le notebook

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 :

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.