Если вам казалось, что «запустить ИИ» — это обязательно про дата‑центр, GPU‑ферму и счёт за электричество, похожий на ВВП небольшой страны, то Z80‑μLM приходит и тихо пищит с зелёного экрана: «HI».
Z80-μLM — это крошечная «разговорная» языковая модель, которая умещается в примерно 40 КБ .COM‑файла и бежит на Z80 с 4 МГц и 64 КБ ОЗУ под CP/M. Внутри — и инференс, и веса, и даже простенький чат‑интерфейс. Никаких облаков, токенов и NDA — просто старый добрый восьмибитный железный романтизм, который особенно ценят и в России: ретросцена у нас сильная, народ любит выжать максимум из байта.
Маленький ИИ с характером
Автор задаётся простым вопросом: насколько маленькой может быть модель, чтобы у неё всё ещё была личность и её можно было легко дообучать? Ответ: до смешного маленькой. Она не пройдёт тест Тьюринга, но иногда заставит улыбнуться — особенно когда на ваше «do you dream» отвечает суховатым «MAYBE».
Из коробки есть два примера:
- tinychat — болтливый, но лаконичный чатбот, который общается короткими, характерными фразами:
> hello HI > are you a robot YES > do you dream MAYBE - guess — игра в «20 вопросов», где модель загадала объект и отвечает
YES/NO/MAYBE, пока вы не угадаете:> is it alive YES > is it big YES > does it have a trunk YES > is it grey MAYBE > elephant WIN
Магия триграмм и 2‑битных весов
Вместо полноценного понимания языка — trigram hash encoding: текст хэшируется в 128 «корзин», устойчивых к опечаткам и порядку слов. «hello there» и «there hello» для модели — одно и то же облако признаков. Длинные фразы, правда, превращаются в кашу: «open the door and turn on the lights» легко путается с «turn on the door and open the lights».
Веса модели ужаты до 2 бит: только четыре значения {-2, -1, 0, +1}, по четыре штуки в байте. Всё вычисляется в 16‑битных целых средствами самого Z80, без плавающей запятой. После каждого слоя — аккуратный арифметический сдвиг вправо, чтобы ничего не взорвалось.
Архитектура проста:
128 триграмм для запроса + 128 для контекста → несколько скрытых слоёв (например, 256 → 192 → 128) → по одному нейрону на каждый символ выходного алфавита. Активации — ReLU, генерация — по символу за раз.
Зачем всё это?
Z80‑μLM не претендует на роль всезнающего ассистента. Но он показывает, что ИИ может быть:
- самостоятельным — запускается прямо на железе 70‑х,
- компактным — десятки килобайт вместо гигабайт,
- обучаемым — есть инструменты генерации датасетов (через Ollama или Claude API) и QAT‑обучение, см.
TRAINING.mdв репозитории.
Иногда достаточно пары слов — OK, WHY?, MAYBE — чтобы между человеком и машиной пробежал тот самый странный, тёплый ток взаимодействия. Особенно когда этот ток идёт по старому, но всё ещё бодрому Z80.
