Un point qu’il ne faut pas négliger ici, c’est que le GUGPU reste toujours optimisé aussi pour l’amélioration des performances dans les jeux. Quand on se rappelle que le GPU a, dès l’origine, des performances spécialisées dans le traitement matriciel, cela n’a rien d’étonnant. Dans les jeux d’avant le début des années 1990, la notion même d’image 3D était presque inexistante et, quand elle existait, il s’agissait le plus souvent d’afficher en continu une projection 2D selon une direction donnée. En pratique, on peut presque parler de 2D only. Dans les opérations d’algèbre linéaire sur les matrices, les matrices à deux dimensions relèvent en réalité de calculs relativement simples. Mais le vrai problème, ce sont les opérations sur des matrices en trois dimensions. Le monde dans lequel nous vivons est en trois dimensions, et tous les phénomènes physiques que nous voyons, entendons et ressentons se déroulent dans un espace à 3 dimensions + 1 dimension temporelle. À chaque seconde, les événements dans cet espace 3D changent en permanence, mais nos yeux doivent percevoir ces informations en les forçant à se mapper en 2D. C’est précisément pour cette raison que le cerveau humain mobilise énormément de ressources pour traiter l’information visuelle. On peut dire la même chose du calcul. Imaginons le travail consistant à afficher sur un écran, donc dans un espace 2D perceptible par nous, l’image d’un objet en trois dimensions. Il faut par exemple afficher sur un moniteur 2D l’image d’une figurine composée de polygones 3D vue sous un certain angle. Cela nécessite des opérations de transformation matricielle (matrix transformation). Il faut effectuer des rotations, du stretching, le traitement des points de fuite, etc. Et si l’on veut aller un peu plus loin, il faut aussi faire du ray tracing. Autrement dit, il faut également prendre en compte les effets de lumière et d’ombre, ce qui demande encore davantage de calculs. En effet, des calculs d’optique géométrique doivent être appliqués à chaque point constitutif de tous les polygones. Or ces calculs gigantesques ne doivent pas être effectués une fois par seconde, mais au moins 30 à 60 fois par seconde pour que l’œil humain perçoive le phénomène comme naturel et en temps réel. Cela a dû être une véritable tâche cauchemardesque pour les informaticiens. Si, au début des années 1990, on avait essayé de faire cela avec un CPU, on aurait sans doute à peine pu afficher une image par minute. Pour des joueurs peu patients, cela se traduit par un lag insupportable. Mais comme le GPU peut traiter en parallèle ces calculs répétitifs sur une base matricielle, le CPU n’a plus à porter seul cette charge. Le GPU prend en charge la plupart des opérations de transformation matricielle et des calculs d’optique géométrique liés au ray tracing, tandis que le CPU ne s’occupe plus que des traitements en aval. Du point de vue des joueurs, ces calculs donnent donc désormais l’impression d’être « accélérés ». C’est d’ailleurs de là que vient aussi le nom d’accélérateur.<br />
<br />
Ainsi, dès lors que les données peuvent être représentées sur une base matricielle — qu’il s’agisse d’images 3D haute résolution pour le jeu, de données médicales 3D en voxels ou de données de tenseurs multi-features pour l’entraînement en deep learning — il n’est pas exagéré de dire que l’âge d’or du GUGPU a clairement atteint son pic. Mais le problème, c’est que les avantages du GUGPU sont aussi en même temps ses inconvénients. Pour améliorer la vitesse du traitement parallèle, il faut soit augmenter encore le nombre de cœurs, soit accélérer les vitesses d’I/O d’information entre les cœurs. Pour cela, on peut intégrer la mémoire à chaque cœur ou augmenter davantage la bande passante (bandwidth). Mais il y a un prix immuable à payer : la consommation électrique augmente d’autant. Outre l’électricité consommée par les cœurs eux-mêmes, l’énergie nécessaire au refroidissement augmente aussi, puisque l’énergie consommée par les cœurs se transforme en chaleur. De plus, les cycles répétés de chauffe et de refroidissement affectent aussi la durée de vie des puces. Le GPU est lui aussi une puce semi-conductrice à base de silicium ; au final, l’usage concentré d’électricité et les calculs intensifs réduisent la durée de vie des matériaux et des composants qui constituent ses cœurs. Des mechanical failure, thermal failure et electrical failure peuvent survenir. Ce n’est pas pour rien qu’on entend dire que les GUGPU utilisés dans les fermes de minage blockchain exploitées presque à la chaîne ne tiennent même pas six mois, et même les GPU haute performance utilisés dans les PC bangs ont généralement une durée de vie d’environ deux ans, voire trois à quatre ans au mieux. Bien sûr, l’arrivée de la génération suivante de GPU rend souvent ce problème de durée de vie moins visible, mais il n’en reste pas moins qu’une durée de vie plus courte que celle d’un CPU est un inconvénient qu’il faut accepter.<br />
<br />
Malgré cela, l’ère de l’IA ne fait que commencer à croître et à éclore, et il n’existe aucun moyen de supporter cette masse de calculs sans utiliser des accélérateurs comme les GPU. Mais s’en remettre uniquement aux GPU pose aussi problème : la quantité d’électricité qu’ils consomment pour l’entraînement tend à grimper en flèche. Une alternative est donc naturellement nécessaire, et parmi les solutions apparues entre la fin des années 2010 et le passage aux années 2020 figurent les FPGA et les NPU. En 2019, AMD, qui formait avec Intel le duo dominant des fabricants de CPU, a brusquement acquis Xilinx, numéro un mondial des FPGA. Pour l’industrie, c’était un mouvement attendu, d’autant plus que son rival Intel avait déjà racheté en 2015 Altera, numéro deux du marché des FPGA, pour 16,7 milliards de dollars. Pourquoi les grands groupes historiques du CPU ont-ils rivalisé pour acquérir des FPGA, qui sont d’une tout autre nature que les CPU ? Un FPGA est, littéralement, une puce de calcul que l’utilisateur peut reprogrammer selon ses besoins du moment. Dire qu’elle peut être reprogrammée par l’utilisateur signifie qu’on ne laisse à la puce que le minimum de fonctions nécessaires à son fonctionnement, tandis que l’agencement et la conception du reste des unités peuvent être modifiés par l’utilisateur. Dans ce cas, il est naturel que ces puces coûtent plus cher que des semi-conducteurs produits dans des procédés standardisés comme les CPU ou la DRAM. Il faut en effet leur laisser un plus grand degré de liberté. Avant l’ère du deep learning, pour cette raison, les puces à base de FPGA étaient principalement utilisées à des fins spécifiques — comme les centrales nucléaires ou les sondes spatiales — et presque jamais comme solution généraliste.<br />
<br />
Mais avec l’entrée véritable dans l’ère du deep learning, le marché qui semblait voué à être dominé sans partage par les GPU a commencé à se diversifier de plus en plus. Et cette tendance n’a pas été forcément favorable aux GPU. Par exemple, si le deep learning n’avait été qu’un ensemble d’opérations répétant simplement des calculs de convolution, cela n’aurait pas posé de problème. Mais à mesure que les domaines d’application du deep learning se sont élargis, l’échelle et les caractéristiques des données que les moteurs de deep learning doivent apprendre se sont elles aussi diversifiées. Se limiter à reconnaître des chiffres dans des images ou à distinguer des chiens et des chats restreint trop le champ des applications ; le marché s’est donc ouvert à des usages et à des spécifications variés : traitement du langage naturel, détection d’erreurs dans des données de procédés chimiques complexes comportant plus de 1 000 features, conception de réseaux de capteurs IoT, inférence et simulation d’écoulements complexes dans des milieux poreux que la CFD ne peut pas couvrir, ou encore création en temps réel de moteurs de conduite autonome. Pour ceux qui veulent appliquer le deep learning à l’industrie, cette diversification du marché est une bonne nouvelle. Mais pour ceux qui comptaient couvrir tous ces besoins avec des GPU généralistes, cela devient une source de réflexion. En effet, selon les applications, l’importance relative de la classification, de l’inférence, de la prédiction ou de la détection diffère, et il devient de plus en plus difficile de continuer à s’appuyer sur une architecture de calcul uniformisée, optimisée pour des algorithmes de réseaux de neurones trop génériques. Au début de l’essor du deep learning, le matériel disponible se limitait presque aux seuls GUGPU ; les développeurs d’algorithmes n’avaient donc d’autre choix que de bâtir leurs solutions à partir des spécifications des GUGPU existants. Mais avec la croissance exponentielle du volume et de la variété des données traitées par le deep learning, ce sont désormais de plus en plus souvent les algorithmes de deep learning qui influencent la conception de l’architecture des GPU. Le fait, par exemple, de fixer la précision de chaque cœur de GPU au FP16, ou de concevoir des cœurs tolérant des variations de précision (multi-précision), relève précisément de cette tendance. Mais même cette conception de GPU pilotée par le deep learning a des limites évidentes. Une fois fabriqué, un GPU reste lui aussi presque impossible à modifier structurellement et ne laisse pratiquement aucune marge de reprogramming. On peut toujours se raser avec une hache si l’on insiste, mais il est naturel de regretter un rasoir bien adapté à la main.<br />
<br />
À l’inverse, le marché admet de plus en plus que les FPGA pourraient être mieux adaptés à cet objectif. Comme évoqué plus haut, les FPGA sont livrés aux clients alors même que la conception logique n’est pas entièrement finalisée. En contrepartie, ils fournissent une sorte de SDK que les clients peuvent programmer selon leurs propres besoins. Autrement dit, les clients peuvent, par exemple, créer une puce de deep learning dédiée à la simulation en mécanique des fluides ; et même si une erreur de conception initiale empêche un fonctionnement correct, la reprogrammation reste possible, ce qui permet de faire autant de corrections que nécessaire et donc de réduire les pertes de coûts lors de la phase de test initiale. Certes, on ne peut pas les comparer aux performances de traitement parallèle au niveau matériel obtenues avec les GPU, mais les FPGA peuvent eux aussi exécuter du traitement parallèle, là encore en raison de leurs caractéristiques propres. Sur FPGA, il est possible d’implémenter le traitement parallèle au niveau logiciel, avec une conception algorithmique où un seul cœur reçoit plusieurs instructions (multiple instruction) pour produire plusieurs sorties. Cette approche est appelée Multiple instruction multiple data (MIMD). À l’inverse, dans les cœurs individuels des GPU, le flux de données est dès l’origine structuré en single instruction multiple data (SIMD) afin d’optimiser le traitement parallèle de tâches répétitives. Si l’ensemble d’instructions est bien construit et que le format des données est bien normalisé, alors les GPU peuvent offrir au niveau matériel un parallélisme presque divin ; mais dès que le format des données change ou qu’apparaissent des calculs difficiles à couvrir avec l’ensemble d’instructions fourni, ils ne peuvent que perdre en fluidité. À l’inverse, si les FPGA sont moins à l’aise pour le traitement parallèle au niveau matériel, leur principal atout est leur flexibilité. Même si le format des données (width) varie, il n’est pas nécessaire de se plier à un ensemble d’instructions prédéfini, puisqu’il est possible d’exploiter un multiple instruction set. Cette flexibilité signifie que, dans l’ère actuelle du deep learning, où les jeux de données se diversifient et où les applications terminales sont de plus en plus valorisées, le potentiel commercial des FPGA devrait croître.<br />
<br />
De plus, les FPGA, qui n’ont pas besoin à l’origine de faire tourner simultanément des milliers de cœurs — même si cela se fait au prix de performances un peu inférieures — affichent une consommation électrique très, très faible par rapport aux GPU (voir tableau 1 en annexe). En outre, à mesure que les algorithmes de deep learning du marché s’améliorent, il est aussi possible d’ajuster leur mode de consommation énergétique, ce qui permet d’optimiser l’efficacité énergétique à tout moment. Il suffit en effet de couper les commutateurs inutiles et de n’activer que ceux qui sont nécessaires. C’est notamment pour cette raison qu’avant la véritable montée en puissance de l’ère du deep learning, Intel et AMD, qui n’avaient pas particulièrement tiré profit des GPU, se sont empressés d’acquérir à prix d’or les numéros 1 et 2 du secteur des FPGA. Bien sûr, Nvidia, déjà leader historique des GPU, n’est pas resté inactif. Car malgré tous leurs avantages, les FPGA ont encore un point faible critique en deep learning face aux GPU : leur vitesse d’entraînement est plus lente. C’est un défaut difficile à éviter, puisque leur structure n’est pas conçue à l’origine pour augmenter massivement le nombre de cœurs disponibles au niveau matériel de manière built-in. Intel et AMD ont donc conçu une stratégie visant à reprendre, grâce aux FPGA, une part du marché des accélérateurs IA jusque-là dominé par les GPU. Intel a lancé Agilex et la PAC (programmable acceleration card), tandis qu’AMD (Xilinx) a également joué sa carte en lançant la carte accélératrice Alveo. Xilinx s’est notamment orienté vers des produits comme Versal, qui intègre directement de la HBM (high-bandwidth memory) au FPGA ; une approche rendue possible par la maturité atteinte par les technologies de patterning ultrafin des semi-conducteurs sous les 10 nm (Versal étant fabriqué en procédé 7 nm). Depuis le rachat d’Altera par Intel, les revenus d’Intel dans les accélérateurs FPGA n’ont pas affiché de forte croissance, alors que ceux de Xilinx progressent régulièrement et fortement ; cela montre aussi que l’architecture FPGA + HBM de Xilinx comble peu à peu l’écart de performances des accélérateurs de deep learning. Xilinx va plus loin encore en étendant son développement autour du processeur xDNN optimisé pour les deep neural networks, afin de viser le marché des accélérateurs de deep learning flexibles.<br />
<br />
En réalité, dans le processus d’apprentissage du deep learning, un élément presque aussi important que le calcul matriciel est l’intégration des résultats d’apprentissage de grands volumes de données ; pour cela, lorsqu’une longue file de données doit être traitée, il faut réduire le temps d’attente. Autrement dit, la réduction de la latence des données devient de plus en plus importante, tant du point de vue de la consommation énergétique que de la vitesse d’apprentissage. La carte jouée par Nvidia face au camp des FPGA est justement InfiniBand, une technologie qui réduit cette latence des données. C’est dans cette optique que Nvidia, après avoir remporté la bataille face à Intel et AMD, a acquis en 2019 Mellanox, acteur mondial majeur des cartes réseau (NIC) et d’InfiniBand, pour 6,9 milliards de dollars, afin de sécuriser sa technologie d’optimisation NPU. Au-delà du GPU, la technologie avec laquelle Nvidia vise le deep learning et, plus largement, l’ensemble du marché des accélérateurs IA, est le SoC Xavier, un accélérateur de deep learning polyvalent, qui se positionne notamment comme produit phare sur le marché des véhicules autonomes, où la demande en accélérateurs IA explose. CUDA de Nvidia fournit lui aussi cuDNN, spécialisé pour le deep learning ; comme il implémente à l’avance presque toutes les unités requises par la quasi-totalité des deep neural networks, quel que soit le jeu de données ou sa taille, on peut considérer que Nvidia a déjà sécurisé une tête de pont vers le marché des NPU (Neural processing unit). Les NPU, en particulier, sont des puces dans lesquelles un DNN est implémenté à l’avance au niveau matériel pour un jeu de données donné — autrement dit, des puces où chaque couche du réseau de deep learning est mappée en correspondance 1:1 avec une unité logique sur silicium. On peut donc les voir comme une implémentation directe des neurones au niveau matériel. Compte tenu de cette caractéristique, qui les rend particulièrement adaptés à l’intégration dans les AP mobiles, il est probable qu’ils conserveront aussi une forte influence sur le marché des AP, appelé à croître fortement à l’avenir. Un NPU peut être vu comme une puce dont les fonctions sont figées à un niveau permettant d’effectuer l’« inférence » non pas sur GPU, mais sur l’équipement terminal lui-même, par exemple un smartphone. Puisqu’il est impossible d’intégrer dans un smartphone un GPU devenu aussi volumineux qu’un gros livre, l’idée est de concevoir un NPU où la structure déjà entraînée est intégrée au maximum de manière built-in. Si les serveurs GPU prennent en charge l’entraînement du modèle, tandis que le NPU se limite à inférer les caractéristiques à partir des données d’entrée sur la base du modèle entraîné, il n’est alors plus nécessaire de consommer autant d’énergie ni d’augmenter la taille de la puce ; celle-ci peut donc être co-intégrée de façon sur mesure dans des smartphones ou des semi-conducteurs automobiles. On peut aussi y voir une stratégie qui contourne la flexibilité recherchée par les FPGA. C’est précisément ce marché des NPU que Nvidia cible avec sa gamme Jetson, technologie postérieure à Xavier, tout en en réduisant encore le prix.<br />
<br />
Le concurrent sur le marché des NPU sera probablement Google, qui a annoncé Coral, une série de TPU (tensor processing unit) conçus en interne, et tente de jouer la carte du coût de revient en la proposant à un prix inférieur à un cinquième de celui de Jetson de Nvidia. Bien sûr, performances et prix sont proportionnels, et les performances de Coral seraient d’environ un cinquième à un tiers de celles de Xavier ou de Jetson. Il est toutefois prévu que les TPU que Google lancera ensuite soient utilisés dans des domaines un peu plus larges, sur la base des retours du marché ; on peut supposer que cela repose sur la compétitivité que Google imagine dans la vitesse de mise à jour des modèles entraînés via des serveurs cloud GPU. Les acteurs traditionnels des AP mobiles comme Samsung ou Qualcomm adoptent eux aussi une stratégie consistant à y intégrer des NPU, car les limites du patterning ultrafin réduisent de plus en plus les possibilités d’amélioration des performances intrinsèques des puces AP. Qualcomm a commencé à intégrer des NPU à partir de sa série Snapdragon 845, tandis que Samsung a commencé à en intégrer à partir de sa série Exynos 9. Les entreprises qui cherchent à intégrer ou à faire coexister des NPU vont naturellement accumuler des données issues des puces mobiles et élargir progressivement leur champ d’application ; le prochain marché s’étendra probablement de plus en plus vers les semi-conducteurs automobiles (puces pour véhicules autonomes ou électronique embarquée), les puces de traitement de signal pour l’IoT, ou encore les puces radar complexes à usage militaire.<br />
<br />
Mais, ironiquement, la concurrence entre les FPGA et le marché des NPU/TPU/cuDNN dépend non pas du matériel, mais du logiciel, et en particulier de l’évolution des algorithmes de deep learning. Aujourd’hui encore, le domaine des algorithmes de deep learning voit apparaître presque chaque jour de nouvelles méthodologies, de nouvelles théories et de nouveaux modèles, et il devient de plus en plus difficile de faire accepter un article dans les quatre grandes conférences sur l’intelligence artificielle. Cependant, comme dans d’autres domaines technologiques, si le deep learning entre progressivement dans une phase de maturité et que le rythme d’innovation algorithmique commence à ralentir, l’avantage propre aux FPGA en matière de flexibility s’estompera lui aussi peu à peu. En effet, la possibilité de reprogramming pour s’adapter à des algorithmes plus rapides et plus efficaces cesse d’être un avantage déterminant si le cycle de remplacement des algorithmes devient plus lent. Par exemple, pour une fonction comme la reconnaissance d’image, les algorithmes peuvent désormais être considérés comme ayant atteint un état de saturation, au point qu’il reste très peu de marge d’amélioration (ils dépassent depuis longtemps les performances humaines, et la plupart des algorithmes atteignent maintenant plus de 95 % de précision en reconnaissance d’image). À terme, continuer à faire évoluer des DNN généralistes pour réduire l’écart entre le matériel et les algorithmes les plus récents pourrait au contraire devenir une stratégie plus avantageuse.<br />
Le marché des accélérateurs de deep learning continuera de croître à l’avenir, et la demande restera probablement orientée à la hausse même après 2030, mais il est encore trop tôt pour dire quel mode de domination s’imposera. Personne ne peut prévoir quand la maturité des algorithmes de deep learning arrivera, mais elle finira inévitablement par venir, et il est difficile de prédire quelle technologie sera alors la mieux optimisée. Les FPGA aussi ont encore une grande marge d’innovation. L’étude de conception de puces basée sur le reinforcement learning publiée par Google en juin dernier dans Nature* (https://www.nature.com/articles/s41586-021-03544-w) en est un bon exemple. Concevoir, sur une surface de die restreinte, l’agencement de plusieurs millions voire dizaines de millions d’unités, tout en minimisant la latence des entrées et sorties de données entre elles et en réduisant la consommation d’énergie, a toujours été l’un des aspects les plus difficiles de la conception de puces semi-conductrices. Les entreprises fabless ont jusqu’ici réalisé cette optimisation en s’appuyant sur leur savoir-faire accumulé, mais les résultats publiés par Google ont été suffisamment frappants pour reléguer ce savoir-faire au second plan tant l’amélioration obtenue était importante. C’est un peu comme optimiser l’aménagement d’un appartement complexe en y plaçant toutes sortes de meubles et d’appareils électroménagers, tout en définissant les trajets les plus efficaces pour minimiser à la fois les déplacements du corps et l’effort requis. Google a ainsi réussi une optimisation de conception sur un espace d’états de placement d’unités (~10^2500), bien plus vaste que l’espace d’états du go (~10^360), en reprenant de manière beaucoup plus avancée l’approche d’AlphaGo. Une telle méthode de conception peut naturellement être appliquée directement à l’optimisation des FPGA, car optimiser des performances données en tenant compte du degree of freedom d’un jeu d’instructions relève du même type de problème.<br />
<br />
Peut-il aussi émerger des technologies totalement différentes des approches actuellement utilisées par Nvidia, Google, Intel, AMD ou Qualcomm ? Bien sûr, c’est possible. Le terme même de réseau neuronal suggère désormais non plus seulement une imitation simplifiée du réseau neuronal du cerveau humain, mais la possibilité d’une technologie consistant à le copy & phaste pour le relier directement à une puce semi-conductrice. C’est précisément l’exemple du perspective récemment publié par des scientifiques coréens de Samsung et de Harvard* (**https://www.nature.com/articles/s41928-021-00646-1...). La technologie alternative envisagée dans cet article est la puce neuromorphique (neuromorphic chip). Si ce concept, déjà bien connu, attire à nouveau l’attention, c’est parce qu’il montre à un niveau technologique concret qu’il serait possible de copier (copy) directement les signaux électriques échangés dans le réseau neuronal du cerveau humain via des nanoélectrodes, puis de les transférer (phaste) dans la mémoire connectée en dessous. Cela signifie que toutes les fonctions du cerveau, abstraction faite de son tissu organique mou, pourraient être transposées telles quelles sur une puce semi-conductrice. Les technologies de mémoire nécessaires à la réalisation de puces neuromorphiques existent déjà ou sont déjà utilisées en pratique, sous des formes telles que SRAM, RRAM, MRAM ou memristor ; l’enjeu est donc surtout de savoir comment transférer en temps réel vers la mémoire, avec un minimum de latence, les signaux générés par des milliers de milliards de neurones. En ce sens, une connexion de type copy & phaste ne semble plus relever aujourd’hui de l’impossible sur le plan technologique. <br />
<br />
À l’avenir, le marché des semi-conducteurs porté par les accélérateurs de deep learning continuera de croître de manière diverse et encore plus puissante. La taille du marché, ainsi que la technologie dominante, dépendront de la capacité du traitement de données fondé sur le deep learning à pénétrer des marchés toujours plus variés et à traiter des données non structurées toujours plus massives ; ce à quoi il faudra prêter attention, ce sera non seulement l’évolution des technologies clés actuelles, mais aussi l’émergence de nouvelles technologies susceptibles de les remplacer par des voies totalement différentes. Outre le neuromorphique, des neural networks fondés sur la photonique sont possibles ; cela signifie que la latence elle-même pourrait être ramenée à la vitesse de la lumière, ce qui laisse entrevoir l’arrivée de NPU encore plus puissants. La spintronique pourrait, elle, accroître davantage les performances en traitement parallèle, tandis que des algorithmes de deep learning dédiés aux ordinateurs quantiques, comme TFQ présenté par Google, pourraient redéfinir l’« inférence » sous une forme totalement différente de tout ce qui a existé jusqu’à présent. Le marché des semi-conducteurs de demain tirera lui aussi son principal momentum des accélérateurs IA pilotés par le deep learning et des innovations algorithmiques à leur mesure ; et alors qu’un grand nombre de nouveaux acteurs fabless dotés d’architectures variées continueront d’émerger, la capacité à distinguer les technologies réellement prometteuses et à sécuriser des procédés de fabrication capables d’en fixer les limites concrètes déterminera en fin de compte la domination sur les marchés à venir.<br />
<br />
- Il s’agit d’un post Facebook du professeur Kwon Seok-jun de l’université Sungkyunkwan, que je reprends ici parce qu’il explique de façon intéressante l’évolution des CPU/GPU jusqu’à aujourd’hui.</p>
1 commentaires