Open5

TensorFlow Lite Hexagon delegate

iwatakeiwatake

TensorFlow Lite Hexagon delegateのビルドから実行までに関してまとめる予定。
ここでは、C++ (NDK)から使うことを想定。

iwatakeiwatake

https://www.tensorflow.org/lite/performance/hexagon_delegate

  • Qualcomm Hexagon libraryに対してDSP上で量子化カーネルを実行させる

  • 8-bit量子化モデルが対象(post-training quantizationとquantization-aware training どちらも)

  • NNAPIを補完することが目的 (例えばNNAPIが使えない古い端末など)

  • Hexagon librariesが必要 (以下の3つ全て)

    • libhexagon_nn_skel.so, libhexagon_nn_skel_v65.so, libhexagon_nn_skel_v66.so
    • v1.20を使う (2020/07/22)
  • Cから使うときも、gradleで以下の依存ライブラリ設定が必要 (本当??)

    dependencies {
      ...
      implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
      implementation 'org.tensorflow:tensorflow-lite-hexagon:0.0.0-nightly'
    }
    
    • もしかしてこれ使えば、自分でAndroid用のlibtensorflowlite.so作る必要なし?
  • 使うときはtflite.interpreterを作る前に、HexagonDelegateを作り追加 (他のdelegateと同様)

  • libtensorflowlite_hexagon_delegate.so みたいなものは必要? 不要? どうやって作るのか?

iwatakeiwatake

コード全体をhexagon でgrepしてみた結果

iwatakeiwatake

bazel build --config=android_arm64 tensorflow/lite/delegates/hexagon/hexagon_nn:libhexagon_interface.so でビルドは成功

(build_tflite) ~/tensorflow$ ls bazel-bin/tensorflow/lite/delegates/hexagon/hexagon_nn/libhexagon_interface.so  -la
-r-xr-xr-x 1 iwatake docker 88096 Jan 21 09:45 bazel-bin/tensorflow/lite/delegates/hexagon/hexagon_nn/libhexagon_interface.so