IoTデバイス上で実行するニューラルネットのアーキテクチャ探索手法
3つの要点
✔️ IoTデバイス上で実行するニューラルネットワークのアーキテクチャを探索
✔️ アーキテクチャの評価関数に計算リソースに関する項を追加
✔️ 少ない計算リソースで高い精度を達成するアーキテクチャを探索できた
μNAS: Constrained Neural Architecture Search for Microcontrollers
written by Edgar Liberis, Łukasz Dudziak, Nicholas D. Lane
(Submitted on 27 Oct 2020 (v1), last revised 8 Dec 2020 (this version, v3))
Comments: EuroMLSys '21
Subjects: Machine Learning (cs.LG); Hardware Architecture (cs.AR)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
概要
IoTデバイスは、非常にリソースが乏しいマイクロコントローラーユニット(MCU)を搭載しています。IoTデバイス上でニューラルネットワークを実行するには、MCUで実行できるような軽量なニューラルネットワークを設計する必要がありますが、それを手動で見つけるのは難しいです。本研究では、μNASというこういったニューラルネットを探索するシステムを構築しています。μNASは、MCUのリソース不足の3つの主な側面である、RAM、ストレージ、プロセッサ速度を明示的にターゲットにしています。
前提知識
本論文では、MCUとして64KBのSRAMと64KBのストレージが利用可能なミッドティアのものを考えています。
少ない計算量でニューラルネットワークを設計するために、モデル圧縮という分野が取り組まれています。刈込や定量化などの方法は、分類制度の損失を最小限に抑える方法で大規模なネットワークを圧縮します。しかし、ほとんどの圧縮手法はMCUサイズのネットワークを作成するのには適していません。多くの手法は、MCUよりも計算資源がけた違いに多いプラットフォーム(モバイル機器など)を対象としていたり、全体のアーキテクチャはそのままにネットワークの層内のパラメータ数や浮動小数点演算を減らすことに焦点を当てているためです。MobileNetなどの主導で設計したリソース効率のいいモデルでも想定したリソース予算の10倍は超えます。このため、MCUでのディープラーニングのための専門的な手法の研究が必要となっています。
MCU上でニューラルネットを実行する場合の制約は以下のようなものがあります。
- ネットワークが生成する一時的なデータは、MCUのSRAMに収まる必要がある
- ニューラルネットワークのパラメータやプログラムコードなどの静的データは、MCUのROM・フラッシュメモリに収まる必要がある。
- 推論処理を低消費電力のプロセッサで実行するためには、ネットワークの実行速度を上げる必要がある。
このような制約を満たしながら高い精度を達成するニューラルネットワークを設計するため、著者らはNeural Architecture Search (NAS) に注目しました。NASは、適切な条件を設定することで、特定の制約の範囲内で、あるいは複数の目的を同時に達成するためのアーキテクチャを生成することができます。現在のNASシステムのほとんどは本論文で対象としているようなコンピュータではなく、より大きなGPUなどを対象としたものになっているため、そのまま利用することは難しいと考えられます。本論文では、MCUを対象としたNASシステムであるμNASを提案しています。μNASはリソース要件を正確に把握してモデル圧縮と組み合わせることで、低メモリで高速に動作し、高精度のモデルを設計することができます。
提案手法
提案手法(μNAS)の主な特徴は以下の通りです。
- 探索空間をMCUに合わせたものにする
- 計算リソースの制限を設ける
- ピーク時のメモリ使用量制限
- モデルのサイズ(ストレージ容量制限)
- 推論の実行時間制限
これらの要素をNASの体系に組み込んだのがμNASです。ここから、このそれぞれについて具体的に説明していきます。
探索空間をMCUに合わせたものにする
一般的なGPUを対象としたニューラルネットワークのアーキテクチャの探索空間と、MCU用のニューラルネットワークのアーキテクチャの探索空間はその粒度が異なります。例えば、一般的なGPUを対象にしたニューラルネットワークのアーキテクチャの場合、172チャンネルと192チャンネルの畳み込みレイヤを選択してもほとんど最終的な性能に影響はありません。そのため、このような粒度で探索空間を設計することはなく、もっと大雑把に設計し、より大きなモデルも探索空間に入るように設計します。しかし、MCUにおいてはこれらの違いは重要な違いとなります。というのも、MCUでは非常に厳しいメモリ制限があるため、少し大きなレイヤーを選択するとそれだけで全体に大きな影響を与えてしまうからです。一般的にGPU対象のアーキテクチャ探索の場合は探索空間をセルという小さなアーキテクチャ単位で区切り探索空間の粒度を粗くしていますが、MCUを対象とする場合はこのようなセルベースの手法を取るよりも、より粒度を細かくするために、自由にチャンネル数を選んだり、レイヤの接続を選択できるような探索空間を取る必要があります。本論文では、探索空間を下の表のようにとっています。
探索では、ランダムに生成したアーキテクチャを親ネットワークとし、Morphismsで表されるような操作を行うことで子ネットワークを生成して探索します。
計算リソース制限
一般的なGPUを対象としたニューラルネットワークのアーキテクチャ探索では、計算リソースの制限について正確に把握しておく必要はありません。それは、MCUと比べてそれほどリソース制約がないからです。しかし、MCUでは非常に厳しいリソース制約があるので、生成したアーキテクチャがMCUで実行できるサイズであるかどうかを把握しておく必要があります。ここでは、MCUの主要な計算リソース制限である、メモリ使用量制限、ストレージ使用量制限、実行時間制限に着目します。
メモリ使用量制限
最低限メモリに乗せておく必要があるのは、演算子を実行する前後の情報です。また、残差接続がある場合は、そのレイヤの演算子の実行が終わったとしても、メモリに演算結果を残しておく必要があります。このような制約を考えた上で、計算実行時のピークメモリ使用量を計算するためのアルゴリズムを著者らは(https://www.arxiv-vanity.com/papers/1910.05110/)で開発しました。著者らはこのアルゴリズムを用いて、探索したアーキテクチャのピーク時のメモリ使用量を計算しています。
ストレージ容量制限
ニューラルネットワークのコードや、ネットワークの重みなどはストレージに保存します。従来は各パラメータは32ビットの浮動小数点で表現されていましたが、現在は量子化によって削減することができます。著者らは各パラメータを8ビット整数として量子化しています。したがって、μNASではパラメータ数×1バイトとして必要なストレージ容量を計算します。
推論の実行時間制限
推論の実行時間がどれくらいかを推定する指標として、著者らはMultiply-Accumulate Operation (MAC)回数を用いています。この値が実際に推論時間を推定する指標として適切かを確認するために、探索空間からランダムに選択した1000個のアーキテクチャに対して、モデルの実行時間とMAC値をプロットして確認しています。その結果が下の図になります。
この図を見ると、MAC値と推論時間(レイテンシ)には大きな相関があることがわかります。
探索手法
MCUで実行するニューラルネットワークの設計には、前述のとおり、以下の要素を考量する必要があります。
- モデルの性能(検証精度)
- ピーク時のメモリ使用量
- モデルのサイズ(ストレージ制限)
- MAC値(推論の実行時間)
これらをすべてアーキテクチャの評価関数に含めるため、係数λを使って以下のように評価関数を設定します。
係数λは、それぞれの項の相対的な重要度を表しています。
この評価関数を最適化するのに、Aging Evolutionアルゴリズム(AE)を用います。AEは、母集団の中から探索ラウンドごとにアーキテクチャをサンプリングして、評価関数が最小になるものを選択します。そしてこの選択されたアーキテクチャにMorphismsを適用して子孫を生成し、探索する母集団に加えます。新しくアーキテクチャが加えられる際、最も古いアーキテクチャは除外されます。このように探索する母集団をMorphismsを用いて更新していくことで探索していく方法です。
また、モデルのサイズ削減のためにモデル圧縮を行っています。AEによってモデルのベースのアーキテクチャを決定した後、刈り込みを用いて学習中に重要でないと判断されたチャンネルやユニットを破棄します。
実験
刈込の判断
刈り込みによってリソース使用量の少ないモデルを見つけることができるかどうかを判断するため、刈り込みを行った場合と行わなかった場合でμNASを実行しています。その結果は以下のようになります。
この図は、両方のデータセット(Chars74K, MNIST)において、モデルサイズと発見されたモデルのエラー率を示しています。この結果を見ると、刈り込みを実行した場合のほうが小さなモデルサイズでより低い誤り率を達成していることがわかります。
探索されたアーキテクチャの性能
上の表は、各データセットに対してμNASで探索したアーキテクチャの性能と、ほかのモデルとの比較をまとめたものです。この表を見ると、μNASで探索されたアーキテクチャは精度の面だけではなく、モデルサイズやRAMの使用量などの面においてもほかのモデルよりも優れたアーキテクチャであることがわかります。
まとめ
本論文では、計算リソースが厳しいなかで実行するニューラルネットワークのアーキテクチャ探索手法を提案しました。この手法は、アーキテクチャの評価関数に計算リソースに関する項を加えてAging Evolutionを実行することでアーキテクチャを探索しています。このように探索したアーキテクチャは、精度だけでなく、計算リソース面でも性能が良いものであることがわかりました。
この記事に関するカテゴリー