- Les 4 facteurs qui ont permis à Nvidia d’augmenter les performances des GPU d’un facteur 1000 en 10 ans
- Expliqués par le Chief Scientist Bill Dally en une seule diapositive lors de la keynote de l’IEEE Hot Chips 2023
Représentation des nombres : 16x
- « Globalement, le plus grand bénéfice que nous ayons obtenu vient de l’amélioration de la représentation des nombres »
- Ces nombres désignent les principaux paramètres des réseaux de neurones
- Parmi ces paramètres, l’un est le poids (weights), et un autre l’activation (activations)
- Poids : l’intensité de la connexion entre les neurones du modèle
- Activation : le fait de décider si un neurone s’active en multipliant la somme des entrées pondérées, puis de propager l’information à la couche suivante
- Avant le P100, les GPU Nvidia représentaient ces poids avec des nombres en virgule flottante simple précision (
single precision floating-point)
- Définis par la norme IEEE 754, ces nombres ont une longueur de 32 bits : 23 bits pour la fraction, 8 bits pour l’exposant appliqué à cette fraction, et 1 bit pour le signe
- Mais les chercheurs en machine learning ont découvert qu’il était possible d’utiliser des nombres moins précis dans de nombreux calculs, tout en permettant au réseau de neurones de fournir des réponses correctes
- En traitant ainsi moins de bits, on peut rendre plus petite et plus efficace la logique qui exécute les calculs clés du machine learning (multiplication et accumulation)
- L’énergie nécessaire à une multiplication est proportionnelle au carré du nombre de bits
- Nvidia a donc réduit ce nombre de moitié avec le FP16 sur le P100. Google a également proposé sa propre version, appelée
bfloat16
- La différence entre les deux tient à la répartition relative entre les bits de fraction, qui apportent la précision, et les bits d’exposant, qui apportent la plage de valeurs
bfloat16 possède le même nombre de bits d’exposant que FP32, ce qui facilite la conversion entre les deux formats
- Le GPU le plus récent aujourd’hui, le H100, peut utiliser des nombres sur 8 bits pour certaines parties des grands réseaux de neurones transformeurs comme ChatGPT et d’autres LLM
- Mais Nvidia a constaté qu’il ne s’agit pas d’une solution universelle
one-size-fits-all
- Par exemple, l’architecture GPU Hopper de Nvidia utilise en réalité deux formats FP8 différents pour effectuer les calculs
- L’un offre une précision légèrement supérieure, l’autre une plage de valeurs un peu plus large
- Le véritable savoir-faire de Nvidia consiste à savoir quand utiliser quel format
- Dally et son équipe ont toutes sortes d’idées intéressantes pour extraire davantage d’IA à partir d’un plus petit nombre de bits
- Et il est clair que le système à virgule flottante n’est pas idéal
- L’un des principaux problèmes est que la précision en virgule flottante reste assez uniforme, que les nombres soient grands ou petits
- Or, les paramètres des réseaux de neurones n’utilisent pas de grands nombres et se concentrent autour de 0
- L’axe de R&D de Nvidia consiste donc à trouver des moyens efficaces de représenter les nombres avec plus de précision à proximité de 0
Instructions complexes : 12,5x
- « Le surcoût pour aller chercher et décoder une instruction est plusieurs fois supérieur à celui d’une simple opération arithmétique »
- Par exemple, dans un cas de multiplication, le surcoût peut atteindre 20 fois l’énergie de l’opération elle-même, soit 1,5 picojoule
- Nvidia a obtenu de gros gains en concevant ses GPU pour exécuter de gros calculs avec une seule instruction plutôt qu’avec une série d’instructions
- Il reste toujours un surcoût, mais l’usage d’instructions complexes permet d’amortir ce coût sur une quantité plus importante de calculs
- Par exemple, avec l’IMMA (
integer matrix multiply and accumulate, multiplication et accumulation de matrices entières), le surcoût ne représente que 16 % du coût énergétique des calculs
Loi de Moore : 2,5x
- Maintenir les progrès de la loi de Moore implique des investissements de plusieurs milliards de dollars, une ingénierie extrêmement complexe et de nombreuses incertitudes géopolitiques
- Mais cela fait aussi partie de l’augmentation des performances des GPU Nvidia
- Nvidia a continuellement exploité les technologies de fabrication les plus avancées
- Le H100 est fabriqué avec le procédé N5 (5 nanomètres) de TSMC, et la fonderie n’a lancé la production initiale de la génération suivante, le N3, qu’à la fin 2022
Sparsité : 2x
- Après l’entraînement, il reste souvent dans les réseaux de neurones beaucoup de neurones qui n’auraient pas dû exister au départ
- Pour certains réseaux, « il est possible de retirer plus de la moitié des neurones sans perdre en précision »
- Les poids de ces neurones valent 0 ou sont presque nuls, ils ne contribuent donc pas à la sortie, et les inclure dans le calcul n’est qu’un gaspillage de temps et d’énergie
- Rendre ces réseaux « sparse » afin de réduire la charge de calcul est une tâche délicate
- Mais avec l’A100, prédécesseur du H100, Nvidia a introduit une fonction qu’elle appelle structured sparsity
- Ce matériel peut forcer 2 événements d’élagage possibles sur 4, ce qui permet d’aboutir à de nouveaux calculs sur des matrices plus petites
- « Le problème de la sparsité n’est pas encore résolu » « Nous devons encore faire quelque chose au niveau des activations, et nous pouvons obtenir une sparsité encore plus importante dans les poids »
6 commentaires
Oh, merci pour ce bon article !
J’ai trouvé cette lecture très agréable.
Waouh, il faut continuer d’acheter l’action..
J’ai quelques actions Nvidia achetées en éclaireur en 2018, et elles sont maintenant à +1100 %. J’aurais dû en acheter une tonne à l’époque. T_T
Waouh.. !
16 x 12,5 x 2,5 x 2, et on obtient exactement 1000.