Modifier

Partager 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 vers Azure Data Lake Storage. Il les stocke ensuite dans un magasin de données Machine Learning sous la forme d’un jeu de données tabulaire.
  2. Pipeline d’apprentissage de modèle :
    1. Préparer les données : le pipeline d’apprentissage extrait les données du magasin de données et les transforme en fonction des besoins. Il regroupe également les données dans des jeux de données pour l’apprentissage des modèles.
    2. Effectuer l’apprentissage des modèles : le pipeline effectue l’apprentissage des modèles pour tous les jeux de données créés lors de la préparation des données. Il utilise la classe ParallelRunStep pour effectuer l’apprentissage de plusieurs modèles en parallèle. Une fois l’apprentissage d’un modèle effectué, le pipeline l’enregistre dans Machine Learning avec les métriques de test.
  3. Pipeline de promotion de modèle :
    1. Évaluer les modèles : le pipeline de promotion évalue les modèles dont l’apprentissage a été effectué avant de les déplacer en production. 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 est supérieure à 80 pour cent.
    2. Inscrire les modèles : le pipeline de promotion inscrit les modèles éligibles pour l’espace de travail Machine Learning de production.
  4. Pipeline de scoring par lot de modèle :
    1. Préparer les données : le pipeline de scoring par lot extrait des données du magasin de données et transforme chaque fichier en fonction des besoins. Il regroupe également les données dans des jeux de données pour le scoring.
    2. Noter les modèles : le pipeline utilise la classe ParallelRunStep pour noter plusieurs jeux de données en parallèle. Il recherche le modèle approprié pour chaque jeu de données dans Machine Learning en recherchant les balises de modèle. Ensuite, il télécharge le modèle et l’utilise pour noter le jeu de données. Il utilise la classe DataTransferStep pour réécrire les résultats dans Azure Data Lake, puis passe des prédictions d’Azure Data Lake à Synapse SQL pour le service.
  5. Scoring en temps réel : Azure Kubernetes Service (AKS) peut effectuer un scoring en temps réel si nécessaire. En raison de leur grand nombre, les modèles doivent être chargés à la demande, pas 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 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 de tous niveaux de compétence un concepteur à faible code, un ML automatisé (AutoML) et un environnement de notebook Jupyter hébergé qui prend en charge divers IDE.
  • Azure Databricks est un outil d’ingénierie de données dans le cloud basé sur Apache Spark. Il peut traiter et transformer de gros volumes de données et les explorer à l’aide de modèles machine learning. Vous pouvez écrire des travaux en R, Python, Java, Scala et Spark SQL.
  • 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.
  • Synapse SQL est un système de requêtes distribuées pour T-SQL qui autorise les scénarios d’entreposage de données et de virtualisation de données et qui permet à T-SQL de gérer les scénarios de streaming et de machine learning. Il propose des modèles de ressources à la fois serverless et dédiés.
  • Azure Data Lake Storage est un service de stockage éminemment scalable et sécurisé pour vos charges de travail d’analytique hautes performances.
  • Azure Kubernetes Service (AKS) est un service complètement managé qui sert au déploiement et à la gestion d’applications conteneurisées. AKS simplifie le déploiement d’un cluster Kubernetes managé dans Azure en déportant la surcharge de travail opérationnel sur Azure.
  • 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. DevOps comprend le suivi du travail, le contrôle du code source, le build, l’intégration continue et la livraison continue, la gestion des packages et les solutions de test.
  • 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.

Autres solutions

  • Les données sources peuvent provenir de n’importe quelle base de données.
  • Vous pouvez utiliser un point de terminaison en ligne managé ou AKS pour déployer l’inférence en temps réel.

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.
  • Apprentissage et scoring Spark : lorsque vous utilisez l’architecture Spark, vous pouvez utiliser l’API de fonction Spark pandas pour l’apprentissage et le scoring parallèles.
  • 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 Vue d’ensemble du pilier d’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