Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

MobileDets は、ハードウェアプラットフォーム間でのモデルアーキテクチャの転移可能性を見つけたよー。

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

はじめに、

Google AIのブログにアップされたこのブログ「Machine Learning for Computer Architecture」
Google AI Blog: Machine Learning for Computer Architecture

人間が決めていたAIアクセラレータのアーキテクチャをMLにて決めるというもの。

ブログの大本の論文は、「Apollo: Transferable Architecture Exploration」
arxiv.org

Apolloの著者の一人である Berkin Akin さんの論文を調べてみたら、「MobileDets: Searching for Object Detection Architectures for Mobile Accelerators」というものを見つけました。v1は 2020年4月30日なのでもう1年近く前になっていますね。こちらの論文がそれほど騒がれなかったのはGoogle単体ではなく、University of Wisconsin-Madison との共著だったからだと思います。ちなみに、Berkin Akin さんは、CMUPh.Dです。
arxiv.org

この MobleDets の論文を眺めたら、非常に興味深いことが分かったので、ちょっとまとめてみました。

TensorFlowのモデルは、ここにあります。

MobileDets

下図は論文からの引用です。MobileNetV2をベースのモデルの探索をやっています。MobileNetV2のベースが25.3 mAP @ 12msに対して、IBN (Inverted Bottleneck Layer) だけを使った探索結果が 26.9 mAP @ 12ms になっています。Latencyが同じ(12ms)で、精度が1.6ポイント上がっています。これに対して、Fused conv (expansion) と Tucker conv(compression) という Layer を使った探索結果では 28.5mAP @ 12 ms で、1.6+1.6=3.2ポイント精度が上がったようです。
f:id:Vengineer:20210206115226p:plain

Fused conv (expansion) と Tucker conv(compression) については、下図(論文から引用)のような入力と出力は Inverted bottleneck layer と同じですが、内部の処理が違うって感じです。
f:id:Vengineer:20210206101624p:plain

MobileDetsのターゲットハードウェアは、Pixel 1 CPU、Pixel 4 EdgeTPU、Pixel 4 DSP (明示していないが、Snapdragon 855のHexagon 690だと思う)です。なんで、CPUが Pixel 4ではなく、Pixel 1のを使っているのかは謎です。

下図(論文から引用)がPixel 1 CPUでの探索結果です。CPUだと、MobileNetV3の方がMobileNetV2よりいい結果なので図にも載っているのだと思います。EdgeTPUやDSPではMobileNetV3の中で使われている h-swish と squeeze-and-exciteをサポートしていないので載せていないようです。Parate frontは、MobileNetV3ぐらいかそれ以上になっていますね。
f:id:Vengineer:20210206102108p:plain

下図(論文から引用)がPixel 4 EdgeTPUでの探索結果です。MobileNetV2に対してmAPが大幅に向上しています。
f:id:Vengineer:20210206102538p:plain

最後(論文から引用)は、Pixel 4 DSPでの探索結果です。こちらはLatencyが 11ms以上になっていますが、mAPは大幅に向上しています。
f:id:Vengineer:20210206102724p:plain

下表(論文から引用)を見ると、MAdds/Paramsが増えるけど、Latencyが小さくなり、mAP値が向上している感じですね。ターゲットハードウェアを EdgeTPUやDSPにした時のモデルをCPUで実行すると遅くなりますが、mAP値は上がっています。この表では、DSPをターゲットハードウェアにしてやったものが一番いいmAP値を出しています。時に、IBN+Fused を DSPで探索したモデルは、EdgeTPU、DSP共にMobileNetV2のLatencyとそれほど変わらないにも関わらず、mAP値は6.7ポイントも向上しているのが興味深いです。
f:id:Vengineer:20210206102919p:plain

グラフ(論文から引用)にすることこんな感じ。
f:id:Vengineer:20210206104259p:plain

モデルの構成は、下図(論文から引用)のようになったようです。CPUに関しては各Groupの後半をTruckerに、EdgeTPUに関しては前半をFusedに変更している感じです。DSPではばらばらですね。
f:id:Vengineer:20210206103655p:plain

終わりに、

MobileDets は mAP が向上しただけでなく、ハードウェアプラット間でのアーキテクチャの転移ができるということを見つけたのが大きな成果だと思います。

MobileDetsは、Pixel 4のEdgeTPUだけでなく、EdgeTPUが載っていないけど、Snapdragon 855が載っているスマホで NNAPIにてHexagon DSPが使えるなら積極的に使えそうです。

MobileNetV2に対して、ハードウェアのアーキテクチャが違う、CPU、EdgeTPU、DSP、でそれぞれモデルが変わるのは非常に興味深いです。なぜ、モデルが変わるかがわかれば、逆にアーキテクチャの改善ができると思います。

参考ブログ:
vengineer.hatenablog.com