25KB内存跑通LLM:用1975年8位芯片验证Mamba与BitNet

25KB内存跑通LLM:用1975年8位芯片验证Mamba与BitNet

LLMMambaBitNet嵌入式量化

数据源:HN + web research

2026 年 6 月,开发者 Matt Beton 成功在 1975 年发布的 MOS 6502 处理器上运行了一个自回归语言模型。这台半个世纪前的 8 位芯片仅拥有 32KB 内存且完全没有乘法指令,却在磁带音频接口的载入下,输出了一串包含主谓宾结构的英文文本。

BBC Micro 运行 BitNet 模型输出文本的实物照片 图:BBC Micro 运行 BitNet 模型输出文本的实物照片。来源:mattbeton.com

25KB 内存约束下,Transformer 架构面临算力屏障

硬件预算将整个模型的运行空间严格压制在 25KB 用户空间内。这要求推理代码占用不超过 9KB,模型参数控制在 13KB,仅留下约 3KB 给运行时动态分配。

在如此苛刻的存储限制下,主流的 Transformer 架构无法正常工作。Transformer 的键值缓存(KV Cache,Key-Value Cache)会随着上下文生成序列的拉长而呈线性增长,极快地吃光静态随机存取内存(SRAM,Static Random-Access Memory)。25KB 的内存上限决定了 KV Cache 的动态扩张会引发系统崩溃,使得固定状态架构成为微型设备上的唯一可行选择。

循环模型固定状态示意图 图:循环模型固定状态示意图。来源:mattbeton.com

选择 Mamba 这类状态空间模型(SSM,State Space Model),能够确保隐藏状态在推理过程中始终保持恒定尺寸。无论是生成文本扩展到多少 token,每一步的计算形状与内存开销保持一致。工程数据表明,Mamba 凭借固定状态的计算特性,让 13KB 模型权重与 9KB 推理代码在 25KB 空间内实现稳定并行。

移位加法需 150 周期:BitNet 将矩阵乘法化简为加减法

MOS 6502 处理器缺乏硬件乘法器,执行一次 8×8 位的乘加操作需要依靠移位与加法指令循环,消耗约 150 个时钟周期。若直接采用全精度浮点或常规 8 位整数量化,庞大的矩阵乘法会让芯片的处理速度跌落至几分钟生成一个字符。

引入 BitNet 三值量化方案后,模型权重被限定在 {-1, 0, +1} 三个离散值。点积计算由此转化为纯粹的内存累加与加减法序列,单次累加开销大幅降低至约 30 个时钟周期。

在存储编码上,三值权重采用每参数 2 个 bit 的无损打包方式,每字节正好存放 4 个参数。13KB 的空间刚好装载 52,000 个参数。虽然每字节存放 5 个参数理论上能进一步压缩体积,但解包时需要频繁执行 6502 上极其昂贵的除以 3 运算,而 2-bit 拆包仅需执行廉价的右移指令,成功用微小的空间开销换取了吞吐量最大化。

克服梯度爆炸:Mamba 通道衰减的收敛优势

在追求固定内存占用的架构中,传统的门控循环单元(GRU,Gated Recurrent Unit)也能提供恒定的状态空间。但在极低比特量化的训练实验中,三值化的 GRU 模型出现了持续的梯度发散现象。

RNN(循环神经网络)类模型的数值误差会沿着前向矩阵的最大特征值指数级累积。在 BitNet 三值权重的离散约束下,转换矩阵的谱半径通常远大于 1。如果要强行维持衰减稳定,必须将接近三分之一的权重强制重置为 0,这会破坏极小模型的表达能力。

Mamba 的通道标量衰减参数在推理阶段通过公式实时计算,其衰减系数在数学构造上被严格约束在 (0, 1) 区间内。这种构造性边界确保了数值衰减幅度永远小于 1,使得模型即使缺乏全精度权重的微调,也不会出现激活值爆炸。

激活饱和与位移缩放:8 位累加器承载 56 维特征

受到芯片架构限制,激活值在推理阶段只能存储为 8 位整数,且隐藏维度设定为 56 维。在缺乏浮点扩展单元的累加器中,传统的硬切双曲正切(hardtanh)裁剪会导致严重的数值饱和。

实验表明,56 维度的激活向量在连续经过 64 项累加后,超过 83% 的数值会迅速触及上下界限并进入饱和区,导致特征信息大量丢失。为解决这一问题,训练流程引入了可学习的右移缩放参数 shr,计算公式为 activation = clip(x >> shr)

shr 参数每调整 1 位,相当于将累加值的幅度放缩一倍。在训练前半段,系统允许 shr 随梯度方向更新,后期则将其冻结为固定指令。工程实践证明,这种位移缩放机制成功避免了高维特征在 8 位整数累加器中的溢出问题。

极简工具链与复古算力的现实边界

项目的完整开发链条基于 C 语言编译器 CC65 构建,通过 sim65 模拟器与 Python 参考实现同步校验。最终生成的二进制镜像借助音频调制工具,通过 3.5mm 耳机接口直接写入 BBC Micro 的磁带输入口。

硬件最终顺畅输出了自回归文本,例句展现了微型模型的童话风格表达:「once upon a time tom and lily saw things lily were sad her house he heartd them ilily and tom said yes she saw a little girl smiled tom was so excited her mom said yes」。受限于 27 个字符的词表与 52k 参数量,模型的输出依然存在语法缺陷与语义重复。

然而这一实验的本质突破在于,它在剥离现代向量加速阵列与高带宽内存的极端环境下,完整验证了模型架构选型的物理约束法则。 当内存上限被强制扣留在 25KB 且硬件无原生乘法单元时,Mamba 的固定状态与 BitNet 的加法化量化越过了学术论文中的指标对比,转化为系统存活的必要条件。这个运行于半个世纪前古董芯片上的语言模型,展示了算力极端受限场景下技术演进的客观规律。

参考链接:

  • Matt Beton 个人博客:Running an LLM on a 1975 8-bit CPU
  • Hacker News 社区关于 6502 运行 Mamba+BitNet 的讨论