MLOps : gestion des modèles, déploiement, traçabilité et surveillance avec Azure Machine Learning

S’APPLIQUE À :Extension Azure CLI ml v2 (version actuelle)SDK Python azure-ai-ml v2 (préversion)

Cet article explique comment effectuer des opérations de Machine Learning (MLOps) dans Azure Machine Learning pour gérer le cycle de vie de vos modèles. MLOps améliore la qualité et la cohérence de vos solutions de Machine Learning.

Qu’est-ce que MLOps ?

MLOps est basé sur les principes et pratiques de DevOps, qui augmentent l’efficacité des workflows. Par exemple, l’intégration, la livraison et le déploiement continus. MLOps applique ces principes au processus Machine Learning avec l’objectif suivant :

  • Expérimentation et développement plus rapides de modèles.
  • Déploiement plus rapide de modèles en production.
  • Suivi de l’assurance qualité et de la traçabilité de bout en bout.

MLOps dans Machine Learning

Machine Learning propose les fonctionnalités MLOps suivantes :

  • Créez des pipelines Machine Learning reproductibles. Utilisez les pipelines Machine Learning pour définir des étapes reproductibles et réutilisables pour vos processus de préparation des données, de formation et de scoring.
  • Créer des environnements logiciels réutilisables. Utiliser ces environnements pour l’entraînement et le déploiement de modèles.
  • Inscrire, empaqueter et déployer des modèles à partir de n’importe quel emplacement. Vous pouvez également suivre les métadonnées associées requises pour utiliser le modèle.
  • Capturer les données de gouvernance nécessaires pour le cycle de vie Machine Learning de bout en bout. Les informations de traçabilité journalisées peuvent inclure qui publie des modèles et pourquoi des modifications ont été apportées. Cela peut également inclure des modèles ayant été déployés ou utilisés en production.
  • Notifier et alerter sur des événements du cycle de vie Machine Learning. Par exemple, la fin d’une expérience, l’inscription de modèles, le déploiement de modèles et la détection d’une dérive de données.
  • Superviser les applications de Machine Learning en lien avec des problèmes opérationnels et liés au Machine Learning. Comparer les entrées de modèle entre l’apprentissage et l’inférence. Explorer les métriques spécifiques au modèle. Fournir la surveillance et les alertes sur votre infrastructure Machine Learning.
  • Automatiser le cycle de vie de Machine Learning de bout en bout avec Machine Learning et Azure Pipelines. À l’aide de pipelines, vous pouvez fréquemment mettre à jour des modèles. Vous pouvez également tester de nouveaux modèles. Vous pouvez continuellement déployer de nouveaux modèles Machine Learning parallèlement à vos autres applications et services.

Pour plus d’informations sur MLOps, consultez Machine Learning DevOps.

Créer des pipelines Machine Learning reproductibles

Utilisez des pipelines Machine Learning pour réunir toutes les étapes dans votre processus d’entraînement de modèle.

Un pipeline Machine Learning peut contenir des étapes allant de la préparation des données à l’extraction de fonctionnalité, pour le réglage d’hyperparamètre sur l’évaluation du modèle. Pour plus d’informations, consultez Pipelines Machine Learning.

Si vous utilisez le concepteur pour créer vos pipelines Machine Learning, vous pouvez à tout moment sélectionner l’icône ... dans le coin supérieur droit de la page du concepteur. Sélectionnez ensuite Cloner. Lorsque vous clonez votre pipeline, vous itérez votre conception de pipeline sans perdre vos anciennes versions.

Créer des environnements logiciels réutilisables

Les environnements Machine Learning vous permettent de suivre et de reproduire les dépendances logicielles de vos projets au fil de leur évolution. Ainsi, vous pouvez vous assurer que les builds sont reproductibles sans configuration manuelle des logiciels.

Les environnements décrivent les dépendances pip et conda pour vos projets. Vous pouvez les utiliser pour l’entraînement et le déploiement de modèles. Pour plus d’informations, consultez Présentation des environnements Machine Learning.

Inscrire, empaqueter et déployer des modèles à partir de n’importe quel emplacement

Les sections suivantes expliquent comment inscrire, empaqueter et déployer des modèles.

Inscrire et suivre des modèles Machine Learning

L’inscription de modèle vous permet de stocker vos modèles dans le cloud Azure, au sein de votre espace de travail et d’en gérer les versions. Le registre de modèle facilite l’organisation et le suivi de vos modèles entraînés.

Conseil

Un modèle inscrit est un conteneur logique pour un ou plusieurs fichiers qui composent votre modèle. Par exemple, si vous avez un modèle qui est stocké dans plusieurs fichiers, vous pouvez inscrire ces derniers en tant que modèle unique dans votre espace de travail Machine Learning. Après l’inscription, vous pouvez ensuite télécharger ou déployer le modèle inscrit et recevoir tous les fichiers qui ont été inscrits.

