跳到正文
Hacker News· kerlenton·· 2 天前精选AI 评分74

bootgpt 在 PC 启动扇区运行 11.5 KB int8 字符级模型

Show HN: A language model that lives in a boot sector

AI 导读

bootgpt 将一个 11.5 KB 的 int8 字符级模型放在启动扇区后的 23 个扇区中,使它在无操作系统、无 C 运行时的 386 16 位实模式下直接运行。

推荐理由

项目将模型推理引擎压进 510 字节 MBR,并以逐字符差分校验 Python 与汇编输出,呈现了微型模型从训练到启动扇区运行的完整实现。

正文 · AI 翻译

一个能够启动你电脑的神经网络。

MBR 是 512 字节的手写汇编代码。它从接下来的 23 个扇区加载一个 11.5 KB 的 int8 模型, 并在 386 上以 16 位实模式运行。没有操作系统, 没有 C 运行时,什么都没有。机器醒来后,梦见了一份 Linux 启动日志: 时间戳、PCI BAR,以及涉及从未存在过的硬件的 ACPI 事件。

demo

构建线程:https://x.com/krlntn/status/2116514628457185757

在只有 8 个字符上下文和一个隐藏层的情况下, 生成质量大致就是这样的:

[  2.283888] pci 0000:01:01.4: [1b36:0a35] ryndrde c4128 6422 Vveine
[  1.953886] pci 0000:01:1f.2: reg 0x10: [mem 0x7e4515e5-0x2d766c27] usbbore: reg
[  0.206596] Command line: BOOT_IMAGE=/vmlinu -5.5.2-1-generic gcc version 13.3.0, GNU ld ...
[  1.815765] ACPI: PCI Interrupt Link [LNKA: v/s.xos212
[  1.883084] NET: Registered protocol family 16

运行它

brew install nasm qemu
python3 -m venv .venv && .venv/bin/pip install numpy
./build.sh
./run.sh

disk.img 是一个普通的启动镜像。用 dd 将它写入 U 盘,如果你有 BIOS 机器,就从任意一台 BIOS 机器启动。它只读取自己的扇区。

组成部分

corpus_gen.py 可生成 3 MB 的伪造 dmesg。每次启动会话对应一个内核版本和一块磁盘, 因为真实的启动日志会反复出现,而正是这种 重复让一个微型模型看起来还算正常。

train.py 负责训练模型(字符嵌入、一个隐藏层、softmax), 并使用 2 的幂次缩放因子将所有内容量化为 int8,因此启动 扇区只需用 imul 和一次 idiv 就能完成整个前向传播。该 脚本还会模拟汇编代码将要执行的精确整数运算,包括 LCG 采样器,因此可以对 Python 输出和启动扇区输出进行 差异比较。二者逐字符一致。

boot.asm 是整个运行时:用 int 13h 加载权重,用 int 10h 打印,用 cdq/idiv 实现 softclip 激活函数,并以定时器 为噪声种子进行 argmax 采样。按任意键都会重启机器。

record.py 通过监控套接字从无头 QEMU 录制演示 GIF。 无需任何窗口。

启动扇区只包含代码。字符串、权重和词表全部 位于数据扇区;这是将推理和 BIOS 配套代码一并塞进 510 字节的 唯一方式。

既有工作

启动扇区这一流派历史悠久且辉煌。Oscar Toledo 把 chess、一整套 操作系统,甚至一个 BASIC 解释器 都放进了启动扇区, 其他人还编写了一款 C 编译器, 全部都塞在 512 字节内。他写的启动扇区游戏之书值得一读。

最接近的项目是 sectorllm, 它用大约 1.2 KB 的实模式汇编代码启动一个真正的 llama2 变压器(5 层、注意力机制等一应俱全), 运行 Karpathy 的 stories260K 模型。sectorlisp-nn 在启动过程中 通过 Lisp 解释器运行一个由 TensorFlow 训练的网络,而且 还有一些 UEFI 应用能在现代硬件上直接启动 llama 级别的模型。

bootgpt 走向了另一个极端:整个引擎本身就能塞进 510 字节的 MBR,权重和字符串位于后续扇区;这个 模型并非通用的故事生成器,而是一个只为唯一目标训练的微型字符级网络, 专门为其所运行的机器幻构启动日志。

来源:Hacker News · github.com