Explication

int8 contre ternaire sur microcontrôleur

2026-09-10 · Tilelli Lab · 8 min de lecture

L'un est une décision de déploiement. L'autre une décision d'entraînement.

int8 est le choix par défaut pour l'inférence sur microcontrôleur, et c'est un bon choix. Le ternaire va quatre à cinq fois plus loin sur la taille et supprime totalement la multiplication. Voici quand ce compromis vaut la peine, et quand non.

Les deux schémas côte à côte

int8Ternaire (1,58 bit)
Valeurs par poids2563 : −α, 0, +α
Bits par poids8≈ 1,58, ~2 empaquetés
Opération internemultiplication-accumulation entièresigne, saut ou copie — aucune multiplication
Quantification post-entraînementfonctionne bienne fonctionne pas — il faut entraîner en ternaire
Support matérielpartout, souvent avec instructions DSPaucun ; c'est de l'entier ordinaire
Parcimoniefortuitestructurelle — le niveau zéro est un saut gratuit

Mesuré, même réseau, même tâche

Octets de poidsPrécision
int8, 5 graines7 0440,9095 ± 0,0077
ternaire-32, déployable, 1 graine4 7650,9053
ternaire-32, flottant avant quantification, 5 graines0,9170 ± 0,0151

Lisez bien la ligne du milieu. 0,9053 est une seule graine du chemin déployable, face à une moyenne int8 sur cinq graines. C'est nominalement en dessous de int8. Ce qui est acquis, c'est un artefact déployable et vérifié en C à 4 765 octets, avec une parité exacte sur 2947/2947 fenêtres — 1,48× plus petit que int8. Ce n'est pas un résultat de précision.

Pourquoi on ne peut pas quantifier en ternaire après coup

int8 tolère l'arrondi d'un modèle flottant déjà entraîné : 256 niveaux suffisent à rester près de la valeur d'origine. Trois niveaux, non ; l'arrondi naïf détruit le réseau. Les modèles ternaires s'entraînent en ternaire dès le départ avec un estimateur à passage direct. Conséquence pratique : adopter le ternaire est une décision d'entraînement, pas de déploiement. On ne peut pas l'essayer en fin de projet.

Que choisir

ChoisissezQuand
int8Le modèle est déjà entraîné ; le composant a un DSP ou du SIMD à exploiter ; la flash n'est pas la contrainte qui mord.
TernaireLa flash est la contrainte ; le cœur n'a ni unité flottante ni SIMD utile ; vous entraînez de toute façon depuis zéro.
Ni l'un ni l'autre, pour l'instantVous n'avez pas mesuré quelle ressource mord réellement. Commencez par là.