Slide 1

Slide 1 text

AI TinyMLの技術動向 2024.10.22 廣安 聖知 GO株式会社

Slide 2

Slide 2 text

AI 2 自己紹介 氏名:廣安 聖知 略歴: ・2018/11〜:『DRIVE CHART』@DeNA ・2020/04〜:『DRIVE CHART』@GO Inc. 『DRIVE CHART』のEdge開発チームでAIライブラリ開発、シミュレータ開発等を担当

Slide 3

Slide 3 text

AI ● エッジ上でAI処理を行うにあたり、精度を落とさずにDLの計算コストを落としてタス クを実現したいというニーズがある ○ エッジデバイス発熱の軽減 ○ 別の事に計算リソースを割り振る ● より少ないリソース上でAIのタスクを実現するというTinyML周りの技術をキャッチ アップし、可能性を探る 背景 3

Slide 4

Slide 4 text

AI ▪ TinyMLとは ▪ TinyMLのユースケース ▪ TinyMLの要件とアルゴリズム例(MCUNetを例に) ▪ ハードウェア周りの話(MCU、アクセラレータ) ▪ ソフトウェア周りの話(推論エンジン) ▪ まとめ 4 アジェンダ

Slide 5

Slide 5 text

AI 5 01 TinyMLとは

Slide 6

Slide 6 text

AI TinyMLとは 6 図出典:https://arxiv.org/pdf/2403.19076v2 ● バッテリ/ソーラ駆動の低電力/低リソースなデバイス(IoT機器等)上でMLアルゴリズムやアプリ ケーションを動作させる技術を総じて指す ○ 類語としてEndpoint AI、AIoTなどがある ● エッジ上でAIを動作させるEdge MLIのサブセットにあたる ○ 境界が明確にあるわけではないが、主にマイコン (MCU)のような使用電力やメモリが少な いIoTデバイスで動くものを指す事が多い ● 決定木等の他MLアルゴリズムが使われる事が多かったが近年は DLが主流になりつつある

Slide 7

Slide 7 text

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 を参照

Slide 8

Slide 8 text

AI TinyMLの特徴 8 メリット ● 非クラウド依存 ○ ネットワーク遅延や接続断起因の問題解決(安定的なリアルタイム処理) ○ プライバシー性の向上(パーソナルデータの保護) ○ クラウドコスト/通信コストの削減 ● 低消費電力のためバッテリー駆動で長時間の稼働が可能 課題 ● 計算リソースやメモリの制約により使える DLモデルの制約が大きい ○ エッジ/モバイル向けDLモデルの転用は困難(下表の例参照 ) ● メーカやデバイス固有のI/F、ドライバ依存、開発環境 出典:https://arxiv.org/pdf/2403.19076v2

Slide 9

Slide 9 text

AI TinyMLの近年の成長 9 図出典:https://www.sigarch.org/tiny-machine-learning-the-future-of-ml-is-tiny-and-bright/ ※:https://mlcommons.org/benchmarks/inference-tiny/ ● IoT市場の成長に伴い、小型で低電力のデバイス上でMLを利用できるようにする 必要性が高まっている ● TinyML関連の研究出版物も近年大きく増加(下図左) ● MLPerf※のTinyML部門においても、参加企業/団体は増える傾向(下図右)

Slide 10

Slide 10 text

AI TinyMLのユースケース 10 02

Slide 11

Slide 11 text

AI ● 温度センサ、IMU等のセンサ情報から機器の異常検知を行い、故障を未然に防ぐ ○ システム障害とそれに伴う多大なコストを削減 ● 疎な時系列データから正常/異常の判定を行うだけのモデルになるので、比較的計算量 も少なくTinyMLでも実現しやすいタスク TinyMLユースケース例(予知保全) 11 図出典:https://www.inrevium.com/pickup/ai_part1/

Slide 12

Slide 12 text

AI ● 音声入力から特定のキーワードを検出 ○ 汎用音声認識タスクのモデルに比べて計算量は少ない ● 音声データから周波数分布に変換し、DLモデルを適用 ● Alexa, Siri等のwakeup word検出で使用されている ○ MCUを使った低電力モードで実行し、メイン処理ユニットを適宜起動 TinyMLユースケース例(keyword spotting) 12 図出典:https://arxiv.org/abs/1711.07128 (2017)

Slide 13

Slide 13 text

AI Edge上で動いていたようなCVモデル推論をMCU上で実現(人物検出、VWWなど) 例えばMCUNet※1(MCU向けにCVモデル最適化、256KB以下のメモリで動作) embedded world 2023というイベントでは以下のように高速にCVモデルを動かす事例も※2 ● STMicroが自社MCU+acceleratorを使ってカスタムYoloを314fpsで動かすデモを公開 ● PlumeraiがRenesas製MCUを使って13fpsの人物検出デモを公開 ※1:https://github.com/mit-han-lab/tinyengine (上図もここから引用) ※2:https://www.eetimes.com/tinyml-comes-to-embedded-world-2023 TinyMLユースケース例(画像認識) 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

AI TinyMLの要件とアルゴリズム例 15 03

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

AI MCUNetV2(メモリ使用量削減) バッチベース推論 ● CNNのメモリ配分が不均衡である 事に着目 ● 右図上はMobileNetV2でモデル前 段のCNNがターゲットデバイスの メモリ容量(256KB)を超えている事 を示す ● 4x4単位のパッチベースの推論を 行う事でCNNのメモリ使用量を節 約(右図下) 17 図出典:https://hanlab.mit.edu/projects/mcunetv2

Slide 18

Slide 18 text

