ARM-software/CMSIS-NN
CMSIS-NN Library
何を解決するか
CMSIS-NN は、Arm Cortex-M プロセッサ上で実行される AI モデルのパフォーマンスを最大化し、メモリ使用量を最小限に抑えるために設計された、非常に効率的なニューラルネットワークカーネルのコレクションを提供します。リソース制約のあるマイコン上でニューラルネットワークをデプロイする課題を解決し、一般的な演算子の最適化された実装を提供します。
仕組み
このライブラリは、ターゲットハードウェアの能力に基づいて3段階の最適化レベルでニューラルネットワーク演算子を実装しています:
- Pure C:すべてのプロセッサ(例:Cortex-M0、M3)で動作する参照実装。
- DSP Extension:Cortex-M4 や M33 などのプロセッサで SIMD 指令を使用。
- MVE Extension:Arm Helium Technology(M-profile Vector Extension)を使用して、Cortex-M55 や M85 などのコアで高パフォーマンスなベクトル処理を実現。
主に TensorFlow Lite for Microcontrollers (TFLM) の int8 および int16 量子化仕様に準拠しており、ビット単位の互換性を確保しています。ただし、MVE 対応 CPU 用に実験的な float16 および float32 API も提供しています。
対象ユーザー
Arm Cortex-M マイコンに機械学習モデルをデプロイする開発者向けです。特に TensorFlow Lite for Microcontrollers や ExecuTorch などのフレームワークを使用している方々を想定しています。
特徴
- ハードウェア固有の最適化:Pure C、DSP、MVE(Helium)アーキテクチャ向けに最適化されたカーネル。
- 広範な演算子サポート:Conv2D、DepthwiseConv2D、Fully Connected、LSTM およびさまざまなプーリングおよび活性化関数を含む。
- 量子化対応:TFLM の int8 および int16 仕様とビット単位の互換性を確保。
- 実験的浮動小数点サポート:量子化が不可能な特定の用途向けに float16 および float32 API を提供。
- Python バインディング:pybind11 を使用したヘルパー関数により、ホストバッファサイズの計算が可能。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト