L'apprentissage automatique distribué, également appelé apprentissage distribué, fait référence à des algorithmes et des systèmes qui utilisent plusieurs nœuds informatiques (également appelés nœuds de travail, Worker) pour effectuer un apprentissage automatique ou un apprentissage en profondeur. Il vise à améliorer les performances, à protéger la confidentialité et peut être étendu. vers des données d'entraînement plus grandes et des modèles plus grands.
L'apprentissage fédéré peut être considéré comme un type particulier d'apprentissage distribué. Il peut résoudre davantage certaines des difficultés rencontrées dans l'apprentissage automatique distribué, créant ainsi des applications et des produits d'intelligence artificielle pour la protection de la vie privée.
Ces dernières années, le développement rapide des nouvelles technologies a conduit à une croissance sans précédent de la quantité de données. Les algorithmes d’apprentissage automatique sont de plus en plus utilisés pour analyser des ensembles de données et créer des systèmes de prise de décision. Et en raison de la complexité du problème, comme contrôler une voiture autonome, reconnaître la parole ou prédire le comportement des consommateurs (voir Khandani et al. 2010), les solutions algorithmiques ne sont pas réalisables.
Dans certains cas, les longues durées d'exécution de la formation des modèles sur une seule machine incitent les concepteurs de solutions à utiliser des systèmes distribués pour augmenter le degré de parallélisme et la bande passante totale des E/S, car les données de formation requises pour les applications complexes peuvent facilement atteindre le niveau du téraoctet. .
Dans d'autres cas, lorsque les données elles-mêmes sont distribuées ou que le volume est trop important pour être stocké sur une seule machine, une solution centralisée n'est même pas souhaitable. Par exemple, les grandes entreprises effectuent le traitement des transactions sur des données stockées à différents endroits, ou le volume de données est trop important pour être déplacé et centralisé.
Pour que ces types d'ensembles de données soient accessibles en tant que données de formation pour les problèmes d'apprentissage automatique, des algorithmes doivent être sélectionnés et mis en œuvre qui soient capables de calcul parallèle, s'adaptent à plusieurs distributions de données et possèdent des capacités de récupération des pannes.
Ces dernières années, la technologie d'apprentissage automatique a été largement utilisée. Bien que diverses méthodes et algorithmes concurrents aient émergé, les représentations des données utilisées sont structurellement très similaires. La plupart des calculs effectués dans le cadre du travail d'apprentissage automatique concernent des transformations de base de vecteurs, de matrices ou de tenseurs, qui sont des problèmes courants en algèbre linéaire.
La nécessité d'optimiser cette opération est une direction de recherche très active dans le domaine du calcul haute performance (HPC) depuis des décennies. Par conséquent, certaines technologies et bibliothèques de la communauté HPC (par exemple, BLAS ou MPI) ont été adoptées avec succès par la communauté du machine learning et intégrées dans le système.
Dans le même temps, la communauté HPC a identifié l'apprentissage automatique comme une charge de travail émergente à forte valeur ajoutée et a commencé à appliquer les méthodes HPC à l'apprentissage automatique.
Coates et al. ont formé un réseau avec 1 milliard de paramètres en seulement trois jours sur leur système de calcul commercial haute performance (COTSHPC).
You et al. ont proposé en 2017 d'optimiser l'entraînement des réseaux de neurones sur Knights Landing d'Intel, une puce conçue pour les applications de calcul haute performance.
Kurth et al. ont démontré en 2017 comment les problèmes d'apprentissage profond (tels que l'extraction de modèles météorologiques) peuvent être optimisés et mis à l'échelle sur des systèmes HPC parallèles à grande échelle.
Yan et al. ont proposé en 2016 que le défi de la planification d'applications de réseaux neuronaux profonds sur une infrastructure de cloud computing pouvait être résolu en modélisant les exigences de charge de travail en empruntant des technologies telles que l'analyse légère au HPC.
Li et al., 2017, ont étudié les propriétés de récupération des réseaux de neurones profonds contre les erreurs matérielles lors de leur exécution sur des accélérateurs (les accélérateurs sont souvent déployés dans les principaux systèmes informatiques hautes performances).
Comme pour d'autres défis informatiques à grande échelle, nous disposons de deux manières fondamentalement différentes et complémentaires d'accélérer les charges de travail : ajouter plus de ressources à une machine (mise à l'échelle verticale, comme l'amélioration continue des cœurs de calcul GPU/TPU), ajouter davantage de ressources. nœuds au système (mise à l’échelle horizontale, faible coût).
Les frontières entre les supercalculateurs traditionnels, les grilles et les cloud sont de plus en plus floues, notamment lorsqu'il s'agit d'environnements d'exécution optimaux pour des charges de travail exigeantes telles que l'apprentissage automatique. Par exemple, les GPU et les accélérateurs sont plus courants dans les principaux centres de données cloud. Par conséquent, la parallélisation des charges de travail d’apprentissage automatique est essentielle pour obtenir des performances acceptables à grande échelle. Cependant, lors de la transition de solutions centralisées vers des systèmes distribués, l'informatique distribuée est confrontée à de sérieux défis en termes de performances, d'évolutivité, de résilience aux pannes ou de sécurité.
Étant donné que chaque algorithme a des modèles de communication uniques, c'est un défi de concevoir un système général capable de distribuer efficacement l'apprentissage automatique général. Bien qu'il existe actuellement une variété de concepts et d'implémentations différents d'apprentissage automatique distribué, nous présenterons une architecture commune qui couvre l'ensemble de l'espace de conception. De manière générale, les problèmes d'apprentissage automatique peuvent être divisés en étapes de formation et étapes de prédiction (voir Figure 1-5).
▲ Figure 1-5 Structure d'apprentissage automatique. Pendant la phase de formation, le modèle ML est optimisé à l'aide des données de formation et de l'ajustement des hyperparamètres. Le modèle entraîné est ensuite déployé dans le système pour fournir des prédictions sur les nouvelles données entrantes
La phase de formation comprend la formation d'un modèle d'apprentissage automatique en saisissant une grande quantité de données de formation et en utilisant des algorithmes de ML couramment utilisés, tels que l'algorithme évolutif (EA), l'algorithme d'apprentissage automatique basé sur des règles, tels que les arbres de prise de décision et les règles d'association) , modèle thématique (TM), factorisation matricielle (Matrix Factorization) et algorithmes basés sur la descente de gradient stochastique (SGD), etc., pour effectuer des mises à jour du modèle.
En plus de choisir un algorithme approprié pour un problème donné, nous devons également effectuer un réglage des hyperparamètres pour l'algorithme choisi. Le résultat final de la phase de formation est d'obtenir un modèle entraîné. La phase de prédiction consiste à déployer le modèle entraîné dans la pratique. Un modèle entraîné reçoit de nouvelles données (en entrée) et génère des prédictions (en sortie).
Bien que la phase de formation d'un modèle soit généralement gourmande en calcul et nécessite de grands ensembles de données, l'inférence peut être effectuée avec moins de puissance de calcul. La phase de formation et la phase de prédiction ne s’excluent pas mutuellement. L'apprentissage incrémentiel combine la phase de formation et la phase de prédiction, en utilisant de nouvelles données dans la phase de prédiction pour entraîner en continu le modèle.
En matière de distribution, nous pouvons diviser le problème sur toutes les machines de deux manières différentes, à savoir le parallélisme des données ou du modèle (voir Figure 1-6). Les deux méthodes peuvent également être appliquées simultanément.
▲ Figure 1-6 Parallélisme dans l'apprentissage automatique distribué. Le parallélisme des données consiste à entraîner plusieurs instances du même modèle sur différents sous-ensembles de l'ensemble de données d'entraînement, tandis que le parallélisme des modèles distribue les chemins parallèles d'un seul modèle à plusieurs nœuds
Dans la méthode parallèle de données (Data Parallel), les données sont partitionnées autant de fois qu'il y a de nœuds de travail dans le système, et tous les nœuds de travail appliquent ensuite le même algorithme à différents ensembles de données. Le même modèle est disponible pour tous les nœuds de travail (soit par centralisation, soit par réplication), produisant ainsi naturellement une seule sortie cohérente. Cette méthode peut être utilisée pour chaque algorithme ML qui satisfait à l'hypothèse de distribution indépendante et identique sur les échantillons de données (c'est-à-dire la plupart des algorithmes ML).
Dans l'approche Model Parallel, une copie exacte de l'ensemble de données est traitée par des nœuds de travail, qui exploitent différentes parties du modèle. Un modèle est donc l’agrégation de toutes les parties du modèle. Les méthodes de parallélisme des modèles ne peuvent pas être automatiquement appliquées à chaque algorithme d'apprentissage automatique, car les paramètres du modèle ne peuvent généralement pas être partitionnés.
Une option consiste à former différentes instances de modèles identiques ou similaires et à regrouper la sortie de tous les modèles formés à l'aide de méthodes telles que des ensembles (par exemple Bagging, Boosting, etc.). La décision architecturale finale est la topologie du système d'apprentissage automatique distribué. Les différents nœuds qui composent un système distribué doivent être connectés via des modèles architecturaux spécifiques pour obtenir des fonctionnalités riches. C'est une tâche courante. Cependant, le choix du mode a des implications sur les rôles que les nœuds peuvent jouer, le degré de communication entre les nœuds et la résilience aux pannes de l'ensemble du déploiement.
La figure 1-7 montre 4 topologies possibles, cohérentes avec la classification générale des réseaux de communication distribués de Baran. L'architecture centralisée (Figure 1-7a) utilise une approche strictement hiérarchique de l'agrégation, qui se produit à un emplacement central unique. La structure décentralisée permet une agrégation intermédiaire, où le modèle de réplication est continuellement mis à jour lorsque l'agrégation est diffusée à tous les nœuds (comme une topologie arborescente) (Figure 1-7b), ou en utilisant un modèle partitionné réparti sur plusieurs serveurs de paramètres (Figure 1). -7b).1-7c). Une architecture entièrement distribuée (Figure 1-7d) se compose d'un réseau de nœuds indépendants qui intègrent la solution, et chaque nœud ne se voit pas attribuer de rôle spécifique.
▲ Figure 1-7 Topologie d'apprentissage automatique distribué
Le développement de l'apprentissage automatique distribué a également créé certains besoins en matière de protection de la vie privée, créant ainsi. certains contenus chevauchent l’apprentissage fédéré. Les méthodes de chiffrement courantes, telles que le calcul multipartite sécurisé, le calcul homomorphe, la confidentialité différentielle, etc., sont également progressivement utilisées dans l'apprentissage automatique distribué. En général, l’apprentissage fédéré est une méthode efficace pour entraîner de manière collaborative des modèles d’apprentissage automatique à l’aide de ressources distribuées.
L'apprentissage fédéré est une approche d'apprentissage automatique distribué dans laquelle plusieurs utilisateurs collaborent pour former un modèle tout en conservant les données d'origine dispersées et non déplacées vers un seul serveur ou centre de données. Dans l'apprentissage fédéré, les données brutes ou les données générées par un traitement sécurisé de données brutes sont utilisées comme données de formation. L'apprentissage fédéré permet uniquement la transmission de données intermédiaires entre des ressources informatiques distribuées tout en évitant la transmission de données d'entraînement. Les ressources informatiques distribuées font référence aux appareils mobiles des utilisateurs finaux ou aux serveurs de plusieurs organisations.
L'apprentissage fédéré introduit du code dans les données au lieu des données dans le code, résolvant techniquement les problèmes fondamentaux de confidentialité, de propriété et de localisation des données. De cette manière, l'apprentissage fédéré permet à plusieurs utilisateurs de former un modèle en collaboration tout en respectant les contraintes juridiques en matière de données.
Cet article est extrait de « Federated Learning : Explication détaillée des algorithmes et de la mise en œuvre du système » (ISBN : 978-7-111-70349-5) et est publié avec l'autorisation de l'éditeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!