AI Depthwise convolutionのアクティベーションメモリの再利用 通常は入力Nチャネル、出力Nチャネルで2Nのメモリが必要 以下のようにする事でN+1のメモリだけあればよくなる ● 計算が終わった後の入力チャネルのバッファを出力バッファとして再利用 ● 一番最初の入力チャネルの出力のみは一時バッファを利用 MCUNetV2(メモリ使用量削減) 18 図出典:https://arxiv.org/pdf/2403.19076v2

Slide 19

Slide 19 text

AI MCUNetV2(計算オーバヘッド削減) 19 Receptive Field(RF)の再配分 ● パッチベース推論では異なるバッチ間の重複による計算オーバヘッドが発生 ● 重なりを可能な限り減らすことでオーバヘッドを削減 ○ 前段のRFを後段のRFに再配分 ● 下図はMobileNetV2での適用例 図出典:https://arxiv.org/pdf/2403.19076v2

Slide 20

Slide 20 text

AI アーキテクチャと推論スケジュリングの協調最適化 ● 前述したRFの再配分の最適化処理(ホスト上で実行)をNASによるモデル設計 と推論ス ケジュリング の協調実行で実現 ● それぞれTinyNASとTinyEngine(後述)という独立したフレームワークとして用意 MCUNetV2(計算オーバヘッド削減) 20 図出典:https://hanlab.mit.edu/projects/mcunetv2 図出典:https://github.com/mit-han-lab/tinyengine

Slide 21

Slide 21 text

AI MCUNetV2(ベンチマーク例) ● MCUNetV1含む他方式に比べて精度を高く保ちつつ高速/省メモリを実現 ● 推論にはMCUNetの一部であるTinyEngineを使っているが、TFLiteよりも優れた 結果となっている 21 図出典:https://arxiv.org/pdf/2403.19076v2

Slide 22

Slide 22 text

AI TinyMLで使われるHW 22 04

Slide 23

Slide 23 text

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で実装

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

AI TinyMLで使われるAIアクセラレータ 27 05

Slide 28

Slide 28 text

AI TinyMLで使われるAIアクセラレータ 28 ● 負荷の高いAI処理をオフロードするためのアクセラレータがある ○ MCUよりも電力効率がよく、高速演算が可能 ● これらを使用すれば、ある程度メモリや処理速度の制約を気にせずにAIモデ ルの設計/デプロイが可能になる(HWコストは上乗せされる) ● MCU+AIモデル用のSRAMがセットになった製品等がある ○ 独立しており外付けのAIアクセラレータとして利用する事も可能 近年出てきて気になったものからいくつか紹介

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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/ 

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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より)

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

AI TinyMLのAI推論エンジン 34 06

Slide 35

Slide 35 text

AI ● DLモデルを実際にMCU環境にデプロイし駆動するライブラリ等 ● 推論ランタイムだけでなく、ホスト上でモデルをターゲットMCUに向けて最適化する ツールまでがセット ● これから紹介するものの他、モデルをCコードにトランスパイルするアプローチの OSSがいくつかある 例 ○ NNoM※1 ○ uTensor※2 TinyMLのAI推論エンジン 35 ※1:https://github.com/majianjia/nnom ※2:https://github.com/uTensor/uTensor

Slide 36

Slide 36 text

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を活用した高速演算用ライブラリ

Slide 37

Slide 37 text

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/

Slide 38

Slide 38 text

AI ※:https://www.st.com/ja/embedded-software/x-cube-ai.html https://www.youtube.com/watch?v=grgNXdkmzzQ (使用方法紹介動画) XCube-AI※ 38 ● STMicroのAI開発用ソフトウェアツール ● 学習済みモデルから同社STM32シリーズに向けて最適化されたライブラリを自動 生成(具体的なターゲットデバイスをIDE上で指定) ● PC上でもNNモデルの検証が可能

Slide 39

Slide 39 text

AI ● Cortex-M上で動作する高速・軽量の推論エンジン ○ MLPerf上でTFLMやXCube-AIよりも高速であるというベンチマークを提示 ● INT8/INT16量子化済みのTFliteのモデルからkernel/runtime等一式をまとめたライブ ラリを生成 ● モデル(サイズ等制約あり)をPlumeraiに送ればどの程度の速度で動くかの評価が可 能※2 Plumeraiの推論エンジン※1 39 ※1:https://docs.plumerai.com/1.16/inference_engine/ ※2:https://plumerai.com/benchmark

Slide 40

Slide 40 text

AI TinyEngine※ 40 ※:https://github.com/mit-han-lab/tinyengine ● TinyNASとセットでNNアーキテクチャと推論スケジュリングを共同設計 ○ 高い精度を保ちつつ、省メモリ/高速な推論を実現 ● 先述のMCUNetの仕組みで説明した技術の他、以下のような高速化手法を使用 ○ Operator fusion ○ SIMD programming ○ HWC to CHW weight format transformation ○ im2col convolution ○ Loop reordering ○ Loop unrolling ○ Loop tiling

Slide 41

Slide 41 text

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単体と同等になる筈

Slide 42

Slide 42 text

AI まとめ 42 07

Slide 43

Slide 43 text

AI ● TinyMLの主ターゲットであるMCUは計算性能もそうだが、メモリ/ストレージに大きな制 約 ○ 大きなDLモデルをそのまま動かせず、様々な工夫が必要 ○ それを実現するためのアルゴリズム、HW/SW技術について一部紹介 ● 近年は今まで制約により動かせなかったDLモデル(CV向け等)も徐々に対応 ○ より低価格/低消費電力で目的タスクを実現できるように ○ このように従来不可能だった事が可能に、というのはこれからも多そう(継続して ウォッチする必要がある) ● TinyMLの一部技術はEdgeMLにも転用できると思うので、その可能性にも着目していき たい まとめ 43