22 Punkte von GN⁺ 2025-12-30 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Z80-μLM ist ein ultrakompaktes konversationelles KI-Modell, das auf einem Z80-Prozessor aus dem Jahr 1976 (4 MHz, 64 KB RAM) läuft
  • Durch den Einsatz von quantisierungsbewusstem Training (QAT) erzeugt es zeichenbasierten Text nur mit 2-Bit-Gewichten und 16-Bit-Ganzzahloperationen
  • In einer etwa 40 KB großen .COM-Datei sind Inferenz-Engine, Gewichte und Chat-UI vollständig enthalten
  • Mit Trigramm-Hash-Encoding wird die Eingabe in 128 Buckets umgewandelt, wodurch robuste Antworten gegenüber Tippfehlern oder veränderter Wortreihenfolge entstehen
  • Komplexes Kontextverständnis ist nicht möglich, dennoch gilt es als experimentelles KI-Modell, das selbst in einer eingeschränkten 8-Bit-Umgebung funktioniert

Projektüberblick

  • Z80-μLM ist ein ultrakleines Sprachmodell, das in Retrocomputing-Umgebungen lauffähig ist
    • Es läuft auf einer Z80-CPU mit 64 KB RAM und erzeugt interaktive Antworten auf Zeichenebene
    • Die Gesamtgröße inklusive Modell, Inferenz-Code und UI beträgt rund 40 KB
  • Die zentrale Frage des Projekts lautete: „Wie klein kann man es machen, ohne die Persönlichkeit zu verlieren?“, und auch eine Self-Hosting-Bereitstellung ist möglich
  • Es erreicht nicht das Niveau eines Turing-Tests, ist aber in der Lage, Nutzerinnen und Nutzern mit einfachen Gesprächen Freude zu bereiten

Enthält zwei Beispiele

  • tinychat

    • Ein einfacher Chatbot, trainiert mit alltäglichen Q&A-Daten
      • Bietet kurze, charaktervolle Antworten auf Begrüßungen, Selbstvorstellungen und allgemeine Konversation
      • Beispiel: „hello“ → „HI“, „are you a robot“ → „YES“, „do you dream“ → „MAYBE“
  • guess

    • Ein Modell im Stil des Spiels 20 Questions
      • Es kennt ein geheimes Thema und antwortet mit YES/NO/MAYBE
      • Wenn der Nutzer die richtige Antwort errät, gibt es „WIN“ aus
  • Trainingsdaten können mit Ollama oder der Claude API erzeugt werden; ein Tool zum Ausbalancieren der Klassenverteilung ist enthalten

Hauptfunktionen

  • Trigramm-Hash-Encoding: Hasht den Eingabetext in 128 Buckets, toleriert Tippfehler und ist unabhängig von der Wortreihenfolge
  • 2-Bit-Gewichtsquantisierung: Jedes Gewicht ist eines aus {-2, -1, 0, +1}, vier Gewichte werden pro Byte gespeichert
  • 16-Bit-Ganzzahl-Inferenz: Nutzt die 16-Bit-Arithmetik des Z80
  • ~40 KB .COM-Datei: Passt in den Transient Program Area (TPA) von CP/M
  • Autoregressive Generierung: Erzeugt die Ausgabe Zeichen für Zeichen
  • Keine Gleitkommaoperationen, stattdessen Fixed-Point-Skalierung
  • Unterstützt interaktiven Modus: Start über den Befehl CHAT

Art der Interaktion

  • Das Modell „versteht“ die Eingabe nicht, reagiert aber auf Basis der Form (shape) der Eingabe
    • Eingabesätze werden in 128 Trigramm-Buckets umgewandelt, wodurch semantische Ähnlichkeit erhalten bleibt
    • Beispiel: „hello there“ und „there hello“ werden mit derselben Bucket-Struktur verarbeitet
  • Lange Sätze oder von Reihenfolge abhängige Formulierungen lassen sich schwer unterscheiden
  • Die Bedeutung kurzer Antworten

    • Selbst Antworten mit 1–2 Wörtern können unerwartete Nuancen ausdrücken
      • OK: neutrale Zustimmung
      • WHY?: stellt die Frage infrage
      • R U?: Zweifel an der Existenz
      • MAYBE: Unsicherheit
      • AM I?: reflektierende Gegenfrage
    • Solche kurzen Antworten regen die Nutzer dazu an, den Kontext selbst zu erschließen

Stärken und Grenzen

  • Stärken
    • Konsistente, klassifikationsartige Antworten auf kurze Eingaben
    • Robust gegenüber Tippfehlern, Umformulierungen und Änderungen der Wortreihenfolge
    • Persönlichkeitsausdruck durch Wortwahl
    • Lauffähig selbst auf eingeschränkter 8-Bit-Hardware
  • Grenzen
    • Keine Erzeugung neuer Sätze möglich
    • Kein Multi-Turn-Kontext-Tracking
    • Kein Grammatikverständnis
    • Erreicht nicht das Niveau allgemeiner Intelligenz

Architektur

  • Eingabeschicht: 128 Query-Buckets + 128 Kontext-Buckets
  • Hidden Layers: Beispielkonfiguration 256 → 192 → 128
  • Ausgabeschicht: Ein Neuron pro Zeichen des Zeichensatzes
  • Aktivierungsfunktion: ReLU
  • Quantisierungsbeschränkungen

    • Der Z80 ist zwar eine 8-Bit-CPU, führt Akkumulation und Aktivierung jedoch mit 16-Bit-Registerpaaren (HL, DE, BC) aus
    • Gewichte werden zu je 4 in 1 Byte gespeichert (je 2 Bit)
    • Ein 16-Bit-Akkumulator verhindert Overflow beim Summieren von 256 Eingängen
    • Durch 2-Bit-Gewichte ist die Ausdruckskraft begrenzt; ohne QAT können instabile Trainingsergebnisse auftreten
  • Z80-Innenschleife

    • Das Herzstück der Inferenz ist eine Multiply-Accumulate-Schleife (MAC)
      • Gewichte werden entpackt und je nach Wert -2, -1, 0 oder +1 zum Akkumulator (ACC) addiert oder davon subtrahiert
      • Nach der Berechnung jeder Schicht wird zur Overflow-Vermeidung um 2 Bit nach rechts geshiftet
    • Der gesamte Inferenzprozess wiederholt pro Zeichen etwa 100.000 Rechenoperationen

Lizenz

  • Wahlweise MIT oder Apache-2.0

Noch keine Kommentare.

Noch keine Kommentare.