Halaman ini menjelaskan cara membangun dan menggunakan library TensorFlow Lite dengan alat CMake.
Petunjuk berikut telah diuji di Ubuntu 16.04.3 PC 64-bit (AMD64) , macOS Catalina (x86_64), Windows 10, dan image Docker devel TensorFlow tensorflow/tensorflow:devel.
Langkah 1. Menginstal alat CMake
Diperlukan CMake 3.16 atau yang lebih tinggi. Di Ubuntu, Anda cukup menjalankan perintah berikut.
sudo apt-get install cmake
Atau Anda dapat mengikuti panduan penginstalan cmake resmi
Langkah 2: Meng-clone repositori TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Langkah 3. Membuat direktori build CMake
mkdir tflite_build
cd tflite_build
Langkah 4. Menjalankan alat CMake dengan konfigurasi
Build rilis
Library ini menghasilkan biner rilis yang dioptimalkan secara default. Jika Anda ingin membangun aplikasi untuk workstation Anda, cukup jalankan perintah berikut.
cmake ../tensorflow_src/tensorflow/lite
Build debug
Jika perlu menghasilkan build debug yang memiliki informasi simbol, Anda harus
menyediakan opsi -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Membangun dengan pengujian unit kernel
Agar dapat menjalankan pengujian kernel, Anda harus memberikan
flag -DTFLITE_KERNEL_TEST=on
. Detail kompilasi silang pengujian unit dapat
ditemukan di subbagian berikutnya.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Membuat paket yang dapat diinstal
Untuk mem-build paket yang dapat diinstal yang dapat digunakan sebagai dependensi oleh project CMake lainnya dengan find_package(tensorflow-lite CONFIG)
, gunakan opsi -DTFLITE_ENABLE_INSTALL=ON
.
Idealnya, Anda juga harus menyediakan dependensi library versi Anda sendiri.
Ini juga perlu digunakan oleh project yang bergantung pada TF Lite. Anda dapat menggunakan -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
dan menetapkan variabel <PackageName>_DIR
agar mengarah ke penginstalan library Anda.
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
Kompilasi silang
Anda dapat menggunakan CMake untuk membangun biner bagi arsitektur target ARM64 atau Android.
Untuk mengompilasi silang TF Lite, Anda harus menyediakan jalur ke SDK (misalnya, ARM64 SDK atau NDK dalam kasus Android) dengan tanda -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Fitur kompilasi silang Android
Untuk kompilasi silang Android, Anda harus menginstal
Android NDK dan menyediakan jalur NDK dengan
flag -DCMAKE_TOOLCHAIN_FILE
yang disebutkan di atas. Anda juga perlu menetapkan ABI target
dengan tanda -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Fitur spesifik pengujian kernel (unit) merupakan kompilasi silang
Kompilasi silang pengujian unit memerlukan compiler flatc untuk arsitektur
host. Untuk tujuan ini, ada CMakeList yang terletak di
tensorflow/lite/tools/cmake/native_tools/flatbuffers
untuk mem-build compiler flatc
dengan CMake terlebih dahulu dalam direktori build terpisah menggunakan toolchain
host.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Anda juga dapat menginstal flatc ke lokasi penginstalan kustom (misalnya ke direktori yang berisi alat lain yang dibuat secara native, bukan direktori build CMake):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Untuk kompilasi silang TF Lite itu sendiri, parameter tambahan -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
yang mengarah ke direktori berisi biner flatc native harus disediakan bersama dengan flag -DTFLITE_KERNEL_TEST=on
yang disebutkan di atas.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
Pengujian kernel (unit) yang dikompilasi silang diluncurkan pada target
Pengujian unit dapat dijalankan sebagai file yang dapat dieksekusi terpisah atau menggunakan utilitas CTest. Sejauh
yang diperhatikan CTest, jika setidaknya salah satu parameter
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE` diaktifkan untuk build TF Lite
yang digunakan, pengujian yang dihasilkan akan dihasilkan dengan dua label berbeda
(menggunakan executable pengujian yang sama): - biasa - menunjukkan pengujian yang dijalankan di
spesifikasi backend yang digunakan
Baik CTestTestfile.cmake
maupun run-tests.cmake
(sebagaimana disebutkan di bawah) tersedia di <build_dir>/kernels
.
Peluncuran pengujian unit dengan backend CPU (asalkan CTestTestfile.cmake
ada di target pada direktori saat ini):
ctest -L plain
Luncurkan contoh pengujian unit menggunakan delegasi (asalkan file CTestTestfile.cmake
serta run-tests.cmake
ada di target pada direktori saat ini):
cmake -E env TESTS_ARGUMENTS=--use_xnnpack=true ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--external_delegate_path=<PATH> ctest -L delegate
Keterbatasan yang diketahui terkait cara memberikan argumen peluncuran terkait delegasi tambahan ke pengujian unit adalah cara ini hanya mendukung metode dengan nilai return yang diharapkan 0. Nilai hasil yang berbeda akan dilaporkan sebagai kegagalan pengujian.
Delegasi GPU OpenCL
Jika mesin target memiliki dukungan OpenCL, Anda dapat menggunakan delegasi GPU yang dapat memanfaatkan daya GPU Anda.
Untuk mengonfigurasi dukungan delegasi GPU OpenCL:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
Langkah 5. Mem-build TensorFlow Lite
Dalam direktori tflite_build
,
cmake --build . -j
Langkah 6. Mem-build Contoh Alat Tolok Ukur dan Gambar Label TensorFlow Lite (Opsional)
Dalam direktori tflite_build
,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
Opsi yang Tersedia untuk mem-build TensorFlow Lite
Berikut daftar opsi yang tersedia. Anda dapat menggantinya dengan
-D<option_name>=[ON|OFF]
. Misalnya, -DTFLITE_ENABLE_XNNPACK=OFF
untuk
menonaktifkan XNNPACK yang diaktifkan secara default.
Nama Opsi | Fitur | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
Aktifkan library perkalian matriks RUY | AKTIF | NONAKTIF | NONAKTIF | NONAKTIF |
TFLITE_ENABLE_GPU
|
Aktifkan delegasi GPU | NONAKTIF | NONAKTIF | T/A | T/A |
TFLITE_ENABLE_XNNPACK
|
Aktifkan delegasi XNNPACK | AKTIF | AKTIF | AKTIF | AKTIF |
TFLITE_ENABLE_MMAP |
Aktifkan MMAP | AKTIF | AKTIF | AKTIF | T/A |
Membuat project CMake yang menggunakan TensorFlow Lite
Berikut adalah CMakeLists.txt dari contoh minimal TFLite.
Anda harus memiliki add_subdirectory() untuk direktori TensorFlow Lite dan menautkan tensorflow-lite
dengan 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)
Mem-build library TensorFlow Lite C
Jika Anda ingin membangun library bersama TensorFlow Lite untuk C API, ikuti langkah 1 hingga langkah 3 terlebih dahulu. Setelah itu, jalankan perintah berikut.
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
Perintah ini menghasilkan pustaka bersama berikut di direktori saat ini.
Platform | Nama perpustakaan |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |