Quand Geohot critique Tenstorrent de manière constructive
Quand George Hotz, alias geohot, décide de donner des conseils à une boîte de semiconducteurs, ça donne un README de 100 lignes sur GitHub qui commence par “If you want to get acquired / become scam IP licensing co…I can’t help you.” C’est “subtil” ^^. Le hacker qui a jailbreaké le premier iPhone et qui fait maintenant rouler des voitures autonomes avec comma.ai vient de publier ses “conseils” pour Tenstorrent.
Pour ceux qui ne suivent pas le marché des puces IA de près, Tenstorrent c’est LA boîte qui fait rêver en ce moment. Fondée par Jim Keller (oui, LE Jim Keller qui a conçu les architectures x86-64 chez AMD et les puces A4/A5 d’Apple), l’entreprise développe des processeurs spécialement conçus pour l’IA avec une approche “dataflow” plutôt que l’architecture SIMD classique des GPU.
L’idée est géniale sur le papier puisqu’au lieu de forcer les calculs IA dans le moule des GPU (qui, je vous le rappelle, étaient à la base conçus pour les jeux vidéo…), Tenstorrent crée des puces où les données “coulent” naturellement à travers le réseau de calcul. Chaque “Tensix”, leur unité de calcul, contient 5 processeurs RISC-V qui peuvent être programmés indépendamment. C’est donc plus flexible, plus efficace énergétiquement, et surtout c’est une vraie alternative à la domination écrasante de NVIDIA qui contrôle plus de 90% du marché des GPU pour l’IA.
Le problème c’est que leur stack logicielle (l’ensemble des couches software qui permettent d’utiliser le hardware) baptisée tt-metalium est apparemment un cauchemar à utiliser. Genre, vraiment un terrible cauchemar et c’est là que geohot entre en scène.
Si vous ne connaissez pas George Hotz, imaginez un mélange entre un génie de l’informatique, un hacker et un streamer Twitch qui code en direct devant des milliers de viewers. À 17 ans, il devient célèbre mondialement en jailbreakant l’iPhone (le tout premier, celui qui était censé être inviolable, lol). Puis il s’attaque à la PS3 et se fait poursuivre par Sony. Episode qui d’ailleurs donnera lieu à un rap diss track mémorable (“insultoune” comme disent les Québecois ^^) où il traite Sony de… bon, on va dire qu’il était énervé.
Comme je vous le disais en intro, maintenant, il dirige comma.ai qui vend des boitiers pour transformer votre voiture en voiture semi-autonome pour 1000 balles, mais surtout, geohot a développé tinygrad, un framework de deep learning minimaliste qui tient en quelques milliers de lignes de code. Son crédo c’est la simplicité absolue et quand il voit une entreprise prometteuse comme Tenstorrent s’embourber dans la complexité, il peut pas pas s’empêcher d’intervenir.
Perso, je ne vois pas ça comme une critique mais plutôt comme un gros coup de pouce envoyé à une boite qu’il veut voir réussir ! Pourquoi ? Et bien parce qu’on a désespérément besoin d’alternatives à NVIDIA. En effet, les prix des GPU explosent, l’innovation stagne, et NVIDIA peut ainsi se permettre de vendre des H100 à 30 000 dollars pièce parce qu’ils ont zéro concurrence sérieuse.
Le problème maintenant c’est que Tenstorrent a empilé 7 couches d’abstraction dans leur stack logicielle. SEPT !! C’est comme si pour allumer la lumière chez vous, vous deviez :
- Remplir un formulaire A32B
- Le faire valider par votre syndic
- Qui l’envoie à EDF
- Qui consulte un comité technique
- Qui délègue à un sous-traitant
- Qui vérifie que c’est bien une ampoule homologuée
- Et qui active finalement l’interrupteur
Vous voyez le délire ? Et bien c’est exactement ce qui se passe avec tt-metalium et geohot, dans son style inimitable, résume ça par : “Plz bro one more stack this stack will be good i promise”. Comme un joueur au casino ou un tradeur de crypto qui double sa mise après avoir déjà perdu sa chemise.
Ainsi, dans son README que vous pouvez consulter ici, geohot propose une architecture de tt-metalium en seulement 3 couches.
- Frontend : l’interface avec PyTorch/TensorFlow (ce que les développeurs utilisent)
- Compiler : qui transforme le code en instructions optimisées
- Runtime : qui exécute sur le hardware
Point barre ! Pas de LLK (Low-Level Kernels), pas de couches intermédiaires, pas de “one more abstraction bro”.
Pour illustrer son point de vue, geohot prend l’exemple de ELU (Exponential Linear Unit), une fonction d’activation utilisée en deep learning. C’est une primitive hardware chez Tenstorrent qu’ils ont, en gros, gravé directement dans le silicium et qui se présente comme ceci :
self.elu(alpha=1.0)
La solution de geohot :
def elu(self, alpha=1.0):
return self.relu() - alpha*(1-self.exp()).relu()
2 lignes et as besoin d’une instruction dédiée dans le silicon. Le compiler peut alors optimiser ça tout seul comme un grand. Et si cette version n’est pas aussi rapide que la primitive hardware, c’est probablement parce que le compilateur est pourri, et pas qu’il manque des features.
Et c’est ça qui est intéressant car geohot ne dit pas juste “votre truc pue la merde”. Il explique POURQUOI c’est une mauvaise approche et COMMENT faire mieux. C’est du tough love à l’état pur car faut quand même comprendre que même un mec qui fait son PhD en machine learning, qui adore le RISC-V et qui a codé son propre compilateur CUDA pour le fun, n’arrive pas à comprendre comment utiliser la stack de Tenstorrent. Et là on a un problème, Houston !
Et ça c’est parce que Tenstorrent n’utilise pas son propre hardware en interne. Pas de “dogfooding”, comme on dit dans la Valley alors que geohot, lui il la mange sa propre bouffe avec tinygrad qui génère les modèles qui sont ensuite utilisé en prod dans les boitiers comma.
Donc au-delà du trolling, geohot propose plusieurs solutions concrètes :
- Commencer par le runtime : “Make the runtime expose hardware in a application agnostic way”… en clair, la couche basse doit juste exposer le hardware, et pas essayer de deviner ce que l’utilisateur veut en faire.
- Virer les abstractions inutiles : “I better never see mention of a elu”… si vous avez besoin d’une fonction spéciale pour ELU, vous avez déjà perdu.
- S’inspirer de CUDA : “CUDA is a simple C API” et devinez quoi ? Ça fonctionne depuis 15 ans, PARTOUT !
- Utiliser leur propre hardware : sinon comment savoir ce qui marche vraiment ? Car visiblement c’est pas en faisant des tests unitaires qu’ils vont découvrir que leur API est inmaintenable.
Voilà, donc le message est limpide : Tenstorrent a un avantage unique avec leur architecture plus programmable que les GPU mais s’ils cachent cette programmabilité sous 7 couches de bureaucratie logicielle, autant fermer boutique tout de suite et aller bosser chez NVIDIA.
Notez qu’AMD a fait exactement la même erreur. Un excellent hardware (les Radeon sont techniquement au top), mais un software à chier. Résultat, 10 ans plus tard, et ils ont toujours 0% du marché ML alors que leur hardware est moins cher et parfois plus puissant que celui de NVIDIA. Tenstorrent est donc en train de prendre le même chemin qu’AMD.
Bref, avec cette “intervention non sollicitée” de geohot, pas de politique d’entreprise, pas de langue de bois, pas de “nous apprécions vos retours et allons les étudier attentivement”. Juste un mec brillant qui dit “votre truc est cassé, voici comment le réparer, maintenant bougez-vous le cul”.
Espérons maintenant que Tenstorrent l’écoute. Après Jim Keller est pas con, il sait reconnaître un bon conseil quand il en voit un mais est-ce que son équipe logicielle va accepter de jeter 2 ans de travail pour repartir sur des bases saines ? Toute la question est là !
Parce que quand geohot prend la peine d’écrire 100 lignes de conseils au lieu de juste tweeter “lol ur stack sux”, c’est qu’il y croit vraiment.
Allez, on se retrouve dans 6 mois pour voir ce qu’aura fait Tenstorrent.