Modifier

Nombreux modèles Machine Learning (ML) à grande échelle dans Azure avec Spark

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 Apache Spark dans Azure Databricks ou Azure Synapse Analytics. Spark est un outil puissant pour les transformations de données volumineuses et complexes que certaines solutions requièrent.

Notes

Utilisez Spark versions 3.0 et ultérieures pour les applications de nombreux modèles. Les fonctionnalités de transformation des données et la prise en charge de Python et pandas sont bien meilleures que dans les versions antérieures.

Un article connexe, Nombreux modèles Machine Learning à grande échelle avec Azure Machine Learning, utilise des clusters de Machine Learning et de calcul.

Architecture

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

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

Dataflow

  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.
  2. Pipeline d’apprentissage de modèle :
    1. Préparer les données : le pipeline d’apprentissage extrait les données de Data Lake Storage et utilise Spark pour les regrouper 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 l’API de fonction pandas 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 de Data Lake Storage et utilise Spark pour les regrouper dans des jeux de données pour le scoring.
    2. Noter les modèles : le pipeline utilise l’API de fonction pandas 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 le connecteur Spark pour Synapse SQL pour conserver les résultats.
  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 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

  • Vous pouvez utiliser Spark dans Azure Synapse au lieu de Spark dans Azure Databricks pour l’apprentissage et le scoring du modèle.
  • 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 est très courant dans un vaste éventail de secteurs et 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.
  • 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.
  • Scalabilité de l’apprentissage : Spark vous permet d’effectuer l’apprentissage de centaines de milliers de modèles en parallèle. Spark lance plusieurs processus d’apprentissage dans chaque machine virtuelle d’un cluster. Chaque cœur peut exécuter un processus distinct. Bien qu’il s’agisse d’une utilisation correcte des ressources, il est important de dimensionner le cluster avec précision et de choisir la bonne référence SKU, en particulier si le processus d’apprentissage est onéreux et long.

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