
微分可能なニューラルコンピュータ、GPUベースのCPUエミュレーション、およびプログラム合成のための研究ランタイム。特徴: ニューラルALU、定数時間暗号、JEPAワールドモデル、Metal上のセルフホスティングCコンパイラ。
すべての層(算術、OS、コンパイラ、ディスプレイ)が学習されたニューラルネットワークであるか、完全にGPU上で動作する、完全なコンピュータ。
モデルはコンピュータ上で動作するのではありません。モデルがコンピュータそのものなのです。
nCPUは、1つのテーゼを5つの方向から追求する1つのリポジトリです。コンピュータは学習されたコンポーネントから構築でき、実行スタック全体が微分可能になれば、プログラムは「書くもの」ではなくなり、勾配降下法で探索できるものになります。以下の各サブシステムはそれぞれ独自の測定結果に基づいており、これらを合わせてALUの個々の演算からオペレーティングシステム、プログラム合成までをカバーします。
すべてのALU演算(加算、減算、乗算、ビット論理演算、シフト、除算)は学習されたニューラルネットワークです。ニューラルOS(neurOS)はメモリを管理し、プロセスをスケジューリングし、手書きの代替手段なしに11個の学習済みモデルを通じてコードをコンパイルします。ニューラルディスプレイは、char→グリフMLPとConvNet(143Kパラメータ)を通じて文字をレンダリングします。ソースコード→ニューラルコンパイラ→ニューラルアセンブラ→ニューラルCPU→ニューラルディスプレイという全パイプラインはエンドツーエンドで微分可能です。
ニューラルALUは、32ビット整数演算において、すべての可能な入力に対して網羅的に検証された100%の精度を達成しています。1つの結果は従来のハードウェア階層を逆転させます。ここでは乗算が加算よりも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万IPSで実行し、ゼロコピー共有メモリと、実行間のゼロサイクルカウント分散(σ = 0.0)を実現します。
そこで動作するもの:
nSynthは、入出力例から実行可能プログラムを勾配降下法、列挙、探索を用いて発見するRustベースのプログラム合成システムです。包括的なML/テンソルエンジンと完全なWebスタックと組み合わせることで、以下を合成できます:
カバレッジ: 420/420の合成問題(Mog: 315/315、nSynth: 105/105)
3つの柱:
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をトランスフォーマーのフォワードパスにルーテッドエキスパートとして注入します。学習されたトークンごとのゲートが、各トークンを元のMLPとニューラルALUのどちらに通すかを決定します。双線形ソフト真理値表で微分可能な論理を、テンソル演算で微分可能な算術を提供し、ゲーティングはモデルの信頼度によって調整されます。
Qwen 2.5/3/3.5ファミリーの11モデルにわたるスイープの結果(算術タスク):
| モデル | 算術精度 | 備考 |
|---|---|---|
| Qwen3.5-2B(インストラクト版) | 14.5% → 71.0%(+56.5 pp) | 総合最良 |
| Qwen3.5-2B(ベース) | 15.5% → 63.0%(+47.5 pp) | ADD/SUB/MUL/DIVで100% |
| Qwen3.5-4B | +51.0 pp | ベースモデル最大の向上(タイ) |
| Qwen3.5-9B | +51.0 pp | ベースモデル最大の向上(タイ) |
実際の転移は外挿ではなく測定されています。完全なHumanEval(Qwen3.5-4B、A100)では、62.2% → 64.6% — さらに4つの問題を解決。
コンピュータ自体の予測的世界モデル。正確な実行と並行して、JEPAスタイルのネットワーク(Joint Embedding Predictive Architecture)が圧縮された潜在空間内で機械の状態遷移を学習します。
latent_state_t + 命令 → 予測器 → latent_state_{t+1}
2つのレベルで動作します。Pythonデモ(ncpu/jepa_neural_cpu/)は予測器の横で実際のプログラムを実行し、予測誤差をリアルタイムの異常信号に変換します。Rust Metal実装(kernels/rust_metal/src/jepa/、2,858行)は決定論的GPU実行を観測し、学習されたバイアスオーバーライドを通じてスケジューリングを能動的に調整します。
基盤となる基板が正確であるため、この世界モデルにはほとんどのモデルが欠いている2つの特性があります。無制限の自由なグラウンドトゥルース(より多くのプログラムを実行できる)と、予測実行と正確な実行を自由に混ぜられることです。探索時には安価な潜在スペキュレーション、重要なときには正確な実行。長期的な方向性は、ビット、命令、プログラム、タスクレベルでの予測器の階層です。
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モデル | はい — 完全な勾配流 | ~5000 IPS |
| 高速 | ネイティブテンソル演算 | はい — 標準の自動微分 | ~5000 IPS |
| 計算 | Rust + Metalシェーダー | いいえ(個別ハードウェア) | ~190万 IPS |
3つすべて同じプログラムを実行し、同じ結果を生成します。ニューラルモードはすべての演算を学習済みネットワークに通します。高速モードは同じISAと同じ微分可能性を持つネイティブテンソルを使用します。計算モードは勾配流を速度と引き換えにします。ここでUNIX OSが起動し、コンパイラが自己ホストし、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))