MLOps : Gestion, déploiement et surveillance des modèles avec Azure Machine Learning

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)

Découvrez, dans cet article, les pratiques MLOps (opérations d’apprentissage automatique) dans Azure Machine Learning afin de gérer le cycle de vie de vos modèles. Les pratiques MLOps permettent d’améliorer 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. Ces principes incluent l’intégration continue, la livraison et le déploiement. MLOps applique ces principes au cycle de vie du 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 fournit les fonctionnalités suivantes au processus d’apprentissage automatique :

  • 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. Suivez les métadonnées associées requises pour utiliser un modèle.
  • Capturez les données de gouvernance pour le cycle de vie de l’apprentissage automatique 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. Les événements comprennent des expériences, l'enregistrement de modèles, le déploiement de modèles et la détection de dérives dans les 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.
  • Automatisez le cycle de vie de l’apprentissage automatique de bout en bout avec l’apprentissage automatique et les pipelines Azure. Utilisez des pipelines pour tester et mettre à jour fréquemment des 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 Opérations d’apprentissage automatique.

Créer des pipelines Machine Learning reproductibles

Utilisez des pipelines Azure Machine Learning pour assembler toutes les étapes de votre processus d’entraînement de modèle. Un pipeline d’apprentissage automatique peut contenir des étapes qui incluent la préparation des données, l’extraction de fonctionnalités, le réglage des hyperparamètres et l’évaluation du modèle.

Si vous utilisez le concepteur Azure Machine Learning pour créer un pipeline d’apprentissage automatique, vous pouvez cloner le pipeline pour itérer sur sa conception sans perdre vos anciennes versions. Pour cloner un pipeline à tout moment dans le concepteur, accédez au coin supérieur droit pour sélectionner ...>Cloner.

Pour plus d’informations sur les pipelines Azure Machine Learning, consultez Pipelines d’apprentissage automatique.

Créer des environnements logiciels réutilisables

Les environnements Azure Machine Learning vous permettent de suivre et de reproduire les dépendances logicielles de vos projets à mesure qu'elles évoluent. 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 utiliser des environnements pour l’entraînement et le déploiement de modèles. Pour plus d’informations, consultez Présentation des environnements Azure 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.

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 stocké dans plusieurs fichiers, vous pouvez inscrire les fichiers en tant que modèle unique dans votre espace de travail Azure Machine Learning. Après l’inscription, vous pouvez télécharger ou déployer le modèle inscrit et recevoir tous les fichiers de composant.

Vous pouvez identifier les modèles inscrits par nom et version. Chaque fois que vous inscrivez un modèle portant le même nom qu’un modèle existant, le registre incrémente le numéro de version. Vous pouvez fournir des balises de métadonnées pendant l’inscription et les utiliser lorsque vous recherchez un modèle. Azure 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 d'Azure Machine Learning.

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).
  • Vous ne pouvez pas supprimer un modèle inscrit qui est utilisé dans un déploiement actif.

Pour plus d’informations sur l’utilisation de modèles dans Azure Machine Learning, consultez Utiliser des modèles dans Azure Machine Learning.

Empaqueter et déboguer des modèles

Vous devez d'abord empaqueter un modèle dans une image Docker avant de le déployer en production. Dans la plupart des cas, la création d’images se produit automatiquement en arrière-plan pendant le déploiement. Toutefois, vous pouvez spécifier manuellement l’image.

Il est utile de procéder à un premier déploiement dans votre environnement de développement local afin de pouvoir résoudre les problèmes et déboguer avant de procéder au déploiement dans le cloud. Cette approche vous permet d'éviter de rencontrer des problèmes lors du déploiement d'Azure Machine Learning. Pour plus d’informations sur la résolution des problèmes de déploiement courants, consultez Comment résoudre les problèmes de point de terminaison en ligne.

Convertir et optimiser les modèles

Vous pouvez convertir votre modèle en Open Neural Network Exchange (ONNX) pour essayer d’améliorer les performances. En règle générale, 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.

Déployer des modèles

Vous pouvez déployer des modèles Machine Learning entraînés en tant que points de terminaison dans le cloud ou localement. Les déploiements utilisent l’UC et le GPU pour l’inférence.

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

  • Le modèle utilisé pour noter les données envoyées au service ou à l’appareil.
  • Un script d’entrée1. Ce script accepte les demandes, utilise les modèles pour noter les données et renvoie une réponse.
  • Un environnement2 qui décrit les dépendances pip et conda requises par les modèles et le script d’entrée.
  • Toutes les autres ressources, telles que le texte et les données requis par les modèles et le script d’entrée.

Vous devez également fournir 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, notamment les ressources nécessaires à l'exécution du service Web, sont également ajoutés.

1,2 Lorsque vous déployez un modèle MLflow, vous n’avez pas besoin de fournir un script d’entrée, également appelé script de scoring. Vous n’avez pas besoin de fournir un environnement pour le déploiement. Pour plus d’informations sur le déploiement de modèles MLflow, consultez Recommandations pour le déploiement de modèles MLflow.

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 sur le scoring par lots, consultez Points de terminaison de Batch.

Notation en temps réel

Vous pouvez utiliser vos modèles avec un point de terminaison en ligne pour le scoring en temps réel. 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 un 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 sur le déploiement pour le scoring en temps réel, consultez Déployer des points de terminaison en ligne.

Lancement contrôlé pour les points de terminaison en ligne

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.
  • Basculez entre les déploiements de points de terminaison en mettant à jour le pourcentage de trafic dans la configuration du point de terminaison.

Pour plus d’informations sur le déploiement à l’aide d’un déploiement contrôlé, consultez Effectuer un lancement sécurisé des nouveaux déploiements pour l’inférence en temps réel.

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 d’Azure Machine Learning dans Power BI.

Capturer les données de gouvernance requises pour MLOps

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

  • Les ressources de données Azure Machine Learning vous aident à suivre, profiler et obtenir des données de version.
  • L’interprétabilité des modèles 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 travaux Azure Machine Learning stocke une capture instantanée du code, des données et des calculs utilisés pour effectuer l’entraînement d’un modèle.
  • Le registre de modèles Machine Learning stocke toutes les métadonnées associées à votre modèle. Par exemple, qui a entraîné le modèle, où le modèle est déployé et si les déploiements du modèle sont sains.
  • L’intégration à Azure vous permet d’agir sur des événements, tels que l’inscription de modèle, le déploiement, la dérive des données et les événements d’entraînement (travail), dans le cycle de vie de l’apprentissage automatique.

Conseil

Bien que certaines informations sur les modèles et les ressources de données sont automatiquement stockées, vous pouvez ajouter plus d’informations à l’aide de balises. Lorsque vous recherchez des modèles inscrits et des ressources de données dans votre espace de travail, vous pouvez utiliser des balises comme filtre.

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

Azure 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 de l’apprentissage automatique. Pour plus d’informations sur la configuration des processus pilotés par les événements basés sur des événements Azure Machine Learning, consultez Flux de travail personnalisés CI/CD et pilotés par les événements.

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, lorsqu’un spécialiste des données vérifie une modification dans le référentiel Git d’un projet, Azure Pipelines démarre un travail d’entraînement. Les résultats de la tâche 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. L’extension fournit 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 l’apprentissage automatique, consultez Utiliser Azure Pipelines avec Azure Machine Learning.