Édition

Partage via


Nombreux modèles Machine Learning à grande échelle avec Azure Machine Learning

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

Cet article décrit une architecture pour de nombreux modèles, qui utilise des clusters de Machine Learning et de calcul. Elle offre une grande polyvalence pour les situations nécessitant une configuration complexe.

Un article connexe, Nombreux modèles Machine Learning à grande échelle dans Azure avec Spark, utilise Apache Spark dans Azure Databricks ou Azure Synapse Analytics.

Architecture

Diagramme d’architecture pour de nombreux modèles Machine Learning à grande échelle sur Azure avec Azure Machine Learning.

Téléchargez un fichier Visio de cette architecture.

Workflow

  1. ingestion de données :

    • Azure Data Factory extrait les données d’une base de données source et les copie dans Azure Data Lake Storage.
    • Les données sont ensuite stockées dans un magasin de données Machine Learning en tant que jeu de données tabulaire.
  2. pipeline Model-Training :

    1. préparer des données :
      • Le pipeline d’apprentissage extrait les données du magasin de données et les transforme en fonction des besoins.
      • Les données sont regroupées en jeux de données pour l’apprentissage des modèles.
    2. entraîner des modèles :
      • Le pipeline effectue l’apprentissage des modèles pour tous les jeux de données créés pendant la préparation des données.
      • Il utilise la classe ParallelRunStep pour entraîner plusieurs modèles en parallèle.
      • Après l’entraînement, le pipeline inscrit les modèles dans Machine Learning, ainsi que leurs métriques de test.
  3. pipeline Model-Promotion :

    1. Évaluer les modèles :
      • Le pipeline de promotion évalue les modèles formés avant de les déplacer en production.
      • Un pipeline DevOps applique une logique métier pour déterminer si un modèle répond aux critères de déploiement (par exemple, en vérifiant que la précision sur les données de test dépasse 80%).
    2. Inscrire des modèles :
      • Le pipeline de promotion inscrit des modèles éligibles dans l’espace de travail Machine Learning de production.
  4. pipeline de Batch-Scoring modèle :

    1. préparer des données :
      • Le pipeline de scoring par lots extrait les données du magasin de données et transforme chaque fichier en fonction des besoins.
      • Les données sont regroupées en jeux de données pour le scoring.
    2. modèles de score :
      • Le pipeline utilise la classe ParallelRunStep pour noter plusieurs jeux de données en parallèle.
      • Il identifie le modèle approprié pour chaque jeu de données dans Machine Learning en recherchant des balises de modèle.
      • Le modèle est téléchargé et utilisé pour noter le jeu de données.
      • La classe DataTransferStep est utilisée pour réécrire les résultats dans Azure Data Lake.
      • Les prédictions sont ensuite passées d’Azure Data Lake à Synapse SQL pour le service.
  5. score Real-Time :

    • Managed Online Endpoint est utilisé pour fournir un scoring en temps réel.
    • En raison du grand nombre de modèles, ils sont chargés à la demande plutôt que préchargés.
  6. Résultats :

    1. Prédictions : le pipeline de scoring par lot enregistre les prédictions dans Synapse SQL.
    2. Métriques : Power BI se connecte aux prédictions de modèle pour récupérer et agréger les résultats pour la présentation.

