Rapidité vs précision : deux experts nous expliquent les enjeux des GPU modernes sur les IA
À trop flotter, on prend le risque de couler
Afin d’augmenter les performances de calculs de ses GPU (les fameux TFLOPS), NVIDIA ajoute des niveaux de précision supplémentaires : 8 bits avec Hopper, 6 et 4 bits avec Blackwell. Que cela implique-t-il ? Qu’en pensent les scientifiques ? Réponses croisées de Léo Hunout (IDRIS) et Stéphane Requena (GENCI).
Le 15 avril à 08h25
9 min
Hardware
Hardware
Lors de l’annonce de son nouveau GPU Blackwell (B200) qui a la lourde tâche de remplacer Hopper (H100), NVIDIA mettait en avant une débauche de TFLOPS : jusqu’à pas moins de 20 000, contre 4 000 pour la génération précédente. Comme nous l’avions détaillé, deux points sont à prendre en compte, au-delà des chiffres.
Hopper ajoute FP8, Blackwell FP6 et FP4
Tout d’abord, Blackwell est un assemblage de deux GPU sur une seule et même puce, ce qui n’était pas le cas avec Hopper. Cela permet de doubler les performances à moindre coût. Ensuite, les TFLOPS sont avec une précision réduite en FP4.
Si on met en face Blackwell et Hopper sur une base comparable (un seul GPU, en FP8), on passe de 3 958 à 5 000 TFLOPS avec le saut de génération. Le FP8 a pour rappel été introduit par NVIDIA avec Hopper, et avec le succès que l’on connait du GPU pour l’entrainement et l’inférence des IA génératives (nous y reviendrons).
Mais Blackwell intègre deux GPU : les performances sont donc doublées, rien à redire sur ce point. Reste la question de la précision FP4 lancée par NVIDIA. Est-ce que cela correspond à une réalité sur le terrain des intelligences artificielles ? La baisse constante de la précision (FP32, FP16, Bfloat16, FP8…) permet-elle d’augmenter significativement les performances ?
Nous avons posé ces questions à deux spécialistes du domaine : Léo Hunout, ingénieur spécialiste en intelligence Artificielle à l'IDRIS (CNRS), ainsi que Stéphane Requena, directeur innovation et technologie au Grand équipement national de calcul intensif (GENCI).
Le FP8 et FP4 sont « très intéressants » pour l’intelligence artificielle
On commence par un retour avec le passage à FP8 (en plus de FP16) lancé avec Hopper. NVIDIA, Intel et Arm ont par la suite (septembre 2022) publié un article commun afin de normaliser FP8 « comme format d’échange pour l’IA ».
Léo Hunout de l'IDRIS (CNRS), nous explique que « le FP16 (avec la précision mixte, FP16 et FP32 suivant les opérations mathématiques du modèle) a été un grand changement. Le FP8 et inférieur n'est que la suite de ce mouvement ».
Pour Stéphane Requena, le FP8 et maintenant le FP4 sont une avancée « très intéressante à la fois pour l'entrainement de modèles (on mixe à la fois du BF16 et du FP8) mais surtout dans la partie quantization de modèles pour réduire fortement l'empreinte mémoire des modèles appris en vue d'en faire une inférence sur CPU ou GPU ».
Si quantization, inférence et entrainement ne vous parlent pas plus que cela, on a récemment fait le point sur ces termes, et d’autres plus ou moins barbares. Si ce n’est pas encore fait, on ne peut que vous conseiller de lire notre dossier sur les nombres (flottants) en informatique, vous en aurez besoin.
- Neurone, inférence, entraînement, hallucination… de quoi on parle ?
- Les nombres en informatique : entiers, virgule flottante, simple et double précision (FP32/64), Tensor Float (TF32)…
« Plus la précision est faible, plus on peut mettre de choses sur le GPU »
Nous avons ensuite demandé aux chercheurs ce qu’il en était de l’importance de la précision dans l’entrainement et l’inférence des intelligences artificielles. Pour Léo Hunout, « l'apprentissage en précision faible peut être impossible, cela produit des instabilités numériques ». Le Bfloat16 « est une réponse à ce problème ».
Pour rappel, ce format à virgule flottante sur 16 bits a 8 bits d’exposant comme la simple précision, mais 7 bits de mantisse seulement, soit un peu moins que la demi-précision. La précision est donc moindre qu’avec les FP16, mais la plage dynamique équivalente à celle des FP32 (ou float32).
Google explique que le « bfloat16 est un format personnalisé à virgule flottante 16 bits pour le machine learning ». En effet, « la plage dynamique de Bfloat16 et de float32 est équivalente. Cependant, bfloat16 occupe la moitié de l'espace mémoire ».
C’était pour l’apprentissage, qu’en est-il de l’inférence ? Ce n’est pas la même chose et la baisse de la précision est encore plus intéressante : « Pour l'inférence, plus la précision est faible, plus on peut mettre de choses sur le GPU : un modèle plus grand et plus de données. Le GPU calculant plus vite avec ces précisions faibles, le temps de traitement est réduit. Au final, la rentabilité du matériel est bien meilleure ».
Stéphane Requena ajoute que « le marché le plus important de l'IA est bien sûr celui de l'inférence, NVIDIA comme AMD se positionnent dessus en proposant le même type d'opérateurs que ceux disponibles sur CPU et en poussant des gammes de GPU polyvalents », c’est-à-dire capables de s’adapter.
FP8, FP6, FP4… peut-on descendre encore ?
Nous posons ensuite la question des performances annoncées par NVIDIA grâce à la seconde génération des Transformer Engine prenants en charge FP6 et FP4 : « Le bond annoncé par NVIDIA sur la puissance de calcul est généralement vrai. Pour ce qui est du gain appliqué à l'IA, il y a encore du travail, mais de nombreux laboratoires travaillent pour réussir à faire converger les modèles avec des précisions très faibles », nous explique Léo Hunout.
Alors qu'on pose la question de la limite à laquelle on peut descendre en précision, le spécialiste en IA nous répond – en bon scientifique – que « les limites ne sont connues qu'une fois dépassées ». « En réalité, on finira par atteindre le plancher de la représentation de l'information, c'est le Graal de ceux qui font de la compression sans perte et, finalement, c'est ce que fait un LLM dans une certaine mesure ».
Il nous cite en exemple le récent papier de chercheurs de Microsoft avec… 1 seul bit. Les scientifiques présentent en effet « une variante LLM 1 bit, à savoir BitNet b1.58, dans laquelle chaque paramètre (ou poids) du LLM est ternaire {- 1, 0, 1} », mais c’est une autre histoire.
Pour Stéphane Requena, « aller vers des précisions numériques plus faibles permet de gagner beaucoup de temps de simulation, mais aussi en mémoire (on divise par deux à chaque fois l'empreinte). Ça permet de passer sur des GPU plus petits et plus frugaux. Par exemple, quand on veut faire tourner un LLM sur un iPhone, il faut que le modèle soit à la fois efficace et surtout frugal ».
Il ajoute que descendre en précision (passer du BF16/FP8 à FP8/FP4, par exemple) pour l'entrainement « requiert de bien valider la sensibilité numérique » et qu’il y a un risque. Il faut donc être prudent, mais le gain peut valoir le coup. « Il y a quelques équipes qui ont commencé », nous précise-t-il.
Les besoins en précision dépendent des IA
Nous cherchons ensuite à savoir si toutes les intelligences artificielles s'accommodent bien d’une faible précision, ou au contraire si cela dépend des modèles. « Les IA pour la physique et les sciences nécessitent des précisions plus élevées », avec 32 voire 64 bits, explique Léo Hunout.
Concernant l'inférence, la baisse de la précision ne demande « pas forcément d'effort important sur les modèles déjà existants, mais il faut garder à l'esprit que l'on perd en performances de réponse (le modèle répond moins bien) ».
Nous demandons si la baisse de la précision était une demande des développeurs d’IA (par exemple passer au FP4) : « Non, dans la réalité les développeurs souhaitent pouvoir conserver au maximum possible la précision numérique des calculs, mais si on propose d'aller plus vite en baissant celle-ci sans dégrader le reste, c'est bon à prendre », reconnait Léo Hunout.
Le HPC doit s’adapter « pour continuer à bénéficier des boosts »
Tout cela va dans le sens des intelligences artificielles, mais qu’en est-il du reste du monde, et notamment du calcul haute performance ?
Stéphane Requena nous explique les besoins en HPC, différents de ceux de l’IA : « dans le domaine HPC, nous avons surtout des applications en 64 bits et quelques fois en 32 bits. C'est un enjeu majeur pour nous d'aller plus vers de la précision mixte 64/32/16 bits pour continuer à bénéficier des boosts proposés par les GPU modernes qui sont maintenant très orientés sur le marché de l'IA ».
Une problématique également remontée dans les commentaires par plusieurs lecteurs, notamment SwAY256 et Nozalys, lors de l’annonce de Blackwell : « C'est dommage que Nvidia ne prenne même plus la peine de montrer les performances en F32/64 hors Tensor Core. Alors d'accord ça va faire moins rêver et de plus l'IA est devenue le principal moteur de vente sur ces puces, mais nous autres clients qui utilisons leur GPU pour du compute depuis presque 15 ans, nous nous sentons un peu trahis », regrette le premier.
« L'ennui, c'est que le V100, le dernier GPU vraiment taillé pour le FP64 n'est plus produit, et il date de 2017. On se retrouve sacrément dans le flou quand on veut mettre à jour ses serveurs de calcul (typiquement pour du split-step), et qu'on doit comparer torchons et serviettes sans avoir de données claires », ajoute le second.
Rapidité vs précision : deux experts nous expliquent les enjeux des GPU modernes sur les IA
-
Hopper ajoute FP8, Blackwell FP6 et FP4
-
Le FP8 et FP4 sont « très intéressants » pour l’intelligence artificielle
-
« Plus la précision est faible, plus on peut mettre de choses sur le GPU »
-
FP8, FP6, FP4… peut-on descendre encore ?
-
Les besoins en précision dépendent des IA
-
Le HPC doit s’adapter « pour continuer à bénéficier des boosts »
Commentaires (8)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 15/04/2024 à 10h39
Le 15/04/2024 à 10h54
Modifié le 15/04/2024 à 12h26
Je pense que je ne m'en souvenais pas quand j'ai fait ce type de commentaires qui portait aussi sur la génération d'images, mais de toute façon, les technos de compression ont les mêmes fondements que ce soit du texte ou des images.
Le 15/04/2024 à 17h59
C'est une grosse différence par rapport à d'autres modèles qui travaillent uniquement en pixel space, ce qui demande beaucoup plus de ressources.
Le 15/04/2024 à 11h07
Comment peut on avoir 3 valeur sur 1 seul bit ? C'est 0 ou 1 si on veut le signe il faut 1 bit de plus pour l'encoder non ?
Modifié le 16/04/2024 à 08h22
Modifié le 15/04/2024 à 15h13
Le 15/04/2024 à 22h26