Autoregressive Language Model on the 6502 Processor
L'auteur a entraîné un petit modèle autoregressif basé sur Mamba et a écrit un moteur d'inférence pour le processeur 8 bits MOS 6502 d'un BBC Micro disposant de 32KB de RAM. Les poids et le code d'inférence ont dû tenir dans environ 25KB d'espace utilisateur (9KB pour le code, 13KB pour les poids), ce qui a conduit à utiliser BitNet avec quantification ternaire et un empaquetage de 4 paramètres par octet pour stocker environ 52k paramètres. Pour contourner l'absence d'instruction de multiplication et la contrainte de mémoire, l'implémentation emploie des accumulations ternaires rapides en C compilé avec CC65, des accumulateurs sur 16 bits, des activations 8 bits et un paramètre d'échelle appris (shift) pour éviter la saturation. Mamba a été préféré aux RNN classiques comme le GRU car son mécanisme évite l'explosion des gradients et le besoin d'un gros cache KV, rendant l'inférence récurrente à taille fixe adaptée au BBC Micro. La génération utilise un échantillonnage top-k approché par une table de valeurs exponentielles précomputées et un générateur pseudo-aléatoire sans graine, et le projet montre qu'il est possible de faire tourner un modèle de langage moderne sur du matériel des années 1980 en concevant le modèle en fonction du matériel.