它读最近 6 个 MiniCPM5 token 和 4 个随机位,一次求值输出下一个 token;这一页在你的浏览器里逐门计算,没有后端。 v2 相比 v1:不再掉进 “the 2008 , the 2008” 这类死循环(采样时 0%),在对话、网页、中文文本上的一致率分别是 v1 的 4.1、2.1、53 倍。 它仍然写不出连贯的句子,也没有上链。
每个 token:取文本最后 6 个 token(102 位)+ 4 个随机位 → 5,142,875 个门 → 13 位编码 → token。随机位来自浏览器的 crypto.getRandomValues;勾选「贪心」后恒为 0,输出只由文本决定。
| 门数 | 5,142,875 NAND · 0 LATCH · 记录 36,000,125 字节 |
| 接口 | 106 位输入:6 × 17 位 token id(最老在低位)+ 4 个随机位 · 13 位输出(在 8,192 个 token 里的序号) |
| 教师 | MiniCPM5-2B BF16 的 argmax,每段先喂 1,024 个 token 上下文 |
| 数据 | 英文维基 1,000 万 · 网页 fineweb-edu 800 万 · 对话 smoltalk 800 万 · 中文维基 600 万 token;每个来源另留 20 万 token 做测试 |
| 结构 | 6 层回退查表:看最近 1…6 个 token 的表项 52,751 / 140,400 / 79,659 / 14,780 / 5,078 / 1,049 个,长的优先;都查不到时按 16 格分布输出 |
| 采样 | 每个表项存教师在该上下文下最常给出的 3 个答案及比例;随机位按比例选(量化到 1/16)。随机位全 0 就是贪心 |
| 选表项 | 只收比退回下一层能多猜对的上下文,门数按「每门多猜对几次」分配到各层 |
| 浏览器耗时 | 每个 token 约 10 ms(node 实测 9.6 ms) |
| 上链 | 没有流片。按容器成本模型,一步约 116 亿 gas ≈ 170 个区块,实际上不可能上链执行(模型只在 5,300 门以内实测过,这里外推了约 1,000 倍) |
| 和教师一致的比例 | v1 | v2 贪心 | v2 采样 |
|---|---|---|---|
| 英文维基 | 0.235 | 0.309 | 0.233 |
| 对话 | 0.074 | 0.303 | 0.226 |
| 网页 | 0.116 | 0.241 | 0.177 |
| 中文维基 | 0.004 | 0.219 | 0.174 |
| MiniCPM5-2B 自身 | 约 0.49(维基,v1 测得) | ||
| 80 条提示各续写 48 个 token | v1 | v2 贪心 | v2 采样 |
|---|---|---|---|
| 卡进短循环的比例 | 100% | 3.7% | 0% |
| 平均不同 token 数 | 7.5 | 24.3 | 34.5 |
「采样」一致率更低是预期的:采样按比例选答案,不总选最常见的那个;换来的是不重复。
相关页面:Pi 工作台(大脑换成本网表) · v1 存档(54,147 门) ·
源码在 tapeout 仓库 circuits/_scratch/tapeout_asic/onestep_lm/v2/(建表 v2_build.py、分块综合 v2_chunk_synth.py、验证 v2_verify.py + nleval.c)。