22 Punkte von GN⁺ 2025-12-30 | 2 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

2 Kommentare

 
crawler 2025-12-30

Es ist wirklich faszinierend, dass sich moderne Technologie auf so alter Hardware betreiben lässt.

Wenn in Zukunft AGI erscheint: Könnte man sie dann ausführen, wenn man die gesamte derzeit auf der Erde verfügbare Rechenleistung bündelt?

 
GN⁺ 2025-12-30
Hacker-News-Kommentare
  • Perfektes Timing. Ich habe in ein Unreal-Engine-Spiel ein VT100-Terminal eingebaut, um Coding-Agenten auszuführen, dazu einen Z80-Emulator und eine serielle Brücke, mit der man eine CP/M-Maschine programmieren kann
    Screenshot
    Ich hätte nie gedacht, dass jemand etwas postet, das so perfekt dazu passt. Eine wirklich seltsame, aber erstaunliche Koinzidenz
    • Es fühlt sich an, als hätten wir beide Telepathie
      Ich habe einen browserbasierten CP/M-Emulator und eine IDE gebaut: lockboot.github.io/desktop
      Eigentlich wollte ich den posten, aber bei der Suche nach einer „coolen Demo“ bin ich in einen Rabbit Hole geraten
    • James Burkes Buch Connections: Alternative History of Technology behandelt solche zufälligen Verbindungen sehr gut
    • Interessant, aber schade, dass ich imgur nicht ansehen kann
  • Gefällt mir wirklich sehr. Habe sofort einen GitHub-Star dagelassen
    Ich habe einmal ein MLP in Fortran IV für eine Lochkartenmaschine aus den 60ern geschrieben (Xortran-Projekt)
    Obwohl es keinen Attention-Mechanismus gab und der Kontext auf Trigramme des letzten Satzes beschränkt war, war die Interaktion ziemlich ordentlich
    Wenn so etwas schon auf Hardware aus den 60ern möglich gewesen wäre, hätten sich Science-Fiction und Wissenschaft dieser Zeit völlig anders entwickelt
    • Solche Projekte sind wirklich faszinierend. Es fühlt sich an wie ein Blick auf einen verpassten Pfad
      Wenn ich es verschwörungstheoretisch formulieren soll: Einer der Gründe, warum AI-Unternehmen massenhaft RAM aufkaufen, ist vielleicht, die Leute nicht erkennen zu lassen, dass die Gegenwart der Homecomputer-Revolution ähnelt
      Ich nutze eine Maschine mit 1 TB RAM, und mit einem Custom-Agenten ist sie leistungsfähiger als kommerzielle Modelle. Persönlich, sicher und nicht monetarisiert
  • Ich frage mich das auch oft. Was wäre ein „minimal funktionsfähiges LLM“? Also ein Modell, das zu einfachen Gesprächen fähig ist
    Und die nächste Frage wäre, ob man ein kleines Modell bauen kann, das externe Daten abfragt und dabei lernt
    Wenn man ein ultrakleines Modell erschaffen könnte, das in Echtzeit lernt, hätte man damit einen vollständig lokalen persönlichen Assistenten
    • Das ist fast genau Karpathys Konzept eines „cognitive core“
      Ein sehr kleines Modell mit kaum enzyklopädischem Wissen, aber grundlegender Fähigkeit zu Schlussfolgerungen und Tool-Nutzung
      Referenz-Tweet
    • Wenn es diese Technik in den 90ern gegeben hätte, hätte es vielleicht schon grundlegende LLMs gegeben
      Dann sähe die Welt heute wahrscheinlich völlig anders aus
    • RWKV ist in dieser Hinsicht interessant: rwkv.com
      Eine experimentelle Fallstudie dazu, wie es aussähe, wenn RNNs gut für LLMs geeignet wären
      Auf CPUs wahnsinnig schnell
    • Es gibt ein LLM, das jemand in Minecraft gebaut hat und das mit fünf Millionen 8-Bit-Gewichten einfache Gespräche führen kann
      Allerdings dürfte es schwer sein, ein großes Kontextfenster gut auszunutzen
  • Ein Witz darüber, dass AI-Unternehmen alle Z80-Chips aufkaufen und die Preise hochtreiben werden
    • Schon zu spät. Letztes Jahr waren die Lagerbestände bereits aufgebraucht
  • Wenn man einem Modell eine geheime Passphrase beibringt und Nutzer sie durch Fragen erraten müssen,
    frage ich mich, ob man dieses Geheimnis durch Zugriff auf die Gewichte rückwärts erschließen könnte oder ob es nur über Fragen zugänglich wäre
    • Bei der Frage musste ich an dieses Paper denken: Planting Undetectable Backdoors in Machine Learning Models
      Es behandelt Methoden, um intern nicht nachweisbare Backdoors einzupflanzen, während das Modell nach außen hin normal funktioniert
    • Je kleiner das Modell, desto leichter lässt sich so ein Geheimnis durch Analyse der Gewichte extrahieren
      Im Allgemeinen gehört das zum Problem der Interpretierbarkeit
  • Mit geeignetem Code und der passenden Trainingsinfrastruktur wäre ELIZA vermutlich deutlich leistungsfähiger gewesen
    • ELIZA lief ursprünglich auf einem IBM-7094-Mainframe der 1960er
      Mit einer Struktur aus 32K×36-Bit-Wörtern, ohne Unterstützung für Byte-Operationen
      Eine 40-KB-Z80-Binärdatei unverändert zu übertragen wäre ziemlich knapp gewesen
      Aber wenn der Großteil aus 2-Bit-Gewichten bestand, hätte es vielleicht funktioniert
      Auf späterer Hardware, besonders dem Z80 von 1976, wäre deutlich mehr Spielraum gewesen
  • Ich habe selbst auch einen Z80-Computer entworfen und gebaut. Aktuell hat er 32 KB ROM und 32 KB RAM
    In der nächsten Version will ich ihn erweitern und das unbedingt ausprobieren
    • RAM-Preise sind heutzutage viel zu hoch
  • Wenn der gesamte Input auf einmal als Embedding verarbeitet wird, scheint das weder ein Transformer noch ein RNN zu sein, sondern eher eine MLP-Architektur
  • Bei alten RPGs mit freier Texteingabe hätte ich mir so einen Fuzzy Matcher gewünscht
    Damals funktionierte meist nur exaktes Keyword-Matching, was sich unbeholfen anfühlte
    Vermutlich war das letzte Spiel dieser Art Wizardry 8 von 2001
  • Tolle Arbeit. Wie sieht eigentlich der erwartete Zeitplan bis zur AGI aus?
    • Wahrscheinlich irgendwann Anfang April
    • Vermutlich direkt hinter der nächsten Ecke