用于可微分神经计算机、基于GPU的CPU模拟和程序合成的研究运行时。具备神经ALU、恒定时间加密、JEPA世界模型以及基于Metal的自托管C编译器。
一台完整的计算机,其中每一层——算术、操作系统、编译器、显示——要么是训练好的神经网络,要么完全在GPU上运行。
模型不是在计算机上运行。模型就是计算机本身。
nCPU 是一个代码库,从五个方向追求同一论点:计算机可以由学习到的组件构建,而一旦整个执行栈是可微分的,程序就不再是你编写的东西,而变成了可以通过梯度下降搜索的对象。下面的每个子系统都基于独立的测量;它们共同覆盖从单个 ALU 操作到操作系统再到程序合成的整个栈。
每个 ALU 操作——加法、减法、乘法、位运算、移位、除法——都是一个训练好的神经网络。神经操作系统 (neurOS) 管理内存、调度进程、并通过 11 个训练好的模型编译代码,没有任何手工编写的回退方案。神经显示器通过 char→glyph MLP 和一个 ConvNet(143K 参数)渲染字符。完整流水线——源代码 → 神经编译器 → 神经汇编器 → 神经 CPU → 神经显示器——是端到端可微分的。
神经 ALU 在 32 位整数运算上达到 100% 准确率,经过每个可能输入的穷举验证。一个结果颠覆了传统的硬件层次结构:在这里乘法比加法快12 倍,因为加法需要 8 次传递的进位链,而乘法分解为并行的字节对查表。
| 指令 | 策略 | 延迟 |
|---|---|---|
| ADD/SUB/CMP | Kogge-Stone 先行进位(8 次传递) | 248 µs |
| MUL | 字节对 LUT(65,536 条目) | 21 µs |
| AND/OR/XOR | 向量化真值表 | 21 µs |
| SHL/SHR | 基于注意力的位路由 | 434 µs |
| DIV | 恢复除法(神经减法) | 变化 |
neurOS 组件准确率:
| 组件 | 准确率 | 组件 | 准确率 |
|---|---|---|---|
| MMU | 100% | 汇编器代码生成 | 100% |
| TLB | 99.6% | 汇编器词法分析器 | 99.4% |
| 缓存 | 99.7% | 编译器优化器 | 95.2% |
| 调度器 | 99.2% | 看门狗 | 100% |
| 预取 | 97.8% | 块分配器 | 98.4% |
一个在单个 GPU 上自给自足的计算机——CPU 仅在引导时参与。Rust + Metal 内核执行约 200 条 ARM64 指令(整数和浮点),速度约为 190 万条指令每秒,具有零拷贝共享内存,且运行间周期计数方差为零(σ = 0.0)。
在上面运行的内容:
nSynth 是一个基于 Rust 的程序合成系统,通过梯度下降、枚举和搜索从输入/输出示例中发现可执行程序。结合全面的机器学习/张量引擎和完整的 Web 栈,它能够合成:
覆盖率: 420/420 个合成问题(Mog:315/315,nSynth:105/105)
三大支柱:
cd nsynth
cargo run --release --bin nsynth_codegen --lang python --examples '{
"name":"reverse","signature":"fn reverse(arr: List<i64>) -> List<i64>",
"examples":[{"inputs":[[1,2,3]],"expected":[3,2,1]}]
}'
# → def reverse(arr): return arr[::-1]
神经 ALU 作为路由专家注入到 Transformer 的前向传播中。一个学习到的逐 token 门控决定每个 token 是流经原始的 MLP 还是流经神经 ALU。双线性软真值表提供可微分的逻辑,张量操作提供可微分的算术,门控由模型置信度调制。
来自 11 个模型的扫描结果(涵盖 Qwen 2.5/3/3.5 系列),针对算术任务:
| 模型 | 算术准确率 | 备注 |
|---|---|---|
| Qwen3.5-2B (instruct) | 14.5% → 71.0% (+56.5 个百分点) | 总体最佳 |
| Qwen3.5-2B (base) | 15.5% → 63.0% (+47.5 个百分点) | ADD/SUB/MUL/DIV 均为 100% |
| Qwen3.5-4B | +51.0 个百分点 | 基础模型提升最大(并列) |
| Qwen3.5-9B | +51.0 个百分点 | 基础模型提升最大(并列) |
实际迁移效果是经过测量的,而非外推:在完整 HumanEval 上(Qwen3.5-4B, A100),从 62.2% 提升到 64.6%——多解决了四个问题。
计算机本身的预测世界模型。在精确执行的同时,一个 JEPA 风格的网络(联合嵌入预测架构)学习在压缩的潜在空间中预测机器状态转换:
latent_state_t + 指令 → 预测器 → latent_state_{t+1}
它在两个层面运行。一个 Python 演示(ncpu/jepa_neural_cpu/)在预测器旁边执行真实程序,将预测误差转化为实时异常信号。一个 Rust Metal 实现(kernels/rust_metal/src/jepa/,2,858 行)观察确定性 GPU 执行,并通过学习到的偏差覆盖主动引导调度。
由于底层的基板是精确的,这个世界模型具有大多数模型缺乏的两个特性:无限制的免费地面真值(运行更多程序),以及能够随意混合预测执行和精确执行——探索时使用廉价的潜在推测,重要时使用精确执行。长期方向是构建一个位级、指令级、程序级和任务级的预测器层次结构。
python3 -m ncpu.jepa_neural_cpu.demo # 自底向上的 JEPA 神经计算机演示
python -m ncpu.world_model.quickstart # JEPA 机器世界模型快速启动
pip install -e ".[demo,dev]"
# 头号演示:作为完整计算机的 GPU(macOS / Apple Silicon)
python -m ncpu gpu # 启动它
python -m ncpu gpu --neural-alu # 在 Metal 着色器中加入神经 ALU
python -m ncpu gpu debug # 26 命令确定性调试器
# 跨平台,无重型依赖
python -m ncpu discover # 通过示例编程,使用可微分合成
python -m ncpu text --interactive # 神经文本/密码机
# 完整神经流水线(需要模型栈)
python -m ncpu full-neural # 自底向上的神经 CPU + 神经显示
python -m ncpu meta-compare # 并排对比演示
# JEPA 预测层
python3 -m ncpu.jepa_neural_cpu.demo
python -m ncpu.world_model.quickstart
# 原生 Rust,无需 Python
cd kernels/rust_metal
cargo run --bin ncpu_run -- --elf ../../demos/gpu/busybox.elf --rootfs -- echo hello
| 模式 | 运行内容 | 可微分? | 速度 |
|---|---|---|---|
| 神经 | 13 个训练好的 .pt 模型 | 是——完整梯度流 | ~5K IPS |
| 快速 | 原生张量操作 | 是——标准自动微分 | ~5K IPS |
| 计算 | Rust + Metal 着色器 | 否(离散硬件) | ~1.9M IPS |
三种模式执行相同的程序并产生相同的结果。神经模式将每个操作都通过训练好的网络。快速模式使用原生张量,具有相同的 ISA 和相同的可微分性。计算模式以梯度流换取速度——正是在这里,UNIX 操作系统启动、编译器自托管、BusyBox 运行。
# 神经模式——每个操作都是训练好的模型
from ncpu.model import CPU
cpu = CPU(neural_execution=True)
cpu.load_program("MOV R0, 7\nMOV R1, 6\nMUL R2, R0, R1\nHALT")
cpu.run()
print(cpu.get_register("R2")) # 42 — 由神经字节对 LUT 计算
# 可微分协处理器——注入任意 Hugging Face 模型
from ncpu.coprocessor import inject_ncpu_coprocessor, NCPUCoprocessorConfig
config = NCPUCoprocessorConfig(confidence_aware=True, deterministic_alu=True)
inject_ncpu_coprocessor(model, config)
# 可微分程序合成
from ncpu.differentiable import ProgramSynthesizer, SynthesisSpec
spec = SynthesisSpec(examples=[
({0: 3.0, 1: 5.0}, {2: 8.0}),
({0: 7.0, 1: 2.0}, {2: 9.0}),
])
synth = ProgramSynthesizer(max_program_len=6)
result = synth.synthesize(spec, max_iters=2000)
# 发现: ADD R2, R0, R1; HALT
# JEPA 世界模型——预测机器状态转换
from ncpu.world_model.je_world_model import JEWorldModel, JEWMConfig
model = JEWorldModel(JEWMConfig(state_dim=22, action_dim=8))
pred = model.predict_next_latent(model.encode_state(state), model.encode_action(action))
| 层 | 实现 | 结果 |
|---|---|---|
| ALU | 13 个训练好的 .pt 模型 | 精确的 32 位整数算术,经过穷举验证 |
| OS | neurOS——11 个神经模型,无回退 | 学习到的 MMU、TLB、缓存、调度器、编译器 |
| GPU 计算 | Rust Metal 内核,约 200 条 ARM64 指令 | 任意程序,约 1.9M IPS |
| UNIX OS | 在 Metal 上编译的 C 语言 | fork/pipe/wait,25 命令的 shell,28 个系统调用 |
| 编译器 | cc.c,约 4,200 行,自托管 | 编译自身,然后编译程序——在 GPU 上 |
| ELF 加载器 | 在 GPU 上运行真实 Linux 二进制文件 | 在 Metal 上运行 BusyBox 和 Alpine Linux v3.20 |
| 协处理器 | Transformer 前向传播中的神经 ALU | Token 通过神经算术进行路由,有测量到的增益 |
| JEPA | 机器动力学的预测世界模型 | 在精确基板上的潜在推测 + 异常检测 |
| 程序合成 | 通过执行反向传播 | 从 I/O 示例中发现程序 |
| 恒定时间密码学 | AES-128 ECB/CBC (ncpu/crypto/) | σ = 0.0 时序;通过 FIPS 197 + NIST SP 800-38A 向量 |
| 多 GPU | 具有共享内存的分布式核心 | 跨 GPU 的 fork/pipe/wait;并行和流水线执行 |
| SOME | 带有潜在头的隐藏控制器 | 自优化推理;HumanEval+ 和 BigCodeBench 的增益 |
这里的 GPU 执行产生零周期计数方差——在 270 次运行中 σ = 0.0,而相同代码在原生 Apple Silicon 上显示 47–73% 的时序方差。由于没有数据缓存,就没有缓存行和缓存未命中惩罚,因此 AES T 表攻击无从下手。
基于这一特性,ncpu/crypto/ 提供了恒定时间的 AES-128(ECB 和 CBC),由 19 个恒定时间基元构建,通过所有 FIPS 197 和 NIST SP 800-38A 测试向量。
一个隐藏的控制器,将神经机器的一部分转变为用于代码生成的内部协处理器:缓冲的思考 → 写入 → 验证 → 修补 → 提交循环,学习到的动作/暂停/描述符/状态修补/内存头,以及在推理期间更新的任务局部快速权重。学习到的内存头将验证 MSE 比基线降低了 83.26%。
端到端测量:qwen3.5:4b 的 HumanEval+ 从 147 提升到 154,qwen3.5:9b 从 144 提升到 156;qwen3.5:9b 的 BigCodeBench-Hard 从 33 提升到 49。