EvoSpikeNet 分散脳シミュレーションシステム 技術仕様書
[!NOTE] 最新の実装状況は 機能実装ステータス (Remaining Functionality) を参照してください。
作成日: 2026年1月12日(最終更新: 2026年3月19日 Phase E コネクトーム統合 E-0/E-1/E-2 完了)
Copyright: 2026 Moonlight Technologies Inc. All Rights Reserved.
Author: Masahiro Aoki
このドキュメントの目的と使い方
- 目的: 分散脳システム全体の技術仕様を俯瞰し、設計/実装/運用の共通認識を持つ。
- 対象読者: アーキテクト、分散脳実装チーム、SRE/運用担当。
- まず読む順: 1.システム概要 → 2.アーキテクチャ設計 → 3.Zenoh通信システム → 8.分散脳ノードの実行フロー。
-
関連リンク: 実行スクリプトは
examples/run_zenoh_distributed_brain.py、PFC/Zenoh/Executive詳細は implementation/PFC_ZENOH_EXECUTIVE.md。 -
実装ノート(アーティファクト): 学習/生成スクリプトが作成する
artifact_manifest.jsonと CLI フラグについてはdocs/implementation/ARTIFACT_MANIFESTS.mdを参照してください。最新のパイプラインでは--node-typeで分散脳ノードタイプを指定し、生成されるアーティファクトにnode_typeメタが自動的に含まれるようになっています。
目次
- システム概要
- アーキテクチャ設計
- Zenoh通信システム
- PFCとQ-PFCフィードバックループ
- 高度な意思決定エンジン
- ノード発見システム
- ChronoSpikeAttention機構
- 分散脳ノードの実行フロー
- データ構造と型定義
- 性能最適化と制御
- シミュレーションデータの記録
- 長期間記憶システム
- Feature 13: 高度な空間処理ノード ✅ 新規実装
- 生物模倣オーバーレイ(BiomimeticAdapter) ⭐ 2026-02-25
- ゲノム駆動分散推論(Phase D) ⭐ NEW 2026-03-11
- コネクトーム統合(Phase E) ⭐ NEW 2026-03-19
1. システム概要
1.1. コンセプト
EvoSpikeNetの分散脳シミュレーションシステムは、生物学的な脳の機能的専門化と統合の原理に基づいて設計された、スケーラブルなニューロモーフィックコンピューティングフレーム ワークです。
設計哲学: - 専門化(Specialization): 各機能モジュール(視覚、聴覚、言語、運動)が専門的な処理を担当 - 統合(Integration): 前頭前野(PFC)が全体の調整・統合を行う - 非同期通信(Asynchronous Communication): Zenohによる低遅延Pub/Subパターン - 自己変調(Self-Modulation): Q-PFCフィードバックループによる動的な閾値調整
1.2. 主要コンポーネント
graph TB
subgraph "制御層"
PFC["PFC: Prefrontal Cortex 前頭前野"]
QPFC["Q-PFC Feedback Loop 量子変調フィードバック"]
end
subgraph "機能モジュール層"
SH["Sensor Hub: センサー統合管理"]
MH["Motor Hub: 運動統合管理"]
VISUAL["Visual Module 視覚処理"]
AUDIO["Auditory Module 聴覚処理"]
LANG["Language Module 言語処理"]
MOTOR["Motor Module 運動制御"]
end
subgraph "通信・インフラ基盤"
ZENOH["Zenoh Router Pub/Sub通信"]
PTP["PTP Sync 時刻同期"]
DISCOVERY["Node Discovery ノード発見"]
SAFETY["FPGA Safety 安全性監視"]
SECURITY["Encryption Security 暗号化セキュリティ"]
end
PFC <--> QPFC
PFC <-->|ChronoSpikeAttention| ZENOH
SH <-->|Sensor Data| PFC
PFC <-->|Motor Commands| MH
VISUAL <--> SH
AUDIO <--> SH
LANG <--> ZENOH
MOTOR <--> MH
ZENOH --- PTP
ZENOH --- DISCOVERY
ZENOH --- SAFETY
1.3. 29ノード完全脳アーキテクチャ
2026年2月19日更新: 空間認知・生成モジュールを追加した29ノード構成を、FastAPIベースの空間生成サービス(/generate, /health)とSDKラッパー(spatial_generate, spatial_health)付きで公開面に統合。RAGノードもSDK経由で /upload_file /query を提供。各層が専門化し、Zenohによる非同期通信で協調動作します。
2026年2月25日追記: 長期記憶層にスパイク圧縮レイヤと忘却制御を追加し、LongTermMemoryModule がエピソード/セマンティック記憶と圧縮スパイクを統合。容量超過時は ForgettingController で破壊的忘却を防ぎます。
graph TB
subgraph "観測層 (Sensing Layer - 3ノード)"
CAM["Camera Sensor<br/>カメラセンサ"]
MIC["Microphone Sensor<br/>マイクセンサ"]
ENV["Environment Sensor<br/>環境センサ"]
end
subgraph "エンコード層 (Encoding Layer - 4ノード)"
VENC["Vision Encoder<br/>視覚エンコーダ"]
AENC["Audio Encoder<br/>音声エンコーダ"]
TENC["Text Encoder<br/>テキストエンコーダ"]
SENC["Spiking Encoder<br/>スパイキングエンコーダ"]
end
subgraph "認知・推論層 (Cognition Layer - 6ノード)"
LMINF["LM Inference<br/>言語モデル推論"]
CLF["Classifier<br/>分類器"]
SPLM["Spiking LM<br/>スパイキングLM"]
SPATIAL["Spatial Processor<br/>空間認識・生成"]
ENS["Ensemble<br/>アンサンブル"]
RAG["RAG<br/>検索拡張生成"]
end
subgraph "意思決定層 (Decision Layer - 3ノード)"
PFC["PFC<br/>前頭前野"]
PLANNER["High-Level Planner<br/>高レベルプランナー"]
CTRL["Execution Controller<br/>実行コントローラー"]
end
subgraph "長期記憶層 (Long-Term Memory - 2ノード)"
EPI["Episodic Memory<br/>エピソディック記憶"]
SEM["Semantic Memory<br/>セマンティック記憶"]
end
subgraph "記憶層 (Memory Layer - 6ノード)"
VDB["Vector DB<br/>ベクトルDB"]
EST["Episodic Storage<br/>エピソードストレージ"]
RETR["Retriever<br/>検索器"]
KB["Knowledge Base<br/>知識ベース"]
SPKRES["Spike Reservoir<br/>スパイク圧縮レイヤ"]
MINT["Memory Integrator<br/>メモリ統合器"]
end
subgraph "学習層 (Learning Layer - 1ノード) - ノードタイプベースLLMトレーニング対応"
TRAIN["Trainer<br/>学習器"]
end
subgraph "集約層 (Aggregation Layer - 2ノード)"
FED["Federator<br/>フェデレータ"]
RAGG["Result Aggregator<br/>結果集約器"]
end
subgraph "管理層 (Management Layer - 2ノード)"
AUTH["Auth Manager<br/>認証管理"]
MON["Monitoring<br/>監視"]
end
subgraph "通信基盤 (Communication Infrastructure)"
ZENOH["Zenoh Router<br/>Pub/Sub通信"]
PTP["PTP Sync<br/>時刻同期"]
DISC["Node Discovery<br/>ノード発見"]
SAFETY["FPGA Safety<br/>安全性監視"]
end
%% データフロー
CAM --> VENC
MIC --> AENC
ENV --> SENC
VENC --> SPATIAL
VENC --> LMINF
AENC --> CLF
TENC --> RAG
SENC --> SPLM
LMINF --> ENS
CLF --> ENS
SPLM --> ENS
SPATIAL --> ENS
RAG --> ENS
ENS --> PFC
PFC --> PLANNER
PLANNER --> CTRL
EPI --> MINT
SEM --> MINT
SPKRES --> MINT
MINT --> RETR
VDB --> RETR
EST --> RETR
KB --> RETR
SPKRES --> RETR
RETR --> RAG
RETR --> PFC
PFC --> TRAIN
TRAIN --> FED
FED --> RAGG
AUTH -->|Security| ZENOH
MON -->|Monitoring| ZENOH
%% 通信基盤接続
ZENOH --- PTP
ZENOH --- DISC
ZENOH --- SAFETY
%% 全ノードがZenohに接続
CAM -.-> ZENOH
MIC -.-> ZENOH
ENV -.-> ZENOH
VENC -.-> ZENOH
AENC -.-> ZENOH
TENC -.-> ZENOH
SENC -.-> ZENOH
LMINF -.-> ZENOH
CLF -.-> ZENOH
SPLM -.-> ZENOH
SPATIAL -.-> ZENOH
ENS -.-> ZENOH
RAG -.-> ZENOH
PFC -.-> ZENOH
PLANNER -.-> ZENOH
CTRL -.-> ZENOH
EPI -.-> ZENOH
SEM -.-> ZENOH
VDB -.-> ZENOH
EST -.-> ZENOH
RETR -.-> ZENOH
KB -.-> ZENOH
SPKRES -.-> ZENOH
MINT -.-> ZENOH
TRAIN -.-> ZENOH
FED -.-> ZENOH
RAGG -.-> ZENOH
AUTH -.-> ZENOH
MON -.-> ZENOH
アーキテクチャの特徴
- 層別専門化: 各層が生物学的脳の機能を模倣した専門処理を担当
- 非同期通信: Zenoh Pub/Subによる低遅延リアルタイム通信
- 長期記憶統合: エピソディック/セマンティック記憶による学習適応
- スケーラビリティ: 29ノード構成(スパイク圧縮ノード追加)で完全脳機能をカバー
- 耐障害性: 分散アーキテクチャによる単一障害点の排除
ノード配分詳細
- 観測層: 3ノード - 外部環境からのデータ収集
- エンコード層: 4ノード - 多様なデータ形式の特徴抽出
- 認知・推論層: 6ノード - 高度な認識と推論処理
- 意思決定層: 3ノード - PFCを中心とした計画・実行制御
- 長期記憶層: 2ノード - 永続的な知識と経験の保持
- 記憶層: 6ノード - 短期/作業記憶と効率的な検索(スパイク圧縮レイヤ含む)
- 学習層: 1ノード - 継続的なモデル適応
- 集約層: 2ノード - 分散学習と結果統合
- 管理層: 2ノード - セキュリティとシステム監視
1.4. プロセス実行フロー
基本的なデータフローシーケンス
sequenceDiagram
participant CAM as Camera Sensor
participant VENC as Vision Encoder
participant LMINF as LM Inference
participant PFC as PFC
participant PLANNER as High-Level Planner
participant CTRL as Execution Controller
participant EPI as Episodic Memory
participant RETR as Retriever
participant MOTOR as Motor Hub
Note over CAM,MOTOR: センサー入力 → 認知 → 意思決定 → 行動実行
CAM->>VENC: 画像データ送信
VENC->>LMINF: 視覚特徴ベクトル
LMINF->>PFC: 認識結果
PFC->>RETR: 関連記憶検索要求
RETR->>EPI: エピソード記憶クエリ
EPI-->>RETR: 関連エピソード返却
RETR-->>PFC: 統合された文脈情報
PFC->>PLANNER: 目標設定と計画生成
PLANNER->>CTRL: 実行可能な行動プラン
CTRL->>MOTOR: 運動コマンド送信
PFC->>EPI: 新しい経験の記憶保存
EPI-->>PFC: 記憶保存確認
長期記憶統合フロー
sequenceDiagram
participant INPUT as センサー入力
participant ENCODER as エンコーダ
participant INFERENCE as 推論ノード
participant PFC as PFC
participant EPI as Episodic Memory
participant SEM as Semantic Memory
participant MINT as Memory Integrator
participant RETR as Retriever
Note over INPUT,RETR: 経験学習と知識蓄積のサイクル
INPUT->>ENCODER: 生データ
ENCODER->>INFERENCE: 特徴ベクトル
INFERENCE->>PFC: 処理結果
PFC->>EPI: エピソード記憶保存
PFC->>SEM: 知識抽出・保存
Note right of PFC: 継続的な学習サイクル
PFC->>MINT: 記憶統合要求
MINT->>EPI: エピソード検索
MINT->>SEM: 知識検索
EPI-->>MINT: エピソードデータ
SEM-->>MINT: 知識データ
MINT->>RETR: 統合記憶インデックス更新
Note over RETR: 検索効率向上のための<br/>クロスモーダル連想
学習適応フロー
sequenceDiagram
participant PFC as PFC
participant TRAIN as Trainer
participant FED as Federator (Flower)
participant RAGG as Result Aggregator
participant ALL as 全ノード
Note over PFC,ALL: Flowerベースの連合学習とモデル更新
PFC->>TRAIN: 学習データ送信
TRAIN->>TRAIN: ローカルモデル更新計算
TRAIN->>FED: Flower FLクライアント初期化
FED->>ALL: 連合学習ラウンド参加要求
ALL-->>FED: ローカル更新パラメータ送信
FED->>RAGG: 安全なパラメータ集約(差分プライバシー)
RAGG->>TRAIN: 集約済みグローバル更新
TRAIN->>ALL: 新グローバルモデル配布
ALL-->>TRAIN: 配布確認
Note over ALL: 継続的な性能向上とプライバシー保護
システム全体の実行サイクル
stateDiagram-v2
[*] --> 初期化
初期化 --> センサー監視: Zenoh接続完了
センサー監視 --> データ収集: 入力検知
データ収集 --> 特徴抽出: エンコーダ処理
特徴抽出 --> 推論処理: 認知層
推論処理 --> 意思決定: PFC統合
意思決定 --> 記憶検索: 文脈要求
記憶検索 --> 計画生成: 関連情報取得
計画生成 --> 行動実行: コントローラー
行動実行 --> 経験記憶: エピソード保存
経験記憶 --> 学習適応: 継続学習
学習適応 --> センサー監視: 次のサイクル
意思決定 --> 直接実行: 単純タスク
直接実行 --> センサー監視
状態チェック --> センサー監視: 正常
状態チェック --> エラー回復: 異常検知
エラー回復 --> センサー監視: 回復完了
主要コンポーネント
Sensor Hub (センサーハブ):
2025年12月12日更新: 運動野とセンサー情報を管理する分類を分離し、より効率的なアーキテクチャを導入しました。
Sensor Hub (センサーハブ): - すべてのセンサー入力(視覚、聴覚、触覚)を統合管理 - センサーデータの前処理と統合を担当 - PFCに統合されたセンサーデータを提供
Motor Hub (モーターハブ): - すべての運動出力(軌道制御、小脳協調、PWM制御)を統合管理 - PFCからのコマンドを実際の運動制御に変換 - 複数の運動サブシステムの協調を管理
利点: - 並列処理: センサー入力の同時処理が可能 - 専門化: 各ハブが専門の機能を担当 - 拡張性: 新しいセンサー/運動タイプの追加が容易 - 効率性: センサーと運動の分離により、処理の最適化が可能
データフロー:
Sensor Hub → PFC → Motor Hub
↓ ↓ ↓
Visual Compute Motor-Traj
Auditory Lang-Main Motor-Cereb
Speech Motor-PWM
1.3. プラグインアーキテクチャ & マイクロサービス
2025年12月20日追加: システムアーキテクチャをモノリシックからプラグインベースとマイクロサービスに移行しました。
アーキテクチャ概要
プラグインシステム: - 7種類のプラグインタイプ (NEURON, ENCODER, PLASTICITY, FUNCTIONAL, LEARNING, MONITORING, COMMUNICATION) - 動的ローディングによる実行時拡張 - 9つのビルトインプラグイン (LIF, Izhikevich, EntangledSynchrony, Rate, TAS, Latency, STDP, MetaPlasticity, Homeostasis) - 機能追加時間70%短縮 (4-5日 → 1-1.5日)
マイクロサービス: - 5つの独立したサービス (Training, Inference, Model Registry, Monitoring, API Gateway) - サービスごとの独立したスケーリング - スケーラビリティ80%向上 (リソース効率60% → 85%) - Docker Composeによる完全なコンテナ化デプロイ
詳細は PLUGIN_MICROSERVICES_ARCHITECTURE.md を参照してください。
1.4. P3機能統合 - 生産準備完了
2025年12月12日更新: 7つのP3 (低優先度) 機能がすべて実装完了し、システムは本番環境での使用に必要なすべての高度な機能を備えています。
統合されたP3機能
🔄 エンドツーエンド遅延最適化 (< 500ms)
- LatencyProfiler による全コンポーネントの遅延追跡
- 統計分析とターゲットチェック機能
- リアルタイム性能監視
💾 スナップショット/災害復旧システム
- SnapshotManager による完全なシステム状態保存
- 圧縮・チェックサム・完全復旧機能
- 地理的バックアップ対応
📊 大規模スケーラビリティ検証
- ScalabilityTester による1000ノード以上対応
- リソース監視とストレステスト
- ボトルネック自動検出
🔧 ハードウェア最適化
- HardwareOptimizer によるONNXエクスポート・量子化
- Loihi等ニューロモーフィックチップ対応
- 自動ハードウェア適応
🛡️ 高可用性監視 (99.9%+)
- AvailabilityMonitor によるヘルスチェック・自動復旧
- SLA保証機能
- ダウンタイム統計追跡
🌐 非同期Zenoh通信統合
- AsyncZenohCommunicator による構造化メッセージング
- リクエスト/レスポンス・Pub/Subパターン
- 高性能分散通信
⚖️ 分散意思決定コンセンサス
- DistributedMotorConsensus による自律的運動制御コンセンサス
- 複数モーターノード間での協調動作決定
- 提案・投票・集計の3フェーズプロセス
- クォーラム計算: \(\lceil N \times t \rceil\) (N: ノード数, t: 閾値)
システム全体の可用性指標
- エンドツーエンド遅延: < 500ms (95パーセンタイル)
- システム可用性: 99.9%+ (年間ダウンタイム < 8.76時間)
- スケーラビリティ: 1000ノード以上対応
- ハードウェア互換性: CPU/GPU/TPU/ニューロモーフィックチップ
- 災害復旧時間: < 30分 (完全復旧)
1.5. Plan D: 脳内言語アーキテクチャ
2025年12月12日追加: 脳内ループにおける視覚の言語化や運動指示を「データ量の少ない特別な脳内言語」として実装することで、処理速度や伝達速度を大幅に改善する次世代アーキテクチャ。
脳内言語の概念的背景
- 神経科学的根拠: 人間の思考は言語ベース(内言/inner speech)
- 情報圧縮: 視覚データ(数百万次元)→言語トークン(数百次元)
- 抽象化処理: 具体的なセンサーデータを概念レベルの表現に変換
- 効率的伝達: スパイキングネットワーク間での低帯域・高速通信
アーキテクチャ概要
graph TD
subgraph "Vision-to-Language"
VISUAL[Visual Input] --> VFE[Visual Feature Extractor]
VFE --> VLE[Vision-Language Encoder]
VLE --> BLT[Brain Language Tokens]
end
subgraph "Brain Language Processing"
BLT --> BLP[Brain Language Processor]
BLP --> REASON[Reasoning & Inference]
BLP --> MEMORY[Memory Integration]
REASON --> DECISIONS[Decisions in Language]
end
subgraph "Language-to-Motor"
DECISIONS --> LMD[Language-to-Motor Decoder]
LMD --> MOTOR_CMD[Motor Commands]
MOTOR_CMD --> EXEC[Execution]
end
MEMORY -.-> REASON
EXEC -.-> FEEDBACK[Feedback Loop] -.-> BLP
期待される性能向上
- データ圧縮率: 90%以上の削減(視覚→言語)
- 処理速度: 50%以上の向上(< 250ms目標)
- 伝達効率: 80%以上の帯域削減
- エネルギー効率: 60%以上の消費電力低減
実装フェーズ
- Phase 1 (2026 Q1): 概念実証 - Vision-Language変換
- Phase 2 (2026 Q2-Q3): コア実装 - Brain Language Encoder/Processor/Decoder
- Phase 3 (2026 Q4): 最適化 - 性能向上とマルチモダリティ拡張
- Phase 4 (2027 Q1-Q2): 統合 - Plan Bとの完全統合
このアプローチにより、人間らしい認知プロセスを模倣しつつ、現代の計算制約の中で効率的なAIシステムを実現できる可能性があります。
1.5. システムの特徴
| 特徴 | 説明 | 技術要素 |
|---|---|---|
| 非同期通信 | Zenoh Pub/Subモデル | 低遅延(<1ms)、疎結合、バージョン互換性 |
| 量子インスパイア | Q-PFCフィードバックループ | エントロピー → 変調係数α(t) |
| 時系列因果性 | ChronoSpikeAttention | 時間的近接性マスク、因果性保証 |
| 階層的制御 | PFCによるトップダウン制御 | タスクルーティング、資源配分 |
| 自己適応性 | 動的閾値調整 | 探索(低α)↔ 利用(高α) |
| 高度な意思決定 | Executive Control Engine | メタ認知、階層的プランニング |
| 動的ノード発見 | リアルタイム中央監視サービス | ハートビート、自動フォールバック |
| 動的モデル読込 | AutoModelSelectorによるモデル解決 |
API経由で最新モデルを自動ダウンロード |
| シミュレーション記録 | SimulationRecorderによるデータ保存 |
スパイク、膜電位、重み、制御状態 |
2. アーキテクチャ設計
2.1. 全体アーキテクチャ
sequenceDiagram
participant UI as "Web UI: Dash"
participant API as "API Server: FastAPI"
participant ZR as "Zenoh Router"
participant PFC as "PFC Node"
participant LANG as "Lang-Main Node"
participant AMS as "AutoModelSelector"
UI->>API: 1. プロンプト送信
alt モダンなパス: Zenoh
API->>ZR: 2a. api/prompt へPublish
ZR->>PFC: 3a. プロンプト転送
else レガシーパス: ファイル
API->>PFC: 2b. /tmp/prompt.json ファイル書き込み
PFC->>PFC: 3b. ファイルシステムをポーリング
end
PFC->>AMS: 4. 最新モデルを要求
AMS->>API: 5. 最新モデルをダウンロード
API-->>AMS: 6. モデルファイル
AMS-->>PFC: 7. モデルインスタンス
Note over PFC: 8. Q-PFCループでタスク分析・ルーティング
PFC->>ZR: 9. pfc/text_prompt へPublish
ZR->>LANG: 10. タスク転送
Note over LANG: 11. SpikingEvoSpikeNetLMで推論実行
alt モダンなパス: Zenoh
LANG->>ZR: 12a. api/result へPublish
ZR->>API: 13a. 結果を転送
else レガシーパス: ファイル
LANG->>API: 12b. /tmp/result.json ファイル書き込み
end
API->>UI: 14. 結果をUIへ送信: ポーリング
LANG->>ZR: 15. task/completion をPublish
ZR->>PFC: 16. タスク完了を通知
2.2. ノード構成と命名規則
分散脳シミュレーションは、以下の種類のノードで構成されます。ノード名は階層構造を表現でき、_get_base_module_type()関数によりベースタイプが解決されます。
- lang-embed-18 → lang-main
- vis-object-9 → visual
PFCノード(Prefrontal Cortex)
役割: 中央制御ハブ、タスクルーティング、認知制御、高度な意思決定
実装クラス:
- evospikenet.pfc.PFCDecisionEngine (基本PFC)
- evospikenet.pfc.AdvancedPFCEngine (高度なPFC)
- evospikenet.executive_control.ExecutiveControlEngine (執行制御)
主要機能:
1. Zenohとファイルシステムの両方からタスクを受信
2. AutoModelSelectorで動的にモデルをロード
3. Q-PFCフィードバックループによる自己変調とルーティング
4. アクティブノードの動的発見とlang-mainへの自動フォールバック
Lang-Mainノード(Language Main)
役割: 言語処理、テキスト生成。全システムのデフォルトフォールバック先。
実装クラス: evospikenet.models.SpikingEvoSpikeNetLM
主要機能: 1. テキストプロンプトの受信とトークン化 2. スパイク駆動推論(バックグラウンドスレッドで実行) 3. 結果をZenohとファイルの両方に出力
Visualノード(Visual Processing)
役割: 視覚情報の処理
実装クラス: SimpleLIFNode(基本)/ カスタムビジョンエンコーダー
主要機能: 1. 視覚データの受信とスパイクエンコーディング 2. PFCへの特徴スパイク送信
Motorノード(Motor Control)
役割: 運動出力の生成と分散合意形成
実装クラス: evospikenet.motor_consensus.AutonomousMotorNode
主要機能:
1. モーターゴールの受信と分散コンセンサス
2. FPGA Safetyサービスと連携した安全性検証
✨ NEW: 空間認知ノード群(Spatial Recognition & Generation)
Spatial_Where ノード(Rank 12)- Where処理経路(頭頂葉背側)
役割: 視覚入力から空間位置・距離・方向を抽出
実装クラス: evospikenet.spatial_processing.where_pathway.SpatialWhereNode
主要機能: 1. ビジョンノードからの特徴抽出 2. 奥行き推定と空間座標計算 3. Allocentric座標への変換 4. 光学フロー計算による動き検出
発行トピック:
- spikes/spatial/where/depth (30 Hz) - 奥行きマップ
- spikes/spatial/where/coordinates (30 Hz) - 3D座標
- spikes/spatial/where/optical_flow (30 Hz) - 光学フロー
Spatial_What ノード(Rank 13)- What処理経路(視覚皮質/側頭皮質)
役割: テキストから3D空間シーンを生成、視覚生成
実装クラス: evospikenet.spatial_processing.what_pathway.SpatialWhatNode
主要機能: 1. 言語モジュールからのテキスト説明受信 2. シーングラフの解析と構築 3. VAEによる3D空間生成 4. 時系列予測(次フレーム予測)
発行トピック:
- spikes/spatial/what/scene_graph (10 Hz) - シーングラフ
- spikes/spatial/what/voxel_grid (10 Hz) - 3D voxel表現
- spikes/spatial/what/mesh (5 Hz) - 3Dメッシュ
Spatial_Integration ノード(Rank 14)- What-Where統合(後頭頭頂接合部)
役割: What(何)と Where(どこ)情報の統合、統一的な世界モデル構築
実装クラス: evospikenet.spatial_processing.integration.SpatialIntegrationNode
主要機能: 1. What と Where からの情報受信 2. 時系列統合による世界モデル更新 3. 空間推論(物体間関係、reach可能性など) 4. 複数視点からの自己中心ビュー生成
発行トピック:
- spikes/spatial/integration/world_model (10 Hz) - 世界モデル
- spikes/spatial/integration/reasoning (10 Hz) - 空間推論結果
- spikes/spatial/integration/perspective (30 Hz) - 自己中心ビュー
Spatial_Attention ノード(Rank 15)- 空間注意制御(前頭眼窩野連携)
役割: PFCからのタスク信号に基づく空間注意の制御
実装クラス: evospikenet.spatial_processing.attention_control.SpatialAttentionNode
主要機能: 1. PFCからのタスク駆動信号受信 2. ボトムアップ顕著性検出 3. トップダウン注意ウェイト計算 4. サッカード(眼球運動)目標計画
発行トピック:
- spikes/spatial/attention/weights (30 Hz) - 注意ウェイト
- spikes/spatial/attention/saliency (30 Hz) - 顕著性マップ
- spikes/spatial/attention/saccade (可変) - サッカード目標
2.3. 通信トポロジー
evospikenet/
├── api/prompt # API → PFC (プロンプト送信, Zenoh経由)
├── api/result # 機能ノード → API (結果送信, Zenoh経由)
├── pfc/text_prompt # PFC → Lang-Main (テキストタスク)
├── pfc/visual_task # PFC → Visual (視覚タスク)
├── pfc/spatial_task # PFC → Spatial (空間タスク)✨ NEW
├── pfc/audio_task # PFC → Audio (音声タスク)
├── pfc/motor_goals # PFC → Motor (運動ゴール)
├── pfc/spatial_attention # PFC → Spatial_Attention (空間注意信号)✨ NEW
├── pfc/add_goal # Executive Control (ゴール追加)
├── pfc/get_status # Executive Control (ステータス取得)
├── spikes/visual/pfc # Visual → PFC (視覚スパイク)
├── spikes/spatial/where/* # Spatial_Where ノード出力 ✨ NEW
│ ├── depth # 奥行き推定(30 Hz)
│ ├── coordinates # 空間座標(30 Hz)
│ └── optical_flow # 光学フロー(30 Hz)
├── spikes/spatial/what/* # Spatial_What ノード出力 ✨ NEW
│ ├── scene_graph # シーングラフ(10 Hz)
│ ├── voxel_grid # 3D grid表現(10 Hz)
│ └── mesh # 3Dメッシュ(5 Hz)
├── spikes/spatial/integration/* # Spatial_Integration ✨ NEW
│ ├── world_model # 統合世界モデル(10 Hz)
│ ├── reasoning # 空間推論結果(10 Hz)
│ └── perspective # 自己中心ビュー(30 Hz)
├── spikes/spatial/attention/* # Spatial_Attention ✨ NEW
│ ├── weights # 注意ウェイト(30 Hz)
│ ├── saliency # 顕著性マップ(30 Hz)
│ └── saccade # サッカード目標(可変)
│
├── spikes/audio/* # Audio ノード出力
├── ego_pose # 自己位置・姿勢情報
├── task/completion # タスク完了通知
└── monitoring/* # 監視・メトリクス配信
├── spikes/spatial/pfc # Spatial → PFC (空間スパイク)
├── spikes/auditory/pfc # Auditory → PFC (聴覚スパイク)
├── task/completion # 機能ノード → PFC (完了通知)
├── heartbeat/{node_id} # 各ノード → Discovery (生存確認, 2秒毎)
└── discovery/announce # 全ノード → Discovery (ノード発見、起動時)
3. Zenoh通信システム
3.1. Zenohとは
Zenoh (Zero Overhead Network Protocol)は、ロボティクスやIoTのための次世代通信プロトコルです。
特徴: - 低遅延: サブミリ秒レベルの通信遅延 - 高スループット: 数百万メッセージ/秒 - 柔軟性: Pub/Sub、Request/Reply、Queryingをサポート - 疎結合: ノードの動的な追加・削除が可能
3.2. ZenohConfig データ構造
# evospikenet/zenoh_comm.py
@dataclass
class ZenohConfig:
mode: str = "peer" # "peer" または "client"
connect: Optional[List[str]] = None # 接続先エンドポイント
listen: Optional[List[str]] = None # リスンエンドポイント
namespace: str = "evospikenet" # トピックの名前空間
3.3. 実装詳細
3.3.1. ZenohCommunicator
基本的なPub/Sub、Request/Reply機能を提供します。
- バージョン互換性: Zenoh 0.6+ と 0.4.x のAPI差異を吸収する互換性レイヤーを内蔵。
- 非同期キュー:
subscribe_queue()メソッドにより、コールバックの代わりにQueueオブジェクトでメッセージを受信可能。 - Request-Reply: デフォルトタイムアウトは5.0秒に設定。
- 圧縮対応:
IntelligentCompressorによる自動圧縮/解凍機能。
3.3.2. 非同期通信拡張
AsyncZenohCommunicatorクラスによる構造化メッセージングを実装。
- Pub/Subパターン: 非同期メッセージ配信
- リクエスト/レスポンス: 同期的なクエリ処理
- 高性能分散通信: 低遅延・高スループットを実現
3.3.3. セキュア通信
特徴:
- PSK(事前共有鍵)暗号化: ZenohConfigにpskフィールドを追加し、256ビット(64文字の16進数)の事前共有鍵による暗号化をサポート
- Diffie-Hellman鍵交換: DHKeyExchangeクラスによる2048ビットDHパラメータとHKDF鍵導出による動的な鍵交換
- AES-256-GCM認証暗号: 認証タグ付きの暗号化により、機密性と完全性を同時に保証
- セッションベース鍵管理: set_session_key()/get_session_key()によるノード間のセッション鍵管理
- Forward Secrecy: DH鍵交換により、セッションごとに異なる鍵を使用し、過去の通信の安全性を保証
- 後方互換性: レガシーフォーマット(埋め込み鍵)とセキュアフォーマット(PSK/セッション鍵)の両方をサポート
実装クラス:
- evospikenet.spike_encryption.DHKeyExchange: DH鍵交換の実装
- evospikenet.spike_encryption.SpikeEncryption: 暗号化/復号化エンジン
- evospikenet.zenoh_comm.ZenohCommunicator: PSK設定とDH鍵交換の統合
使用例:
# PSKモード
config = ZenohConfig(
mode="peer",
namespace="evospikenet",
psk="a1b2c3d4..." # 64文字の16進数
)
comm = ZenohCommunicator(config)
# DH鍵交換モード
peer_public_key = comm.initiate_key_exchange("peer_node_id")
# ピアからの公開鍵を受信後
comm.complete_key_exchange(peer_public_key_bytes)
詳細は SECURE_DISTRIBUTED_BRAIN.md を参照してください。
3.3.4. 信頼性向上メカニズム (MT25-EV016)
ACK/リトライ機構: ZenohCommunicator に確認応答とリトライ機能を実装し、ノード間通信の信頼性を99%+ から99.9%+ に向上させました。 - Request ID で送受信相関を追跡 - 指数バックオフでリトライ間隔を自動調整 - 接続状態を常時監視
Structured Logging: すべての通信エラーと性能イベントを構造化ログとして記録し、トラブルシューティングを高速化。 - リクエストのライフサイクルを完全追跡 - エラータイプと試行回数を自動記録
詳細は evospikenet/zenoh_comm.py の StructuredLogger クラスを参照。
3.4. スパイク送信の最適化
SpikePacket データ構造 (PTPSpikePacket):
# evospikenet/ptp_sync.py
@dataclass
class PTPSpikePacket:
timestamp_ns: int # PTP同期されたナノ秒タイムスタンプ
modality: str
data: torch.Tensor
metadata: Dict
3.4.1. AEG-Comm通信最適化
AEG-Comm (Adaptive Energy-based Gating for Communication)は、3層セーフティアーキテクチャによるインテリジェントな通信制御システムです。
特徴: - Layer 1: Energy Gate - エネルギーベースの適応的ゲーティング - Layer 2: Critical Override - 重要パケットの優先送信(force、safetyモダリティ、緊急キーワード) - Layer 3: Timestamp Guarantee - タイムスタンプ保証による順序性維持 - 通信削減率: 85-93%目標達成 - エラー回復: 指数バックオフ再試行 - セキュリティ: スパイク暗号化(MT25-EV015)
3.5. 分散記憶システム (Distributed Memory System)
実装完了: 2025年12月21日
Zenoh通信プロトコルを使用したエピソード記憶の分散共有システム。複数ノード間での知識共有と協調学習を実現。
3.5.1. アーキテクチャ概要
graph TD
A[Node A: EpisodicMemory] --> Z[Zenoh Router]
B[Node B: EpisodicMemory] --> Z
C[Node C: EpisodicMemory] --> Z
Z --> A
Z --> B
Z --> C
A --> T1[evolspikenet/memory/node_A]
B --> T2[evolspikenet/memory/node_B]
C --> T3[evolspikenet/memory/node_C]
3.5.2. 主な機能
1. 分散記憶有効化
# EpisodicMemory クラスの拡張メソッド
def enable_distributed_memory(self, node_id: str, zenoh_config: Optional[Dict[str, Any]] = None) -> bool:
"""Zenoh通信による分散記憶を有効化"""
2. 記憶共有
def share_memory_with_node(self, target_node_id: str, memory_ids: List[str]) -> bool:
"""指定ノードへの記憶共有"""
3. 同期要求
def request_memory_sync(self, target_node_id: str, sync_criteria: Dict[str, Any]) -> bool:
"""他のノードからの記憶同期要求"""
3.5.3. 通信トピック構造
evolspikenet/memory/{node_id} # 記憶共有トピック
evolspikenet/memory/sync/{node_id} # 同期要求トピック
3.5.4. メッセージフォーマット
記憶共有メッセージ:
{
"type": "memory_share",
"source_node": "node_A",
"memories": [
{
"source_node": "node_A",
"memory_data": {...}, # EpisodicMemoryEntry.to_dict()
"timestamp": "2025-12-21T10:30:00.000000"
}
]
}
同期要求メッセージ:
{
"type": "sync_request",
"source_node": "node_B",
"criteria": {
"importance_threshold": 0.7,
"time_range": {"start": "2025-12-20", "end": "2025-12-21"}
},
"timestamp": "2025-12-21T10:30:00.000000"
}
3.5.5. 記憶マージ戦略
インテリジェントマージ: - 重複記憶の重要度ベース統合 - アクセス統計の加重平均 - メタデータの統合
def _merge_memory_entry(self, existing_id: str, new_entry: EpisodicMemoryEntry) -> None:
"""既存記憶と新規記憶のマージ"""
existing = self.memories[existing_id]
# 重要度の加重平均
total_access = existing.access_count + new_entry.access_count
if total_access > 0:
existing.importance = (
(existing.importance * existing.access_count +
new_entry.importance * new_entry.access_count) / total_access
)
3.5.6. 性能特性
| 指標 | 値 | 備考 |
|---|---|---|
| 同期成功率 | 95% | Zenohの信頼性による |
| レイテンシ | <10ms | ローカルネットワーク |
| メモリ使用量 | +5% | 通信オーバーヘッド |
| スケーラビリティ | 100ノード | 理論的上限 |
3.5.7. 使用例
<!-- from evospikenet.episodic_memory import EpisodicMemory -->
# 分散記憶有効化
memory = EpisodicMemory(embedding_dim=512, max_memories=1000)
memory.enable_distributed_memory("brain_node_01", {"port": 7447})
# 経験保存
memory_id = memory.store_experience(
context={"task": "pattern_recognition"},
action="classify_image",
outcome="correct",
reward=1.0
)
# 他のノードと記憶共有
memory.share_memory_with_node("brain_node_02", [memory_id])
# 同期要求
memory.request_memory_sync("brain_node_03", {
"importance_threshold": 0.8,
"time_range": {"start": "2025-12-21"}
})
3.5.8. 分散学習効果
- 協調学習: ノード間での知識共有による学習加速
- 冗長性: 分散によるデータ損失耐性向上
- スケーラビリティ: 動的ノード追加/削除対応
- 適応性: 分散環境での継続的学習
3.6. セキュリティシステム (Spike Encryption & Secure Communication)
実装完了: 2026年1月24日
分散脳ノード間の暗号化通信システム。MT25-EV015特許実装により、スパイクデータとメッセージの機密性と完全性を保証。
3.6.1. セキュリティアーキテクチャ概要
graph TD
A[Node A] -->|PSK/DH鍵交換| B[Node B]
A -->|暗号化スパイク| C[Zenoh Router]
C -->|暗号化スパイク| B
subgraph "SpikeEncryption System"
PSK[Pre-Shared Key]
DH[Diffie-Hellman Exchange]
SESSION[Session Key Management]
end
PSK --> SESSION
DH --> SESSION
SESSION --> ENC[AES-256-GCM Encryption]
ENC --> C
3.6.2. セキュリティ機能
1. 事前共有鍵 (PSK)
# 256-bit PSK生成
import os
psk = os.urandom(32).hex() # 64 hex characters
# ZenohConfigでPSK設定
config = ZenohConfig(
psk=psk,
namespace="evospikenet"
)
2. Diffie-Hellman鍵交換
# DH鍵交換の初期化
dh_exchange = DHKeyExchange()
public_key = dh_exchange.generate_keypair()
# ピアとの鍵交換
shared_secret = dh_exchange.compute_shared_key(peer_public_key)
session_key = dh_exchange.derive_session_key(shared_secret)
3. セッションベース暗号化 - Forward Secrecy: DH鍵交換により、過去のセッションが漏洩しても影響なし - AES-256-GCM: 認証暗号により改ざん検知 - 動的鍵管理: セッションごとに異なる鍵を使用
3.6.3. 暗号化フォーマット
セキュア形式 (PSK/Session Key使用時):
{
"format": "secure",
"nonce": "<12 bytes base64>",
"ciphertext": "<encrypted spike data>",
"tag": "<16 bytes auth tag>"
}
レガシー形式 (後方互換):
{
"format": "legacy",
"key": "<embedded AES key>",
"nonce": "<12 bytes base64>",
"ciphertext": "<encrypted spike data>",
"tag": "<16 bytes auth tag>"
}
3.6.4. 通信トピック構造
evospikenet/security/key_exchange/{node_id} # DH公開鍵の交換
evospikenet/spikes/{source}/{dest} # 暗号化スパイクデータ
evospikenet/heartbeat/{node_id} # ノード生存確認
3.6.5. セキュリティメトリクス
| 指標 | 値 | 備考 |
|---|---|---|
| 暗号化アルゴリズム | AES-256-GCM | NIST推奨 |
| 鍵長 | 256-bit | 量子耐性考慮 |
| DH鍵サイズ | 2048-bit | RFC 3526準拠 |
| 暗号化オーバーヘッド | <5% | ベンチマーク測定 |
| 鍵交換時間 | <100ms | ローカルネットワーク |
| Forward Secrecy | 有効 | セッションごとに鍵更新 |
3.6.6. 使用例
<!-- TODO: update or remove - import failZenohCommunicator, ZenohConfig -->
# PSKモード
config = ZenohConfig(
psk="64-hex-character-pre-shared-key",
namespace="evospikenet"
)
comm = ZenohCommunicator(config)
# DH鍵交換モード
comm = ZenohCommunicator(ZenohConfig())
comm.initiate_key_exchange("peer_node_id")
# ... 鍵交換完了後、セッションキーで暗号化 ...
3.6.7. セキュリティベストプラクティス
- PSK管理: 環境変数またはシークレット管理システムで保存
- 鍵ローテーション: 定期的なセッションキー更新(推奨: 1時間ごと)
- TLS統合: ZenohのTLS機能と併用可能
- 監査ログ: 暗号化イベントのロギング
- アクセス制御: ノードIDベースの認証
詳細ドキュメント: SECURE_DISTRIBUTED_BRAIN.md
4. PFCとQ-PFCフィードバックループ
4.1. PFCDecisionEngine 概要
PFCは、システムの最高次認知機能を担います。
- ワーキングメモリ: LIFニューロン層による短期記憶
- タスクルーティング: ChronoSpikeAttentionによる注意機構
- エントロピー計算: 意思決定の不確実性の定量化
- 自己変調: Q-PFCフィードバックループ
4.2. Q-PFCフィードバックループの理論
4.2.1. 認知エントロピーの定義
4.2.2. 量子インスパイアード変調
4.2.3. 自己変調メカニズム
閾値の動的調整: $$ \text{threshold}(t) = \text{threshold}_{\text{base}} \cdot (0.5 + \alpha(t)) $$ - 低\(\alpha(t)\)(高エントロピー): 閾値が下がり、探索的な発火が増加。 - 高\(\alpha(t)\)(低エントROPY): 閾値が上がり、安定的・確定的な発火が増加。
ルーティング温度の制御: $$ T_{\text{routing}} = \frac{1}{\alpha(t) + \epsilon} \quad (\epsilon = 10^{-9}) $$ - 低\(\alpha(t)\): 温度が上昇し、ソフトマックスが均等分布に近づき、探索的ルーティング。 - 高\(\alpha(t)\): 温度が1に近づき、ソフトマックスが最大値に集中し、利用的ルーティング。
4.3. PFCの実装 (evospikenet/pfc.py)
4.3.1. QuantumModulationSimulator
ドキュメントの数式通りにalpha_tを計算します。
4.3.2. PFCDecisionEngine
実装上の特徴:
- スタンドアロンモード: num_modules=0の場合、エラーを起こさずに動作するようmax_entropyにデフォルト値1.0を設定。
- 柔軟な入力: forward()メソッドは、入力がtorch.long(トークンID)の場合は埋め込み層を通し、それ以外(スパイク列)は直接使用する。
- 固定値: vocab_sizeはデフォルトで256。PFCへのテキスト入力は、ord(c) % 256という単純な文字コード変換(プレースホルダー)で行われる。
詳細フロー図:
graph TD
A["入力データ"] --> B{"データ型?"}
B -->|"トークンID: torch.long"| C["Embedding: 256, size"]
B -->|"スパイク: torch.float"| D["そのまま使用"]
C --> E["時間次元に展開"]
D --> E
E --> F["ワーキングメモリ更新"]
F --> G["ChronoSpikeAttention"]
G --> H["決定ベクトル生成"]
H --> I["ルーティングスコア計算"]
I --> J["Softmax"]
J --> K["エントロピー計算 H"]
K --> L["Q-PFC: alpha_t 生成"]
L --> M["ルーティング温度調整 T"]
M --> N["最終ルーティング確率: softmax scores/T"]
L --> O["閾値変調: threshold = base * 0.5 + alpha"]
O --> F
N --> P["出力: route_probs"]
K --> Q["出力: entropy"]
F --> R["出力: spikes, potential"]
5. 高度な意思決定エンジン
5.1. AdvancedPFCEngine
PFCDecisionEngineを拡張し、ExecutiveControlEngineを統合して高度な認知制御を提供します。
実装上の特徴:
- 動的ゴール追加: add_goal()メソッドにより、外部から高レベルのゴールを動的に追加可能。
- プレースホルダー実装: add_goal()内のゴール埋め込み生成は、torch.randn(self.size)というダミー実装であり、将来的には適切なエンコーディング手法に置き換えが必要。
- パフォーマンス追跡: get_performance_stats()メソッドにより、総意思決定回数、成功率、平均エントロピーなどのパフォーマンス指標を取得可能。
詳細: ADVANCED_DECISION_ENGINE.md
6. ノード発見システム
6.1. ZenohNodeDiscovery (evospikenet/node_discovery.py)
中央監視型サービスとして実装されており、単一のインスタンス(シングルトン)が全ノードの健全性を監視します。100+ノード対応のスケーラビリティを備えています。
主要機能:
- ハートビート監視: evospikenet/heartbeat/*トピックを購読し、全ノードのハートビートを監視。
- 状態管理: 最後にハートビートを受信してから一定時間(デフォルト5.0秒)が経過したノードをinactive状態に更新。監視ループは1.0秒間隔で実行。
- UI連携: export_for_ui()メソッドが、UI表示用にステータスアイコン(🟢/🔴)を含む整形済みデータを提供。
スケーラビリティ改善 (MT25-EV016):
100+ノード対応のため、ノードグループ化機構を実装しました。大規模クラスタでのノード検索を O(n) から O(1) に高速化します。
- セクション内でモジュール別にノードを自動分類
- get_nodes_by_type(module_type) で即座にノード取得
- 登録/削除時に自動的にグループに追加/削除
- get_group_statistics() で各モジュール別の統計情報取得可能
6.2. PFCによる利用
PFCは、ルーティング先を決定した後、_has_active_nodes_for_module()メソッドでZenohNodeDiscoveryサービスに問い合わせ、ターゲットモジュールがアクティブかを確認します。
フォールバックロジック:
- ターゲットモジュール(例: visual)にアクティブなノードが存在しない場合、タスクは自動的にlang-mainモジュールにフォールバックされる。これにより、一部のノードがダウンしてもシステム全体の機能が停止しない堅牢性を確保している。
詳細: ADVANCED_NODE_DISCOVERY.md
7. ChronoSpikeAttention機構
7.1. 概要
ChronoSpikeAttentionは、時間的因果性を保証するスパイキング注意機構です。
- 因果性の保証: 未来の情報を参照しない
- 時間的近接性バイアス: 近い時刻ほど重みが大きい
- スパイク出力: 複数のニューロンモデル(LIF, Izhikevich等)をサポート
7.2. 理論的基礎
因果的時間近接性マスク: $$ \text{mask}(t, t') = \begin{cases} 0 & \text{if } t' > t \ \exp\left(-\frac{t - t'}{\tau}\right) & \text{if } t' \leq t \end{cases} $$ 完全な式: $$ \text{Attention}{\text{chrono}}(Q, K, V) = \text{SpikingNeuron}\left(\text{sigmoid}\left(\frac{QK^T}{\sqrt{d_k}}\right) \odot M \cdot V \cdot W{\text{out}}\right) $$
7.3. 実装の詳細 (evospikenet/attention.py)
- 時定数
tauのデフォルト値:tauが指定されない場合、time_steps / 4.0という固定の経験則に基づいて設定される。 - 多様なニューロンタイプ:
neuron_type引数により、'LIF'(snnTorch)、'EvoLIF'(カスタム整数ベースLIF)、'Izhikevich'を切り替え可能。 - 固定スケール係数:
neuron_type='EvoLIF'の場合、LIF層への入力は* 1000.0でスケーリングされる。これは、浮動小数点出力を整数ベースニューロンの適切な動作範囲に変換するための固定値。 - データ形状: 入力は
(batch_size, time_steps, seq_len, input_dim)の4次元テンソルを想定している。
8. 分散脳ノードの実行フロー
8.1. ノードの初期化シーケンス
sequenceDiagram
participant M as "Main"
participant PTP as "PTP Manager"
participant S as "Safety Controller"
participant D as "Node Discovery"
participant N as "ZenohBrainNode"
M->>PTP: 1. init_ptp
M->>S: 2. init_safety
M->>D: 3. init_node_discovery
M->>N: 4. ZenohBrainNode
N->>N: 5. _create_model: AutoModelSelector使用
M->>N: 6. start: サブスクリプション設定
8.2. プロンプト処理フロー(実装準拠)
PFCノードは、UIからのプロンプトを2つの経路で受信します。
- Zenoh経由: APIが
api/promptトピックにPublishし、PFCの_on_api_prompt()コールバックが起動。 - ファイル経由(レガシー): APIが
/tmp/evospikenet_prompt_*.jsonファイルを書き込み、PFCの_process_pfc_timestep()が100Hzループでポーリングして発見。
どちらの経路でも、最終的にPFCはタスクを分析し、適切な機能モジュール(例: lang-main)のトピック(例: pfc/text_prompt)にPublishします。
8.3. タイムステップ処理
各ノードはprocess_timestep()を100Hz(10msごと)のループで実行します。ループ内では以下の処理が行われます。
1. ステップカウンターのインクリメント
2. SimulationRecorderへの制御状態記録
3. PFCノードの場合、APIへのステータス更新(2秒間隔)
4. safety_heartbeat()の送信
5. モジュール固有の処理(PFCのファイルポーリングなど)
9. データ構造と型定義
9.1. PTPSpikePacket
evospikenet.ptp_syncで定義。PTP同期された高精度タイムスタンプを含むスパイクパケット。
9.2. MotorGoal
evospikenet.motor_consensusで定義。モーター制御のゴール定義。
9.3. NodeInfo
evospikenet.node_discoveryで定義。ノード発見サービスが管理するノード情報。
10. 性能最適化と制御
10.1. 高速起動 (FastStartupSequencer)
examples/run_zenoh_distributed_brain.pyの--fast-startupフラグで使用。
- 目標: 15秒以内に全ノードを起動。
- 戦略: max_workers=5の並列初期化と、PFCをpriority=0とする優先度付き起動。
- 固定値: PFCのタイムアウトは5.0秒、その他ノードは3.0秒。
10.2. PTP時刻同期
evospikenet.ptp_syncにより、マイクロ秒レベルの時刻同期を提供。
10.3. 安全性監視
evospikenet.fpga_safetyにより、速度や温度などの安全リミットを監視。
10.4. メモリ監視と自動管理 (MT25-EV016)
MemoryMonitor クラス:
バックグラウンドで定期的にメモリ使用量を監視し、メモリリークの早期検出と自動GCトリガーを実現。
- 60秒間隔でメモリ使用量チェック
- RSS > 1000MBで警告ログ出力
- 100MB以上の成長を検出して警告
- メモリ成長が200MB以上の場合、自動的に gc.collect() 実行
ZenohCommunicator 統合: 圧縮バッファのメモリ使用量を制限し、OOMを防止。不要なバッファは自動的に解放。
10.5. NTP 同期監視 (MT25-EV016)
RaftConsensus への NTP 検証機構: Raftリーダー選出前にシステムクロック同期を検証し、ネットワークパーティション下での < 5秒のフェイルオーバーを確実にします。 - 60秒間隔でシステムクロック同期状態を検証 - clock_sync_tolerance (デフォルト0.1秒) 超過時に警告 - Linux環境で timedatectl を統合 - 同期外の状態の履歴を追跡
10.6. ボトルネック分析
- ネットワーク: Zenohの遅延 < 1ms(通常は無視可能)
- 計算:
SpikingEvoSpikeNetLM.generate()での推論(GPU推奨) - メモリ:
AutoModelSelectorによる大規模モデルのロード +メモリ監視による保護 - 通信信頼性: ACK/リトライにより99.9%+確保
- ノード発見: グループ化により O(1) で高速ルックアップ
11. シミュレーションデータの記録
11.1. SimulationRecorder
--enable-recordingフラグで使用可能。シミュレーション中の内部状態をHDF5ファイルに記録します。
- 記録対象: スパイク、膜電位、重み、制御状態
- 設定: コマンドライン引数で記録対象を細かく制御可能。
詳細はSIMULATION_RECORDING_GUIDE.mdを参照。
12. 長期間記憶システム
12.1. 概要
2025年12月31日実装完了: EvoSpikeNetの分散脳に長期間記憶機能を統合しました。FAISSベースのベクトル検索とZenoh通信により、永続的な知識保持と学習適応を実現します。
12.2. アーキテクチャ
graph TB
subgraph "長期間記憶ノード"
LTM["LongTermMemoryNode<br/>基底クラス"]
EPI["EpisodicMemoryNode<br/>時系列イベント記憶"]
SEM["SemanticMemoryNode<br/>事実知識記憶"]
INT["MemoryIntegratorNode<br/>記憶統合・連想"]
end
subgraph "ストレージ層"
FAISS["FAISS<br/>ベクトル検索インデックス"]
ZCOMM["Zenoh Communicator<br/>分散通信"]
PTP["PTP Sync<br/>時刻同期"]
end
subgraph "統合インターフェース"
STORE["store_memory()<br/>記憶保存"]
QUERY["query_memory()<br/>類似検索"]
RETRIEVE["retrieve_memory()<br/>特定検索"]
ASSOCIATE["associate_memories()<br/>クロスモーダル連想"]
end
LTM --> FAISS
EPI --> LTM
SEM --> LTM
INT --> EPI
INT --> SEM
LTM --> ZCOMM
ZCOMM --> PTP
STORE --> LTM
QUERY --> LTM
RETRIEVE --> LTM
ASSOCIATE --> INT
12.3. 実装済み機能
メモリノードクラス
- LongTermMemoryNode: FAISSを使用したベクトル類似性検索の基底クラス
- EpisodicMemoryNode: 時系列イベントのシーケンス記憶(
store_episodic_sequence()) - SemanticMemoryNode: 概念・知識の構造化記憶(
store_knowledge()) - MemoryIntegratorNode: エピソードとセマンティック記憶の統合・連想
コア機能
- ベクトル検索: FAISSによる高速近傍検索(コサイン類似度)
- Zenoh統合: Pub/Subによる分散メモリ操作
- PTP同期: ナノ秒精度タイムスタンプ(テスト環境ではシステム時間)
- 重要度管理: アクセス頻度と重要度に基づくメモリ保持
- クロスモーダル連想: 異なる記憶タイプ間の関連付け
分散脳統合
- 29ノードアーキテクチャ(スパイク圧縮ノード込み)へのメモリノード追加
- Zenohトピック経由のリアルタイムメモリ操作
- 長期学習のための経験再生と知識保持
12.4. APIインターフェース
基本操作
# メモリ保存
memory_id = await memory_node.store_memory(content_vector, metadata, importance=0.8)
# 類似検索
results = await memory_node.query_memory(query_vector, top_k=5, threshold=0.7)
# 戻り値: [(memory_id, score, metadata), ...]
# 特定検索
entry = await memory_node.retrieve_memory(memory_id)
# 戻り値: MemoryEntry or None
特殊操作
# エピソード記憶
await episodic_node.store_episodic_sequence(sequence_vectors, metadata)
# セマンティック記憶
await semantic_node.store_knowledge(concept, embedding, related_concepts)
# 記憶統合
associations = await integrator.associate_memories(episodic_query, semantic_query)
12.5. 性能特性
- 検索速度: FAISSによる高速ベクトル検索(ミリ秒オーダー)
- スケーラビリティ: 数百万ベクトルの効率的処理
- メモリ効率: 重要度ベースの自動整理・削除
- 分散耐性: Zenohによるノード間同期
12.6. テストカバレッジ
完全なテストスイートを実装(9テストケース、100%成功): - 初期化テスト - 記憶保存・検索・取得テスト - エピソードシーケンス記憶テスト - 知識保存テスト - 記憶統合・連想テスト
12.7. 実装ファイル
evospikenet/memory_nodes.py: メモリノード実装examples/run_zenoh_distributed_brain.py: 分散脳統合tests/test_memory_nodes.py: テストスイートrequirements.txt: FAISS依存関係Dockerfile: コンテナ設定
13. Feature 13: 高度な空間処理ノード ✅ 新規実装完了 (2026-02-17)
13.1. 概要
EvoSpikeNetの分散脳システムに追加された高度な空間認知・生成システム。生物学的脳の視覚システム(後頭葉~側頭葉~頭頂葉)をシミュレートする4つの専有ノード(Rank 12-15)で構成。
実装ファイル: spatial_processing.py (3500+ 行)
テストファイル: test_distributed_brain_simulation.py (2000+ 行)
詳細仕様: DISTRIBUTED_BRAIN_SPATIAL_NODES.md
13.2. ノード構成 (Rank 12-15)
視覚処理フロー:
┌─────────────────────────────────────────────┐
│ Rank 1: Vision (基本視覚特徴抽出) │
└──────────┬──────────────────────────────────┘
│
┌────┴────┐
│ │
▼ ▼
┌──────────┐ ┌──────────────┐
│ Rank 12 │ │ Rank 13 │
│Where処理 │ │What処理 │
│(空間・ │ │(物体認識) │
│ 深度) │ │ │
└────┬─────┘ └──────┬───────┘
│ │
└───────┬───────┘
│
▼
┌──────────────┐
│ Rank 14 │
│統合処理 │
│What-Where │
│融合 │
└────┬─────────┘
│
▼
┌──────────────┐
│ Rank 15 │
│注意制御 │
│Saccade計画 │
└──────────────┘
| Rank | ノード | 脳領域 | 処理内容 | 実装状態 |
|---|---|---|---|---|
| 12 | SPATIAL_WHERE | 頭頂葉背側 | 空間位置・深度認識、網膜座標 | ✅ 完了 |
| 13 | SPATIAL_WHAT | IT皮質 | 物体認識、シーン理解、100+クラス分類 | ✅ 完了 |
| 14 | SPATIAL_INTEGRATION | 後頭頭頂接合部 | What-Where統合、世界モデル | ✅ 完了 |
| 15 | SPATIAL_ATTENTION | 前頭眼窩野 | 注意制御、Saccade計画 | ✅ 完了 |
13.3. コアコンポーネント
CoordinateTransformer (座標変換)
- 機能: Egocentric ↔ Allocentric 座標系の変換
- 入力: Rank 12 からの視覚座標
- 出力: 変換済み空間座標、回転行列
- 実装: 四元数/Euler角対応
DepthEstimationNetwork (深度推定)
- モデル: CNN ベースの単眼深度推定
- 入力: RGB画像 (H×W×3)
- 出力: 深度マップ (1×H×W)
- 性能: < 50ms latency
SpatialCoordinateEncoder (スパイク変換)
- 機能: 3D座標 → スパイク表現変換
- エンコーディング: 多スケール、LIFニューロン
- 出力: スパイク時系列 (T×N×D)
SpatialAttentionModule (マルチヘッド注意)
- ヘッド数: 8
- 機能: What/Where情報の重み付け
- 出力: 統合注意マップ
DistributedSpatialCortex (統合システム)
- 役割: 4つのノード (Rank 12-15) の統合管理
- 通信: Zenoh Pub/Sub (
spikes/spatial/*) - 性能監視: profile_section コンテキストマネージャ統合
13.4. パフォーマンス特性
| 指標 | 目標 | 実績 | 状態 |
|---|---|---|---|
| Rank 12 レイテンシ | < 50ms | 10-20ms avg | ✅ 達成 |
| Rank 13 レイテンシ | < 30ms | 8-15ms avg | ✅ 達成 |
| Rank 14 レイテンシ | < 50ms | 12-25ms avg | ✅ 達成 |
| Rank 15 レイテンシ | < 30ms | 7-12ms avg | ✅ 達成 |
| E2E パイプライン | < 100ms | 37-72ms avg | ✅ 達成 |
| スループット | > 100 msg/sec | 100+ msg/sec | ✅ 達成 |
| スケーラビリティ | 100+ ノード | 100+ ノード対応 | ✅ 検証済み |
13.5. テスト実装
テストファイル: test_distributed_brain_simulation.py
テストクラス:
| テストクラス | テスト数 | 対象 | 状態 |
|---|---|---|---|
| TestSpatialNodeIntegration | 5 | Rank 12-15各ノード + E2E | ✅ 完了 |
| TestMultiNodeCommunication | 3 | Zenoh通信、メッセージフロー | ✅ 完了 |
| TestErrorRecovery | 3 | ノード失敗時のリカバリー | ✅ 完了 |
| TestPerformance | 2 | レイテンシ・スループット | ✅ 完了 |
| TestScalability | 1 | 100+ ノード検証 | ✅ 完了 |
| TestRaftPerformanceProfiling | 3 | profile_section計測 | ✅ 完了 |
テスト統計: - 総テスト数: 17+ - 合格率: 100% - 総実行時間: < 5秒
13.6. パフォーマンス計測機構
profile_section コンテキストマネージャ (pfc.py)
# 自動パフォーマンス計測
with profile_section("section_name", performance_stats, threshold_ms=100):
# 処理実行
# 機能:
# - 自動計測 (perf_counter精度)
# - 移動平均追跡 (100サンプル)
# - 閾値超過警告
# - 統計情報蓄積
計測セクション:
- ntp_check: NTP同期チェック
- election_init: リーダー選出初期化
- vote_collection: 投票収集
- election_finalization: 選出完了
13.7. 実装完了サマリー
実装状況: - ✅ Phase 1: ノード初期化 & Zenohトピック設計 - ✅ Phase 2: SPATIAL_WHERE実装 (DepthEstimationNetwork, SpatialCoordinateEncoder) - ✅ Phase 3: SPATIAL_WHAT実装 (物体認識, シーン理解) - ✅ Phase 4: 統合層実装 (What-Where統合, 注意制御) - ✅ Phase 5: テスト & 最適化
提供物: - 実装コード: 3500+ 行 - テストコード: 2000+ 行 - ドキュメント: DISTRIBUTED_BRAIN_SPATIAL_NODES.md
完了日: 2026年2月17日
加速率: 予定比 7.1x (12週の予定が 3.5週で完了)
まとめ
本ドキュメントでは、EvoSpikeNetの分散脳シミュレーションシステムの以下の側面を、ソースコードの実装に即して詳解しました:
- Zenoh通信: バージョン互換性レイヤーを含む非同期Pub/Subアーキテクチャ
- Q-PFCフィードバックループ: 量子インスパイアードの自己変調メカニズムと実装の詳細
- ChronoSpikeAttention: 時間的因果性を保証するスパイキング注意機構と、その固定値
- 分散実行フロー: デュアル入力パスや自動フォールバックを含む堅牢な実行モデル
- 動的インフラ: 中央監視型のノード発見サービスと、動的なモデルローダー
- 性能・補助機能: 高速起動シーケンサーとシミュレーション記録機能
- 長期間記憶システム: FAISSベースのベクトルメモリと分散統合
- 高度な空間処理 (Feature 13 ✅): 4層の空間認知ノード (Rank 12-15) による視覚情報の統合処理
参考実装ファイル:
- evospikenet/pfc.py: PFCとQ-PFCフィードバックループ、profile_section計測機構
- evospikenet/attention.py: ChronoSpikeAttention
- evospikenet/zenoh_comm.py: Zenoh通信層
- evospikenet/node_discovery.py: ノード発見サービス
- evospikenet/spatial_processing.py: Feature 13 空間処理ノード (Rank 12-15) ✅
- evospikenet/memory_nodes.py: 長期間記憶ノード
- examples/run_zenoh_distributed_brain.py: 分散脳実行スクリプト
テストファイル:
- tests/integration/test_distributed_brain_simulation.py: マルチノード統合テスト (17+ テスト) ✅
ドキュメント:
- docs/DISTRIBUTED_BRAIN_SPATIAL_NODES.md: Feature 13 詳細仕様書 ✅
- docs/DISTRIBUTED_BRAIN_VALIDATION_REPORT.md: 検証レポート (最新版) ✅
- docs/DISTRIBUTED_BRAIN_IMPLEMENTATION_VERIFICATION.md: 実装完了サマリー ✅
- docs/DISTRIBUTED_BRAIN_METRICS_UI.md: フロントエンドメトリクス表示(インストール手順・API・運用ノート)
14. 生物模倣オーバーレイ(BiomimeticAdapter)⭐ NEW 2026-02-25
14.1. 概要
evospikenet/eeg_integration/distributed_brain_executor.py 内の DistributedBrainExecutor に
BiomimeticAdapter を統合し、EEG→ブレインコマンドの生成時に生物学的な調整係数を自動付与します。
EEG データ
↓
BiomimeticAdapter
├─ rhythm_metrics() … δ/α 帯域パワー抽出
├─ modulatory_gain() … ドーパミン/ノルアドレナリン相当ゲイン (0.6–1.6)
├─ homeostasis_scale() … ホメオスタシス制約スケール (0.5–1.5)
├─ dev_gain() … 発達段階利得 (0.5–1.5)
└─ sleep_state() … 睡眠バッファ管理
↓
EEGBrainCommand.metadata["biomimetic"]
↓
DistributedBrainNode(受信側)
└─ biomimetic_gain をレスポンスに付与
14.2. 設定パラメータ
| 設定名 | 型 | デフォルト | 説明 |
|---|---|---|---|
enable_biomimetic |
bool | True |
生物模倣オーバーレイの有効化 |
low_latency_mode |
bool | False |
True でオーバーレイをスキップし最低レイテンシ化 |
development_stage |
float | 1.0 |
0.0(初期)〜1.0(成熟)の発達段階 |
energy_budget |
float | 1.0 |
利用可能エネルギー割合(0〜1) |
sleep_buffer_seconds |
float | 3.0 |
睡眠バッファ保持時間(秒) |
14.3. 関連ファイル
evospikenet/eeg_integration/distributed_brain_executor.py:BiomimeticAdapterとDistributedBrainConfigを含むevospikenet/distributed_brain_node.py:biomimetic_gainをレスポンスメタデータに付与docs/DISTRIBUTED_BRAIN_EEG_INTEGRATION.md: BiomimeticAdapter の詳細使用例
14.4. テスト通過状況 (2026-02-25)
Docker (dev, ubuntu:22.04, CPU) 環境で以下 23 ケース全通過:
- tests/research/test_paper_1_2_distributed_brain_architecture.py
- tests/integration/test_brain_genome_integration.py
- tests/unit/test_hierarchical_plasticity.py
15. ゲノム駆動分散推論(Phase D)⭐ NEW 2026-03-11
15.1. 概要
Phase D 実装により、DistributedEvolutionEngine が生むゲノムを実行中の DistributedBrainNode に直接展開できるようになりました。
展開後はノード内の _process_brain_command() が実ネットワーク(InstantiatedBrain)で推論を実行します。
15.2. パイプライン
DistributedEvolutionEngine.run_evolution(generations=N)
└─→ best_genome
│
▼ deploy_to_nodes([node1, node2, ...])
DistributedBrainNode.deploy_genome(best_genome)
│
▼ GenomeToBrainConverter().instantiate(genome) → InstantiatedBrain
_process_brain_command()
│
▼ InstantiatedBrain(input_tensor) → confidence補正
15.3. コード例
import asyncio
from evospikenet.distributed_evolution_engine import DistributedEvolutionEngine
from evospikenet.distributed_brain_node import DistributedBrainNode
engine = DistributedEvolutionEngine(config={"population_size": 50})
best = asyncio.run(engine.run_evolution(generations=50))
pfc_node = DistributedBrainNode("pfc", config={"neuron_count": 1000, "specialization": "pfc"})
motor_node = DistributedBrainNode("motor", config={"neuron_count": 512, "specialization": "motor"})
engine.deploy_to_nodes([pfc_node, motor_node])
for node in [pfc_node, motor_node]:
assert node.get_stats()["genome_deployed"] is True
15.4. 関連変更ファイル
| ファイル | 内容 |
|---|---|
evospikenet/brain_simulation.py |
BrainSimulation(BrainSimulationFramework) ラッパー追加 |
evospikenet/genome_to_brain.py |
InstantiatedBrain.apply_weight_delta() 追加 |
evospikenet/distributed_brain_node.py |
deploy_genome() + genome forward pass + get_stats() 更新 |
evospikenet/distributed_evolution_engine.py |
deploy_to_nodes() 追加 |
16. コネクトーム統合(Phase E) ⭐ NEW 2026-03-19
16.1. 概要
Phase E は実世界の神経回路データ(コネクトーム)を EvoSpikeNet の 29 ノードトポロジーへ直接適用するフェーズです。
C. elegans(302 ニューロン)、FlyWire(≈140,000 ニューロン)、MICrONS(≈65,000 ニューロン)、HCP(マクロスケール DTI)から
構造的接続重みと軸索伝導遅延を取得し、ConnectomeLIFLayer.structural_mask(PyTorch sparse COO)として注入します。
Phase E-0/E-1/E-2 は 2026-03-19 に全完了。 合計 102 テスト PASS。
16.2. 実装済みモジュール一覧
| モジュール | ファイル | 主要クラス/関数 | 備考 |
|---|---|---|---|
| コネクトームローダー | evospikenet/connectome_loader.py |
load_json, load_npz, save_npz, stratified_sample, spectral_coarsen, load, read_etag, write_etag |
F-1/F-2 削減・ETag+TTL キャッシュ |
| ノードマッピング | evospikenet/connectome/node_mapping.py |
get_source_for_node, build_manifest, apply_to_layer |
29 ノード ↔ データソース対応 |
| スパース遅延バッファ | evospikenet/connectome/delay_buffer.py |
SparseDelayBuffer |
COO リングバッファ [max_delay+1, n_neurons] |
| Zenoh メタデータ発行 | evospikenet/zenoh_connectome_publisher.py |
ConnectomeMetadataPublisher |
トピック connectome/metadata/{node_id} |
| ConnectomeLIF 層 | evospikenet/core.py |
ConnectomeLIFLayer |
structural_mask + attach_sparse_delay_buffer |
| コネクトーム密度計算 | evospikenet/forgetting_controller.py |
compute_connectome_density |
Meta-STDP との連携 |
16.3. SparseDelayBuffer — 遅延付きシナプス伝達
生物学的なニューロン間の軸索伝導遅延(0.1–20 ms)を模倣するため、SparseDelayBuffer を実装しました。
内部は COO 形式のリングバッファ [max_delay+1, n_neurons] で、非ゼロ遅延のみを保持してメモリを節約します。
INT16 スケールファクタ: _INT16_SCALE = 512.0(スパイク電位 ±1.0 → INT16 ±512 でインプレース保存)
数理モデル:
タイムステップ \(t\) で step_int16(spikes) を呼ぶと、遅延 \(d_{ij}\) だけ古いバッファスロット
\(\text{buf}[(t - d_{ij}) \bmod (D_{\max}+1),\ i]\) からシナプス前ニューロン \(i\) のスパイクを取り出します。
16.4. コード例
from evospikenet import ConnectomeLIFLayer, SparseDelayBuffer
from evospikenet.connectome_loader import load_json
# 1. コネクトームデータを COO テンソルに変換
data = load_json("data/connectome/celegans_cook2019_c_elegans_302n.json")
# 2. ConnectomeLIFLayer にコネクトームを注入
layer = ConnectomeLIFLayer(n_neurons=256)
layer.attach_sparse_delay_buffer(
delay_tensor=data["delays"], # shape [N, N]
weight_mask=data["mask"], # shape [N, N], bool
)
# 3. forward ループ(SNNModel が内部で delay routing を実行)
import torch
x = torch.zeros(1, 256)
for t in range(100):
spikes, _ = layer(x)
# スパイク出力は SparseDelayBuffer 経由で次ステップの入力に反映される
16.5. ノード ↔ コネクトームデータソース対応
| EvoSpikeNet ノード | 適用データソース | 削減手法 |
|---|---|---|
memory_spike |
C. elegans(302 ニューロン、直接マッピング) | なし(1× スケール) |
visual |
MICrONS V1 / FlyWire 視覚野相同 | F-1 層別サンプリング + F-2 スペクトル縮約 |
auditory |
MICrONS / HCP マクロ DTI | F-1 層別サンプリング |
spatial / spatial_integration |
MICrONS 頭頂葉 | F-1 層別サンプリング |
pfc |
HCP マクロ / MICrONS dlPFC | F-3 クラスタ代表点 |
| その他 24 ノード | HCP DTI マクロ | ROI 統合平均 |
16.6. 関連変更ファイル
| ファイル | 内容 |
|---|---|
evospikenet/connectome_loader.py |
Phase E-1 新規作成: JSON/NPZ ロード・ETag+TTL キャッシュ・F-1/F-2 削減 |
evospikenet/connectome/__init__.py |
Phase E-2 新規作成: connectome パッケージ公開シンボル |
evospikenet/connectome/node_mapping.py |
Phase E-2 新規作成: ノード↔データソースマッピング |
evospikenet/connectome/delay_buffer.py |
Phase E-2 新規作成: SparseDelayBuffer COO リングバッファ |
evospikenet/zenoh_connectome_publisher.py |
Phase E-2 新規作成: Zenoh コネクトームメタデータ発行 |
evospikenet/core.py |
Phase E-1/E-2 拡張: ConnectomeLIFLayer + SNNModel.forward 遅延ルーティング |
evospikenet/forgetting_controller.py |
Phase E-2 拡張: compute_connectome_density 追加 |
evospikenet/__init__.py |
Phase E-2 拡張: E-2 公開シンボル 8 件追加 |
config/connectome_config.yaml |
Phase E-0 新規作成: CAVE API・キャッシュ・レート制限・生理的制約 |
data/connectome/ |
Phase E-1 追加: C. elegans JSON + NPZ キャッシュディレクトリ |
tests/unit/test_snn_memory_extension.py