Voici un coût qu'aucune fiche technique n'affiche. Un appareil de mesure continue classe une fenêtre glissante de 128 échantillons. Un nouvel échantillon arrive, la fenêtre avance d'un cran, l'appareil demande une décision. Un runtime sans état recalcule les 128 échantillons — y compris les 127 qui n'ont pas bougé.
Faites cela à 50 Hz et vous exécutez 50 convolutions complètes par seconde là où un pas de temps par couche aurait suffi. Sur un appareil sur batterie, ce n'est pas une inefficacité, c'est le budget énergétique.
Pourquoi un runtime sans état n'a pas le choix
C'est un problème d'interface, pas d'optimisation, et la distinction est tout le sujet. TensorFlow Lite for Microcontrollers, CMSIS-NN et X-CUBE-AI exposent tous une opération par tenseur : vous donnez un tenseur d'entrée, il rend un tenseur de sortie. Il n'y a nulle part où ranger l'historique entre deux appels. L'API ne sait pas dire « voici un nouvel échantillon, avance ton état ».
Ce que fait l'inférence delta
Garder un tampon circulaire d'activations par couche. À l'arrivée d'un échantillon, calculer un pas de temps en couche 1, le passer à la couche 2, et ainsi de suite. Le champ récepteur est déjà dans les anneaux. La sortie n'est pas une approximation : c'est la même arithmétique, réorganisée, donc la décision est identique bit à bit.
| Cortex-M4 @ 80 MHz | Cycles | ms |
|---|---|---|
| Recalcul complet de la fenêtre | 7 453 884 | 93,2 |
| Convolution CMSIS-NN, par fenêtre | 2 556 548 | 32,0 |
| Inférence delta, par décision | 93 598 | 1,17 |
Où cela cesse de marcher
- Le pas. L'avantage n'existe que si les fenêtres se recouvrent. Au pas de 128, cela coûte 1,6× plus cher.
- La RAM. Les anneaux sont un état nouveau : environ 10 Kio. Sur un composant à 20 Ko de SRAM, c'est la moitié de votre mémoire.
- L'architecture. Cela marche proprement pour les convolutions causales et les récurrences. Une couche qui exige toute la fenêtre d'un coup doit être traitée à part, sinon la parité se casse en silence.
Tous les cycles ici viennent d'une émulation Unicorn 2.1.4 : les absolus sont des bornes inférieures, le rapport est la partie transférable. Aucune mesure sur silicium n'existe encore, et aucun chiffre de joules par décision n'existe du tout.