Modifier

Partager via


Utiliser l’approche de plusieurs modèles pour mettre à l’échelle des modèles 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 utilisent Azure Machine Learning et des clusters de calcul. Il offre une polyvalence pour les situations qui nécessitent une configuration complexe.

Architecture

Diagramme montrant les nombreux modèles architecture.

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

Dataflow

Le flux de données suivant correspond au diagramme précédent :

  1. ingestion de données :

    1. Azure Data Factory récupère les données d’une base de données source et les copie dans Azure Data Lake Storage.

    2. 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 d’apprentissage de modèle :

    1. Préparer des données :

      1. Le pipeline d’apprentissage récupère les données du magasin de données et les transforme en fonction des besoins.

      2. Les données sont regroupées en jeux de données pour l’apprentissage des modèles.

    2. Entraîner des modèles :

      1. Le pipeline effectue l’apprentissage des modèles pour tous les jeux de données créés pendant la préparation des données.

      2. Il utilise la classe ParallelRunStep pour entraîner plusieurs modèles en parallèle.

      3. Une fois les modèles entraînés, le pipeline inscrit les modèles et leurs métriques de test dans Machine Learning.

  3. Pipeline de promotion de modèle :

    1. Évaluer les modèles :

      1. Le pipeline de promotion évalue les modèles entraînés avant de les déplacer en production.

      2. Un pipeline de DevOps applique une logique métier pour déterminer si un modèle répond aux critères de déploiement. Par exemple, il peut vérifier que la précision des données de test dépasse 80%.

    2. Inscrire des modèles :

      1. Le pipeline de promotion inscrit des modèles éligibles dans l’espace de travail Machine Learning de production.
  4. Pipeline de scoring par lot de modèle :

    1. Préparer des données :

      1. Le pipeline de scoring par lots récupère les données du magasin de données et transforme chaque fichier en fonction des besoins.

      2. Les données sont regroupées en jeux de données pour le scoring.

    2. Noter les modèles :

      1. Le pipeline utilise la classe ParallelRunStep pour noter plusieurs jeux de données en parallèle.

      2. Il identifie le modèle approprié pour chaque jeu de données dans Machine Learning en recherchant des balises de modèle.

      3. Le modèle est téléchargé et utilisé pour noter le jeu de données.

      4. La classe DataTransferStep écrit les résultats dans Azure Data Lake.

      5. Les prédictions sont passées d’Azure Data Lake à Synapse SQL pour le service.

      6. Le point de terminaison en ligne managé fournit un scoring en temps réel.

      7. En raison du grand nombre de modèles, ils sont chargés à la demande au lieu de préchargés.

  5. Résultats :

    • Prédictions : le pipeline de scoring par lot enregistre les prédictions dans Synapse SQL.

    • Métriques : Microsoft Power BI se connecte aux prédictions de modèle pour récupérer et agréger les résultats de 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 ingère les données d’entreprise et les métadonnées tierces dans Data Lake Storage.

  • 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 les pipelines d’intégration continue et de livraison continue (CI/CD), le suivi des travaux, le contrôle de code source, les pipelines de génération, 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.

  • azure SQL Database est une base de données cloud relationnelle entièrement managée. Dans cette architecture, 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 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, Stream Analytics peut être utilisé pour le traitement des données en temps réel.

  • 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. Cette approche permet d’interroger et de récupérer efficacement des prédictions pour la création de rapports ou l’analyse. Synapse SQL est 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.

  • 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, Data Lake Storage sert de couche de stockage principale pour les jeux de données bruts et transformés, et pour stocker les résultats à partir de pipelines de scoring.

  • Machine Learning est un service Machine Learning de niveau entreprise permettant de créer et de déployer rapidement des modèles. Il fournit aux utilisateurs à tous les niveaux de compétence des outils tels qu’un concepteur à faible code, le Machine Learning automatisé et un environnement de notebook Jupyter hébergé qui prend en charge différents environnements de développement intégrés. Dans cette architecture, Machine Learning est utilisé pour gérer le cycle de vie des modèles, notamment la formation, l’évaluation et le déploiement. Il orchestre également les pipelines pour les tâches telles que l’entraînement, la promotion et le scoring.

    • points de terminaison en ligne managés sont une fonctionnalité de Machine Learning utilisée pour le scoring en temps réel. Dans cette architecture, un point de terminaison en ligne managé permet de fournir 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.

    • La classe ParallelRunStep est un composant des pipelines Machine Learning utilisés pour exécuter efficacement des travaux parallèles. Il permet un traitement évolutif des tâches par lots, telles que l’entraînement ou la notation simultanée de nombreux modèles. Dans cette architecture, la classe ParallelRunStep est utilisée 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.

  • Power BI est une collection de services logiciels, d’applications et de connecteurs qui fonctionnent ensemble pour transformer des sources de données non lié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

  • Vous pouvez utiliser n’importe quelle base de données pour les données sources.

  • Vous pouvez utiliser Azure Kubernetes Service (AKS) pour l’inférence en temps réel au lieu de points de terminaison en ligne managés. AKS vous permet de déployer des modèles conteneurisés et offre davantage de contrôle sur le déploiement. Ces fonctionnalités permettent le chargement dynamique de 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 pour chaque article de chaque magasin ou de modélisation de maintenance pour des centaines de puits de pétrole, avoir un modèle pour chaque instance peut améliorer les résultats sur 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 de Machine Learning, un pipeline de plusieurs modèles de bout en bout peut inclure l’apprentissage des modèles, le déploiement 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 pour chaque élément de chaque magasin, chaque jeu de données correspond à une combinaison unique de magasins d’éléments.

