Vengineerの妄想(準備期間)

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

Qualcomm SoC搭載Android端末でのCPU推論



Edge側でのInferenceて、どうなっているかと資料。。。

TensorFlow、ONNX、mxnet、Caffe、Caffe2などのフレームワークからのモデルから
 ・Converters/Graph Parsers を使って内部モデルに変換
 ・Graph Optimizersにて、汎用的なグラフの最適化
 ・推論の実行時のランタイム
 ・実行時のAOT Compilers
というような構成。。。

QualcommのSoCを搭載しているAndroid端末では、

 ・学習済みのTensorFLowモデル => TFLite Converter =< TEFlite Model (.tflite) => App
 ・学習済みのTensorFLow or ONNXモデル => Quallcomm Neural Processing SDK (Converter => DLC) => App
 ・学習済みのTensorFLow or ONNXモデル => ARM NN (ARM Compute Library (ACL)

の2つのパスがあるようです。

ちなみに、QuallcommのNeural Processing SDKここにいろいろ書いてあります。

QuallcommのNeural Processing SDK vs TFLite
 ・CPU : NEON   (Qualcomm Math Libraries)  <=>  NEON (Kernels)
 ・GPU : OpenCL (Kernels)                  <=>  GPU  (Kernels)
 ・DSP : HVX    (Qualcomm exagon NN)       <=>  NNAPI (Vendor/NNHAL)

NNAPI経由でQuallcommのNeural Processing SDKを使うことも可能の模様。。ただし、端末がサポートしていれば。

結果、CPU Runtime では、
 ・ARM NN                          => Arm
 ・Qualcomm Neural Processing SDK  => Qualcomm
 ・TFLite                          => TensorFlow
 ・Android NN HAL                  => Android
と、4つもあるんだよ。。。