Réduire la consommation d’énergie
Mars 2016, Séoul – AlphaGo, le programme informatique d’apprentissage profond développé par Google DeepMind, bat Lee Sedol, considéré comme l’un des meilleurs joueurs professionnels mondiaux de go. Pour atteindre ce résultat, AlphaGo a eu recours à des techniques de calculs nécessitant d’alimenter en énergie plus de mille unités centrales de calculs (CPU) et plus de cent unités graphiques de calculs (GPU). Or, un ordinateur commun contenant quatre CPUs et un GPU consomme en moyenne 200 watts… cela donne une idée du nombre de watts nécessaires pour alimenter un programme comme AlphaGo ! En comparaison, le cerveau de Lee Sedol consommait quant à lui une puissance moyenne continue d’environ 20 watts.
Cet exemple illustre bien la quantité d’énergie nécessaire au fonctionnement des programmes informatiques. Le développement croissant de l’intelligence artificielle implique donc de trouver des solutions pour minimiser cette consommation énergétique, afin de limiter l’impact environnemental de ces nouvelles technologies.
Depuis environ un an, François Leduc-Primeau, professeur adjoint au Département de génie électrique de Polytechnique Montréal et professeur IVADO, dirige justement des travaux de recherche visant à développer un accélérateur de calcul capable de réduire significativement la consommation énergétique des systèmes informatiques utilisant des techniques d’apprentissage profond. Ce projet faisant appel à deux expertises clés complexes, les circuits numériques et les réseaux de neurones profonds, la collaboration entre spécialistes de ces différents domaines est cruciale.
L’intelligence artificielle attire de plus en plus l’attention et les préoccupations environnementales ne cessent de croître : dans ce contexte, c’est excitant de pouvoir travailler sur un projet qui associe deux grands enjeux du moment. »
À l’origine de ce projet, un parallèle inspiré du milieu des télécommunications, secteur dans lequel François a travaillé plusieurs années. Les systèmes de télécommunications utilisent en effet des codes de corrections d’erreurs permettant de garantir la bonne réception d’un message malgré tout le « bruit », autrement dit, toutes les perturbations qu’il pourrait rencontrer lors de son acheminement de l’émetteur vers le récepteur. Prenons un exemple imagé : nous sommes deux personnes dans un bar bruyant, tentant d’avoir une conversation. Le bruit ambiant m’empêche de comprendre distinctement chaque mot, mais je parviens à capter le sens de ce que dit mon interlocuteur. À la table derrière nous se trouvent deux ordinateurs tentant de dialoguer en langage binaire 0 – 1 : faute d’intuition, il leur est difficile de déterminer si « 0110100001101001 » est un mot valide ou non. Pour pallier au bruit ambiant et faciliter l’échange entre ces deux machines, il serait possible d’intégrer à leurs programmes des codes de correction d’erreurs, une sorte de dictionnaire contenant un langage redondant, où certaines séquences de symboles seraient autorisées et d’autres non. Grâce à ce langage, nos deux ordinateurs pourront mieux se comprendre, de la même façon que nous parvenons à saisir le sens d’une phrase à partir de quelques mots.
Le même phénomène se retrouve dans les circuits de calculs, qui se composent physiquement de modules, de transistors, etc. Aucun de ces éléments n’est jamais totalement exempt de défauts de fabrication, qui peuvent être comparés au bruit que l’on retrouve dans les systèmes de télécommunications. Actuellement, il est donc courant d’intégrer plusieurs couches de protection pour prévenir toute erreur de calcul dans la série de circuits. Mais cette garantie a un coût énergétique élevé.
Cependant, il est possible de diminuer ces couches de protection et donc l’énergie qu’elles consomment en ajoutant de la redondance (donc des codes de correction d’erreurs) dans les calculs. En pratique, cela revient à autoriser plus de souplesse dans les calculs intermédiaires quitte à ce qu’ils comportent des erreurs, sans compromettre la fiabilité du résultat final, qui est quant à lui encadré par des critères de qualité. Compte tenu que les algorithmes par réseaux de neurones profonds apprennent à réaliser une tâche à partir de nombreux exemples, il s’agit en effet d’exploiter ce mécanisme pour également apprendre au réseau à tolérer les erreurs dans les calculs intermédiaires, de façon à arriver au même résultat final mais en économisant de l’énergie en marges de sécurité.
Il existe un autre levier permettant de réduire la consommation énergétique des systèmes : construire des circuits spécialisés tels que les Tensor Processing Units (TPU), plutôt que des circuits génériques tel qu’un processeur d’ordinateur capable d’effectuer tout type de calcul mais requérant plus de temps et d’énergie pour cela car n’étant spécialisé en rien. Bien que les circuits spécialisés soient plus longs à construire et moins flexibles, leur durée de vie est élevée et l’énergie déployée pour les construire est négligeable par rapport à l’énergie requise pour les faire fonctionner.
Ces deux facteurs (redondance et spécialisation) représentent donc une opportunité de mieux construire les systèmes afin de fournir aux ingénieurs un matériel à consommation énergétique réduite, dont les modifications appliquées dans les calculs seront transparentes à l’usage. En effet, il est nécessaire que ces nouveaux types de systèmes puissent s’intégrer facilement à l’écosystème industriel existant pour favoriser leur déploiement. Les possibilités d’application dans l’industrie sont d’ailleurs vastes ! En voici quelques-unes ;
- La réduction des dimensions des batteries et objets électroniques.
- La possibilité de développer de très petits dispositifs, qui pourraient permettre des applications innovantes dans le domaine de la santé notamment.
- La conception de systèmes portatifs à faible consommation énergétique qui, grâce aux algorithmes, seraient capables de percevoir l’environnement physique et de fournir de l’information rapidement à son sujet (par exemple, des indications directionnelles).
- La construction de récepteurs de télécommunications plus intelligents et autonomes.