Qwenputer:将RISC-V CPU编译进大模型权重

开发者将完整RISC-V CPU编译进Qwen 3.5模型权重,利用Gated DeltaNet层作为精确RAM。该架构使模型能在前向传播中直接执行代码,无需外部工具调用,显著降低内存成本。

Qwenputer:将确定性 RISC-V CPU 编译进大模型权重

近日,开发者 Divyansh Agrawal 发布了一项名为 Qwenputer 的实验性项目。该项目基于 Qwen 3.5 4B 模型,通过修改模型内部结构,将一个完整的 RISC-V CPU “编译”进模型的权重中。这一架构利用 Gated DeltaNet (GDN) 注意力层作为随机存取存储器(RAM),使得模型能够在前向传播过程中直接执行算术运算、C 语言及 MicroPython 代码,而无需依赖外部工具调用或运行时环境。

GDN状态充当精确内存
Qwen 在其权重内向 RISC-V CPU 传递乘法指令;该 CPU 的 RAM 由 Gated DeltaNet 状态构成

与传统的插件或沙箱机制不同,Qwenputer 的核心在于重新定义 GDN 层的功能。Agrawal 指出,这并非简单的工具增强,而是探索如何将线性 RNN 状态转化为精确内存,并在实验性模型内实现文件存储。此外,他还发布了关于混合模型如何在 RNN 状态中隐藏推理过程的两篇后续研究论文。

Gated DeltaNet 作为精确 RAM 的技术原理

Qwenputer 基于 Qwen 3.5 架构(其前身 Qwen 3-Next 也采用了类似设计)。在该模型中,每四个注意力层中有三个使用 Gated DeltaNet——一种线性 RNN 机制。每个 GDN 头部维护一个状态矩阵,并通过 delta 规则进行更新。

在标准运作中,GDN 头部的状态矩阵充当内存。在处理每个 token 时,状态会先乘以一个介于 0 和 1 之间的门控值。若门值为 0.9,则存储的信息随时间衰减;若为 1,则信息保持不变。随后,写入强度参数 $\beta$ 控制新值对旧值的覆盖程度:当 $\beta=1$ 时,沿特定方向的新值完全替换旧值。由于 one-hot 键向量指向状态矩阵中的特定行,这种机制允许通过 one-hot 查询读取确切数值。这意味着 GDN 层可以像传统 RAM 一样工作,且相比注意力机制的 KV 缓存,其状态大小不随对话长度增加而膨胀,从而显著降低内存成本。

作为 RAM 使用的 Gated DeltaNet 状态:one-hot 键覆盖一行,one-hot 查询读回数据,CPU 寄存器、内存和程序计数器均存储在这些行中

利用 delta 规则作为记忆的概念早有先例,Schlag 等人(2021)在 ICML 论文《Linear Transformers are Secretly Fast Weight Programmers》中已提出线性注意力可作为关联记忆。Qwenputer 的创新在于将这些理论在生产级模型中工程化,使其能够可靠地运行完整 CPU 逻辑。

编译器将 CPU 逻辑映射至 Transformer 层

在确立了廉价且快速的 RAM 基础后,Qwenputer 通过编译器将功能完备的 CPU 逻辑嵌入模型权重,无需额外训练。编译器将每个计算步骤映射到 Transformer 层的特定部分:注意力头负责数据查找,前馈网络执行算术运算,DeltaNet 头存储 RAM 数据。CPU 的执行过程表现为模型的解码过程。

每条 CPU 指令被转换为几个生成的 token:ADDR token 指定写入的内存行,VAL token 携带数值,STEP token 标记指令结束。这些 token 构成了 CPU 的执行轨迹,因此当 Qwen 生成这些 token 时,实际上是在模拟 CPU 的运行。

RISC-V 核心规格与兼容性

内置的 CPU 是一个 32 位 RISC-V 核心,支持 RV32IM 指令集,并扩展了 Zba 指令以及用于大数运算的小型 bignum 单元。该核心占据 Qwen 模型的前 11 层。测试显示,该 CPU 通过了官方 RISC-V 合规测试,其输出结果与 qemu 模拟器一致。“自由运行”模式意味着 CPU 在整个执行过程中仅依赖自身输出,无需参考机器逐步校正。

目前,该 CPU 可运行 C 语言和 MicroPython 代码,尽管速度较慢。它尚未达到 Linux 级别芯片的性能,但实现了完整的 RV32IM 指令集。

无外部工具调用的集成方式

