TRiP : un moteur transformer complet en C, développé from scratch par un seul auteur
Un développeur solo publie TRiP, une implémentation intégrale d'un moteur transformer en langage C, sans dépendances externes.
Traduit et résumé par IA à partir de la page source ↗ · Comment Fellow travaille
Développement
· Généré par IA↓ LIRE LE DÉVELOPPEMENT · 3 MIN← MASQUER LE DÉVELOPPEMENT
TRiP — pour "TRansformer in Progress" — est un moteur transformer complet écrit intégralement en langage C, développé par un seul auteur, Carlo Valenti, sur une période de dix-huit mois, de mars 2024 à août 2025, principalement lors de pauses déjeuner et de soirées de week-end. Le projet est publié sur GitHub sous licence CC BY-NC 4.0, autorisant un usage non commercial avec attribution.
L'ambition déclarée du projet est pédagogique : comprendre de l'intérieur le fonctionnement d'un transformer, depuis les multiplications matricielles jusqu'aux mécanismes d'attention, sans recourir à PyTorch, TensorFlow, ONNX ou toute autre bibliothèque de deep learning. Le code couvre l'inférence, l'entraînement complet par rétropropagation, la création de tokenizer, le mode chat interactif et l'inférence multimodale vision-langage. La seule dépendance réelle concerne l'affichage d'images en mode vision, qui requiert libjpeg et libx11 — deux bibliothèques système standard.
Sur le plan des architectures supportées, TRiP prend en charge Llama 2, Gemma 1.0 et 1.1, PaliGemma 1 (vision et langage) ainsi que GPT-2. Les formats de poids acceptés incluent SafeTensors (HuggingFace), ainsi que les formats définis par les projets de référence llama2.c et gpt2 d'Andrej Karpathy. Les types de données bf16, float16 et float32 sont supportés, avec une précision importante soulignée par l'auteur : sur CPU, float32 offre systématiquement de meilleures performances que bf16 ou float16, les processeurs actuels n'étant pas optimisés pour les opérations en virgule flottante dans ces formats réduits.
L'entraînement intègre la rétropropagation complète avec l'optimiseur AdamW, un scheduler de taux d'apprentissage par cosine annealing, et le gradient clipping. Le sampling à l'inférence couvre les stratégies greedy, top-k et nucleus (top-p). Un mode mmap permet de faire tourner des modèles larges sur des machines à mémoire limitée en évitant de charger l'intégralité des poids en RAM.
La structure du code est volontairement minimaliste : sept fichiers C totalisant environ 19 300 lignes. Le fichier math.c, le plus central, implémente les opérations tensorielles de base — matmul, softmax, layernorm, RMSnorm, RoPE, attention, activations FFN — en organisant systématiquement chaque opération comme une paire forward/backward placée côte à côte dans le code source. Cette organisation vise explicitement la lisibilité pédagogique : le lecteur peut suivre le flux du gradient inverse immédiatement après avoir lu le calcul direct.
L'auteur précise les parties du code générées par IA : le parseur JSON, la fonction de sauvegarde de checkpoints SafeTensors, la gestion JPEG/X11, le découpage final en fichiers multiples à partir d'un unique main.c initial, ainsi que certains commentaires et le README lui-même. Le reste — soit la grande majorité du moteur — est écrit à la main, ce qui constitue selon l'auteur la condition nécessaire pour atteindre l'objectif de compréhension profonde du transformer.
TRiP se distingue de projets comme llama.cpp, que l'auteur cite explicitement sans chercher à le concurrencer. Là où llama.cpp vise la performance et la compatibilité maximale sur une large gamme de matériel, TRiP assume une orientation différente : la clarté du code et la progression pédagogique priment sur l'optimisation. L'auteur s'inscrit dans la lignée des travaux d'Andrej Karpathy (llama2.c, nanoGPT), qu'il cite comme source d'inspiration directe.
Plusieurs questions restent ouvertes à ce stade. TRiP ne supporte pas les architectures récentes (Llama 3, Mistral, Gemma 2 et au-delà), ce que l'auteur assume délibérément pour éviter une course aux dernières sorties. L'absence de support GPU et d'optimisations SIMD limite les cas d'usage pratiques aux modèles légers ou aux environnements contraints. Enfin, la licence non commerciale restreint les usages en production. Pour l'heure, TRiP s'adresse avant tout à quiconque souhaite disposer d'une base de code annotée et autonome pour étudier les mécanismes internes d'un transformer de bout en bout, sans intermédiaire logiciel.
Une question sur cet article ?
Fellow répond à partir de ce qu'il a publié et cite chaque source. Réponses rédigées par une IA.
À lire aussi
- J'ai construit un réseau de neurones à partir de mécaniques du jeu DOOM21 octobre 2026
- Show HN : construire un LLM de zéro en TypeScript14 octobre 2026
- Postgres 19 retardé : les relecteurs IA trouvent plus de bugs que les humains ne peuvent en corriger16 octobre 2026
- Show HN: Clawfight.ai, un jeu piloté par des agents MCP11 septembre 2026
- Framework de trading financier multi-agents LLM8 septembre 2026
- Show HN : un outil de visualisation de l'attention des LLM8 septembre 2026