LLM 能成为计算机吗?
复现 Percepta 关于在 Transformer 内执行程序、追加式轨迹与二维注意力快速路径的完整交互叙事。
摘要
最强的语言模型能处理高难度数学推理,却仍可能在长乘法、约束求解等机械计算中出错。通常的补救办法,是让模型写代码,再把代码交给外部解释器;Percepta 追问的是:能否让 Transformer 自己成为执行程序的机器?
他们把一个 WebAssembly 解释器编码进 Transformer 权重,使编译后的程序可以在同一次解码中产生确定性的执行轨迹。下面的完美匹配演示复现了原网页的第一幕:左边不是自然语言“思考过程”,而是模型内部执行匈牙利算法时不断增长的机器轨迹;右边是最终匹配。
求这个 10 × 10 费用矩阵的最小费用完美匹配:
61 58 35 86 32 39 41 27 21 42 59 77 97 99 78 21 89 72 35 63 88 85 37 57 59 97 37 29 69
94 32 82 53 20 77 96 21 70 50 61 15 44 81 10 64 36 56 78 20 69 76 35 87 69 16 55 26 37
30 66 86 32 74 94 32 14 24 12 31 70 97 63 20 64 90 21 28 49 89 10 58 52 27 76 61 35 17
91 37 66 42 79 61 26 55 98 70 17 26 86
发布方报告该演示在 CPU 上超过每秒三万 token。本站没有相同权重和运行环境,因此只复现界面、信息流与论证,不把动画中的吞吐数字视为独立测量。
动机:LLM 不擅长计算
“能解释算法”与“能准确执行算法”是两种能力。现有系统主要用两条路填补差距:
- 工具调用:模型输出程序,外部沙箱运行,再把结果塞回上下文。
- 智能体编排:外层状态机保存中间结果,把长任务拆成多次模型调用。
两者都很实用,但计算能力仍位于模型之外。模型负责描述或协调,解释器与状态机负责真正的执行。就像飞机能帮助人飞行,却没有让人体获得飞行能力一样,接上代码工具也不等于模型本身会计算。
真正的问题因此变成:Transformer 能否在自身的推理循环内,长时间、精确且高效地执行程序?理论上的图灵完备并不够;若一条机器指令在模拟器里要展开成巨大序列,表达能力仍无法转化为可用的执行效率。
把 Transformer 变成计算机
Percepta 的构造面向现代 RAM 计算机,而不是只满足理论通用性的抽象机器。一条指令最多映射为少量 token,权重承担解释器的角色,输入包含程序与数据,输出则是可检查的执行轨迹。
但短指令编码只解决了一半问题。标准自回归解码每产生一个新 token,都需要与不断增长的历史前缀交互。KV cache 避免重复计算旧 key 和 value,却没有消除对整个缓存的查询;轨迹越长,每一步的读取成本越高。
发布方提出的快速路径把执行型注意力头限制为二维,使主要的读取和更新可以借助几何数据结构在对数时间内完成。抽象规划仍可走常规路径,大量机械执行则走快速路径。
什么叫“模型内计算”?
若模型要算 3 + 5,工具调用通常是:生成 python -c "print(3+5)",暂停生成,等待外部解释器返回 8,再继续回答。执行过程对模型来说是黑箱。
模型内执行则先产生低级程序:
{ i32.const 03 00 00 00 i32.const 05 00 00 00 i32.add output }随后不离开解码循环,直接追加栈状态、加法结果、输出与停机 token。拖动下面的步骤,可以看到“把代码交出去”与“让代码继续成为模型输出”之间的区别。
工具调用 external
中间状态对模型不可见,执行发生在解码循环之外。
模型内执行 ours
WASM 程序03 00 00 0005 00 00 00i32.addout(08) · halt程序、栈变化和输出都成为同一条追加式 token 轨迹。
模型内轨迹是透明的:程序计数器、操作数栈、内存读写和控制流都能在历史中定位。它同时带来新的困难——历史只能增长,不能像普通内存一样原地修改。
更多演示:数独
数独是长程精确执行的压力测试。逐格猜答案的生成模型一旦早期犯错,往往难以恢复;而这里运行的是编译后的、确定性的求解程序。只要求解器正确,执行器就不需要“学会猜数独”。
原网页使用著名的 Arto Inkala 难题,报告在三分钟内完成。下面复现其可读日志与逐格输出;它运行的是本站内置解,而不是 Percepta 的 Transformer。
- 等待执行……
这个例子要说明的并非“自回归天然适合数独”,而是:当自回归序列可以可靠执行一个正确算法时,瓶颈从启发式猜测转移到了长轨迹的生成成本。
计算如何编码?
可以把 Transformer 想成一本不能擦除的计算笔记:开头是固定输入,之后每一行记录一个新步骤。旧行不能修改,新步骤只能通过少量注意力查询回看过去,再追加一个 token。
这看起来限制很强,但许多算法都能改写成只追加轨迹。下面的玩具任务逐词判断动词数量的奇偶性。每一步只需读两个位置:当前输入词,以及上一枚状态 token。无论句子多长,单步所需的逻辑回看次数保持不变。
只追加的计算轨迹
同样的编码可以表示虚拟机状态:指令指针、内存、操作数栈、调用栈、算术、跳转和输出。注意力头既能按索引读取以前写入的值,也能用累积和追踪栈深、调用深度等量。
问题随之集中到效率:即使每一步只需要少量逻辑查询,标准 attention 仍会物理扫描越来越长的 key 序列。
关键突破:指数级更快的 Attention
执行到第 个 token 时,标准 KVCache 的查询仍需与长度为 的前缀交互,单步工作为 ,生成 个 token 的总量接近 。发布方的 HullKVCache 把结构化查询降为 ,累计成本变为 。
下面复现原网页最重要的速度对照。青色一侧约 1.3 秒完成 9,580 行;黄色一侧按发布方数据约需 258.9 秒。拖动进度时,日志、完成行数和累计时间曲线同步变化,而不是把两个复杂度数字孤立地摆在一起。
HullKVCache 0 tok · 0 tok/s
{
compiling trace…
}Line 0 / 9,580 · 1.3s totalKVCache 0 tok · 0 tok/s
{
scanning prefix…
}Line 0 / 9,580 · 258.9s total收益最明显的地方恰好是“无聊”的确定性片段:复制、状态机推进、内存寻址和长机器轨迹。这些步骤不需要每次都付出完整注意力扫描的代价。
快速路径:二维注意力
二维限制针对每个 head,不是整个模型。模型维度仍可很大,只需使用更多 head;例如 d_model = 36 与 n_heads = 18 恰好给出每头二维。原型仍是标准多头注意力、前馈层和残差连接,特殊之处主要在权重构造与解码路径。
这种限制可能损失一般任务的表达效率,因此它不是所有注意力问题的万能解。发布方主张二维已经足以实现图灵完备的 RAM 计算机,并把它定位为通用模型旁边的执行快速路径。
二维注意力的几何视图
每个历史 token 提供二维 key 和 value ,当前 token 提供查询方向 。hard-max attention 要找的是令 最大的点。这等价于一个计算几何问题:沿方向 ,找到凸包上最远的支撑点。
Query q₁
Winner
k₅最大化 q · kⱼ
1 / 15 keys inserted
线性扫描会给所有 key 打分;凸包查询只需要访问边界上的少量候选点。二维之所以关键,是因为动态凸包能在对数时间回答支撑点查询。
索引读取也能编码为二维几何。把位置 存成
则
二次惩罚项保证与目标索引不同的位置无法获胜。因此“给我地址 最近写入的值”可以转成二维最大内积查询;而指针和栈深等累积量只需更简单的求和机制。
接下来是什么?
更丰富的注意力机制
当前构造使用 hard-max。近似 softmax 的一种方向,是从嵌套凸包取 top- 个 key,再只对这些候选做 softmax,目标成本为 。几何方法也能扩展到三维凸包,但维度继续上升时效率会迅速恶化。
用二维 head 训练大模型
二维 head 并不意味着参数量小:可以用更多 head 和层保持相同的 d_model。值得探索的部署方式包括专用执行器、全维推理与二维执行组成的快慢混合系统,以及由二维模型快速提议、常规模型验证的推测式解码。
若执行轨迹仍位于模型前向传播中,梯度便能穿过计算过程。这与外部工具不同:执行器可以成为可训练的内部计算基底。
把程序编译进权重
当前原型把解释器写入权重,程序仍作为 token 输入。更进一步,可以把特定程序直接编译成注意力和前馈网络权重,让权重本身成为软件部署目标。这样修改模型的手段就不只剩梯度下降,还可以显式写入结构、算法与保证。
像软件一样增长的 AI 系统
软件生态通过模块和库不断积累能力。如果算法能成为神经网络内部的一部分,模型也可能逐步接入新的计算模块,而不必每次从头训练整套系统。长远愿景不是让 AI 偶尔调用软件,而是让学习表征与编译算法生活在同一计算基底中。
结论与证据边界
原文给出的答案是肯定但有条件的:Transformer 可以在自身推理循环内执行程序,而二维注意力为百万步轨迹提供了可行的快速读取路径。它展示的重点不是又一个会写代码的聊天模型,而是把解释器、程序和逐步状态都放进同一条可见 token 流。
本站没有 Percepta 的模型权重、编译器、训练过程、CPU 基准环境或任意 C 程序的完整测试集,因此不能独立确认正确率、吞吐、数值边界或通用性。上面的交互完整复现原文论证顺序和演示含义;其中速度数字明确属于发布方报告,其他动画使用本站的确定性数据。
来源
- 原始结构、公开主张与演示参考:Can LLMs Be Computers?,Christos Tzamos 等,Percepta,2026-03-11。
- 本页中文为基于原文结构的重写与解释,不是逐句翻译。
- 复杂度公式重述了原文的线性 attention 与二维凸包快速路径;本站未进行独立基准复跑。