コンテンツにスキップ

Native CPU Runtime 移行計画

  • 対象: EvoSpikeNet-Core
  • 状態: 将来実装に備えた設計計画
  • 前提: CPU本番推論を主対象とし、既存の研究・GPU・外部モデル経路は段階的に維持する
  • 更新日: 2026-09-14

目的

sigmoid だけを自前化するのではなく、Torch、SNN、Transformer、量子化、sparse、モデル保存を含む推論経路全体を対象に、将来 NativeCPUBackend で本番推論を実行できる構造を準備する。

既存ライブラリを直ちに削除せず、Torch backend と Native CPU backend を並行して保持する。各コンポーネントは数値互換性、性能、保存互換性を検証した後に段階的に切り替える。

現行 INT16 sigmoid

ChronoSpikeAttentionactivation_type="int16" を選択できる。入力を Q8.8、出力を Q0.15 として LUT 近似し、既存 API には float の [0, 1] を返す。

この経路は現在も Torch tensor を使用する互換実装であり、Native CPU 実装ではない。Native化では、同じ入出力契約を C++ または Rust の CPUカーネルへ移す。

CPUベンチマーク

CPU基準値は EvoSpikeNet-Core/benchmarks/results/sigmoid_precision_cpu.json に保存する。再実行:

cd EvoSpikeNet-Core
PYTHONPATH=. python3 benchmarks/sigmoid_precision_bench.py \
  --device cpu \
  --elements 1000000 \
  --warmup 10 \
  --runs 30 \
  --output benchmarks/results/sigmoid_precision_cpu.json

測定する値:

  • FP32、INT8 Q0.7、INT16 Q0.15 のレイテンシ
  • MAE、RMSE、最大誤差
  • 0.5 閾値一致率
  • 出力飽和率

Torch LUT の速度だけでは Native化の効果を判断しない。Linear、SNN、sparse synapse、attention、E2E推論を同じ入力・重み・seedで比較する。

移行範囲

自前化する中核

  • Tensorの shape、dtype、layout
  • add、multiply、reduction、clamp、compare
  • matmul、gather、scatter
  • Q8.8 / Q0.15 固定小数点演算
  • sigmoid、ReLU、tanh
  • LIF、Izhikevich、EvoLIF、膜電位、reset
  • COO/CSR sparse synapse と delay buffer
  • ChronoSpikeAttention と必要範囲のTransformer推論
  • Native model artifact loader

当面維持する機能

  • Hugging Face tokenizer / pretrained model
  • ONNX Runtime、FAISS、scikit-learn
  • FastAPI / Uvicorn
  • Qiskit
  • CUDA / TensorRT / Edge TPU 固有処理
  • 学習用 autograd、optimizer、既存 .pt / .pth 読み込み

段階導入

  1. shape、dtype、spike値域、sparse index、RNG、artifact schemaを仕様化する
  2. CPU scalar kernel と Torch golden reference を比較する
  3. INT16 sigmoid、ReLU、clamp、reduction、matmulを移植する
  4. LIF、膜電位、sparse synapse、delay bufferを移植する
  5. 推論専用のattention / Transformer blockを移植する
  6. Native artifact loaderとruntime adapterを接続する
  7. モデル単位で feature flag を有効化し、失敗時はTorch backendへ戻す
  8. autograd・学習・分散同期はCPU本番で必要な場合に限り後段で検討する

本番採用条件

Native CPU backend は、少なくとも次を満たしたモデルだけで有効化する。

FP32 output cosine similarity >= 0.999
sigmoid threshold agreement >= 99.9%
spike count agreement >= 99.9%
p95 latency <= current production path
24-hour soak with no unbounded memory growth
existing checkpoint load succeeds

航空安全認証、Safety Barrier、センサー製品仕様はこの計画の対象外であり、利用側で別途検証する。

関連: HPDBNノードアーキテクチャ分散脳システム技術仕様書ソースコード実装詳細ガイド

依存分類と実装境界

Native化の中心対象は、Tensorのshape/dtype/layout、基本演算、Q8.8/Q0.15固定小数点演算、Linear・必要範囲のConv・Embedding・Norm、sigmoid・ReLU・tanh、LIF/Izhikevich/EvoLIF、膜電位・reset・spike encoding、COO/CSR sparse synapse、delay buffer、ChronoSpikeAttention、推論専用Transformer block、Native artifact loaderである。

Hugging Face tokenizer/pretrained model、ONNX Runtime、FAISS、scikit-learn、FastAPI/Uvicorn、Qiskit、CUDA/TensorRT/Edge TPU固有処理、研究用autograd/optimizer、既存.pt/.pth読み込みは当面維持する。これらを自前化してもCPU本番の中核性能に直結せず、互換性リスクが大きいためである。

目標バックエンド

EvoSpikeNet API
  |
Runtime Backend Interface
  |-- TorchBackend       既存互換・学習・研究
  |-- NativeCPUBackend   CPU本番推論
  |
Native CPU Runtime
  |-- Tensor / Array abstraction
  |-- Scalar and SIMD kernels
  |-- Fixed-point kernels
  |-- SNN state runtime
  |-- Sparse graph runtime
  |-- Attention runtime
  |-- Artifact loader

Torch tensorを公開APIへ直接露出させず、TensorLikeSpikeArrayWeightArrayDTypeShapeDeviceの契約へ整理する。ただし既存利用者向けにTorch adapterを残す。

採用ゲートと初期成果物

モデル単位で次を満たした場合のみNative backendを有効化する。

FP32 output cosine similarity >= 0.999
sigmoid threshold agreement >= 99.9%
spike count agreement >= 99.9%
p95 latency <= current production path
24-hour soak with no unbounded memory growth
existing checkpoint load succeeds

実装開始時の成果物は、backend interface、C++/Rust scalarおよびQ0.15 kernel、Torch golden test、native_cpu_kernel_bench.py、artifact schema v1、CPU-only feature flag、Torch backendへのrollback経路とする。