Composants

  • Azure Data Factory est un service d’intégration de données basé sur le cloud qui permet la création de flux de travail pilotés par les données pour orchestrer et automatiser le déplacement et la transformation des données. Dans cette architecture, Azure Data Factory est utilisé pour ingérer des données d’entreprise et des métadonnées tierces dans Azure Data Lake Storage.

  • Azure Stream Analytics est un service d’analyse en temps réel et complexe conçu pour analyser et traiter des volumes élevés de données de streaming rapide. Dans cette architecture, Azure Stream Analytics peut potentiellement être utilisé pour le traitement des données en temps réel, bien qu’il ne soit pas explicitement affiché dans le flux de travail.

  • Azure Machine Learning est un service de machine learning de niveau entreprise pour la génération et le déploiement rapides de modèles. Il fournit aux utilisateurs à tous les niveaux de compétence des outils tels qu’un concepteur à faible code, un ML automatisé (AutoML) et un environnement de notebook Jupyter hébergé qui prend en charge différents IDE. Dans cette architecture, Azure Machine Learning est utilisé pour gérer le cycle de vie des modèles Machine Learning, notamment la formation, l’évaluation, le déploiement et les pipelines d’orchestration tels que la formation, la promotion et le scoring.

    managed Online Endpoint est une fonctionnalité d’Azure Machine Learning utilisée pour le scoring en temps réel. Dans cette architecture, elle fournit un moyen évolutif et sécurisé de servir les prédictions en quasi temps réel en chargeant des modèles Machine Learning à la demande.

  • ParallelRunStep est un composant des pipelines Azure Machine Learning utilisés pour exécuter efficacement des travaux parallèles. Il permet l’exécution évolutive de processus par lots, tels que l’entraînement ou le scoring simultanément de nombreux modèles. Dans cette architecture, le ParallelRunStep est utilisé dans les pipelines d’entraînement de modèle et de scoring par lots pour entraîner ou noter plusieurs jeux de données ou modèles en parallèle, ce qui réduit considérablement le runtime de ces opérations.

  • Azure Data Lake Storage est un service de stockage éminemment scalable et sécurisé pour vos charges de travail d’analytique hautes performances. Dans cette architecture, Azure Data Lake Storage sert de couche de stockage principale pour les jeux de données bruts et transformés, ainsi que pour stocker les résultats à partir de pipelines de scoring.

  • Azure Synapse Analytics est un service d’analytique qui unifie l’intégration de données, l’entreposage des données d’entreprise et l’analytique Big Data. Il est utilisé dans cette architecture pour stocker les résultats de scoring par lots, ce qui permet une interrogation et une récupération efficaces des prédictions pour la création de rapports ou l’analyse. Synapse SQL est spécifiquement utilisé pour servir des prédictions aux applications en aval et permettre aux outils de visualisation tels que Power BI d’accéder aux résultats agrégés.

  • Azure SQL Database est une base de données relationnelle entièrement managée en tant que service. Dans cette architecture, Azure SQL Database est utilisé pour stocker des données structurées qui peuvent être interrogées ou analysées dans le cadre du pipeline de données.

  • Azure DevOps est un ensemble de services de développement fournissant une gestion complète des applications et du cycle de vie de l’infrastructure. Il inclut des outils pour le suivi du travail, le contrôle de code source, la génération et CI/CD, la gestion des packages et les solutions de test. Dans cette architecture, Azure DevOps est utilisé pour gérer les pipelines CI/CD pour automatiser la promotion, le test et le déploiement de modèles dans des environnements de production.

  • Microsoft Power BI est un ensemble de services logiciels, d’applications et de connecteurs qui œuvrent de concert pour transformer vos sources de données en insights cohérents, visuellement immersifs et interactifs. Dans cette architecture, Power BI se connecte à Synapse SQL pour récupérer et présenter des prédictions et des métriques agrégées via des tableaux de bord interactifs.

Autres solutions

  • Les données sources peuvent provenir de n’importe quelle base de données.
  • Vous pouvez utiliser Azure Kubernetes Service (AKS) pour l’inférence en temps réel au lieu de points de terminaison Managed Online. AKS permet de déployer des modèles conteneurisés et offre davantage de contrôle sur le déploiement, ce qui permet le chargement dynamique des modèles pour gérer les requêtes entrantes sans épuiser les ressources.

Détails du scénario

De nombreux problèmes de machine learning sont trop complexes pour qu’un modèle machine learning unique puisse les résoudre. Qu’il s’agisse de prédire les ventes de chaque article dans chaque magasin, ou de modéliser la maintenance de centaines de puits de pétrole, le fait de disposer d’un modèle pour chaque instance peut améliorer les résultats pour de nombreux problèmes de machine learning. Ce corpus de nombreux modèles, courant dans un vaste éventail de secteurs, s’applique à de nombreux cas d’utilisation réels. Avec l’utilisation d’Azure Machine Learning, un pipeline de nombreux modèles de bout en bout peut inclure l’apprentissage du modèle, le déploiement de l’inférence par lots et le déploiement en temps réel.

Une solution de nombreux modèles requiert un jeu de données différent pour chaque modèle au cours de l’apprentissage et du scoring. Par exemple, si la tâche consiste à prédire les ventes de chaque article de chaque magasin, chaque jeu de données est destiné à une combinaison article-magasin unique.

Cas d’usage potentiels

  • Commerce de détail : une chaîne de supérettes doit créer un modèle de prévision de recettes distinct pour chaque magasin et article, totalisant plus de 1 000 modèles par magasin.
  • Chaîne d’approvisionnement : pour chaque combinaison d’entrepôt et de produit, une société de distribution doit optimiser le stock.
  • Restaurants : une chaîne comptant des milliers de franchisés doit prévoir la demande pour chacun d’eux.

Considérations

