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 を使用したヘルパー関数により、ホストバッファサイズの計算が可能。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト