Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TinyMLの技術動向

 TinyMLの技術動向

昨今エッジデバイス上でAIを動かしたいというニーズが高く、そのためのSW/HW技術が発展している(EdgeML)。また、IoT機器などの更にもう一段低電力/低リソースのデバイス上でAIを動かすためのTinyMLと呼ばれる技術分野も存在する
この資料ではこのTinyMLの各種技術について紹介する

廣安聖知(kyotomon)

October 24, 2024
Tweet

More Decks by 廣安聖知(kyotomon)

Other Decks in Technology

Transcript

  1. AI 2 自己紹介 氏名:廣安 聖知 略歴: ・2018/11〜:『DRIVE CHART』@DeNA ・2020/04〜:『DRIVE CHART』@GO Inc.

    『DRIVE CHART』のEdge開発チームでAIライブラリ開発、シミュレータ開発等を担当
  2. AI TinyMLとは 6 図出典:https://arxiv.org/pdf/2403.19076v2 • バッテリ/ソーラ駆動の低電力/低リソースなデバイス(IoT機器等)上でMLアルゴリズムやアプリ ケーションを動作させる技術を総じて指す ◦ 類語としてEndpoint AI、AIoTなどがある

    • エッジ上でAIを動作させるEdge MLIのサブセットにあたる ◦ 境界が明確にあるわけではないが、主にマイコン (MCU)のような使用電力やメモリが少な いIoTデバイスで動くものを指す事が多い • 決定木等の他MLアルゴリズムが使われる事が多かったが近年は DLが主流になりつつある
  3. AI ML実行環境の分類と比較 7 Cloud ML Edge ML Tiny ML CPU

    x86-64系、ARM Neoverse系 ARM Cortex-A/X系 ARM Cortex-M系、RISC-V、 ESP-32等(MCU) CPU最大動作周波数 数GHz 数百MHz〜数GHz 数MHz〜数百MHz メモリサイズ 数十〜数百GB 数GB 数KB〜数百KB※1 最大消費電力 数十W 数W〜十数W 数十mW〜数百mW AIアクセラレータ※2 SoC内蔵 or 外付けのGPU/NPU SoC内蔵のGPU/NPU、外付 けNPU SoC内蔵のDSP/NPU 動作OS Linux/Windows Linux/Android/iOS RTOSあるいはbaremetal 主要開発言語 Python Java/Rust/C++ C/C++ SoC価格帯の目安 数百$〜数千$ 数$〜数百$ 数十¢〜数$ ※1: 外付けDRAMは基本なし。内蔵SRAMの容量になる ※2: 詳細は https://speakerdeck.com/kyotomon/aiakuseraretanoji-shu-dong-xiang-2023 を参照
  4. AI TinyMLの特徴 8 メリット • 非クラウド依存 ◦ ネットワーク遅延や接続断起因の問題解決(安定的なリアルタイム処理) ◦ プライバシー性の向上(パーソナルデータの保護)

    ◦ クラウドコスト/通信コストの削減 • 低消費電力のためバッテリー駆動で長時間の稼働が可能 課題 • 計算リソースやメモリの制約により使える DLモデルの制約が大きい ◦ エッジ/モバイル向けDLモデルの転用は困難(下表の例参照 ) • メーカやデバイス固有のI/F、ドライバ依存、開発環境 出典:https://arxiv.org/pdf/2403.19076v2
  5. AI • 音声入力から特定のキーワードを検出 ◦ 汎用音声認識タスクのモデルに比べて計算量は少ない • 音声データから周波数分布に変換し、DLモデルを適用 • Alexa, Siri等のwakeup

    word検出で使用されている ◦ MCUを使った低電力モードで実行し、メイン処理ユニットを適宜起動 TinyMLユースケース例(keyword spotting) 12 図出典:https://arxiv.org/abs/1711.07128 (2017)
  6. AI 製造業 • オートメーション/品質管理(欠陥検出) 小売業 • パーソナライズされた顧客推奨、在庫管理、不正検出 農業 • 土壌監視、害虫/害獣検出、作物収量の最適化

    医療 • Smart Watch等のウェアラブルデバイスによるリモート監視、早期疾患検出 ◦ 患者ケアの強化、健康状態改善 その他 • ウェイクアップカメラ(特定トリガで起動) • ヘルスケア・モニタリング • アナログメータのIoT化(低解像度カメラの画像を低レートでAI処理) ◦ TinyMLユースケース例(その他) 14 情報出典:https://www.linkedin.com/pulse/tiny-machine-learning-tinyml-market-size-2023-2030 https://www.techtarget.com/searchenterpriseai/feature/Why-TinyML-use-cases-are-taking-off https://github.com/jomjol/AI-on-the-edge-device
  7. AI TinyMLを実現するためのDLアルゴリズム 下記のような制約の元でも推論処理を実行できる必要がある • 標準的なMCUでは内蔵SRAMのサイズは大きくとも数百KB程度 ◦ ハイエンドMCUだとそれ以上のSRAM積んでいるものもある ◦ 外付けのDRAMはOptional(コスト観点で搭載はしにくい) •

    外部ストレージも基本ない ◦ アプリとモデルはMCU内蔵のFlashROMに収まるサイズである必要あり モバイル機器等を対象とするEdgeMLでも同様のリソース制約はあるがより強い ⇒EdgeMLで使われる枝刈り、量子化、蒸留 のようなモデル軽量化手法※1も有効だが、も う一段工夫が必要 以降、MCUNetV2(MIT 2021-10)※2を例に省メモリ/高速/高精度なDLモデル推論をどのよ うなアプローチで実現してるのか見てみる 16 ※1:詳細はhttps://speakerdeck.com/yu4u/gao-su-nashen-ceng-xue-xi-moteruakitekutiya2023?slide=5参照 ※2:https://arxiv.org/abs/2110.15352
  8. AI MCUNetV2(メモリ使用量削減) バッチベース推論 • CNNのメモリ配分が不均衡である 事に着目 • 右図上はMobileNetV2でモデル前 段のCNNがターゲットデバイスの メモリ容量(256KB)を超えている事

    を示す • 4x4単位のパッチベースの推論を 行う事でCNNのメモリ使用量を節 約(右図下) 17 図出典:https://hanlab.mit.edu/projects/mcunetv2
  9. AI • PCやモバイルで使われているMPU(Micro Processing Unit)とは異なり、 RAM/ROM等が統合されたユニット ◦ 統合される事により小型化や低コストを実現しやすい ◦ SRAM/FlashROMのサイズはデバイスによるがそこまで大きくない(〜数百

    KB程度) MCUについて(MPUとの相違) 23 図出典:https://learn.microsoft.com/ja-jp/azure/iot/concepts-iot-device-types • 仮想メモリ実現に必要なMMU(Memory Management Unit)がない ◦ Linuxのような汎用OSは動かせない • MMUのテーブル参照やキャッシュ参照を 挟まない事によりリアルタイム性が求め られる処理に適している ◦ RTOSあるいはbaremetalで実装
  10. AI • 現在主に市場で出回っているMCUはARMのCortex-M ◦ その他としてはRISC-V, ESP32等がある • Cortex-M自体はIPなので、実際の製品は他のマイコンメーカーにより提供 ◦ 例:Renesas,

    STMicro, NXP, MicrochipTechnology, TexasInstruments等 • Cortex-Mは価格帯/性能に 応じていくつかのクラスに分 かれる(右図) • 近年は後述のAI用の命令 セットを持つようなクラスも 出てきている(M55, M85) 主要なMCU 24 図出典:https://www.slideshare.net/slideshow/so-you-think-developing-an-soc-needs-to-be-complex-or-expensive/73107162
  11. AI • Helium-MVE:Cortex-M55やM85で採用されているベクトル拡張 ◦ 8つの128ベクトルレジスタ ◦ 幅広いベクトルデータタイプをサポート • 従来のMシリーズと比べて高いML性能を実現 Cortex-MのAI向け命令セット(ARM

    Helium-MVE) 25 • 右図はルネサスのブログ※より。M85のML 性能が従来のMシリーズよりも数倍優れて おり、Heliumの有無によってML性能が大幅 に上がる事を示している ※:https://www.renesas.com/jp/ja/blogs/leveraging-helium-and-arm-cortex-m85-unprecedented-dsp-and-ai-performance-mcu-core
  12. AI Raspberry Pi Pico/Pico2※1 ESP32 Series※2 STM32 Series※3 Arduino Series※4

    開発元 Raspberry Pi Ltd Espressif Systems STMicroelectronics Arduino CPU Cortex-M0+/M33 Tensillica Xtensa LX6/LX7 or RISC-V CortexM0〜M7 Cortex-M0+/M3 動作周波数 133 / 150MHz 96〜400MHz 32〜550MHz 16〜48MHz RAM容量 264 / 520KB 128〜576KB 4K〜3MB 2K〜256KB FlashROM容量 2 / 4MB 128K〜4MB 32K〜4MB 32K〜1MB MCU搭載製品例(個人でも入手/評価しやすいもの) 26 ※1:https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html ※2:https://en.wikipedia.org/wiki/ESP32 ※3:https://en.wikipedia.org/wiki/STM32 ※4:https://en.wikipedia.org/wiki/Arduino
  13. AI TinyML向けAIアクセラレータ紹介(ARM Ethos-U) 29 • AI推論処理をオフロードするチップのIP。Cortex-Mとセットで使用可 特徴 • 数十〜数百のMAC(積和演算機)を内蔵可能 •

    必要演算性能に応じてMAC Unitの数はスケール可 ◦ U55※1:64〜512GOPS ◦ U65※2:512〜1024GOPS ◦ U85※3:256〜4096GOPS • U65/U85はCortex-Aやサーバ向けのNeoverseと組み合わせて使用する事も可 ⇒MCU向けのRTOSだけでなく、Linux/Androidのような汎用OS上で動かせる • U85では対応Operatorが拡充され、 Transformerにも対応 ※1:https://www.arm.com/ja/products/silicon-ip-cpu/ethos/ethos-u55 ※2:https://www.arm.com/ja/products/silicon-ip-cpu/ethos/ethos-u65 ※3:https://www.arm.com/ja/products/silicon-ip-cpu/ethos/ethos-u85
  14. AI • Cevaが出している自立型NPUのIP • 半導体企業等向け(SoCに組み込み) 特徴 • 1cycleあたり64のMAC演算(8bit時) ◦ 動作電圧/周波数のスケーリングは調整可能

    ◦ コアあたり10G〜200GOPSの計算性能 • 4-32 bitの整数をサポート • Ceva-NetSqueezeによる超低メモリ要件の実現 ◦ 圧縮モデルを直接処理する事でメモリフットプリントをMax80%削減 • 開発ツールとしてCeva NeuPro-Studio AI SDKを提供 ◦ TFLMやμTVM等とシームレスに連携 TinyML向けAIアクセラレータ紹介(NeuPro-Nano) 30 図出典:https://www.ceva-ip.com/product/ceva-neupro-nano/ 
  15. AI • STMicroelectronicsが開発しているMCU ”STM32N6”に搭載されているアクセラ レータ • 開発中で詳細なスペックは未公開だが、Embedded world 2023における同社の物 体検出のデモで314fpsという驚異的な速度を示している

    ◦ 開発者のブログ※1によると、同社のSTM32H7(Cortex-M7ベース。480MHz 動作)と比較して75倍のfps ◦ 汎用MCUではこれまで難しかったカメラ入力のリアルタイム処理が可能になる と期待されている • DLモデル開発にはSTMicroの提供するSTMCube.AI※2を使用 ◦ DLモデルをSTMicro製品用に最適化されたコードに変換 ◦ TensorFlow Lite、Keras、Pytorch、ONNXのような主要フレームワークからの 変換に対応 TinyML向けAIアクセラレータ紹介(Neural-ART) ※1・https://www.stmcu.jp/technical/blog/no-006/ ※2・https://www.st.com/content/st_com/ja/campaigns/stm32cube-ai.html 31
  16. AI • Embedded World 2024で出展されたSyntiant製アクセラレータ • 他のNDPシリーズ(主に音声AI向け)と違いCV等の大規模なモデルを扱える 特徴 • MCUはCortex-M0(512KBのSRAM)

    • 6Mまでのモデルパラメータを保持可 (8bit モード時) • アクセラレータとは別にHiFi DSP内蔵 ◦ 画像/音声の特徴抽出/信号処理等をサ ポート ◦ 1.5MのSRAMを独立で持つ • チップサイズは6.1mm x 5.1mm • 30GOPSの計算性能(30mW以下で駆動) TinyMLで使えるAIアクセラレータ紹介(NDP250) 32 図出典:https://www.syntiant.com/hardware (NDP250のproduct briefより)
  17. AI • ANALOG DEVICESが出しているアクセラレータ • 同系統のMAX78000の機能強化版 特徴 • MCUはCortex-M4 dual

    core ◦ 384KBのSRAM+2.5MのFlashROM) • 1/2/4/8 bitの重みに対応 • CNNエンジンは2Mの重みパラメータを保持可(8bit時) ◦ この他に1.3Mの向けデータ用メモリもあり • MIPI CSI I/F搭載(カメラ信号入力) • チップサイズは12mm x 12mm • 計算性能不詳(VGA入力30FPSとあるが使用モデル記述なし) • Pytorch/Tensorflowモデルに対応(専用ツールで変換の必要あり) TinyMLで使えるAIアクセラレータ紹介(MAX78002※) 33 ※:https://www.analog.com/jp/resources/media-center/videos/6320897138112.html
  18. AI ARM CMSIS-NN 36 ※:https://www.arm.com/ja/technologies/cmsis • CMSIS※(Common Microcontroller Software Interface

    Standard)の一部 ◦ CMSISはCortex-M向けの開発支援ライブラリセット • CMSIS-NNはNNの主要Operator(CNN等)のカーネル関数等を提供 ◦ Cortex-M命令セットやHeliumのようなベクトル拡張(MVE)向けに最適化可 ◦ Ethos-Uアクセラレータにも対応 ◦ 単体でモデルをimportするような機能はない • CMSIS-DSPというものもある ◦ 内蔵DSPを活用した高速演算用ライブラリ
  19. AI TFLite for Microcontroller(TFLM)※1 • MCU向けのTFLiiteの推論ランタイム ◦ C/C++で記述。MCU向けのアプリコードと一緒にコンパイルする形式 ◦ コアランタイムが16KB程度とかなり軽量

    • tflite形式のモデルの読み込みが可能 ◦ MCUデバイスは通常外部ストレージを持たないのでバイナリをソースコードに直接記述 し、実行時に読み込ませる(参考ブログ ※2) • レイヤー単位の推論処理実行のため、必要メモリは大きめ • 様々なMCUに対応可能 ◦ Cortex-M, RISC-V, ESP-32(Xtensa), etc ◦ CMSIS-NNと組み合わせる事でCortex-M上での高速化も可能 37 ※1:https://www.tensorflow.org/lite/microcontrollers?hl=ja ※2:https://blog.systemi.co.jp/tinyml/
  20. AI TinyMLのAI推論エンジン毎の比較例(MCUNetV2論文より) 41 図出展:https://arxiv.org/pdf/2403.19076v2 • 測定環境はCortex-M7(RAM256KB/FlashROM512KB) • X-Cube-AI, TinyEngineの方が高速化/省メモリを実現できている ◦

    どちらもランタイム時のレイヤ単位実行ではなくターゲットに最適化した重み含 む推論実行用コードを出力するタイプ(汎用性は低い) • TFLMが遅いのは恐らくターゲットMCU向けの最適化が入っていないため ◦ CMSIS-NNと組み合わせれば、恐らくCMSIS-NN単体と同等になる筈
  21. AI • TinyMLの主ターゲットであるMCUは計算性能もそうだが、メモリ/ストレージに大きな制 約 ◦ 大きなDLモデルをそのまま動かせず、様々な工夫が必要 ◦ それを実現するためのアルゴリズム、HW/SW技術について一部紹介 • 近年は今まで制約により動かせなかったDLモデル(CV向け等)も徐々に対応

    ◦ より低価格/低消費電力で目的タスクを実現できるように ◦ このように従来不可能だった事が可能に、というのはこれからも多そう(継続して ウォッチする必要がある) • TinyMLの一部技術はEdgeMLにも転用できると思うので、その可能性にも着目していき たい まとめ 43