Suivre les expériences et modèles ML avec MLflow
Le Suivi est le processus d’enregistrement d’informations pertinentes sur les expériences. Dans cet article, vous apprenez à utiliser MLflow pour suivre vos expériences et vos exécutions dans les espaces de travail Azure Machine Learning.
Certaines méthodes disponibles dans l’API MLflow peuvent ne pas être disponibles pendant une connexion à Azure Machine Learning. Pour plus d’informations sur les opérations prises en charge et non prises en charge, consultez la Matrice de prise en charge pour l’interrogation des exécutions et des expériences. Vous pouvez également en savoir plus sur les fonctionnalités MLflow prises en charge dans Azure Machine Learning à partir de l’article MLflow et Azure Machine Learning.
Remarque
- Si vous souhaitez suivre les expériences qui s’exécutent sur Azure Databricks, consultez Suivre les expériences de ML Azure Databricks avec MLflow et Azure Machine Learning.
- Pour suivre les expériences qui s’exécutent sur Azure Synapse Analytics, consultez Suivre les expériences de ML Azure Synapse Analytics avec MLflow et Azure Machine Learning.
Prérequis
Disposez d’un abonnement Azure avec la version gratuite ou payante d’Azure Machine Learning.
Pour exécuter des commandes Azure CLI et Python, installez Azure CLI v2 et le Kit de développement logiciel (SDK) Azure Machine Learning v2 pour Python. L’extension
ml
pour Azure CLI installe automatiquement la première fois que vous exécutez une commande CLI Azure Machine Learning.
Installer le package du SDK MLflow
mlflow
et le plug-inazureml-mlflow
d’Azure Machine Learning pour MLflow de la manière suivante :pip install mlflow azureml-mlflow
Conseil
Vous pouvez utiliser le package
mlflow-skinny
qui est un package MLflow léger sans dépendances de stockage SQL, de serveur, d’interface utilisateur ou de science des données. Ce package est recommandé pour les utilisateurs qui ont principalement besoin des fonctionnalités de suivi et de journalisation de MLflow, sans importer la suite complète de fonctionnalités, notamment les déploiements.Créez un espace de travail Azure Machine Learning. Pour créer un espace de travail, consultez Créer les ressources dont vous avez besoin pour commencer. Examinez les autorisations d’accès nécessaires pour effectuer vos opérations MLflow dans votre espace de travail.
Pour effectuer un suivi à distance, autrement dit, pour suivre des expériences qui s’exécutent en dehors d’Azure Machine Learning, configurez MLflow pour qu’il pointe vers l’URI de suivi de votre espace de travail Azure Machine Learning. Pour plus d’informations sur la connexion de MLflow à votre espace de travail, consultez Configurer MLflow pour Azure Machine Learning.
Configurer l’expérience
MLflow organise les informations dans les expériences et les exécutions. Les exécutions sont appelées travaux dans Azure Machine Learning. Par défaut, exécute le journal sur une expérience créée automatiquement nommée Défaut, mais vous pouvez configurer l’expérience à suivre.
Pour une formation interactive, comme dans un notebook Jupyter, utilisez la commande MLflow mlflow.set_experiment()
. Par exemple, l’extrait de code suivant configure une expérience :
experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)
Configurer l’exécution
Azure Machine Learning effectue le suivi des travaux d’apprentissage dans les appels MLflow qui s’exécutent. Utilisez des exécutions pour enregistrer tout le traitement effectué par votre travail.
Lorsque vous travaillez de manière interactive, MLflow commence à suivre votre routine d’apprentissage dès que vous journalisez des informations qui nécessitent une exécution active. Par exemple, si la fonctionnalité de synchronisation automatique de MLflow est activée, le suivi MLflow démarre lorsque vous journalisez une métrique, un paramètre ou démarrez un cycle de formation.
Toutefois, il est généralement utile de démarrer l’exécution explicitement, en particulier si vous souhaitez capturer la durée totale de votre expérience dans le champ Durée. Pour démarrer l’exécution de manière explicite, utilisez mlflow.start_run()
.
Que vous démarrez l’exécution manuellement ou non, vous devrez finalement arrêter l’exécution, afin que MLflow sache que votre exécution d’expérience est réalisée et puisse marquer l’état de l’exécution comme Terminé. Pour arrêter une exécution, utilisez mlflow.end_run()
.
Le code suivant démarre une exécution manuellement et la termine à la fin du notebook :
mlflow.start_run()
# Your code
mlflow.end_run()
Il est préférable de démarrer manuellement les exécutions afin de ne pas oublier de les terminer. Vous pouvez utiliser le paradigme du gestionnaire de contexte pour vous aider à vous rappeler de mettre fin à l’exécution.
with mlflow.start_run() as run:
# Your code
Quand vous démarrez une nouvelle exécution avec mlflow.start_run()
, il peut être utile de spécifier le paramètre run_name
, qui est utilisé plus tard comme nom de l’exécution dans l’interface utilisateur Azure Machine Learning. Cette pratique vous aide à identifier l’exécution plus rapidement.
with mlflow.start_run(run_name="hello-world-example") as run:
# Your code
Activer l’autologging MLflow
Vous pouvez journaliser les métriques, les paramètres et les fichiers avec MLflow manuellement, et vous pouvez également vous appuyer sur la fonctionnalité de journalisation automatique de MLflow. Chaque infrastructure d’apprentissage automatique prise en charge par MLflow détermine les éléments à suivre automatiquement pour vous.
Pour activer la journalisation automatique, insérez le code suivant avant votre code d’entraînement :
mlflow.autolog()
Afficher les métriques et les artefacts dans votre espace de travail
Les métriques et les artefacts de la journalisation MLflow sont suivis dans votre espace de travail. Vous pouvez les afficher et les accéder dans Azure Machine Learning Studio ou les accéder programmatiquement via le Kit de développement logiciel (SDK) MLflow.
Pour afficher des métriques et des artefacts dans le studio :
Dans la page Travaux de votre espace de travail, sélectionnez le nom de l’expérience.
Dans la page détails de l’expérience, sélectionnez l’onglet Métriques .
Sélectionnez les métriques journalisées pour afficher les graphiques sur le côté droit. Vous pouvez personnaliser les graphes en appliquant un lissage, en changeant la couleur ou en traçant plusieurs métriques sur un même graphe. Vous pouvez également redimensionner et réorganiser la disposition.
Une fois que la vue souhaitée est créée, enregistrez-la pour une utilisation ultérieure et partagez-la avec vos collègues à l’aide d’un lien direct.
Pour accéder à ou interroger des métriques, des paramètres et des artefacts de manière programmatique via le kit de développement logiciel (SDK) MLflow, utilisez mlflow.get_run().
import mlflow
run = mlflow.get_run("<RUN_ID>")
metrics = run.data.metrics
params = run.data.params
tags = run.data.tags
print(metrics, params, tags)
Conseil
L’exemple précédent retourne uniquement la dernière valeur d’une métrique donnée. Pour récupérer toutes les valeurs d’une métrique donnée, utilisez la méthode mlflow.get_metric_history
. Pour plus d’informations sur la récupération des valeurs de métriques, consultez Obtenir des paramètres et des métriques à partir d’une exécution.
Pour télécharger les artefacts que vous avez enregistrés, comme des fichiers et des modèles, utilisez mlflow.artifacts.download_artifacts().
mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")
Pour plus d’informations sur la manière de récupérer ou comparer les informations des expériences et des exécutions dans Azure Machine Learning, en utilisant MLflow, consultez Interroger et comparer les expériences et les exécutions avec MLflow.