22 points par GN⁺ 2025-12-30 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Z80-μLM est un modèle d’intelligence artificielle conversationnel ultra-compact qui fonctionne sur un processeur Z80 de 1976 (4 MHz, 64 Ko de RAM)
  • Grâce à l’apprentissage sensible à la quantification (QAT), il réalise une génération de texte au niveau des caractères avec seulement des poids sur 2 bits et des opérations entières 16 bits
  • Un fichier exécutable .COM d’environ 40 Ko contient à lui seul le moteur d’inférence, les poids et l’interface de chat
  • Un encodage par hachage trigramme convertit l’entrée en 128 buckets, ce qui permet de produire des réponses robustes aux fautes de frappe et à l’ordre des mots
  • Il est incapable de comprendre un contexte complexe, mais attire l’attention comme modèle d’IA expérimental fonctionnant même dans un environnement 8 bits limité

Aperçu du projet

  • Z80-μLM est un modèle de langage ultra-compact pouvant fonctionner dans un environnement de rétro-informatique
    • Il tourne sur un CPU Z80 avec 64 Ko de RAM et génère des réponses conversationnelles au niveau des caractères
    • La taille totale, incluant le modèle, le code d’inférence et l’interface, est d’environ 40 Ko
  • La question centrale du projet était : « Jusqu’à quel point peut-on le réduire tout en conservant une personnalité ? », avec une distribution auto-hébergée également possible
  • Sans atteindre le niveau du test de Turing, il prend la forme d’un système capable d’amuser l’utilisateur par des échanges simples

Deux exemples inclus

  • tinychat

    • Un chatbot simple entraîné sur des données de questions-réponses du quotidien
      • Il fournit des réponses courtes et pleines de personnalité pour les salutations, la présentation de soi et les conversations générales
      • Ex. : « hello » → « HI », « are you a robot » → « YES », « do you dream » → « MAYBE »
  • guess

    • Un modèle sous forme de jeu des 20 Questions
      • Il connaît un sujet secret et répond par YES/NO/MAYBE
      • Lorsque l’utilisateur trouve la bonne réponse, il affiche « WIN »
  • Les données d’entraînement peuvent être générées à l’aide d’Ollama ou de l’API Claude, avec un outil d’équilibrage de la distribution des classes inclus

Fonctionnalités principales

  • Encodage par hachage trigramme : le texte d’entrée est haché dans 128 buckets, avec tolérance aux fautes de frappe et indépendance vis-à-vis de l’ordre des mots
  • Quantification des poids sur 2 bits : chaque poids vaut {-2, -1, 0, +1}, avec 4 poids stockés par octet
  • Inférence entière 16 bits : utilisation des opérations arithmétiques 16 bits du Z80
  • Fichier .COM d’environ 40 Ko : adapté à la Transient Program Area (TPA) de CP/M
  • Génération autorégressive : la sortie est générée caractère par caractère
  • Aucune opération en virgule flottante, utilisation d’un redimensionnement en virgule fixe
  • Prise en charge du mode conversationnel : exécution avec la commande CHAT

Mode d’interaction

  • Le modèle ne « comprend » pas l’entrée, mais réagit en fonction de la forme (shape) de celle-ci
    • La phrase d’entrée est convertie en 128 buckets de trigrammes, ce qui préserve une similarité sémantique
    • Ex. : « hello there » et « there hello » sont traités avec la même structure de buckets
  • Il a du mal à distinguer les phrases longues ou dépendantes de l’ordre
  • Le sens des réponses courtes

    • Même des réponses d’un ou deux mots peuvent exprimer des nuances étonnantes
      • OK : acceptation neutre
      • WHY? : remise en cause de la question
      • R U? : doute sur l’existence
      • MAYBE : incertitude
      • AM I? : question réflexive
    • Ces réponses courtes incitent l’utilisateur à déduire lui-même le contexte

Points forts et limites

  • Points forts
    • Réponses de type classification cohérentes pour des entrées courtes
    • Bonne robustesse face aux fautes de frappe, reformulations et changements d’ordre des mots
    • Expression d’une personnalité par le choix du vocabulaire
    • Exécution possible même sur un matériel 8 bits limité
  • Limites
    • Impossible de générer de nouvelles phrases
    • Impossible de suivre un contexte sur plusieurs tours
    • Incapable de comprendre la grammaire
    • Reste loin d’un niveau d’intelligence générale

Architecture

  • Couche d’entrée : 128 buckets de requête + 128 buckets de contexte
  • Couches cachées : exemple de configuration 256 → 192 → 128
  • Couche de sortie : 1 neurone par caractère du jeu de caractères
  • Fonction d’activation : ReLU
  • Contraintes de quantification

    • Le Z80 est un CPU 8 bits, mais il effectue l’accumulation et l’activation à l’aide de paires de registres 16 bits (HL, DE, BC)
    • Les poids sont stockés 4 par octet (sur 2 bits chacun)
    • Un accumulateur 16 bits évite les débordements lors de la somme de 256 entrées
    • La quantification sur 2 bits limite la capacité d’expression et, sans QAT, peut produire des résultats d’entraînement instables
  • Boucle interne du Z80

    • Le cœur de l’inférence est une boucle multiply-accumulate (MAC)
      • Les poids sont décompressés, puis ajoutés ou soustraits de l’accumulateur (ACC) selon les valeurs -2~-1~0~+1
      • Après le calcul de chaque couche, un décalage à droite de 2 bits est appliqué pour éviter les débordements
    • L’ensemble du processus d’inférence répète environ 100 000 opérations par caractère

Licence

  • MIT ou Apache-2.0, au choix

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.