このページでは、LiteRT ライブラリをビルドして使用する方法について説明します。 CMake ツール。
次の手順は、Ubuntu 16.04.3 64 ビット PC(AMD64)でテストされています 、macOS Catalina(x86_64)、Windows 10、TensorFlow 用の Docker イメージ tensorflow/tensorflow:devel.
ステップ 1. CMake ツールをインストールする
CMake 3.16 以降が必要です。Ubuntu では、次のコマンドを実行するだけで、 使用できます。
sudo apt-get install cmake
ステップ 2. TensorFlow リポジトリのクローンを作成する
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
ステップ 3. CMake ビルド ディレクトリを作成する
mkdir tflite_build
cd tflite_build
ステップ 4. 構成で CMake ツールを実行する
リリースビルド
デフォルトでは、最適化されたリリース バイナリが生成されます。たとえば、 次のコマンドを実行するだけです。
cmake ../tensorflow_src/tensorflow/lite
デバッグビルド
シンボル情報を含むデバッグビルドを生成する必要がある場合は、以下を行う必要があります。
-DCMAKE_BUILD_TYPE=Debug
オプションを指定する。
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
カーネル単体テストでビルドする
カーネルテストを実行できるようにするには、
-DTFLITE_KERNEL_TEST=on
フラグ。単体テストのクロスコンパイルの仕様は、
次のサブセクションで行います。
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
インストール可能なパッケージをビルドする
別の依存関係として使用できるインストール可能なパッケージをビルドする
CMake プロジェクトで find_package(tensorflow-lite CONFIG)
を使用している場合は、
-DTFLITE_ENABLE_INSTALL=ON
オプション。
可能であれば、独自のバージョンのライブラリ依存関係も用意してください。
これらは、LiteRT に依存するプロジェクトでも使用する必要があります。Google Chat では
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
を使用して <PackageName>_DIR
を設定する
ライブラリのインストールをポイントします。
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_INSTALL=ON \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
-DSYSTEM_FARMHASH=ON \
-DSYSTEM_PTHREADPOOL=ON \
-Dabsl_DIR=<install path>/lib/cmake/absl \
-DEigen3_DIR=<install path>/share/eigen3/cmake \
-DFlatBuffers_DIR=<install path>/lib/cmake/flatbuffers \
-Dgemmlowp_DIR=<install path>/lib/cmake/gemmlowp \
-DNEON_2_SSE_DIR=<install path>/lib/cmake/NEON_2_SSE \
-Dcpuinfo_DIR=<install path>/share/cpuinfo \
-Druy_DIR=<install path>/lib/cmake/ruy
クロスコンパイル
CMake を使用して、ARM64 または Android のターゲット アーキテクチャのバイナリをビルドできます。
LiteRT をクロスコンパイルするには、コードの
-DCMAKE_TOOLCHAIN_FILE
を使用した SDK(Android の場合は ARM64 SDK または NDK など)
設定されます。
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android クロスコンパイルの仕様
Android のクロスコンパイルでは、以下を
Android NDK です。NDK パスは、
上記の -DCMAKE_TOOLCHAIN_FILE
フラグ。ターゲット ABI も設定する必要があります。
-DANDROID_ABI
フラグを指定します。
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
カーネル(単体テスト)テストのクロスコンパイルの仕様
単体テストのクロスコンパイルには、ホスト用の Flatc コンパイラが必要
説明します。この目的のために、CMakeLists が
tensorflow/lite/tools/cmake/native_tools/flatbuffers
: Flatc をビルドする
事前に、ホストを使用して別のビルド ディレクトリで CMake でコンパイラを実行する
ツールチェーン。
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
flatc をカスタムのインストール場所にインストールすることもできます。 (例: CMake 以外のネイティブ ビルドのツールを含むディレクトリなど)。 build ディレクトリにあります)。
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
LiteRT クロスコンパイル自体では、追加のパラメータ
-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
は、次のものを含むディレクトリを指します。
ネイティブの flatc バイナリを、
前述の -DTFLITE_KERNEL_TEST=on
フラグ。
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
クロスコンパイルされたカーネル(単体テスト)がターゲットで起動される
単体テストは、個別の実行可能ファイルとして、または CTest ユーティリティを使用して実行できます。ここまで
パラメータが少なくとも 1 つある場合、CTest に関連する
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE が LiteRT で有効になっている
結果のテストは 2 つの異なるラベル付きで生成されます。
(同じテスト実行可能ファイルを利用): - プレーン - 実行されるテストを示します。
CPU バックエンド - デリゲート - 追加起動が予定されているテストを示します
使用されるデリゲートの仕様に使用される引数
CTestTestfile.cmake
と run-tests.cmake
(下記参照)は両方とも
<build_dir>/kernels
で入手できます。
CPU バックエンドを使用した単体テストの起動(CTestTestfile.cmake
が
ターゲットに存在する(現在のディレクトリ))。
ctest -L plain
デリゲートを使用した単体テストの起動例(
CTestTestfile.cmake
と run-tests.cmake
ファイルがターゲットに存在する
次のコマンドを入力します。
cmake -E env TESTS_ARGUMENTS=--use_xnnpack=true ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--external_delegate_path=<PATH> ctest -L delegate
この方法に関する既知の制限: 委任に関連する追加の 単体テストに対して起動時の引数を指定するのは、 期待される戻り値 0。さまざまな戻り値が 1 つのパラメータとして 発生します。
OpenCL GPU デリゲート
ターゲット マシンが OpenCL をサポートしている場合は、 GPU デリゲート。これは、 GPU のパワーを活用します。
OpenCL GPU デリゲートのサポートを構成するには:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
ステップ 5. LiteRT をビルドする
tflite_build
ディレクトリで、次の操作を行います。
cmake --build . -j
ステップ 6. LiteRT ベンチマーク ツールとラベルイメージの例のビルド(オプション)
tflite_build
ディレクトリで、次の操作を行います。
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
LiteRT のビルドに使用できるオプション
使用可能なオプションのリストを以下に示します。次のようにオーバーライドできます。
-D<option_name>=[ON|OFF]
。たとえば、-DTFLITE_ENABLE_XNNPACK=OFF
を
デフォルトで有効になっている XNNPACK を無効にします。
オプション名 | 機能 | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
RUY を有効にする 行列 乗算 ライブラリ | オン | オフ | オフ | オフ |
TFLITE_ENABLE_GPU
|
GPU を有効にする 委任 | オフ | オフ | なし | なし |
TFLITE_ENABLE_XNNPACK
|
XNNPACK を有効にする 委任 | オン | オン | オン | オン |
TFLITE_ENABLE_MMAP |
MMAP を有効にする | オン | オン | オン | なし |
LiteRT を使用する CMake プロジェクトを作成する
次の CMakeLists.txt ファイルです。 TFLite の最小例。
LiteRT ディレクトリとリンクには add_subdirectory() が必要です。
tensorflow-lite
を target_link_libraries() に置き換えます。
cmake_minimum_required(VERSION 3.16)
project(minimal C CXX)
set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
"Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
get_filename_component(TENSORFLOW_SOURCE_DIR
"${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()
add_subdirectory(
"${TENSORFLOW_SOURCE_DIR}/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
add_executable(minimal minimal.cc)
target_link_libraries(minimal tensorflow-lite)
LiteRT C ライブラリをビルドする
開発用の LiteRT 共有ライブラリをビルドする場合は、 C API、 ステップ 1 に沿って ステップ 3 に進みます。次に、kubectl の 起動します。
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
このコマンドにより、現在のディレクトリに次の共有ライブラリが生成されます。
プラットフォーム | ライブラリ名 |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |