• Aucun résultat trouvé

Dans ce chapitre nous avons montré un aperçu de l’état de l’art de l’apprentis-sage profond. Celui-ci est particulièrement riche et le nombre d’applications augmente constamment depuis quelques années. Les réseaux de neurones peuvent être appris de manière supervisée ou non-supervisée. L’apprentissage se fait par une descente de gradient (ou une variante de cette méthode) sur une base de données la plus large possible. Nous allons voir dans le chapitre suivant les motivations pour effectuer cet apprentissage dans un système distribué ainsi que les premier travaux qui permettent de paralléliser cette descente de gradient sur plusieurs machines.

V

ERS UN APPRENTISSAGE PROFOND

SUR DES SYSTÈMES DISTRIBUÉS

Dans ce chapitre nous allons décrire l’exemple d’un apprentissage collaboratif qui motive l’intérêt de l’apprentissage profond sur des systèmes distribués. Nous allons ainsi pouvoir détailler les contraintes liées aux systèmes distribués dans ce contexte. Ensuite, nous donnerons un aperçu de l’état de l’art concernant l’apprentissage distri-bué. Celui-ci est généralement limité à une exécution à l’intérieur même de datacen-ters dans lesquels les serveurs sont équipés de plusieurs processeurs puissants ou de cartes graphiques. Ce chapitre a pour but d’expliquer les contraintes liées à un en-vironnement distribué plus ouvert ainsi que les différentes méthodes pour paralléliser l’apprentissage. Nous verrons au cours de ce chapitre qu’il existe certaines méthodes actuellement capables d’effectuer un apprentissage profond sur ce genre de systèmes distribués à large échelle.

2.1 Collaboration pour l’apprentissage d’un réseau de

neurones profond

La motivation de nos travaux consiste en l’apprentissage d’un réseau de neurones profond à l’aide des ressources fournies par de nombreux participants. Dans cette "application", nous supposons un service permis par un réseau de neurones pro-fond, comme par exemple, un assistant vocal personnel tel que Alexa ou Siri. Afin de construire le modèle nécessaire à ce service, nous proposons aux futurs utilisa-teurs de participer à l’apprentissage de celui-ci. Pour cela, ils mettent à disposition leur(s) machine(s) ainsi que leurs données pour servir de base à l’apprentissage. Plus précisément, les données (par exemple, des requêtes vocales) sont stockées et mises à disposition sur ces machines. Ces dernières se chargent d’en extraire les

connais-sances via une étape d’apprentissage (c’est-à-dire, une descente de gradient comme expliqué dans la Section 1.2.2) et partagent ces connaissances entre elles à travers Internet.

L’avantage de ce type de collaboration est de tirer partie des machines participantes lorsqu’elles ne sont pas (ou peu) utilisées. De plus, il n’est plus nécessaire de fabriquer et de réunir une grande base de données dans un datacenter puisque le modèle utilise les données présentes sur ces machines. Enfin, l’utilisateur peut avoir l’assurance que ses données, utiles à l’apprentissage, restent sur sa machine. Une fois l’apprentissage fini, il peut profiter du service apporté par le réseau de neurones profond.

Ce type de travail collaboratif a été expérimenté notamment avec le projet SETI @home1, dans lequel les participants mettent à disposition leur ordinateur afin d’ana-lyser des petits bouts de séquences d’enregistrements réalisées par un radiotélescope à Puerto Rico. Le but de cette analyse était de trouver des fréquences prouvant l’exis-tence de signes de vie en dehors de la terre. Bien qu’aucune vie extra-terrestre n’ait été détéctée, le projet a permis de mettre en évidence les capacités d’un travail col-laboratif avec un grand nombre de participants. En effet, plus de 100 000 internautes actifs ont participé à ce projet. De nombreux autres projets similaires ont également vu le jour avec des buts différents. Plus récemment, en 2016, les ingénieurs de recherche de Google ont proposé une solution appelée Federated Learning2 afin de mettre en commun l’apprentissage d’un réseau de neurones profond effectué sur les machines de ses utilisateurs. Ils expérimentent actuellement cette méthode avec l’application GBoard sur Android afin de faire des propositions de requêtes automatiques. Nous présenterons cette méthode plus en détail à la fin de ce chapitre.

Les machines que nous considérons lors de la collaboration peuvent aussi bien être des téléphones mobiles, des tablettes connectées, des ordinateurs personnels ou bien même des gateways ou des set-top box. Il est évident qu’en terme de puissance, ces machines sont bien plus limitées que les ressources disponibles à l’intérieur d’un data-center. Par exemple, il n’est pas envisageable de supposer que chacune dispose d’une carte graphique. De plus, les données contenues sur ces machines correspondent aux données d’un seul utilisateur (ou d’une famille). La variété et la quantité de données sur une unique machine ne sont pas suffisantes pour l’apprentissage d’un modèle tel qu’un réseau de neurones profond. Il est donc nécessaire que l’apprentissage soit

par-1. Voir le site du projet : https://setiathome.berkeley.edu/

2. Voir l’article sur les applications du Federated Learning : https://ai.googleblog.com/ 2017/04/federated-learning-collaborative.html

tagé par de nombreuses machines d’utilisateurs. Cela permet de mettre en commun les connaissances tirées d’un plus grand nombre de données sans partager directe-ment ces données. Le réseau de neurones profond obtenu à la fin de l’apprentissage devrait donc être capable d’avoir une très bonne capacité de généralisation.

Nous allons voir dans la section suivante en quoi ce type de collaboration se rap-porte aux problématiques bien connues des systèmes distribués.