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
| int8 | Ternaire (1,58 bit) | |
|---|---|---|
| Valeurs par poids | 256 | 3 : −α, 0, +α |
| Bits par poids | 8 | ≈ 1,58, ~2 empaquetés |
| Opération interne | multiplication-accumulation entière | signe, saut ou copie — aucune multiplication |
| Quantification post-entraînement | fonctionne bien | ne fonctionne pas — il faut entraîner en ternaire |
| Support matériel | partout, souvent avec instructions DSP | aucun ; c'est de l'entier ordinaire |
| Parcimonie | fortuite | structurelle — le niveau zéro est un saut gratuit |
Mesuré, même réseau, même tâche
| Octets de poids | Précision | |
|---|---|---|
| int8, 5 graines | 7 044 | 0,9095 ± 0,0077 |
| ternaire-32, déployable, 1 graine | 4 765 | 0,9053 |
| ternaire-32, flottant avant quantification, 5 graines | — | 0,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
| Choisissez | Quand |
|---|---|
| int8 | Le 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. |
| Ternaire | La 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'instant | Vous n'avez pas mesuré quelle ressource mord réellement. Commencez par là. |