Présentation
openTPU regroupe dans un seul dépôt le RTL, l'ISA, le simulateur bit‑exact, le compilateur et le profiler nécessaires à un accélérateur d'inférence. Le projet s'exécute sur une carte PCIe basée sur le Xilinx Kintex‑7 xc7k480t, équipée de deux canaux DDR3‑1066 (pic de 17,1 GB/s). Le code source, publié sous licence Apache‑2.0, permet de suivre le flux complet, du matmul en Python jusqu'aux signaux sur les broches.
Architecture matérielle
Le cœur de la carte comprend un contrôleur LiteDRAM doté d'un petit CPU intégré, une matrice systolique à quatre colonnes et un moteur de flux décrit dans docs/stream.md. Le design fonctionne à 133,33 MHz, avec un unique bitstream partagé entre tous les modèles testés. La mémoire externe DDR3‑1066 alimente les tables d'embedding ; pour le modèle Gemma 4 E2B, les tables occupent 3,5‑3,6 GiB sur la carte, alors que la version E4B conserve les tables sur l’hôte et ne transfère que 11 KB par token.
Performances et mesures
Les benchmarks, réalisés avec une séquence de décodage de 64 tokens après un prompt de 512 tokens, montrent des débits variant de 3,78 tok/s (Gemma 4 E4B, int8) à 85,8 tok/s (LFM2.5‑230M, 4‑bit + int8 head). Le débit « device » est généralement proche du débit total, indiquant que le temps d'hôte (argmax) reste marginal. La bande passante DRAM mesurée atteint 14,5 GB/s, soit 85 % du pic théorique, pour les modèles les plus exigeants. La version B du firmware améliore les décodages de LFM2‑2.6B, SmolLM3 et Phi‑4‑mini de 8‑9 % par rapport à la version e698dcd7, tout en maintenant 91‑94 % du pic DRAM contre 82‑87 % précédemment.
Limites et perspectives
Le facteur de forme FPGA impose une capacité de stockage limitée ; les modèles supérieurs à 4 GiB (ex. Qwen3.5‑4B, int8) nécessitent des images dépassant 4 GiB, ce qui contraint la charge sur le bus PCIe. Le débit reste dépendant de la latence du CPU hôte (Intel Core i7‑4790) pour le calcul de l'argmax, ce qui pourrait devenir un goulet d'étranglement pour des modèles plus larges. Le projet offre toutefois une plateforme d'apprentissage précieuse : chaque composant, du simulateur au compilateur, est accessible, permettant d'explorer les compromis entre précision (int8 vs 4‑bit) et utilisation de la bande passante mémoire. Des améliorations futures pourraient inclure un contrôleur DRAM plus rapide, une fréquence d'horloge accrue ou l'intégration d'un moteur d'argmax dédié sur la carte.