Architecture du cluster

Le projet ESP32s3‑LLM‑Cluster répartit un modèle de langage de 0,4 milliard de paramètres sur sept puces ESP32‑S3. Une puce joue le rôle de maître : elle effectue le tokenizer et la couche d’embedding. Les six nœuds restants exécutent les couches d’attention et les MLP. La communication s’effectue via une chaîne en étoile SPI à haute vitesse, chaque nœud étant relié au suivant dans un « daisy‑chain ». Cette topologie minimise le nombre de lignes de signal et exploite la bande passante native du SPI (jusqu’à 80 MHz sur l’ESP32‑S3), mais impose une latence additive à chaque saut de nœud.

Quantification 1,58‑bit (BitNet) et contraintes mémoire

Le modèle est compressé grâce à la quantification ternaire de BitNet, qui représente chaque poids avec 1,58 bit au lieu des 32 bits habituels. Cette réduction diminue la taille du modèle d’environ 20 fois, rendant possible son stockage dans la mémoire flash de 4 Mo disponible sur chaque ESP32‑S3. La quantification impose toutefois une perte de précision : les opérations de multiplication‑accumulation (MAC) sont remplacées par des additions/subtractions pondérées, ce qui affecte la qualité des prédictions, surtout sur des tâches nécessitant une finesse sémantique.

Le découpage du modèle en tranches (slicing) permet de charger uniquement la partie nécessaire sur chaque nœud. Le maître conserve les embeddings (environ 200 Mo en version pleine, réduits à < 10 Mo après quantification) tandis que les nœuds reçoivent les matrices d’attention et les poids des MLP en blocs de 256 Ko chacun, adaptés à la RAM SRAM de 520 KB de l’ESP32‑S3. Cette approche évite les dépassements de capacité mais crée une dépendance forte à la synchronisation du SPI : tout désalignement entraîne un blocage du pipeline.

Performances, limites et perspectives

Les benchmarks fournis par le dépôt indiquent un débit d’environ 2 tokens / seconde pour le modèle complet, ce qui correspond à une latence de 0,5 s par token. Ce chiffre est cohérent avec la bande passante SPI et le nombre d’opérations MAC ternaires (environ 10 MFLOPs par token). La consommation énergétique reste inférieure à 500 mW en mode actif, grâce à la faible fréquence d’horloge (80 MHz) et à l’absence de calculs en virgule flottante.

Les limites majeures résident dans la précision du modèle (dégradation de ~10 % de perplexité comparée à la version 32‑bits) et dans la scalabilité du réseau : ajouter davantage de nœuds augmente la latence SPI de façon quasi‑linéaire. De plus, la gestion du flux de données nécessite un firmware très strict ; toute perte de synchronisation provoque une re‑initialisation du chaînage.

Sur le plan prospectif, l’architecture pourrait bénéficier d’une interface UART / DMA ou d’un bus I²S dédié pour réduire la latence inter‑nœuds. L’adoption de quantifications plus agressives (2‑bit ou 1‑bit) pourrait encore réduire l’empreinte mémoire, mais à un coût de précision supplémentaire. Enfin, la migration vers des microcontrôleurs dotés de RAM LPDDR offrirait un espace de travail suffisant pour des modèles de 1 B paramètres, ouvrant la voie à des applications d’inférence locale plus ambitieuses.