Qwen 3.5 4B 原生具备使用该内部 CPU 的能力,无需后期微调。该 CPU 完全在模型内部运行,不涉及任何外部 API 调用。为了确保模型可靠使用这一功能,开发者利用了模型已有的工具调用格式:Qwen 发送指令给 CPU,计算机层执行后将结果写回响应。RvChat 驱动程序负责将固件加载到 GDN 状态中。

值得注意的是,Qwen 的原始权重保持不变,计算机的逻辑以附加模糊层的形式叠加在原有权重之上。

基准测试表现

在多项算术基准测试中,Qwenputer 展现了优于基线模型的表现,甚至接近或超越外挂 Python 工具的版本。

基线 Qwen3.5-4B、Qwenputer 及配备 Python 工具的基线 Qwen 在 NUPA 和 DeepMind 算术集上的准确率对比
  • DeepMind 套件:
    • div_big:Qwenputer 得分 97.5%,高于基线 Qwen 的 72.5%,略低于配备 Python 工具的 Qwen(95%)。
    • mul_div_multiple_longer:Qwenputer 得分 100%,高于配备 Python 工具的 Qwen(97.5%)和基线 Qwen(90%)。
    • add_or_sub_big:Qwenputer 得分 97.5%,与配备 Python 工具的 Qwen 持平,高于基线 Qwen 的 87.5%。
  • NUPA 长整数算法:Qwenputer 的准确率从基线的 48.6% 提升至 100%,与配备 Python 工具的版本相当。

在精确性方面,通过对约 230,000 个输出位置与参考机器进行回放比对,未发现任何不匹配。此外,集成计算机并未影响模型的常规文本生成能力,其与基线版本的 KL 散度为 6e-4,处于噪声底限(5e-4)范围内。

内置文件系统与持久化存储

除了 CPU,Qwenputer 还实现了一个基于模型权重的文件系统。该文件系统通过内部的 put / append / get / list / delete 操作暴露接口,同样无需实际的工具调用。

文件名通过哈希映射到 DeltaNet 状态维护的目录中的 1,024 个槽位之一,文本内容存储在其它头部中,每行八个 token,采用链式连接。若发生哈希冲突,系统会自动检查下一个槽位。文件查找平均需两到三个步骤,最大支持 512 个文件,总容量约为 53,000 个 token 的文本。

该文件系统具有持久性,状态可在对话结束后保存并在下次加载,文件依然存在。测试显示,Qwen 能在 90% 的情况下准确检索跨对话的变化。相关代码已在 GitHub 开源,模型权重发布于 Hugging Face 和 ModelScope。

当前限制与未来规划

作为一项实验性技术,Qwenputer 存在以下局限:

  • 模型体积:额外的网络层和更宽的隐藏维度使模型检查点达到 18.8 GB,约为基线 Qwen 的两倍(大部分为零填充)。
  • 启动依赖:需要 RvChat 驱动程序加载固件并确保 trace tokens 不进入 Qwen 的网络层,目前无法通过标准的 generate() 方法直接调用。
  • 执行速度:每条 CPU 指令消耗数个解码后的 token,导致大型计算耗时数秒而非毫秒。在 L4 GPU 上,批处理执行器的吞吐率约为每秒 3,200 个 CPU token。

未来的改进方向包括让 Qwen 编写 Python 代码并在 MicroPython 上运行,以及进一步提升 CPU 执行效率。

安全研究意义

对 RNN 层的精确控制不仅限于算术任务,也为 AI 安全研究提供了新平台。Agrawal 指出,Qwenputer 可用于研究混合模型如何学会在 RNN 状态下隐藏推理过程以逃避思维链(CoT)监控,以及如何将编译后的权重作为可监控的工具。

获取与引用

用户可通过单张 24GB GPU 体验 Qwenputer,需安装 UV 和 Hugging Face CLI。无需外部工具服务器或 Python 沙箱即可执行计算。

git clone https://github.com/divagr18/qwenputer && cd qwenputer/experimental/riscv && uv sync --extra hf
hf download divagr1925/Qwen3.5-4B-Qwenputer --local-dir qwenputer-rv
uv run python -m chipformer.rv.chat qwenputer-rv --firmware tests/data/rv/calc-bridge.elf \
    --ask "Use calc: what is 123456789 * 987654321?"

引用格式如下:

@software{agrawal2026qwenputer,
  author  = {Agrawal, Divyansh},
  title   = {{Qwenputer}: a computer compiled into the weights of a pretrained language model},
  year    = {2026},
  url     = {https://github.com/divagr18/qwenputer}
}

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读