Cas d’usage potentiels

  • Vente au détail : Une chaîne d’épicerie doit créer un modèle de prévision de revenus distinct pour chaque magasin et article, ce qui totalise plus de 1 000 modèles pour chaque 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 avec des milliers de franchises doit prévoir la demande pour chaque franchise.

Considérations

Ces considérations implémentent les piliers d’Azure Well-Architected Framework, un ensemble de principes directeurs que vous pouvez utiliser pour améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Well-Architected Framework.

  • partitions de données : diviser les données en partitions est essentielle pour implémenter le modèle de nombreux modèles. Si vous souhaitez un modèle pour chaque magasin, chaque jeu de données contient toutes les données d’un magasin unique, il existe donc autant de jeux de données qu’il y a de magasins. Si vous souhaitez modéliser des produits par magasin, il existe un jeu de données pour chaque combinaison de produits et de magasins. 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 sont bien mis à l’échelle pour ces tâches, alors que Python pandas ne s’exécute pas 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, calculez les balises qui caractérisent le jeu de données, puis utilisez les balises 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.

  • Choisir l’architecture appropriée :

    • Spark convient lorsque votre pipeline d’entraînement a des exigences complexes en matière de transformation et de regroupement de 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.

    • Si vos algorithmes d’apprentissage et de scoring machine learning sont simples, vous pouvez peut-être partitionner des données avec des bibliothèques telles que scikit-learn. Dans ce scénario, vous n’avez peut-être pas besoin de Spark. Vous pouvez donc éviter les complexités possibles qui surviennent lors de l’installation d’Azure Synapse Analytics ou d’Azure Databricks.

    • Si vos jeux de données d’entraînement sont déjà créés, comme lorsqu’ils sont stockés dans des fichiers distincts ou organisés en lignes ou colonnes distinctes, vous n’avez pas besoin de Spark pour les transformations de données complexes.

    • La solution de clusters Machine Learning et de calcul offre une 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 préentraînés. La vision par ordinateur et le traitement du langage naturel deep learning sont des exemples d’applications qui peuvent nécessiter cette polyvalence.

  • référentiels de modèles distincts : Pour protéger les modèles déployés, envisagez de les stocker dans leur propre référentiel que les pipelines d’entraînement et de test n’accèdent pas.

  • classe ParallelRunStep : la classe Python ParallelRunStep est une option puissante pour exécuter de nombreux modèles d’entraînement et d’inférence. Il peut partitionner vos données de différentes manières, puis appliquer votre script Machine Learning sur les éléments de la partition en parallèle. Comme d’autres formes de formation Machine Learning, vous pouvez spécifier un environnement d’entraînement personnalisé qui a accès aux packages PyPI (Python Package Index), ou un environnement Docker personnalisé plus avancé pour les configurations qui nécessitent plus que pyPI standard. Vous pouvez choisir parmi de un grand nombre d’UC et de GPU.

  • inférence en ligne : Si un pipeline charge et met en cache tous les modèles à partir du début, les modèles peuvent é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 se concentre sur 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 . Vous devez supposer que :

  • L’apprentissage des modèles en service est effectué quotidiennement pour les maintenir à jour.

  • Vous avez besoin d’environ 30 minutes pour traiter un jeu de données qui contient 40 millions de lignes de 10 000 combinaisons de produits de magasin uniques. Le jeu de données s’entraîne sur Azure Databricks à l’aide d’un cluster approvisionné avec 12 machines virtuelles qui utilisent des instances Ls16_v2. 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. Selon votre volume de requête, choisissez un type approprié de machine virtuelle et de taille de cluster.

  • Un cluster AKS se met automatiquement à l’échelle selon les besoins, ce qui entraîne une moyenne de deux nœuds actifs chaque mois.

Pour voir comment la tarification diffère pour votre cas d’usage, modifiez les variables de la calculatrice de prix pour qu’elles correspondent à la taille de vos données attendues et répondent aux exigences de charge. 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

Microsoft gère cet article. Les contributeurs suivants ont écrit cet article.

Auteur principal :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes