Skip to main content
QUICK REVIEW

[論文レビュー] Neural networks on microcontrollers: saving memory at inference via operator reordering

Edgar Liberis, Nicholas D. Lane|arXiv (Cornell University)|Oct 2, 2019
Advanced Memory and Neural ComputingEngineering被引用数 20
ひとこと要約

本稿では、マイコン上のニューラルネットワーク推論におけるピークメモリ使用量を低減するソフトウェアレベルの最適化を提案する。演算子の実行順序を再配置することで、通常はSRAMの制限を超えるモデルのデプロイが可能になる。各演算子処理後に動的メモリ割り当てを管理し、メモリのフラグメンテーションを解消することで、ピークメモリを50KB(351KBから301KB)削減した。これにより、モデルアーキテクチャや重みを変更せずに250KBのモデルを512KBのSRAMに搭載できるようになった。

ABSTRACT

Designing deep learning models for highly-constrained hardware would allow imbuing many edge devices with intelligence. Microcontrollers (MCUs) are an attractive platform for building smart devices due to their low cost, wide availability, and modest power usage. However, they lack the computational resources to run neural networks as straightforwardly as mobile or server platforms, which necessitates changes to the network architecture and the inference software. In this work, we discuss the deployment and memory concerns of neural networks on MCUs and present a way of saving memory by changing the execution order of the network's operators, which is orthogonal to other compression methods. We publish a tool for reordering operators of TensorFlow Lite models and demonstrate its utility by sufficiently reducing the memory footprint of a CNN to deploy it on an MCU with 512KB SRAM.

研究の動機と目的

  • 限られたオンチップSRAMと中間メモリ階層のないマイコン(MCU)にディープラーニングモデルをデプロイする課題に対処すること。
  • MCUの推論ソフトウェアが、すべてのテンソルバッファに十分な静的メモリを確保できないため、動的メモリ割り当てをサポートする必要があるという制約を克服すること。
  • モデルアーキテクチャや重みを変更せずに、推論中のピークメモリ使用量を最小限に抑えることで、これまで不可能とされてきたモデルのデプロイを可能にすること。
  • リソース制約のあるハードウェア上で、メモリフットプリントを削減するためのTensorFlow Liteモデルにおける演算子再配置の実用的ツールを開発すること。

提案手法

  • 計算グラフ内の演算子の実行順序を再配置することで、ピークワーキングセットサイズ(同時にメモリ上に存在するテンソルの最大数)を最小化する。
  • TensorFlow Lite microインタープリタ用の動的メモリアロケータを実装し、各演算子処理後にメモリの先頭にテンソルバッファを移動することでフラグメンテーションを解消できるようにする。
  • メモリフットプリントが最小限で、中間テンソルを必要以上に保持しない演算子を優先するトポロジカル順序戦略を採用する。
  • 分岐構造(例:残差接続)を含む計算グラフに対しても、演算子再配置アルゴリズムを適用し、複雑なアーキテクチャにおけるメモリ圧力を低減する。
  • テンソルバッファへのC/C++ポインタが再配置の間に保持されないよう保証することで、フラグメンテーション中の安全なメモリ移動を可能にする。
  • 再配置ロジックをTensorFlow Liteモデル向けツールに統合し、モデル開発者にとって透明であり、他の圧縮技術と直交するようにする。

実験結果

リサーチクエスチョン

  • RQ1モデルアーキテクチャを変更せずに、マイコン上でニューラルネットワークの演算子実行順序を再配置することで、ピークメモリ使用量を低減できるか?
  • RQ2複雑で分岐を含む計算グラフを持つモデルにおいて、演算子再配置によってどれほどメモリ削減が達成できるか?
  • RQ3マイコン環境における動的メモリ割り当てとフラグメンテーションの実行オーバーヘッドはどの程度か?
  • RQ4ピークメモリ使用量が大きいモデルを、512KBのような制限されたSRAMを搭載したMCUにデプロイ可能にするか、演算子再配置がその可能性を高めうるか?
  • RQ5MCUプラットフォームにおける静的メモリ割り当てと比較して、提案手法のメモリ効率とランタイムコストはどの程度か?

主な発見

  • SwiftNet Cellのピークメモリ使用量は、演算子再配置により351KBから301KBに削減され、50KB(14.2%)の削減が達成された。これにより、512KB SRAM搭載MCUへのデプロイが可能になった。
  • MobileNet-v1では、動的メモリアロケータの導入による実行時間の増加は0.68%(10243ms → 1316ms)、エネルギー消費量の増加は0.97%(8775mJ → 728mJ)にとどまり、メモリフットプリントは186KB削減された。
  • 本手法は、量子化、プルーニング、知識蒸留などの他の圧縮技術と完全に直交しており、それらと併用可能である。
  • 各演算子処理後にフラグメンテーションを解消する手法は効果的であり、最小限のランタイムオーバーヘッドで実現された。これにより、マイコン上で動的メモリ管理が実用的であることが示された。
  • ツールは、デフォルトの演算子順序では不可能だった250KBのモデルを、512KB SRAM搭載マイコンにデプロイすることに成功した。
  • 本アプローチは一般化可能であり、入力バッファを出力に再利用するインプレイス計算などの最適化をサポートするように拡張可能で、さらなるメモリ使用量の削減が可能である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。