Inférence CPU #0 : comprendre avant d'optimiser
J'ai écrit herbert-rs, un moteur d'inférence LLM local en Rust. Pas une surcouche, pas un binding : chaque multiplication matricielle, chaque kernel d'attention, chaque routine est implémentée et mesurée au cycle près — en assembleur x86-64 et ARM64, en compute shaders Metal et Vulkan, avec des compteurs hardware (PMC) pour valider chaque décision.
Ce projet repose sur quelques principes simples :
- Primauté du réel. Toute affirmation technique est fondée sur des mesures reproductibles. Pas d'intuition non vérifiée, pas de benchmark opaque, pas de chiffre sans protocole.
- Comprendre avant d'optimiser. Un système ne doit pas être optimisé avant d'être compris. Les performances émergent de la microarchitecture, de la mémoire, de l'algorithme, de la structure du modèle.
- Refus du marketing technique. Herbert ne cherche pas à démontrer qu'il est "le plus rapide". Il cherche à comprendre comment fonctionne réellement un moteur d'inférence.
- Transmission. Chaque découverte doit être expliquée, contextualisée, publiée. Le but est de produire une connaissance utile.
Les systèmes d'inférence modernes sont gouvernés par un grand nombre de variables :
- architecture matérielle
- hiérarchie mémoire
- microarchitecture du processeur
- implémentation des kernels
- structure du modèle
- paramètres d'exécution
Toute optimisation doit être précédée et suivie d'une campagne de mesures rigoureuse. Aucune conclusion ne peut être tirée sans :
- un protocole explicite
- des mesures reproductibles
- une analyse documentée
Les régressions et les résultats négatifs doivent être conservés et expliqués.
L'objectif n'est pas seulement d'optimiser un moteur, mais de comprendre empiriquement le comportement des systèmes d'inférence.
Ça va prendre du temps. Les articles de cette série iront au fond des choses — couche par couche, instruction par instruction, mesure par mesure.
Le premier article, les trois régimes d'inférence, posait les fondations : prefill, decode et question-prefill obéissent à des lois physiques différentes.
Le prochain article entrera dans le modèle lui-même : où passe le temps, couche par couche.
herbert-rs est open source. Le code, les benchmarks et les discussions techniques sont les bienvenus.
Inférence CPU -- série en cours
- Inférence CPU #0 : comprendre avant d'optimiser
- Inférence CPU #1 : les trois régimes