Inferact, fondée par le noyau de l'équipe de vLLM, a publié une série de tests d'inférence : en exécutant le modèle Kimi K3 de Moonshot AI sur 16 puces Google TPU v7 Ironwood, la vitesse de décodage à flux unique atteint 709 tokens par seconde, contre 452 pour le groupe témoin utilisant 16 puces Nvidia GB200, soit environ 57 % plus rapide.
Le rapport de test et le code ont été publiés ensemble le 23 septembre, le dépôt inferact/tpu-megakernels étant ouvert sous licence Apache 2.0. Inferact est une startup fondée par l'équipe historique de vLLM, qui avait déjà levé 150 millions de dollars en amorçage pour une valorisation de 800 millions de dollars, tour mené par a16z et Lightspeed.
Sur le papier, le GB200 garde l'avantage
Commençons par les chiffres sur le papier. Selon le rapport, une puce TPU v7 offre un pic BF16 de 2,31 PFLOPS et FP8 de 4,61 PFLOPS, avec 206 Go de HBM et une bande passante de 7380 Go/s ; une puce GB200 équivalente affiche 2,5 PFLOPS, 5 PFLOPS, 186 Go de HBM et 8000 Go/s de bande passante. En calcul comme en bande passante, le GB200 devance nettement, la TPU ne l'emportant que sur la capacité mémoire, avec 20 Go de plus.
Kimi K3 est un modèle MoE à 92 couches, dont la partie attention combine Kimi Delta Attention et Multi-head Latent Attention (MLA). Le test utilise un parallélisme de tenseurs à 4 voies et un parallélisme d'experts à 8 voies, répartis sur 16 puces.
Comparaison de vitesse brute sans décodage spéculatif :
| Taille de lot | TPU v7 (megakernel) | GB200 (vLLM) |
|---|---|---|
| 1 | 249 | 127 |
| 2 | 392 | 227 |
| 4 | 515 | 373 |
| 8 | 865 | 636 |
L'unité est le token par seconde. À une taille de lot de 1, la TPU est presque deux fois plus rapide ; à une taille de lot de 8, l'écart se réduit à un peu plus de 30 %. Avec le décodage spéculatif DSpark proposé par DeepSeek activé, la vitesse en flux unique passe à 709 contre 452, pour environ 8,5 millisecondes par étape de décodage.
La clé : fusionner 92 couches en un seul programme
L'approche d'Inferact s'appelle megakernel. Dans les frameworks d'inférence classiques, le calcul de chaque couche est découpé en plusieurs noyaux (kernels) indépendants, lancés l'un après l'autre, avec des intervalles entre eux ; les poids ne commencent à être transférés de la mémoire vers la puce que lorsque le noyau correspondant démarre.
Inferact utilise Pallas pour écrire les 92 couches d'une étape de décodage comme un seul programme. Selon le rapport, un megakernel efface les frontières entre noyaux : le chargement des poids n'est plus lié au noyau qui les utilise et peut être anticipé aussi loin que le permet la mémoire interne de la puce. Lors du décodage à flux unique, la puce passe la majeure partie de son temps à attendre des données, et c'est précisément là que le préchargement compense ; quand la taille de lot augmente, la part du calcul croît et le gain de cette technique s'amenuise, ce qui correspond à la tendance observée dans le tableau.
Un bénéfice annexe concerne le temps de compilation : la compilation via XLA prenait auparavant plus de 30 minutes, contre moins de 90 secondes avec megakernel. Pour prouver que ce gain de vitesse ne sacrifie pas la qualité des résultats, le rapport fournit les scores de Kimi K3 exécuté sur TPU : 94,4 % sur GPQA-Diamond et 97,2 % sur GSM8K.
Un calcul approximatif du rendement par unité de calcul
En utilisant les résultats du décodage spéculatif à flux unique pour un calcul approximatif : le pic BF16 du TPU v7 représente environ 92 % de celui du GB200, mais le débit de tokens obtenu est 1,57 fois supérieur ; ramené au rendement par unité de pic de calcul, la TPU atteint environ 1,7 fois celui du GB200. Ramené à la bande passante, le résultat tourne aussi autour de 1,7 fois.
Ce chiffre doit être nuancé. Du côté du GB200, c'est la recette Kimi K3 publiée ouvertement par vLLM qui a été utilisée, une voie classique à noyaux multiples, sans optimisation megakernel d'intensité équivalente. Le rapport ne propose pas de comparaison également optimisée sur GB200, il est donc impossible de déterminer quelle part de l'écart vient du matériel et quelle part vient de l'effort logiciel. Nvidia n'a pas non plus réagi à ces chiffres.
Pour Moonshot AI, ce test offre une voie de déploiement viable pour Kimi K3 sur du matériel autre que Nvidia. Kimi K3 est un modèle à poids ouverts de 2,8 billions de paramètres, une taille qui rend le seuil d'auto-déploiement très élevé ; avec ce noyau TPU open source, louer des TPU dans le cloud pour faire tourner K3 devient une option supplémentaire.
Sources : blog technique d'Inferact, CocoLoop, dépôt inferact/tpu-megakernels, QbitAI ; les chiffres de débit suivent la méthodologie de test 16 puces contre 16 puces du rapport d'Inferact, les informations de financement proviennent de sources publiques.