Halaman ini menjelaskan cara membangun dan menggunakan library LiteRT dengan CMake.
Instruksi berikut telah diuji pada Ubuntu 16.04.3 64-bit PC (AMD64) , macOS Catalina (x86_64), Windows 10, dan image Docker devel TensorFlow tensorflow/tensorflow:devel.
Langkah 1. Menginstal alat CMake
Memerlukan CMake 3.16 atau yang lebih tinggi. Di Ubuntu, Anda cukup menjalankan perintah.
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
Rilis build
Opsi ini menghasilkan biner rilis yang dioptimalkan secara default. Jika Anda ingin membangun 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
berikan opsi -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Membangun dengan pengujian unit kernel
Agar dapat menjalankan pengujian {i>kernel<i}, Anda harus menyediakan
-DTFLITE_KERNEL_TEST=on
. Detail-silang kompilasi silang pengujian unit dapat
yang ditemukan di subbagian berikutnya.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Membuat paket yang dapat diinstal
Untuk membangun paket yang dapat diinstal yang dapat digunakan sebagai dependensi oleh
project CMake dengan find_package(tensorflow-lite CONFIG)
, gunakan
-DTFLITE_ENABLE_INSTALL=ON
.
Idealnya, Anda juga harus menyediakan versi dependensi library Anda sendiri.
Aturan ini juga perlu digunakan oleh project yang bergantung pada LiteRT. Anda dapat
gunakan -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
dan setel <PackageName>_DIR
variabel untuk menunjuk ke
instalasi {i>library<i} 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 LiteRT, Anda harus menyediakan jalur ke
SDK (misalnya ARM64 SDK atau NDK dalam kasus Android) dengan -DCMAKE_TOOLCHAIN_FILE
penanda.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Detail 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 flag -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Kekhususan kernel (unit) menguji kompilasi silang
Kompilasi silang pengujian unit memerlukan compiler flatc untuk host
tentang arsitektur ini. Untuk tujuan ini, ada CMakeLists yang terletak di
tensorflow/lite/tools/cmake/native_tools/flatbuffers
untuk membuat flatc
dengan CMake terlebih dahulu di direktori build terpisah menggunakan host
Rantai Alat (Toolchain).
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 yang dibangun secara native lain, bukan CMake direktori build):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Untuk kompilasi silang LiteRT itu sendiri, parameter tambahan
-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
mengarah ke direktori yang 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 sesuai target
Pengujian unit dapat dijalankan sebagai file yang dapat dieksekusi terpisah atau menggunakan utilitas CTest. Selama ini
seperti yang diperhatikan CTest, jika setidaknya salah satu parameter
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE` diaktifkan untuk LiteRT
build, pengujian yang dihasilkan dihasilkan dengan dua label yang berbeda
(menggunakan pengujian yang sama yang dapat dieksekusi): - biasa - yang menunjukkan pengujian tempat pengujian dijalankan
Backend CPU - delegasikan - yang menunjukkan bahwa pengujian mengharapkan peluncuran tambahan
argumen yang digunakan untuk spesifikasi delegasi yang digunakan
CTestTestfile.cmake
dan run-tests.cmake
(sebagaimana disebutkan di bawah)
tersedia di <build_dir>/kernels
.
Peluncuran pengujian unit dengan backend CPU (asalkan CTestTestfile.cmake
adalah
ada sesuai target dalam direktori saat ini):
ctest -L plain
Meluncurkan contoh pengujian unit yang menggunakan delegasi (asalkan
CTestTestfile.cmake
serta run-tests.cmake
file sesuai target di
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 untuk memberikan cara memberikan tambahan terkait delegasi mengaktifkan argumen ke pengujian unit secara efektif hanya mendukung mereka yang memiliki nilai hasil yang diharapkan 0. Nilai hasil yang berbeda akan dilaporkan sebagai kegagalan uji.
Delegasi GPU OpenCL
Jika komputer target memiliki dukungan OpenCL, Anda dapat menggunakan Delegasi GPU yang dapat memanfaatkan kekuatan GPU Anda.
Untuk mengonfigurasi dukungan delegasi GPU OpenCL:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
Langkah 5. Membangun LiteRT
Dalam direktori tflite_build
,
cmake --build . -j
Langkah 6. Membuat Alat Tolok Ukur LiteRT dan Contoh Gambar Label (Opsional)
Dalam direktori tflite_build
,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
Opsi yang Tersedia untuk membangun LiteRT
Berikut adalah daftar opsi yang tersedia. Anda dapat menggantinya dengan
-D<option_name>=[ON|OFF]
. Misalnya, -DTFLITE_ENABLE_XNNPACK=OFF
ke
nonaktifkan XNNPACK yang diaktifkan secara default.
Nama Opsi | Fitur | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
Aktifkan RUY matriks perkalian perpustakaan | AKTIF | NONAKTIF | NONAKTIF | NONAKTIF |
TFLITE_ENABLE_GPU
|
Aktifkan GPU delegasi | NONAKTIF | NONAKTIF | T/A | T/A |
TFLITE_ENABLE_XNNPACK
|
Aktifkan XNNPACK delegasi | AKTIF | AKTIF | AKTIF | AKTIF |
TFLITE_ENABLE_MMAP |
Aktifkan MMAP | AKTIF | AKTIF | AKTIF | T/A |
Membuat project CMake yang menggunakan LiteRT
Berikut adalah CMakeLists.txt dari Contoh minimal TFLite.
Anda harus memiliki add_subdirectory() untuk direktori LiteRT dan link
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)
Membangun library LiteRT C
Jika Anda ingin membangun pustaka bersama LiteRT untuk C API, ikuti langkah 1 untuk langkah 3 terlebih dahulu. Setelah itu, jalankan perintah berikut.
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
Perintah ini menghasilkan library bersama berikut di direktori saat ini.
Platform | Nama perpustakaan |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |