- L’article de 1989 de Yann LeCun et al. sur la reconnaissance de codes postaux manuscrits est l’un des premiers exemples historiquement importants d’application concrète d’un réseau de neurones entraîné de bout en bout par rétropropagation, et sa façon de présenter le dataset, l’architecture, la fonction de perte, l’optimisation et les taux d’erreur rappelle encore les articles modernes de deep learning
- La réimplémentation en PyTorch portait sur un petit réseau d’environ 1 000 neurones et 7 291 images de chiffres en niveaux de gris de 16x16, et les 3 jours d’entraînement de l’article original ont été réduits à environ 90 secondes sur le CPU d’un MacBook Air M1
- L’article original rapportait 0,14 % d’erreur d’entraînement et 5,00 % d’erreur de test ; la reproduction n’est pas exactement identique à cause d’un dataset de substitution basé sur MNIST réduit en 16x16, mais atteint tout de même 0,62 % d’erreur d’entraînement et 4,09 % d’erreur de test
- En appliquant des techniques version 2022 comme la cross-entropy, AdamW, l’augmentation de données, Dropout et ReLU, l’erreur de test est passée de 4,09 % à 1,59 % ; le temps d’entraînement a augmenté d’environ 4x, mais la latence d’inférence n’a pas changé
- En 33 ans, la structure macroscopique a peu évolué, mais l’échelle des données, des modèles et du compute a explosé, et la dynamique des foundation models et du fine-tuning est en train de rendre rapidement obsolète l’entraînement from scratch de réseaux neuronaux dédiés à une tâche précise
Pourquoi réimplémenter un article de 1989 en 2022
- L’article de 1989 de Yann LeCun et al., Backpropagation Applied to Handwritten Zip Code Recognition, constitue un exemple historique majeur d’application pratique de la rétropropagation
- Il est considéré comme l’un des premiers articles à appliquer à un problème réel un réseau de neurones entraîné de bout en bout par rétropropagation
- À l’époque, le dataset contenait 7 291 images de chiffres en niveaux de gris de 16x16, et le réseau comptait environ 1 000 neurones
- La structure de l’article ressemble beaucoup à celle d’un article moderne de deep learning
- définition du dataset
- description de l’architecture du réseau de neurones
- traitement de la fonction de perte et de l’optimisation
- rapport des taux d’erreur de classification sur les ensembles d’entraînement et de test
- Le code de réimplémentation a été écrit en PyTorch et publié sur karpathy/lecun1989-repro
- Le réseau d’origine était implémenté en Lisp et utilisait le simulateur de rétropropagation SN de Bottou et LeCun de 1988
- La conception des bibliothèques modernes de deep learning se divise globalement en trois parties
- une bibliothèque de tenseurs rapide, basée sur C/CUDA
- un moteur autograd qui suit le graphe de calcul forward et génère les opérations de rétropropagation
- une API haut niveau scriptable en Python, avec couches, architectures, optimiseurs et fonctions de perte
Vitesse d’entraînement et limites de la reproduction
- L’entraînement d’origine faisait passer 23 fois les 7 291 exemples d’apprentissage, soit un total de 167 693 paires entrée/label présentées au réseau
- En 1989, le réseau a été entraîné pendant 3 jours sur une station de travail SUN-4/260
- La réimplémentation PyTorch a mis environ 90 secondes sur le CPU d’un MacBook Air M1, soit environ 3 000x plus rapide en comparaison simple
- conda utilisait un build arm64 natif, pas l’émulation Rosetta
- l’accélération aurait pu être encore plus importante si PyTorch avait pleinement exploité le GPU et le NPU du M1
- Un simple lancement sur un GPU A100 était au contraire plus lent
- le réseau était minuscule : convnet à 4 couches, максимум 12 canaux, 9 760 paramètres au total, 64K MACs et 1K activations
- le SGD utilisait une structure traitant un seul exemple à la fois
- pour exploiter correctement un A100 avec CUDA et PyTorch, il faudrait augmenter l’occupation GPU via un apprentissage full-batch plutôt qu’un SGD par exemple
- Les performances rapportées dans l’article original étaient les suivantes
- entraînement : loss 2.5e-3, erreur 0,14 %, miss 10
- test : loss 1.8e-2, erreur 5,00 %, miss 102
- Les résultats du 23e pass du script de reproduction étaient les suivants
- entraînement : loss 4.073383e-03, erreur 0,62 %, miss 45
- test : loss 2.838382e-02, erreur 4,09 %, miss 82
- Une reproduction exacte est difficile pour plusieurs raisons
- le dataset original semble avoir disparu avec le temps
- à la place, les chiffres MNIST en 28x28 ont été réduits à 16x16 par bilinear interpolation, puis un tirage aléatoire sans remise du nombre d’exemples nécessaire a été effectué
- la description de l’initialisation des poids est abstraite, et des problèmes de format PDF ont pu faire disparaître des points décimaux ou des symboles de racine carrée
- la structure de connexions clairsemées entre H1 et H2 n’était pas décrite précisément dans l’article, ce qui a nécessité des hypothèses raisonnables
- il y avait un doute sur le fait que le tanh de l’article soit le normalized tanh populaire à l’époque
- l’article original utilisait un algorithme de Newton spécial avec approximation diagonale positive de la Hessienne, alors que la réimplémentation utilisait un SGD plus simple
Réduire le taux d’erreur avec des techniques apparues 33 ans plus tard
- Le premier changement a consisté à passer d’une régression MSE à une approche moderne de classification multiclasse
- à l’origine, la classification en 10 classes était modélisée comme une régression vers des cibles -1 ou +1 avec MSELoss
- le tanh de la couche de sortie a été supprimé pour produire des class logits, puis CrossEntropyLoss a été appliquée
- le modèle surapprenait alors complètement l’ensemble d’entraînement, avec 0,00 % d’erreur d’entraînement et 4,38 % d’erreur de test
- Ensuite, une méthode de la famille Adam a remplacé le SGD
- AdamW démarrait avec un learning rate de 3e-4, abaissé à 1e-4 pendant l’entraînement
- le résultat était 0,00 % d’erreur d’entraînement et 3,59 % d’erreur de test
- le weight decay par défaut contribuait aussi à réduire le surapprentissage
- L’augmentation de données consistait à décaler horizontalement ou verticalement l’image d’entrée jusqu’à 1 pixel maximum
- comme cela simulait un dataset plus grand, le nombre de pass a été porté de 23 à 60
- simplement augmenter le nombre de pass avec les réglages d’origine n’améliorait pas beaucoup les résultats
- le résultat était 1,70 % d’erreur d’entraînement et 2,19 % d’erreur de test
- La combinaison de Dropout et ReLU a apporté une amélioration supplémentaire
- un léger Dropout de 0,25 a été ajouté juste avant la couche H3, la plus riche en paramètres
- comme Dropout met des activations à 0, cela semblait mieux s’accorder avec ReLU qu’avec tanh, dont la plage d’activation est [-1, 1]
- toutes les non-linéarités ont été remplacées par ReLU et le nombre de pass a été porté à 80
- le résultat était 1,47 % d’erreur d’entraînement, 1,59 % d’erreur de test et 32 miss au test
- Remplacer simplement tanh par ReLU n’apportait pas de grand gain ; l’essentiel de l’amélioration venait de l’ajout de Dropout
- Si l’on avait pu ramener cette technique en 1989, le nombre d’erreurs serait tombé d’environ 80 à environ 30, et le taux d’erreur de test jusqu’à environ 1,5 %
- en contrepartie, le temps d’entraînement aurait presque quadruplé, passant de 3 jours à près de 12 jours selon les standards de 1989
- la latence d’inférence n’aurait pas été affectée
Avant des modèles plus grands, l’effet est d’abord venu de l’élargissement des données
- Les marges de progression faciles se réduisent ensuite progressivement
- des techniques supplémentaires comme weight normalization n’ont pas apporté de gains majeurs
- un « micro-ViT » à nombre de paramètres et coût de calcul comparables n’atteignait pas les performances du convnet
- Il y a eu beaucoup d’innovations en 33 ans, mais certaines prennent surtout leur sens à beaucoup plus grande échelle
- residual connection, layer normalization et batch normalization sont davantage liées à la stabilisation de l’optimisation à grande échelle
- Des gains de performance importants supplémentaires viendraient probablement d’une augmentation de la taille du réseau, mais cela accroîtrait la latence d’inférence au test
- Augmenter la quantité de données améliore aussi les performances
- en exploitant l’ensemble complet de MNIST, l’ensemble d’entraînement est passé de 7 291 à 50 000 exemples, soit environ 7x plus
- en exécutant le baseline existant sur 100 pass, l’erreur de test est tombée à 2,74 %, avec 54 miss
- Les meilleurs résultats venaient de la combinaison entre l’extension des données et les techniques modernes
- 1,07 % d’erreur d’entraînement, 1,25 % d’erreur de test, 24 miss au test
- en 1989, augmenter simplement la taille du dataset aurait déjà permis d’améliorer les performances du système sans augmenter la latence d’inférence
Observations de 1989 à 2022, puis vers 2055
- En 33 ans, la structure macroscopique a peu changé
- on construit toujours des architectures différentiables de réseaux de neurones organisées en couches, optimisées de bout en bout par rétropropagation et descente de gradient stochastique
- la différence est qu’à l’époque, l’échelle était bien plus petite
- Le dataset et le modèle de 1989 sont très petits selon les standards actuels
- l’ensemble d’entraînement ne contenait que 7 291 images en niveaux de gris de 16x16
- les datasets de vision modernes utilisent désormais jusqu’à des centaines de millions d’images couleur haute résolution collectées sur le web
- on peut citer OpenAI CLIP, ou Google JFT-300M
- en données brutes de pixels d’entrée, cela représenterait environ 100 000 000x plus
- Le réseau de 1989 comptait environ 9 760 paramètres, 64K MACs et 1K activations
- les réseaux de vision modernes atteignent des milliards de paramètres et environ 1e12 MACs
- les modèles de langage peuvent aller jusqu’à des billions de paramètres
- En regardant 2022 depuis 2055, on peut imaginer que le même schéma se répète
- les réseaux de neurones de 2055 seraient presque identiques macroscopiquement à ceux de 2022, mais plus grands
- les datasets et modèles actuels pourraient alors sembler environ 10 000 000x plus petits
- on peut imaginer qu’un modèle state of the art de 2022 puisse alors s’entraîner en environ 1 minute comme un projet de week-end sur un appareil personnel
- on peut aussi supposer que modifier les détails du modèle, de la fonction de perte, de l’augmentation et de l’optimiseur suffirait à diviser le taux d’erreur par deux
- L’entraînement from scratch d’un réseau de neurones pour une tâche spécifique devient rapidement obsolète
- des foundation models comme GPT sont entraînés par un petit nombre d’organisations disposant d’énormes ressources de calcul
- la plupart des applications peuvent être mises en œuvre via un léger fine-tuning d’une partie du réseau, du prompt engineering, ou une distillation des données et du modèle vers un petit réseau d’inférence spécialisé
- poussé à l’extrême, on peut imaginer qu’en 2055 un utilisateur demande une tâche en anglais, ou même par la pensée, à un neural net « megabrain » 10 000 000x plus grand, réduisant encore la nécessité d’entraîner soi-même un réseau neuronal
1 commentaires
Commentaires sur Hacker News
Un autre point intéressant : à l’origine, l’entraînement a pris 3 jours sur une station de travail Sun 4/260. Je n’ai pas trouvé les spécifications exactes, mais pour l’époque des premières stations de travail SPARC, la consommation totale devait tourner autour de 200 W
Le CPU lui-même n’était probablement pas très énergivore, mais le système complet, avec disque et écran, devait vraisemblablement être dans ces eaux-là. Donc 200 W × 72 heures = 14 400 Wh
Karpathy a exécuté un entraînement de même niveau sur un MacBook, en plus sans l’exploiter pleinement, en 90 secondes. Si l’on compte environ 20 W × 0,025 heure = 0,5 Wh, cela représente une amélioration de presque 30 000 fois de l’efficacité énergétique
L’article était vraiment excellent. Cela dit, je trouve dommage que les prédictions pour 2055 soient méta-linéaires. Elles évitent l’erreur courante qui consiste à garder la technologie actuelle telle quelle et à faire une régression linéaire des chiffres jusqu’à 33 ans plus tard, mais elles semblent tout de même présupposer une sorte de symétrie de ligne d’univers ayant le présent pour origine
L’horizon temporel est suffisamment long pour que des percées et des obstacles imprévus rendent toutes ces prédictions fausses. Quelqu’un pourrait découvrir une structure de base bien plus simple que « perceptron++ », tout le monde pourrait être en train d’entraîner des nuages gaussiens 3D, ou l’informatique quantique pourrait enfin décoller au point que nous n’ayons même pas encore les noms des composants que nous utiliserons
À l’inverse, nous pourrions nous heurter à des limites de passage à l’échelle inédites, côté matériel ou entraînement, ou connaître un recul civilisationnel. Malgré tout, si j’étais parieur, je ne miserais pas vraiment contre les conclusions de cet article. Si l’on extrapole uniquement à partir du passé et du présent, c’est probablement proche de la meilleure conclusion possible
Je penche pour un changement plus spectaculaire. Pas seulement à cause des ressources, mais parce qu’il existe une grande marge d’amélioration des algorithmes
Du côté le plus évident, la plupart des bibliothèques n’exploitent pas encore pleinement plusieurs techniques connues d’optimisation par gradient. Comme il a été trop facile de simplement ajouter davantage de données et de débit, il reste encore beaucoup d’outils à appliquer
Et les grands modèles qui réussissent nous donnent des indices importants. Par exemple, les modèles de langage apprennent une sorte de logique linguistique proche de la manière dont nous traitons la pensée, et il est clair qu’ils peuvent relier de façon plausible des informations très hétérogènes
Un jour, si nous comprenons l’essence de ce traitement, le traitement du langage pourrait se simplifier brutalement. Ce n’est qu’une des occasions de progrès radicaux en matière de structures et d’algorithmes, et ce serait véritablement révolutionnaire
Alors, pendant les 33 prochaines années, suffira-t-il de faire la même chose en augmentant seulement les données et la puissance de calcul ? C’est ce à quoi conduit logiquement l’enthousiasme du type « je n’arrive pas à croire que cela arrive enfin de mon vivant » lors de l’apparition des LLM, ainsi que l’idée qu’« il suffit d’agrandir les modèles et les données ». Mais peut-on vraiment atteindre l’AGI par la seule force brute ?
Il y a 33 ans, l’« IA connexionniste » n’était pas le paradigme dominant, et l’« IA symbolique » n’était pas non plus la seule autre approche. Il existait aussi des approches comme le « fonctionnalisme robotique », selon lesquelles on ne peut pas avoir une véritable intelligence sans interaction avec le monde physique
Dans 33 ans, ces autres approches pourraient renaître en se combinant au connexionnisme, ou bien une approche entièrement nouvelle pourrait émerger
Excellent article. J’ai vécu directement les débuts des réseaux neuronaux artificiels. Au milieu des années 1980, j’ai siégé au comité consultatif sur les outils de réseaux neuronaux de la DARPA, j’ai écrit la première version du produit commercial SAIC ANSim, et j’ai aussi créé un modèle simple de rétropropagation déployé dans un détecteur de bombes que l’entreprise avait construit dans le cadre d’un contrat avec la FAA
Il y a 5 ou 6 ans, chez Capital One, j’ai également dirigé une équipe de deep learning « traditionnel ». Ces 18 derniers mois ont été vraiment passionnants. Je consacre autant de temps que possible à explorer les LLM auto-hébergés et les API de Hugging Face, OpenAI, etc.
Rien que penser à la technologie dans 33 ans me donne l’impression que ma tête va exploser
Le changement le plus fondamental tient à ce avec quoi les modèles sont entraînés
De petites images de caractères ressemblent à un problème de quiz, et n’ont en réalité absolument rien à voir avec l’apprentissage de l’ensemble de la communication linguistique et visuelle de l’humanité
Même si les ressources de calcul continuent de croître pendant les 33 prochaines années, nous n’en resterons pas au stade de l’entraînement de modèles qui imitent le comportement et les connaissances humaines. Ce problème, c’est-à-dire nous-mêmes, aura été réduit à un problème jouet bien avant cela
La qualité ne baissera pas. Il y aura beaucoup d’efforts consacrés au filtrage des données et au maintien de leur diversité. On pourra toujours l’améliorer en donnant plus de temps au modèle
L’architecture des modèles n’a pas beaucoup d’importance par rapport au dataset. N’importe quel modèle de la même famille peut apprendre les mêmes capacités à partir des mêmes données, mais si l’on change les données, leurs capacités changent toutes. L’intelligence est dans les données
L’avenir, ce n’est pas la conception d’architectures de modèles, mais l’ingénierie des données. Pour prendre une analogie, la culture humaine évolue plus vite que la biologie humaine. Les données évoluent plus vite que les modèles
Dans l’IA récente, on voit une forte diminution des nouvelles architectures, et une tendance où divers datasets sont appliqués au même modèle Transformer. Même au sein des Transformers, très peu de variantes sont largement utilisées, et des milliers ont été abandonnées
J’aime penser que le véritable moteur de l’intelligence est l’évolution du langage par les mèmes. Nous et l’IA surfons ensemble sur la croissance exponentielle du langage
Il n’est pas certain que la puissance de calcul continue de croître pendant les 33 prochaines années comme elle l’a fait jusqu’ici. Mais ce n’est pas forcément nécessaire
En lisant l’article, je me suis dit : « Mon Dieu, je me souviens avoir utilisé la MSE dans un projet de machine learning perso ce week-end-là, et ça ne marchait pas bien. J’avais donc choisi la mauvaise fonction de perte »
Les LLM actuels, ou ceux de l’an prochain, pourront sans doute m’indiquer suffisamment comment améliorer mon code et mes graphes. Je pourrai alors appliquer des techniques de niveau expert qui m’étaient autrement inaccessibles à cause des 50 000 heures de pratique accumulée nécessaires
Une partie de moi dit que l’humain est fini, et que dans 33 ans nous aurons créé un monde où l’humain n’aura plus d’importance. Mais une autre partie dit que, si nous évitons ce destin et toutes les autres catastrophes, l’avenir pourrait être assez radieux
Appliquer les LLM d’aujourd’hui à toutes sortes de problèmes ne nous condamnera pas. Mais une AGI consciente et capable de planifier pourrait apparaître d’ici quelques années, et nous ne savons pas non plus quelle limite supérieure nous pouvons atteindre quant à leur intelligence
Je considère que nous sommes responsables de toute entité intelligente que nous faisons entrer dans le monde. Certains déplorent qu’il n’y ait pas d’examen pour devenir parent ; alors que dire du fait de créer un million de copies d’un cerveau virtuel entièrement nouveau ? Et, en plus, de le faire naître en pratique pour une vie entière de travail forcé
C’était vraiment excellent. Ce n’est pas traité explicitement, mais je pense que la différence, 33 ans plus tard, tient aux entrées que les modèles manipulent. En 1989, les modèles de pointe utilisaient des images en niveaux de gris de 16×16 ; aujourd’hui, nous avons des images couleur de quelques mégapixels
Dans 30 ans, un ordinateur de bureau pourra entraîner CLIP en moins de 90 secondes, mais sur quoi les modèles de pointe de l’époque seront-ils entraînés ?
Pour cela, il faudra des milliards, voire des milliers de milliards d’heures de vidéo et d’audio montrant des personnes diverses accomplissant toutes sortes d’activités humaines, et probablement beaucoup d’autres types d’entrées
Pour l’instant, il semble préférable de dépenser le budget de calcul dans un plus grand « cerveau » plutôt que dans de meilleurs « yeux »
Je ne sais pas exactement ce qui est capturé, mais on pourrait entraîner des modèles sur une combinaison de plusieurs entrées : audio, vidéo, informations spatiales, iris, etc.
Il est intéressant de voir que, pendant cette période, l’intérêt pour les réseaux de neurones a presque complètement disparu avant de revenir
Aujourd’hui, il est clair que des gens sont en train d’enchaîner des LLM pour leur faire faire du raisonnement en avant et en arrière
Cela dit, le Turing Award est déjà une très belle distinction
Il est étonnant de voir à la fois à quel point peu de choses ont changé et à quel point énormément de choses ont changé. Je me souviens à quel point lire « L’efficacité déraisonnable des RNN » avait été une révélation, et aujourd’hui j’ai l’impression de vivre dans un monde complètement différent
La nouvelle technologie est bien meilleure, et ses implications futures sont énormes. Mais pour ceux qui s’y intéressaient déjà à l’époque, il existait un point de comparaison où « c’est devenu incroyablement bon » ne menait pas immédiatement à « c’est hors de contrôle »
C’est bien devenu beaucoup meilleur
Les textes d’Andrej Karpathy sont toujours rafraîchissants. Plus il en sait, plus il explore de manière directe et simple les fondements de la science du machine learning
Le domaine regorge d’articles qui proposent de nouvelles architectures complexes pour de petites améliorations difficiles à reproduire, et qui remplissent 50 pages inutiles dans l’espoir de battre les derniers résultats et de faire paraître leur travail « sérieux »