ARM ボード用に LiteRT をビルドする

このページでは、ARM ベースのコンピュータ向けに LiteRT ライブラリをビルドする方法について説明します。

LiteRT は 2 つのビルドシステムをサポートしており、各ビルドシステムでサポートされている機能は同じではありません。次の表で適切なビルドシステムを選択してください。

機能 Bazel CMake
事前定義されたツールチェーン armhf、aarch64 armel、armhf、aarch64
カスタム ツールチェーン 使いにくい 使いやすい
TF 演算を選択する をサポート 未対応
GPU デリゲート Android でのみ利用可能 OpenCL をサポートするプラットフォーム
XNNPack をサポート をサポート
Python Wheel をサポート をサポート
C API をサポート サポート対象
C++ API Bazel プロジェクトでサポートされている CMake プロジェクトでサポートされている

CMake を使用した ARM のクロスコンパイル

CMake プロジェクトがある場合や、カスタム ツールチェーンを使用する場合は、クロス コンパイルに CMake を使用することをおすすめします。これについては、CMake を使用した LiteRT のクロス コンパイルのページをご覧ください。

Bazel を使用した ARM のクロスコンパイル

Bazel プロジェクトがある場合や、TF オペレーションを使用する場合は、Bazel ビルドシステムを使用することをおすすめします。統合された ARM GCC 8.3 ツールチェーンを Bazel で使用して、ARM32/64 共有ライブラリをビルドします。

ターゲット アーキテクチャ Bazel の構成 対応デバイス
armhf(ARM32) --config=elinux_armhf 32 ビット Raspberry Pi OS を搭載した RPI3、RPI4
AArch64(ARM64) --config=elinux_aarch64 Coral、RPI4(Ubuntu 64 ビット)

以下の手順は、Ubuntu 16.04.3 64 ビット PC(AMD64)と TensorFlow devel Docker イメージ tensorflow/tensorflow:devel でテストされています。

Bazel で LiteRT をクロス コンパイルする手順は次のとおりです。

ステップ 1. Bazel をインストールする

Bazel は TensorFlow の主要なビルドシステムです。Bazel ビルドシステムの最新バージョンをインストールします。

ステップ 2. TensorFlow リポジトリのクローンを作成する

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

ステップ 3. ARM バイナリをビルドする

C ライブラリ
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

共有ライブラリは bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so で確認できます。

詳しくは、LiteRT C API ページをご覧ください。

C++ ライブラリ
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

共有ライブラリは bazel-bin/tensorflow/lite/libtensorflowlite.so で確認できます。

現在、必要なヘッダー ファイルをすべて抽出する簡単な方法はないため、TensorFlow リポジトリから tensorflow/lite/ のすべてのヘッダー ファイルを含める必要があります。また、FlatBuffers と Abseil のヘッダー ファイルも必要になります。

など。

ツールチェーンを使用して他の Bazel ターゲットをビルドすることもできます。便利なターゲットをいくつか紹介します。

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image