返回首页

nesformer

github 0.62
访问原文

介绍

nesformer 是 Drew Breunig(GitHub dbreunig)于 2026 年 10 月 30 日开源的项目:它把任天堂红白机(NES)的 CPU 直接编译进一个标准 Qwen3.5 语言模型的权重里。NES 的 6502 CPU(2A03 芯片核心)、2 KB 工作内存和卡带程序 ROM,全部在一个普通的 Qwen3_5ForCausalLM 检查点内部运行。

整个过程没有训练——每个权重都由编译器计算得出。玩游戏时,模型逐 token 预测 CPU 的执行日志,一个小的宿主程序负责画面、读手柄和触发 vblank 中断。演示包括**《超级马里奥兄弟》1-1 关**。

解释

原理

  • 基于 Qwenputer:复用了 Divyansh Agrawal 的 Qwenputer 项目编译器(该项目曾把 CHIP-8 和 RISC-V CPU 编译进 Qwen3.5-4B)。
  • 核心技巧:把模型 Gated DeltaNet 的循环状态直接当作机器内存,也就是说 Transformer 的隐藏状态里真的装着 RAM。
  • 精确性:对项目自带的测试游戏,每一帧画面都与传统 6502 模拟器的输出完全一致。
  • 分工:LLM 负责执行 CPU 指令;轻量宿主程序负责图形(PPU)、输入和中断。

为什么受关注

它生动地证明了现代 LLM 架构可以当作通用计算机:不用梯度下降,也能把真实、确定性的程序放进权重里。这对可解释性研究、“编译式”神经程序、以及给 LLM 加入精确算法模块的研究都有启发——当然也是一个很好玩的极客作品(在大模型里跑马里奥)。

用法

动手试试

  1. 从 github.com/dbreunig/nesformer 获取代码和权重(把 nesformer.zip 和 nesformer-weights.zip 解压到同一目录,权重放在 nesformer/ 包旁边,而不是里面)。
  2. 按 README 的 Quick start 运行自带的测试 ROM;其他游戏请使用你合法拥有的 ROM。
  3. 可与普通 6502 模拟器对比,验证逐帧一致。
  4. 想了解背景,可阅读 Divyansh Agrawal 的 Qwenputer 文章(divagr.com/blog/qwenputer)。