コンテンツにスキップ

分散脳シミュレーション - ノードログ表示ガイド

[!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: ノード構成

  1. シミュレーションタイプを選択
  2. 左上の「Select Simulation Type」ドロップダウンで、希望するシミュレーションを選択
  3. 例: 「🎯 Complete Brain (24-Node) - Feature 13」

  4. ノード設定タブで確認

  5. 各ノードの状態、ホスト割当、モデル選択を確認

  6. ノード起動

  7. 「Start Nodes」ボタンをクリック
  8. 各ノードが順序に起動される

ステップ 4: ログ表示

  1. ログビューへ移動
  2. 「🧠 Brain Simulation」タブをクリック

  3. ノード選択

  4. 「Node Logs」セクションから表示したいノードをドロップダウンで選択
  5. 例: 「Node 0 - PFC」

  6. ログ表示

  7. 選択したノードのログが自動的に更新され、テキストエリアに表示される
  8. 最後の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

ドキュメント参照


サポート情報

以上の手順でも問題が解決しない場合:

  1. フロントエンドコンソール出力を確認

    docker logs frontend --tail 50
    

  2. バックエンドログを確認

    docker logs backend --tail 50
    

  3. ノードプロセスのコンソール出力を確認

    cat /tmp/sim_rank_0.log
    

以上をお試しいただき、問題が解決されることを願っています。