有一个 GitHub 项目最近在 Hacker News 上火了——nCPU。看起来像是个疯狂的想法:用 PyTorch 在 GPU 上模拟一个完整的 CPU,把寄存器、内存、标志位都变成张量,每一个算术运算都交给训练好的神经网络来处理。
有什么用吗?也许没什么实际用处。但它强行问了我们一个奇怪的问题:计算的本质到底是什么?
模糊的东西居然能精确计算
这是项目最诡异的地方。我们从小学就知道:算术是确定性的、精确的,1+1 永远等于 2。神经网络呢?大家的印象是它们"模糊的""概率的",用来做分类、生成这种不需要完全确定的任务。
nCPU 打破了这个直觉。23 个神经网络模型(总共 135MB),通过了 347 个自动化测试,整数运算达到 100% 的精确度。一个用来执行 ADD 指令的模型,可以完美地生成进位链,不会错一次。
这说明什么?说明"模糊"和"精确"之间的边界,也许没有我们想象的那么分明。神经网络本质上是一个通用的函数逼近器,只要训练充分,它可以学会任何规则——包括看起来很"硬"的、离散的、符号的规则。
反直觉的速度:乘法比加法快 12 倍
再看项目的性能数据,有一个发现让人目瞪口呆:在这个神经 CPU 中,乘法(MUL)只需要 21 微秒,而加法(ADD)需要 248 微秒。乘法比加法快 12 倍。
在所有我们用过的传统 CPU 中,情况完全相反。乘法总是更慢的。为什么?
答案就在硬件的物理约束上。加法需要处理进位链。最坏情况下,第一位的进位要传播到最后一位,这是一个串行的过程。传统硬件优化这个问题,用 Kogge-Stone 这样的进位前瞻算法,但即使优化后,还是避免不了物理上的顺序依赖。
乘法呢?虽然数学上更复杂,但它的并行性更好——你可以并行计算多个部分积,然后组合它们。这本来应该让乘法更慢,但在 GPU 上,当用神经网络来实现时,这个约束消失了。
这很深刻。它说明我们对"快"和"慢"的理解,其实是被特定的物理媒介束缚了。不同的底层技术,可以彻底颠覆我们认为"显而易见"的常识。
计算的底层是什么?
nCPU 让我们看到,计算可能不需要逻辑门、不需要晶体管、甚至不需要电。它可以是任何能学会"规则"的东西——包括神经网络。
反过来说,神经网络真的是"通用计算基底"吗?能不能用它来构建任意算法?从 nCPU 的实现来看,至少理论上是可能的。
这暗示了什么?也许计算的"本质"比我们想象的更深、更抽象。它不是某种特定的物理实现,而是一种能够准确捕捉和执行规则的能力。无论底层是硅、是光、是量子态、还是神经元激活,只要能学会规则、执行规则,就是在做计算。
当然,nCPU 现在还只是 5000 IPS 的玩具——比我们的手机慢几百万倍。实用性为零。但思想实验的价值是巨大的。它提醒我们,我们脑子里关于"计算怎样工作"的许多假设,其实更多是历史意外,而非宇宙真理。
下一次当你看到"神经网络不能做精确计算"这样的说法时,也许值得挑起眉毛。计算本身可能比我们想的更奇异,硬件"常识"可能只是特定时代的产物。
nCPU 可能没用,但它很聪明。