这是 v1 存档(2026-09-15,54,147 门,贪心、只用维基百科)。它会掉进 “the 2008 , the 2008” 这样的吸收环。现行版本见 impossible LLM v2。

impossible LLM v1 — 把 MiniCPM5-2B 转写成一张 NAND 网表

一张 54,147 个 NAND 的组合网表,读 6 个 MiniCPM token、一次 step() 输出下一个 token。逐门求值在这一页的 Web Worker 里跑,没有后端、没有 API key。
A 54,147-NAND combinational netlist reads 6 MiniCPM tokens and emits the next one in a single step(), evaluated gate by gate in this page.

续写 Continuation

加载分词器中… loading tokenizer (~2 MB gzipped)

建议试试 suggested:The history of the Roman Empire —— 点生成,看网表逐 token 写下去。

模型 Model

门数 gates54,147 NAND · 0 LATCH
接口 interface102 in(6 × 17 位 token id,最老在低位)/ 13 out(top-8192 码)
蒸馏 distillationMiniCPM5-2B BF16,argmax,1024-token 预热,16M 标注
一致率(同体裁)约 0.23 · 测试窗口与训练区同一语料体裁(基线约 0.07)
一致率(跨体裁)约 0.11 · 测试窗口落在语料另一段体裁上(基线约 0.06)。这才是它面对陌生文本时的诚实数字。
教师 teacher同两个窗口上都是 约 0.49 —— 教师几乎不掉,所以掉的不是数据质量,是「背下来的表不泛化」
测量精度同体裁内多个不相交 20 万 token 窗口的散布约 ±0.01;跨体裁比较必须说明体裁,否则散布看起来像 ±0.03(那是把两种体裁混在一起的假象)。小于 0.01 的差别不显著。
天花板 ceiling全表 0.339 / K=1M 截断 0.35186(均为近分布)· top-8192 覆盖 0.92225
每步 gas step133,993,004(1.91 个块,建模)
流片 tape-out尚未流片 not taped out —— 12 片、实测 estimateGas 174,787,056、合计 0.011139 BNB
已知缺陷这一版的查表键是用一个有缺陷的哈希算的:numpy 的 uint64 移位超过 63 位返回 0,导致第 5、6 个 token 完全没进键、第 4 个只进了 17 位中的 13 位。所以尽管页面确实把 102 位喂进网表,深层的表实际上只区分约 3.76 个 token(铁证:W=6/5/4 三层的不同键数是 11,573,526 / 11,573,527 / 11,573,528,彼此差不到 2)。下面那些一致率是这张网表实测的,所以数字本身没错;修正键后的版本在部署体裁上约 0.214、满表天花板 0.288,正在重造,届时替换本页。

链上对照 On-chain check

这一页暂时没有链上逐 token 对照——网表还没烧。已流片的 cid 285 / 286 / 287 有活的 eth_call 对照,见存档页 一步模型阶梯和逐字续写演示(两页已下线,保留为工程存档)。烧录后这一页会补上同样的一栏。

范围 Scope(说清它不做什么)

  • 它不是 MiniCPM5-2B。近分布一致 23.5%,远分布只有 11.0%,而教师在两个窗口上都是 49.4%。这是转写,不是等价。
  • 它背下来的东西不泛化。同一个模型在同体裁窗口上约 0.23、跨体裁窗口上约 0.11,而教师在两者上都是约 0.49,分毫不差。教师的权重能迁移,一张记住的表不能。
  • 它不会「变旧」,但会遇到「不一样的文本」。受控实验里,同一个模型在离训练区 16M 和 48M token 的窗口上得分相同,而在反方向同样距离的窗口上高得多——距离是对称的,得分不是。所以下降不是时间造成的老化,而是测试文本换了体裁:语料在某个位置有一道明显的成分分界(分界后每段的不同标签多 23%,落在最高频 token 上的质量少 19%),教师在分界两侧一样准,变的是「能不能靠背」(最高频 1,000 个键的命中率 0.67 → 0.50)。烧上去的网表不会因为时间流逝而退化,但会因为遇到另一种文本而掉一档。
  • 训练数据选哪一段比多花门数更值钱。同样的门数,用最近的 1,600 万 token 训练而不是最早的,一致率从约 0.11 提到约 0.17;而且最近区间的单层 unigram 就打赢了最早区间的完整六层级联。
  • 只看 6 个 token,无状态、无记忆。更长的上下文买不起:门数随表项线性(约 6.7 NAND/项),5 个块/token 的预算只够约 15 万门。
  • 只有 8,192 个可能的输出(教师 argmax 质量的 92.2%);表外的目标它永远说不出来。
  • 不会聊天、不会调用工具。它是一个下一 token 预测器,不是 agent。
  • 它会循环。转写的是教师的 argmax,没有采样随机位,所以是确定性的——确定性的贪心续写必然进入循环(试试上面那句,几个 token 后就开始重复)。这是设计的直接后果,不是缺陷修不掉:加采样位要多花门数,而 v0.2 采样器制造过一个换行吸收态。
  • 一致率之所以停在 0.23,不是门数不够,而是 6 个 token 的上下文里没有足够信息:在真正重复出现的上下文上,教师 argmax 的条件熵仍有 1.9–3.7 比特。