Edge implementation plan
Edge 実装プラン
実装状況サマリ: - Phase 1: 実装済み(環境チェック、代表サンプル生成) - Phase 2: 実装済み(ローカル edge server + クライアント遅延計測) - Phase 3: 部分実装済み(TorchScript 検証完了、TFLite/CoreML は依存未導入で未実行) - Phase 4: 手順化済み(実機ランブック生成済み、実測のみ未実施) - Phase 5: 実装済み(評価レポート自動生成)
成果物:
- 自動実行パイプライン: scripts/device/run_edge_phase_pipeline.py
- 実装報告: Docs/edge_phase1_5_implementation_report.md
- 最新ローカル実行結果: bench_output/edge_phase_runs/20260409-130535/edge_phase1_5_report.md
目標: - EvoSpikeNet SDK をエッジ環境(Raspberry Pi / Android / iPhone)で運用可能か検証し、最終的に最適なデプロイ戦略(SDK 単体実行 vs モデル変換)を決定する。
タイムライン(概略):
1) 準備 (0.5–1 日)
- 開発 PC: 仮想環境を整備(Python 3.12)
- 必要ツール: onnx, onnx-tf, tensorflow, coremltools を用意(量子化検証に必要)
- 代表サンプルデータを用意(rep_samples/ に .npy)
2) ローカル PoC (1–2 日)
- scripts/device/edge_server.py を使い、エッジSDK をローカルサーバとして動かす
- mobile_client_sim.py でレイテンシ/スループットを計測
- collect_bench_and_log.py で CPU/メモリ統計を取得
3) 変換 & 量子化テスト (1–3 日)
- 小さめのモデルで TorchScript/ONNX/TFLite/CoreML を試験
- 代表サンプルを使って量子化(android_convert_tflite.py --quantize --rep-dir rep_samples/)
- 変換後の差分テスト(推論出力、精度、レイテンシ)を自動化
4) 実機検証 (Raspberry Pi 最優先、次にモバイル) (1–2 日/機種)
- RPi: rpi_setup_and_bench.sh を用いて依存インストール→ベンチ
- Android: TFLite を組み込み、デバイス上で推論を計測
- iPhone: CoreML を統合、Instruments で Energy を測定
5) 評価と意思決定 (0.5 日) - 主要指標: レイテンシ、スループット、平均消費電力、実装コスト(CI/メンテ) - しきい値案: - SDK 単体で 目標レイテンシ(例: <10ms)・消費電力が満たせる → SDK を優先 - モデル変換で軽量化し、精度劣化が限定的なら変換を採用
チェックリスト(実行時): - [ ] 仮想環境と依存をクリーンに再現できる - [ ] 代表サンプルが 200 件以上ある(量子化用) - [ ] ベンチ: cold-start と steady-state を分けて測定 - [ ] 電力: 外部電力計(または RAPL)で同時取得 - [ ] 変換後: 出力の L2 差分 / タスクレベル精度を比較
自動化スクリプト (推奨):
- scripts/device/rpi_setup_and_bench.sh — 依存インストール + ベンチ
- scripts/device/android_convert_tflite.py — 変換と量子化
- scripts/device/collect_bench_and_log.py — サンプル取得
- scripts/device/plot_bench.py — プロット/要約生成
リスクと緩和策: - 変換失敗(カスタムSNNレイヤ): SDK をエッジに置くアプローチに切り替え、必要であればカスタム演算を TFLite カスタム OP として実装する - 量子化による精度低下: ポスト訓練量子化前に軽いファインチューニング(QAT)を検討 - デバイス依存の性能差: RPi/Android/iOS 毎にプロファイルを取り、デプロイ戦略を分ける
次のアクション(提案):
1. 代表サンプルディレクトリを用意していただく(rep_samples/ に .npy)
2. 実際の小さめモデルを一つ指定いただく(例: models/tinynet.pt)
3. 私が変換と量子化を走らせ、結果(CSV/JSON/プロット)を報告します
備考: 実機での電力測定はハードウェアが必須です。測定データが提供可能なら、消費電力の分析もこちらで実行できます。