Введение в мир экстремального ретро-компьютинга и ИИ

Пока индустрия соревнуется в построении дата-центров размером с город, а инженеры выбивают бюджеты на новые кластеры H100 (которые потом падают с ошибкой Out of Memory от одной открытой вкладки с документацией), впору задать себе неудобный вопрос: а что, если весь наш современный софт катастрофически раздут? Прямо сейчас, пока вы читаете эти строки, энтузиаст Мэтт Бетон доказывает миру суровую правду: авторегрессионная языковая модель отлично чувствует себя на кремнии полувековой давности. Давайте разберем этот безумный эксперимент.

Современная индустрия искусственного интеллекта прочно ассоциируется с гигантскими дата-центрами, кластерами из тысяч ускорителей NVIDIA, терабайтами оперативной памяти и моделями с сотнями миллиардов параметров. На этом фоне запуск нейросетей на ретро-процессорах из прошлого века кажется абсолютной инженерной фантастикой. Однако энтузиаст Мэтт Бетон (Matt Beton) доказал обратное, заставив авторегрессионную языковую модель работать на легендарном 8-битном процессоре MOS 6502.

Процессор MOS 6502, выпущенный в 1975 году, стал сердцем целой эпохи персональных компьютеров и консолей: на нём работали Apple II, Commodore 64, Atari 2600 и NES. Запустить ИИ на кремнии полувековой давности — задача, осложненная архитектурными лимитами: крошечным объемом RAM, полным отсутствием аппаратной поддержки чисел с плавающей запятой и 8-битной шиной данных. Проект Бетона наглядно демонстрирует, как глубокое понимание математики нейросетей и жесткая оптимизация кода позволяют преодолевать железобетонные ограничения.

Архитектура MOS 6502 и вызовы для нейросетевых вычислений

Представьте, что вам нужно написать бэкенд для маркетплейса, но объем оперативной памяти ограничен размером одного крупного текстового файла, а процессор работает медленнее, чем калькулятор из FixPrice. Примерно в таких условиях приходится выживать разработчикам, заглядывающим под капот ретро-архитектур.

Чтобы оценить масштаб проделанной работы, достаточно взглянуть на технические характеристики MOS 6502. Это 8-битный чип с 16-битной шиной адреса, позволяющей адресовать максимум 64 КБ памяти. Тактовая частота оригинальных процессоров составляла от 1 до 2 МГц. В таких условиях даже банальные алгоритмы сортировки требуют оптимизации, не говоря уже о матричных умножениях.

Основные преграды для инженеров, решивших запустить ML на ретро-железе:

  • Критический дефицит памяти: 64 КБ — объем, которого современным веб-страницам не хватит даже на иконку. В этот лимит должны поместиться код, веса модели и контекстный буфер.
  • Отсутствие FPU (Floating Point Unit): Чип работает исключительно с целыми числами. Программная эмуляция float-значений «убивает» производительность (примерно так же, как попытка запустить Electron-приложение на старом ноутбуке).
  • Ограничения шины: 8-битная архитектура заставляет процессор тратить множество тактов даже на чтение простых двухбайтовых переменных.

Как заставить ИИ работать на 64 КБ памяти: секреты оптимизации

Когда «тяжелый» Python и фреймворки остаются за бортом, в дело вступает чистая магия ассемблера. Преодолеть пропасть между требованиями современных трансформеров и возможностями ретро-чипа помогает тотальная пересборка пайплайна под жесткие стандарты прошлого века.

Главным трюком при адаптации языковых моделей под столь ограниченные системы становится агрессивная квантизация. Если современные модели используют 16-битные или 8-битные веса, то для MOS 6502 разработчикам приходится сжимать параметры до экстремальных значений (вплоть до тернарного квантования {-1, 0, 1} или бинарных весов).

Вместо тяжелых операций с плавающей запятой вся математика переводится в целочисленную арифметику (fixed-point math) или битовые операции. Примерно так выглядит концепт эффективного сложения с фиксированной точкой на ассемблере 6502:

;
; Простейший пример оптимизированной операции в фиксированной точке
;
LDA low_byte_a
CLC
ADC low_byte_b
STA result_low