Ces considérations implémentent les piliers d’Azure Well-Architected Framework qui est un ensemble de principes directeurs qui permettent d’améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.

  • Partitions de données Le partitionnement des données est la clé de l’implémentation du corpus de nombreux modèles. Si vous souhaitez un modèle par magasin, un jeu de données comprend toutes les données d’un magasin, et il y a autant de jeux de données qu’il y a de magasins. Si vous souhaitez modéliser des produits par magasin, il y aura un jeu de données pour chaque combinaison de produit et magasin. En fonction du format des données source, il peut être facile de partitionner les données, ou cela peut exiger une lecture aléatoire et une transformation conséquentes des données. Spark et Synapse SQL adaptent parfaitement leur échelle pour ces tâches, contrairement à Python pandas, dans la mesure où il ne s’exécute que sur un seul nœud et processus.
  • Gestion des modèles : les pipelines d’apprentissage et de scoring identifient et appellent le modèle approprié pour chaque jeu de données. Pour ce faire, ils calculent les étiquettes qui caractérisent le jeu de données, puis les utilisent pour rechercher le modèle correspondant. Les étiquettes identifient la clé de partition de données et la version du modèle. Elles peuvent également fournir d’autres informations.
  • Choix de l’architecture appropriée :
    • Spark est approprié lorsque votre pipeline d’apprentissage a des exigences complexes en lien avec la transformation et le regroupement des données. Il fournit des techniques de fractionnement et de regroupement flexibles pour regrouper les données par combinaisons de caractéristiques, telles que produit-magasin ou emplacement-produit. Les résultats peuvent être placés dans une tramedonnées Spark à des fins d’utilisation dans des étapes subséquentes.
    • Lorsque les algorithmes d’apprentissage et de scoring de machine learning sont simples, il est possible de partitionner les données avec des bibliothèques comme Scikit-learn. Dans ce cas, Spark n’est pas nécessaire : vous pouvez donc éviter de potentielles complexités lors de l’installation d’Azure Synapse ou d’Azure Databricks.
    • Lorsque les jeux de données d’apprentissage sont déjà créés (par exemple, ils se trouvent dans des fichiers distincts ou dans des lignes ou des colonnes distinctes), vous n’avez pas besoin de Spark pour les transformations de données complexes.
    • La solution de clusters de Machine Learning et de calcul offre une grande polyvalence pour les situations nécessitant une configuration complexe. Par exemple, vous pouvez utiliser un conteneur Docker personnalisé, télécharger des fichiers ou télécharger des modèles dont l’apprentissage a déjà été effectué. La vision par ordinateur et le Deep Learning avec traitement en langage naturel (NLP) sont des exemples d’applications qui peuvent nécessiter une telle polyvalence.
  • Dépôt de modèle distincts : pour protéger les modèles déployés, envisagez de les stocker dans leur propre référentiel que les pipelines d’apprentissage et de test ne touchent pas.
  • Classe ParallelRunStep : la classe python ParallelRunStep est une option puissante pour exécuter de nombreux modèles d’apprentissage et d’inférence. Elle peut partitionner vos données de différentes façons, puis appliquer votre script machine learning sur des éléments de la partition en parallèle. Comme pour d’autres formes d’apprentissage de Machine Learning, vous pouvez spécifier un environnement d’apprentissage personnalisé avec accès aux packages Python Package Index (PyPI), ou un environnement Docker personnalisé plus avancé pour les configurations qui requièrent plus qu’un package PyPI standard. Vous pouvez choisir parmi de un grand nombre d’UC et de GPU.
  • Inférence en ligne : si, au début, un pipeline charge et met en cache tous les modèles, ceux-ci risquent d’épuiser la mémoire du conteneur. Par conséquent, chargez les modèles à la demande dans la méthode run, même si cela peut augmenter légèrement la latence.

Optimisation des coûts

L’optimisation des coûts consiste à examiner les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d'informations, consultez Liste de contrôle de la révision de la conception pour l'optimisation des coûts.

Pour mieux comprendre le coût d’exécution de ce scénario sur Azure, utilisez la calculatrice de prix. Voici quelques bonnes hypothèses de départ :

  • L’apprentissage des modèles en service est effectué quotidiennement pour les maintenir à jour.
  • Pour un jeu de données de 40 millions lignes avec 10 000 combinaisons de magasin et produit, l’apprentissage sur Azure Databricks à l’aide d’un cluster approvisionné avec 12 machines virtuelles utilisant des instances Ls16_v2 prend environ 30 minutes.
  • Le scoring par lot avec le même jeu de données prend environ 20 minutes.
  • Vous pouvez utiliser le Machine Learning pour déployer l’inférence en temps réel. En fonction du volume de votre demande, choisissez un type de machine virtuelle et une taille de cluster appropriés.
  • Le cluster AKS adaptant son échelle automatiquement en fonction des besoins, deux nœuds sont actifs par mois en moyenne.

Pour voir comment la tarification diffère pour votre cas d’usage, modifiez les variables pour qu’elles correspondent à la taille de données attendue et aux exigences de charge de service. Pour des volumes de données d’apprentissage plus grands ou plus petits, augmentez ou diminuez la taille du cluster Azure Databricks. Pour gérer davantage d’utilisateurs simultanés lors du service du modèle, augmentez la taille du cluster AKS.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteur principal :

Étapes suivantes