MLflow et Azure Machine Learning
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)
MLflow est une infrastructure open source conçue pour gérer le cycle de vie complet de Machine Learning. Sa capacité à effectuer l’apprentissage et à servir des modèles sur différentes plateformes vous permet d’utiliser un ensemble cohérent d’outils, quel que soit l’emplacement d’exécution de vos expériences : localement sur votre ordinateur, sur une cible de calcul distante, sur une machine virtuelle ou sur une instance de calcul Azure Machine Learning.
Les espaces de travail Azure Machine Learning sont compatibles avec MLflow, de sorte que vous pouvez utiliser des espaces de travail Azure Machine Learning de la même façon que vous utilisez un serveur MLflow. Cette compatibilité présente les avantages suivants :
- Azure Machine Learning n’héberge aucune instance de serveur MLflow en coulisses. L’espace de travail peut plutôt maîtriser le langage d’API MLflow.
- Vous pouvez utiliser des espaces de travail Azure Machine Learning comme serveur de suivi pour le code MLflow, qu’il s’exécute sur Azure Machine Learning ou pas. Vous devez uniquement configurer MLflow pour pointer vers l’espace de travail où le suivi doit se produire.
- Vous pouvez exécuter n’importe quelle routine d’entraînement qui utilise MLflow dans Azure Machine Learning sans aucune modification.
Conseil
Contrairement au SDK v1 Azure Machine Learning, il n’existe aucune fonctionnalité de journalisation dans le SDK v2. Nous vous conseillons d’utiliser MLflow pour la journalisation afin que vos routines d’entraînement soit indépendantes du cloud et portables, supprimant toute dépendance que votre code peut avoir sur Azure Machine Learning.
Suivi avec MLflow
Azure Machine Learning utilise le suivi MLflow pour journaliser des métriques et stocker des artefacts de vos expériences. Quand vous êtes connecté à Azure Machine Learning, tout le suivi effectué en utilisant MLflow est matérialisé dans l’espace de travail sur lequel vous travaillez. Pour découvrir la façon de configurer vos expériences afin d’utiliser MLflow pour le suivi des expériences et des routines d’entraînement, consultez Journaliser les métriques, les paramètres et les fichiers avec MLflow. Vous pouvez également utiliser MLflow pour Interroger et comparer des expériences et des exécutions.
MLflow dans Azure Machine Learning vous offre le moyen de centraliser le suivi. Vous pouvez connecter MLflow à des espaces de travail Azure Machine Learning, même lors de travaux locaux ou dans un autre cloud. L’espace de travail fournit un emplacement centralisé, sécurisé et évolutif pour stocker les métriques de formation et les modèles.
L’utilisation de MLflow dans Azure Machine Learning inclut les capacités suivantes :
- Suivre les expériences et les modèles Machine Learning s’exécutant localement ou dans le cloud.
- Suivre les expériences Machine Learning Azure Databricks.
- Suivre les expériences Machine Learning Azure Synapse Analytics.
Exemples de notebooks
- Formation et suivi d’un classifieur XGBoost avec MLflow : montre comment suivre les expériences à l’aide de MLflow, journaliser des modèles et combiner plusieurs versions dans des pipelines.
- Entraînement et suivi d’un classifieur XGBoost avec MLflow en tirant parti l’authentification du principal de service : montre comment suivre des expériences en utilisant MLflow à partir d’un calcul exécuté en dehors d’Azure Machine Learning. L’exemple montre comment s’authentifier auprès des services Azure Machine Learning en utilisant un principal de service.
- Optimisation des hyperparamètres en tirant parti d’Hyperopt et d’exécutions imbriquées dans MLflow : montre comment utiliser des exécutions enfants dans MLflow pour effectuer une optimisation des hyperparamètres pour des modèles en utilisant la bibliothèque populaire
Hyperopt
. L’exemple montre comment transférer des métriques, des paramètres et des artefacts à partir d’exécutions enfants vers des exécutions parentes. - Journalisation de modèles avec MLflow : montre comment utiliser le concept de modèles, au lieu d’artefact,s avec MLflow. L’exemple illustre également comment construire des modèles personnalisés.
- Gérer des exécutions et des expériences avec MLflow : montre comment interroger des expériences, des exécutions, des métriques, des paramètres et des artefacts à partir d’Azure Machine Learning à l’aide de MLflow.
Suivi avec MLflow dans R
La prise en charge MLflow dans R présente les limitations suivantes :
- Le suivi de MLflow se limite au suivi des métriques, des paramètres et des modèles d’expériences dans des travaux Azure Machine Learning.
- L’apprentissage interactif sur RStudio, Posit (anciennement RStudio Workbench) ou des notebooks Jupyter avec des noyaux R n’est pas pris en charge.
- La gestion et l’inscription de modèles ne sont pas prises en charge en utilisant le Kit de développement logiciel (SDK) MLflow R. Utilisez à la place l’interface CLI Azure Machine Learning ou Azure Machine Learning studio pour l’inscription et la gestion de modèles.
Si vous souhaitez découvrir l’utilisation du client de suivi MLflow avec Azure Machine Learning, consultez les exemples dans Entraîner des modèles R en utilisant l’interface CLI Azure Machine Learning (v2).
Suivi avec MLflow dans Java
La prise en charge de MLflow dans Java présente les limitations suivantes :
- Le suivi de MLflow se limite au suivi des métriques et des paramètres d’expériences dans des travaux Azure Machine Learning.
- Les artefacts et les modèles ne peuvent pas être suivis à l’aide du SDK MLflow Java. Utilisez à la place le dossier
Outputs
dans les travaux, ainsi que la méthodemlflow.save_model
pour enregistrer des modèles (ou des artefacts) que vous souhaitez capturer.
Si vous souhaitez découvrir l’utilisation du client de suivi MLflow avec Azure Machine Learning, consultez l’exemple Java qui utilise le client de suivi MLflow avec Azure Machine Learning.
Registres de modèles avec MLflow
Azure Machine Learning prend en charge MLflow pour la gestion des modèles. Cette prise en charge constitue un bon moyen de prendre en charge l’intégralité du cycle de vie du modèle pour les utilisateurs familiarisés avec le client MLflow.
Pour en savoir plus sur la façon de gérer des modèles à l’aide de l’API MLflow dans Azure Machine Learning, consultez Gérer les registres de modèles dans Azure Machine Learning avec MLflow.
Exemple de bloc-notes
- Gérer les registres de modèles avec MLflow : montre comment gérer des modèles dans des registres à l’aide de MLflow.
Déploiement de modèles avec MLflow
Vous pouvez déployer des modèles MLflow sur Azure Machine Learning et tirer parti de l’expérience améliorée lorsque vous utilisez des modèles MLflow. Azure Machine Learning prend en charge le déploiement de modèles MLflow sur des points de terminaison en temps réel et par lots sans avoir à spécifier un environnement ou un script de scoring. Le déploiement est pris en charge en tirant parti du Kit de développement logiciel (SDK) MLflow, de l’interface CLI Azure Machine Learning, du SDK Azure Machine Learning pour Python ou d’Azure Machine Learning studio.
Pour découvrir plus d’informations sur le déploiement de modèles MLflow sur Azure Machine Learning pour les inférences en temps réel et par lots, consultez Instructions pour déployer des modèles MLflow.
Exemples de notebooks
- Déployer MLflow sur des points de terminaison en ligne : montre comment déployer des modèles au format MLflow sur des points de terminaison en ligne en tirant parti du Kit de développement logiciel (SDK) MLflow.
- Déployer des points de terminaison en ligne avec un déploiement sécurisé : montre comment déployer des modèles au format MLflow sur des points de terminaison en ligne en utilisant le Kit de développement logiciel (SDK) MLflow avec un déploiement progressif de modèles. L’exemple illustre également le déploiement de plusieurs versions d’un modèle sur le même point de terminaison.
- Déployer MLflow sur des services web (V1) : montre comment déployer des modèles au format MLflow sur des services web (ACI/AKS v1) en tirant parti du Kit de développement logiciel (SDK) MLflow.
- Déployer des modèles entraînés dans Azure Databricks sur Azure Machine Learning avec MLflow : montre comment effectuer l’apprentissage de modèles dans Azure Databricks et les déployer dans Azure Machine Learning. L’exemple aborde également comment gérer les cas où vous souhaitez aussi suivre les expériences avec l’instance MLflow dans Azure Databricks.
Entraînement avec des projets MLflow (préversion)
Important
Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. La préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Vous pouvez envoyer des travaux de formation à Azure Machine Learning à l’aide de projets MLflow (préversion). Vous pouvez envoyer des travaux en local à l’aide du suivi Azure Machine Learning ou migrer vos travaux vers le cloud via le calcul Azure Machine Learning.
Pour découvrir comment soumettre des travaux d’entraînement avec MLflow Projects qui utilisent des espaces de travail Azure Machine Learning pour le suivi, consultez Entraîner des modèles Machine Learning avec des projets MLflow et Azure Machine Learning.
Exemples de notebooks
- Suivez un projet MLflow dans des espaces de travail Azure Machine Learning.
- Entraîner et exécuter un projet MLflow sur des travaux Azure Machine Learning.
Fonctionnalités du SDK MLflow, d’Azure Machine Learning v2 et d’Azure Machine Learning studio
Le tableau suivant montre les opérations possibles en utilisant chacun des outils client disponibles dans le cycle de vie du Machine Learning.
Fonctionnalité | Kit de développement logiciel (SDK) MLflow | CLI/SDK Azure Machine Learning | Azure Machine Learning Studio |
---|---|---|---|
Suivre et consigner les métriques, les paramètres et les modèles | ✓ | ||
Récupérer les métriques, les paramètres et les modèles | ✓ | 1 | ✓ |
Soumettre des travaux d’entraînement | ✓2 | ✓ | ✓ |
Envoyer des travaux d’entraînement avec des ressources de données Azure Machine Learning | ✓ | ✓ | |
Envoyer des travaux d’entraînement avec des pipelines de machine learning | ✓ | ✓ | |
Gérer les expériences et les exécutions | ✓ | ✓ | ✓ |
Gestion des modèles de MLflow | ✓3 | ✓ | ✓ |
Gérer des modèles non MLflow | ✓ | ✓ | |
Déployer des modèles MLflow dans Azure Machine Learning (en ligne et par lots) | ✓4 | ✓ | ✓ |
Déployer des modèles non MLflow sur Azure Machine Learning | ✓ | ✓ |
Notes
- 1 Seuls les artefacts et les modèles peuvent être téléchargés.
- 2 Possible en utilisant des projets MLflow (préversion).
- 3 Il se peut que certaines opérations ne soient pas prises en charge. Pour plus d’informations, consultez Gérer les registres de modèles dans Azure Machine Learning avec MLflow.
- 4 Le déploiement de modèles MLflow sur l’inférence par lots en utilisant le Kit de développement logiciel (SDK) MLflow n’est pas possible pour le moment. Comme alternative, consultez Déployer et exécuter des modèles MLflow dans des travaux Spark.