分散脳シミュレーション - ノードログ表示ガイド
[!NOTE] 最新の実装状況は 機能実装ステータス (Remaining Functionality) を参照してください。
日付: 2026年2月17日
対象: EvoSpikeNet ユーザーがノードのログを表示できない場合
問題: フロントエンドでノードログが表示されない
分散脳シミュレーションを実行してもノードのログが表示されない場合、以下のガイドに従ってトラブルシューティングしてください。
原因の特定
1. フロントエンドの選択
EvoSpikeNetには、2つの異なるフロントエンドがあります:
A. Pythonベースのフロントエンド(推奨) ✅
- Location:
frontend/pages/distributed_brain.py - Technology: Dash(Plotly + Flask)
- ログ表示機能: ✅ 実装済
- 状態: 完全にサポートされている
B. Reactベースのフロントエンド(VR用)
- Location:
frontend-react/src/components/VRScene.tsx - Technology: React + Three.js
- ログ表示機能: ❌ 未実装
- 用途: VR/3D表示のみ
解決策
推奨される方法: Pythonベースのフロントエンドを使用
Pythonベースのフロントエンド(Dash)を使用して、完全なシミュレーション制御とリアルタイムログ表示をご利用ください。
ステップ 1: フロントエンド起動
cd /path/to/EvoSpikeNet
# Port 8050 でフロントエンドを起動
python -m evospikenet.frontend.app
または Docker を使用:
docker-compose up frontend
ステップ 2: ブラウザアクセス
http://localhost:8050
ステップ 3: ノード構成
- シミュレーションタイプを選択
- 左上の「Select Simulation Type」ドロップダウンで、希望するシミュレーションを選択
-
例: 「🎯 Complete Brain (24-Node) - Feature 13」
-
ノード設定タブで確認
-
各ノードの状態、ホスト割当、モデル選択を確認
-
ノード起動
- 「Start Nodes」ボタンをクリック
- 各ノードが順序に起動される
ステップ 4: ログ表示
- ログビューへ移動
-
「🧠 Brain Simulation」タブをクリック
-
ノード選択
- 「Node Logs」セクションから表示したいノードをドロップダウンで選択
-
例: 「Node 0 - PFC」
-
ログ表示
- 選択したノードのログが自動的に更新され、テキストエリアに表示される
- 最後の100行が表示される
ログの仕組み
ローカルホスト(localhost)の場合
プロセス流れ:
Rank 0 Node → /tmp/sim_rank_0.log
Rank 1 Node → /tmp/sim_rank_1.log
Rank 2 Node → /tmp/sim_rank_2.log
...
ログアクセス: ↓ フロントエンドが直接ファイルを読み込み ↓ テキストエリアに表示
リモートホストの場合
ログ取得フロー:
Rank 0 Node (remote) → /tmp/sim_rank_0.log
↓(SSH/API経由)
Backend API(/api/distributed_brain/remote_log)
↓
フロントエンド
↓
テキストエリアに表示
ログが表示されない場合のトラブルシューティング
チェックリスト
✓ チェック 1: ノードが実行中か確認
# ローカルホストの場合
ps aux | grep "run_zenoh_distributed_brain.py"
# または
pgrep -f "run_zenoh_distributed_brain.py"
期待される出力:
/path/to/python examples/run_zenoh_distributed_brain.py --node-id pfc-0 --module-type pfc
/path/to/python examples/run_zenoh_distributed_brain.py --node-id visual-1 --module-type visual
対応: - プロセスが実行されていない場合 → 「Start Nodes」ボタンで再起動
✓ チェック 2: ログファイルの存在確認
# ローカルホストの場合
ls -la /tmp/sim_rank_*.log
# または
tail -f /tmp/sim_rank_0.log
期待される出力:
-rw-r--r-- 1 user group 1234 Feb 17 10:30 /tmp/sim_rank_0.log
-rw-r--r-- 1 user group 5678 Feb 17 10:30 /tmp/sim_rank_1.log
ログの内容例:
[2026-02-17 10:30:01] INFO: Initializing distributed brain node...
[2026-02-17 10:30:01] INFO: Node type: PFC, Rank: 0
[2026-02-17 10:30:02] INFO: Model loaded successfully
[2026-02-17 10:30:02] INFO: Zenoh communication initialized
[2026-02-17 10:30:03] INFO: Node ready for simulation
対応: - ファイルが存在しない → ログ生成に遅延がある可能性、数秒待機してから確認 - ファイルは存在するが内容が空 → スクリプト実行エラー、コンソール出力を確認
✓ チェック 3: フロントエンドの API接続確認
ブラウザのコンソール(F12キー)でエラーをチェック:
// コンソール実行
fetch('http://localhost:8000/api/distributed_brain/status')
.then(r => r.json())
.then(data => console.log(data))
.catch(e => console.error('API Error:', e))
期待される応答:
{
"nodes": [
{
"id": "0",
"rank": 0,
"type": "PFC",
"status": "Running"
}
]
}
対応:
- エラーが発生 → API サーバーが起動していない、docker-compose psで確認
✓ チェック 4: ログアクセス権限確認
# ログファイルの所有者と権限確認
ls -l /tmp/sim_rank_0.log
# 読み取り可能か確認
head -5 /tmp/sim_rank_0.log
対応:
- 権限がない → chmod 644 /tmp/sim_rank_*.logで修正
トラブルシューティング: よくある問題
問題 1: ドロップダウンにノードが表示されない
原因: ノード構成が初期化されていない
解決策: 1. 「⚙️ Node Configuration」タブに移動 2. 「Select Simulation Type」で構成を選択 3. 「Start Nodes」をクリック
問題 2: ログが古いままで更新されない
原因: 自動更新が無効になっている
解決策: 1. フロントエンドを再読み込み(F5キー) 2. 「🧠 Brain Simulation」タブが選択状態であることを確認 3. ドロップダウンでノードを再選択
問題 3: リモートホストのログアクセスエラー
エラー表示: 「Error fetching log from {host} via API」
原因: - SSH接続失敗 - キーファイルパスが正しくない - リモートホストが応答しない
解決策: 1. ホスト設定を確認 - 「⚙️ Node Configuration」→「Remote Host Configuration」 - IP、ユーザー名、SSHキーパスが正しいか確認 2. SSH接続テスト
ssh -i ~/.ssh/id_rsa user@remote_host "head -5 /tmp/sim_rank_0.log"
問題 4: ログファイルが作成されるのが遅い
症状: 「Log file not yet created」というメッセージ
原因: ノード初期化に時間がかかっている
解決策: - 数秒待機してから再度表示を試みる - より詳細なログは以下で確認:
docker logs frontend # コンテナログ
docker logs backend # バックエンドログ
高度なトラブルシューティング
ログが生成されているが表示されない場合
1. システムユーザーの権限確認
# 現在のユーザー
whoami
# ログファイルの所有者
ls -l /tmp/sim_rank_*.log
対応: - ユーザーが異なる場合、ログの所有者を変更:
sudo chown $(whoami) /tmp/sim_rank_*.log
2. Docker コンテナからのログアクセス
# フロントエンドコンテナ内でログにアクセス可能か確認
docker exec frontend cat /tmp/sim_rank_0.log
# バックエンドコンテナ内で確認
docker exec backend cat /tmp/sim_rank_0.log
3. ディスク空き容量確認
df -h /tmp
対応: - /tmp の空き容量が少ない場合、古いログを削除:
rm /tmp/sim_rank_*.log
API エンドポイント リファレンス
ローカルログ取得(フロントエンド内部処理)
GET /tmp/sim_rank_{rank}.log
リモートログ取得
POST /api/distributed_brain/remote_log
Content-Type: application/json
{
"user": "username",
"ip": "192.168.1.100",
"key_path": "/home/user/.ssh/id_rsa",
"log_file_path": "/tmp/sim_rank_0.log"
}
レスポンス:
{
"log_content": "... 最後の100行 ..."
}
ノード状態取得
GET /api/distributed_brain/status
ベストプラクティス
1. ログの定期的なバックアップ
# シミュレーション終了後にログをバックアップ
cp /tmp/sim_rank_*.log ~/simulation_logs_$(date +%Y%m%d_%H%M%S)/
2. ログレベルの設定
ノード起動スクリプトで詳細度を制御:
# examples/run_zenoh_distributed_brain.py
import logging
# ログレベルを설정
logging.basicConfig(level=logging.DEBUG) # 詳細ログ
# logging.basicConfig(level=logging.INFO) # 標準ログ
3. リモートホストへのSSH設定
# ~/.ssh/config で接 connection をプリセット
Host simulation_host
HostName 192.168.1.100
User username
IdentityFile ~/.ssh/id_rsa
StrictHostKeyChecking no
ドキュメント参照
サポート情報
以上の手順でも問題が解決しない場合:
-
フロントエンドコンソール出力を確認
docker logs frontend --tail 50 -
バックエンドログを確認
docker logs backend --tail 50 -
ノードプロセスのコンソール出力を確認
cat /tmp/sim_rank_0.log
以上をお試しいただき、問題が解決されることを願っています。