Les modèles inscrits sont identifiés par leur nom et par leur version. Chaque fois que vous inscrivez un modèle portant le même nom qu’un modèle existant, le registre incrémente la version. Des balises de métadonnées supplémentaires peuvent être fournies lors de l’inscription. Ces balises sont ensuite utilisées lors de la recherche d’un modèle. Machine Learning prend en charge tous les modèles pouvant être chargés avec Python 3.5.2 ou version ultérieure.

Conseil

Vous pouvez également inscrire des modèles formés en dehors de Machine Learning.

Vous ne pouvez pas supprimer un modèle inscrit qui est utilisé dans un déploiement actif. Pour plus d’informations, consultez la section « Inscrire un modèle » dans l’article Déployer des modèles.

Important

Lorsque vous utilisez l’option Filtrer parTags sur la page Modèles d’Azure Machine Learning Studio au lieu de TagName : TagValue, utilisez TagName=TagValue (sans espace)

Empaqueter et déboguer des modèles

Avant de déployer un modèle en production, il est empaqueté dans une image Docker. Dans la plupart des cas, la création d’image a lieu automatiquement en arrière-plan pendant le déploiement. Vous pouvez spécifier l’image manuellement.

Si vous rencontrez des problèmes avec le déploiement, vous pouvez déployer sur votre environnement de développement local pour la résolution des problèmes et le débogage.

Pour plus d’informations, consultez Déployer des modèles et Résolution des problèmes liés aux déploiements.

Convertir et optimiser les modèles

La conversion de votre modèle en ONNX (Open Neural Network Exchange) peut améliorer les performances. En moyenne, la conversion en ONNX peut doubler les performances.

Pour plus d’informations sur ONNX avec Machine Learning, consultez l’article Créer et accélérer les modèles Machine Learning.

Utiliser des modèles

Les modèles Machine Learning entraînés sont déployés en tant que points de terminaison dans le cloud ou localement. Les déploiements utilisent un processeur ou un processeur graphique (GPU) pour l’inférence.

Lors du déploiement d’un modèle en tant que point de terminaison, vous fournissez les éléments suivants :

  • Modèles utilisés pour noter les données envoyées vers le service ou l’appareil.
  • Script d’entrée. Ce script accepte les demandes, utilise les modèles pour noter les données et renvoie une réponse.
  • Environnement Machine Learning qui décrit les dépendances pip et conda requises par les modèles et le script d’entrée.
  • Autres ressources, telles que le texte ou les données, qui sont requises par les modèles et le script d’entrée.

Vous fournissez également la configuration de la plateforme de déploiement cible, Par exemple le type de famille de machines virtuelles, la mémoire disponible et le nombre de cœurs. Lorsque l’image est créée, les composants requis par Azure Machine Learning sont également ajoutés, par exemple, les ressources nécessaires pour exécuter le service web.

Scoring par lot

Le scoring par lot est pris en charge par le biais de points de terminaison de traitement par lot. Pour plus d’informations, consultez Point de terminaison.

Points de terminaison en ligne

Vous pouvez utiliser vos modèles avec un point de terminaison en ligne. Les points de terminaison en ligne peuvent utiliser les cibles de calcul suivantes :

  • Points de terminaison en ligne managés
  • Azure Kubernetes Service
  • Environnement de développement local

Pour déployer le modèle sur un point de terminaison, vous devez fournir les éléments suivants :

  • Modèle ou ensemble de modèles.
  • Dépendances requises pour utiliser le modèle, par exemple un script qui accepte les demandes et appelle le modèle et les dépendances conda.
  • Configuration de déploiement qui décrit comment et où déployer le modèle.

Pour plus d’informations, consultez Déployer des modèles.

Lancement contrôlé

Lors du déploiement sur un point de terminaison en ligne, vous pouvez utiliser le lancement contrôlé pour activer les scénarios suivants :

  • Créer plusieurs versions d’un point de terminaison pour un déploiement
  • Effectuer des tests A/B en routant le trafic vers différents déploiements sur le point de terminaison.
  • Basculer entre différents déploiements d’un point de terminaison en mettant à jour le pourcentage de trafic dans la configuration du point de terminaison.

Pour plus d’informations, consultez Lancement contrôlé des modèles Machine Learning.

Analytics

Microsoft Power BI prend en charge l’utilisation de modèles Machine Learning pour l’analytique données. Pour plus d’informations, consultez Intégration de Machine Learning dans Power BI (préversion).

Capturer les données de gouvernance requises pour MLOps

