Bootgpt превращает загрузочный сектор в небольшую нейросетевую систему. Написанный вручную на ассемблере MBR занимает 512 байт и загружает int8-модель размером 11,5 КБ из следующих 23 секторов. Вычисления выполняются в 16-битном реальном режиме на процессоре 386 без операционной системы и C runtime. В результате компьютер генерирует выдуманный журнал загрузки Linux с временными метками, PCI-адресами и ACPI-событиями для несуществующего оборудования.
Модель работает посимвольно, использует контекст из восьми символов и один скрытый слой. Качество текста ограничено размером сети: строки лишь напоминают настоящий dmesg, хотя отдельные фрагменты выглядят правдоподобно. Генератор corpus_gen.py создаёт 3 МБ искусственных журналов. Повторяемость реальных загрузочных сообщений помогает крошечной модели воспроизводить узнаваемую структуру.
Скрипт train.py обучает embeddings, скрытый слой и softmax, а затем квантует параметры в int8 со степенями двойки в качестве масштабов. Благодаря этому forward pass в загрузочном секторе выполняется целочисленными imul и одним idiv. Python-сценарий также моделирует точную арифметику ассемблера и генератор случайных чисел, поэтому результаты двух реализаций можно сравнить посимвольно.
В boot.asm находятся загрузка весов через BIOS int 13h, вывод через int 10h, активация softclip и argmax sampling с шумом, инициализируемым таймером. Нажатие любой клавиши перезагружает машину. Сам MBR содержит только код: строки, словарь и веса вынесены в сектора данных, иначе inference и работа с BIOS не поместились бы в доступные 510 байт.
Образ disk.img можно записать на USB-накопитель и запустить на BIOS-компьютере; программа читает только собственные сектора. Для эмуляции предусмотрены NASM и QEMU. Автор отличает проект от sectorllm с настоящим transformer llama2: Bootgpt выбрал другую крайность — весь движок находится внутри MBR, а специализированная сеть делает ровно одну вещь, выдумывая журнал загрузки.