Si vous choisissez un runtime pour un modèle sur microcontrôleur, la réponse honnête n'est pas « le nôtre ». C'est « cela dépend d'une propriété de votre problème, et vous savez déjà laquelle ». Ce billet déroule la décision à partir des chiffres de notre comparaison complète.
La question qui tranche vraiment
Votre fenêtre de classification glisse-t-elle ?
C'est tout. Si votre appareil décide tous les N échantillons avec N très inférieur à la longueur de fenêtre — un objet porté qui classe l'activité toutes les 20 ms sur une fenêtre de 2,56 s, un capteur de vibration qui surveille un moteur — vos fenêtres se recouvrent fortement, et un runtime sans état jette presque tout son travail à chaque appel.
Si au contraire l'appareil se réveille, prend une fenêtre, décide et se rendort, le recouvrement est nul et rien de tout cela ne s'applique.
Où chacun gagne
| Axe | Gagnant | Écart |
|---|---|---|
| Flash totale, même réseau | Atome LM EDGE | 4,64× (15 444 o contre 71 712 o) |
| RAM d'exécution | Atome LM EDGE | 2,17× |
| Coût par décision, fenêtre glissante | Atome LM EDGE | 27,3× face à CMSIS-NN |
| Précision, UCI HAR, sans fuite, 5 graines | aucun | égalité : 0,9095 contre 0,9097 |
| Latence, fenêtre ponctuelle | chemin CMSIS-NN / TFLM | 2,89× plus rapide que nous |
| Changer de modèle sans reflasher | TFLite Micro | catégorique — nous ne savons pas le faire |
| Écosystème et outillage | TFLite Micro | catégorique, et sans appel |
Le compromis dont personne ne parle
Notre moteur n'a pas d'interpréteur, d'où l'essentiel de l'écart de 4,64×. Ce n'est pas gratuit. Un runtime TensorFlow Lite lit un FlatBuffer au démarrage : vous pouvez livrer un nouveau modèle comme une donnée, par les airs, par appareil, par client. Nous compilons la forme du réseau, donc un nouveau modèle est une nouvelle image firmware. Si votre feuille de route contient « nous réentraînerons et pousserons des modèles chaque mois », c'est un argument réel contre nous et il pèse plus lourd que le compte d'octets.
L'avantage en flux a lui aussi une frontière nette : il n'existe que tant que les fenêtres se recouvrent. Au pas de 128, il coûte 1,6× plus cher qu'un seul appel par lot, et il immobilise environ 10 Kio de RAM.
Vérifiez-le vous-même
Ne prenez pas un banc d'essai depuis une page fournisseur, y compris celle-ci. Faites le vôtre, sur vos données, avec une découpe par sujet ou chronologique, cinq graines, et le même budget d'entraînement des deux côtés. Nous avons écrit comment nous procédons, y compris nos erreurs.