Machine Learning vous donne la possibilité d’effectuer le suivi de la piste d’audit de bout en bout de toutes vos ressources Machine Learning à l’aide de métadonnées. Par exemple :

  • Machine Learning s’intègre à Git pour le suivi des informations sur le dépôt, la branche et la validation d’où provient votre code.
  • Les jeux de données Machine Learning vous aident à suivre, à profiler et à gérer la version des données.
  • L’interprétabilité vous permet d’expliquer vos modèles, de respecter la conformité réglementaire, et de comprendre comment les modèles arrivent à un résultat pour une entrée donnée.
  • L’historique des exécutions Machine Learning stocke une capture instantanée du code, des données et des calculs utilisés pour effectuer l’apprentissage d’un modèle.
  • Le registre de modèles Machine Learning capture toutes les métadonnées associées à votre modèle. Par exemple, les métadonnées incluent l’expérience qui l’a entraînée, où elle est déployée et si ses déploiements sont sains.
  • L’intégration à Azure vous permet d’agir sur les événements du cycle de vie Machine Learning. Par exemple, l’inscription du modèle, le déploiement, la dérive des données et les événements d’apprentissage (exécution).

Conseil

Bien que certaines informations sur les modèles et les jeux de données soient capturées automatiquement, vous pouvez ajouter des informations supplémentaires à l’aide de balises. Lorsque vous recherchez des modèles inscrits et des jeux de données dans votre espace de travail, vous pouvez utiliser des balises comme filtre.

L’association d’un jeu de données à un modèle inscrit est une étape facultative. Pour plus d’informations sur le référencement d’un jeu de données lors de l’inscription d’un modèle, consultez la référence de classe Modèle.

Notifier, automatiser et alerter sur des événements du cycle de vie Machine Learning

Machine Learning publie des événements clés dans Azure Event Grid, qui peuvent être utilisés pour notifier et automatiser des événements du cycle de vie Machine Learning. Pour plus d'informations, consultez Utiliser Event Grid.

Surveiller les problèmes opérationnels et de Machine Learning

La supervision vous permet de comprendre les données envoyées à votre modèle et les prédictions qu’il retourne.

Ces informations vous aident à comprendre l’utilisation de votre modèle. Les données d’entrée collectées peuvent également être utiles dans l’entraînement des futures versions du modèle.

Pour plus d’informations, consultez Activer la collecte des données de modèle.

Réentraîner votre modèle sur de nouvelles données

Vous souhaiterez souvent valider votre modèle, le mettre à jour, ou même le réentraîner depuis le début, à mesure que vous recevrez de nouvelles informations. Parfois, la réception de nouvelles données est une partie attendue du domaine. D’autres fois, comme indiqué dans Détecter la dérive des données (préversion) sur les jeux de données, les performances du modèle peuvent se dégrader en raison de :

  • Modifications apportées à un capteur particulier.
  • Modifications de données naturelles telles que les effets saisonniers.
  • Fonctionnalités qui changent dans leur rapport à d’autres fonctionnalités.

Il n’y a aucune réponse universelle à la question « Comment savoir si je dois effectuer à nouveau l’apprentissage ? », mais les outils de supervision et d’événements Machine Learning étudiés précédemment constituent de bons points de départ pour l’automatisation. Une fois que vous avez décidé de réentraîner, vous devez :

  • Prétraiter vos données à l’aide d’un processus reproductible et automatisé.
  • Entraîner votre nouveau modèle.
  • Comparer les sorties de votre nouveau modèle aux résultats de votre ancien modèle.
  • Utiliser des critères prédéfinis pour choisir de remplacer ou non votre ancien modèle.

Un thème des étapes précédentes est que votre nouvel entraînement doit être automatisé et non improvisé. Les pipelines Machine Learning sont une bonne réponse pour créer des workflows relatifs à la préparation des données, à l’entraînement, à la validation et au déploiement. Lisez Reformer des modèles à l’aide du concepteur Machine Learning pour voir comment les pipelines et le concepteur Machine Learning s’intègrent dans un scénario de nouvelle formation.

Automatiser le cycle de vie du Machine Learning

Vous pouvez utiliser GitHub et Azure Pipelines pour créer un processus d’intégration continue qui entraîne un modèle. Dans un scénario classique, quand un scientifique des données vérifie une modification dans le dépôt Git pour un projet, Azure Pipelines démarre une exécution d’entraînement. Les résultats de l’exécution peuvent ensuite être examinés pour afficher les caractéristiques de performances du modèle entraîné. Vous pouvez également créer un pipeline qui déploie le modèle comme un service web.

L’extension Machine Learning facilite l’utilisation d’Azure Pipelines. Elle offre les améliorations suivantes à Azure Pipelines :

  • Permet la sélection de l’espace de travail lors de la définition d’une connexion de service.
  • Permet le déclenchement des pipelines de mise en production par les modèles entraînés créés dans un pipeline d’entraînement.

Pour plus d’informations sur l’utilisation d’Azure Pipelines avec Machine Learning, consultez :

Vous pouvez également utiliser Azure Data Factory pour créer un pipeline d’ingestion des données qui prépare les données à utiliser dans le cadre de la formation. Pour plus d’informations, consultez Pipeline d’ingestion des données.

Étapes suivantes

Découvrez plus d’informations en lisant et en explorant les ressources suivantes :