Vengineerの妄想

人生を妄想しています。

AlibabaのMNN

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

Alibabaもせめてきているから9か月。

vengineer.hatenablog.com

そこで最後の紹介した Alibaba の ディープ・ラーニングフレームワーク MNN の

論文がアップされていました。MNN は推論用ですね。

arxiv.org

この論文では、Model側 を upstream、Device 側を downstream と呼んでいるっぽ。

 

1)、Caffe、TensorFlow、PyTorch、ONNXのモデルを MNN のフォーマットに変換。

2)、オフラインのグラフ最適化 (モデル圧縮) 

3)、最適化後のモデルから計算グラフと Backend Abstraction (バックエンドの情報) から Pre-inference にて、最適な計算スキームを決める

4)、デバイス上で推論

 

 3)での、Pre-inference が MNN でのポイント。。。特に、MNNでは、CPUとGPUを上手く組み合わせて使う感じ。CPUでは、ARMとARM82、GPUではMetal、Vulkan、OpenCLOpenGL ES。CPUとGPUのリソースに対して、最適化後のモデルにそれぞれのリソースで利用できる最適なもの(OPの実装)を使うというのがみそ。。

ARM82をサポートしたのは、半精度をサポートしているからっぽい。

Graph実行だけではなく、多少のComputerVisionもサポート。

MNNではまだ完全自動化(Automated Search)ではなく、Semi-automated Search の模様。

 

 論文の後半では、

・NCNN (Tencent)

・MACE (Xiaomi)

・CoreML (Apple)

・TensorFlow Lite (Google)

・MNN (Alibaba)

での、MobileNet-v1、SqueezeNet-v1.1、ResNet-19 でのCPUとGPUでの推論時間の比較をやっています。

これを見ると、MNN が速いというより、TensorFlow Lite がめっちゃ遅いのが分かります。CPU実行では、特にAndroidのMate 20 (Huawei) とMI6 (Xiaomi)。GPU実行では、TensorFlowのGPUは、OpenGL ES。

 

TensorFlow Lite。TensorFlowからサクッと持っていけて便利だけど、CPUもGPUも速くない。何故?遅いのだろうか。。。