Halaman ini menjelaskan cara mem-build dan menggunakan library TensorFlow Lite dengan alat CMake .
Instruksi berikut telah diuji pada Ubuntu 16.04.3 64-bit PC (AMD64) , macOS Catalina (x86_64), Windows 10 dan TensorFlow devel Docker image tensorflow/tensorflow:devel .
Langkah 1. Instal alat CMake
Ini membutuhkan CMake 3.16 atau lebih tinggi. Di Ubuntu, Anda cukup menjalankan perintah berikut.
sudo apt-get install cmake
Atau Anda dapat mengikuti panduan instalasi cmake resmi
Langkah 2. Kloning repositori TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Langkah 3. Buat direktori build CMake
mkdir tflite_build
cd tflite_build
Langkah 4. Jalankan alat CMake dengan konfigurasi
Rilis bangunan
Ini menghasilkan biner rilis yang dioptimalkan secara default. Jika Anda ingin membangun untuk workstation Anda, cukup jalankan perintah berikut.
cmake ../tensorflow_src/tensorflow/lite
Bangun debug
Jika Anda perlu membuat build debug yang memiliki informasi simbol, Anda perlu memberikan opsi -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Bangun dengan pengujian unit kernel
Agar dapat menjalankan pengujian kernel, Anda perlu memberikan flag -DTFLITE_KERNEL_TEST=on
. Spesifik kompilasi silang pengujian unit dapat ditemukan di sub-bagian berikutnya.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Bangun paket yang dapat diinstal
Untuk membuat paket yang dapat diinstal yang dapat digunakan sebagai ketergantungan oleh proyek CMake lain dengan find_package(tensorflow-lite CONFIG)
, gunakan opsi -DTFLITE_ENABLE_INSTALL=ON
.
Idealnya Anda juga harus menyediakan versi dependensi library Anda sendiri. Ini juga perlu digunakan oleh proyek yang bergantung pada TF Lite. Anda dapat menggunakan -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
dan mengatur variabel <PackageName>_DIR
untuk menunjuk ke instalasi perpustakaan 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 membuat binari untuk arsitektur target ARM64 atau Android.
Untuk mengkompilasi silang TF Lite, Anda perlu menyediakan jalur ke SDK (mis. ARM64 SDK atau NDK dalam kasus Android) dengan flag -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Spesifik kompilasi silang Android
Untuk kompilasi silang Android, Anda perlu menginstal Android NDK dan menyediakan jalur NDK dengan flag -DCMAKE_TOOLCHAIN_FILE
yang disebutkan di atas. Anda juga perlu menyetel ABI target dengan bendera -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Spesifikasi kernel (unit) menguji kompilasi silang
Kompilasi silang dari pengujian unit memerlukan kompiler flatc untuk arsitektur host. Untuk tujuan ini, ada CMakeLists yang terletak di tensorflow/lite/tools/cmake/native_tools/flatbuffers
untuk mem-build compiler flatc dengan CMake terlebih dahulu di direktori build terpisah menggunakan host toolchain.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Dimungkinkan juga untuk menginstal flatc ke lokasi instalasi khusus (mis. ke direktori yang berisi alat 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 menunjuk ke direktori yang berisi biner flatc asli perlu 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/
Peluncuran pengujian kernel (unit) yang dikompilasi silang sesuai target
Tes unit dapat dijalankan sebagai executable terpisah atau menggunakan utilitas CTest. Sejauh menyangkut CTest, jika setidaknya salah satu parameter TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
atau TFLITE_EXTERNAL_DELEGATE
diaktifkan untuk build TF Lite, pengujian yang dihasilkan dihasilkan dengan dua label berbeda (memanfaatkan pengujian yang dapat dijalankan yang sama): - biasa - menunjukkan pengujian yang berjalan di backend CPU - delegasi - menunjukkan pengujian yang mengharapkan argumen peluncuran tambahan yang digunakan untuk spesifikasi delegasi yang digunakan
Baik CTestTestfile.cmake
dan run-tests.cmake
(sebagaimana dirujuk di bawah) tersedia di <build_dir>/kernels
.
Peluncuran pengujian unit dengan backend CPU (asalkan CTestTestfile.cmake
hadir sesuai target di direktori saat ini):
ctest -L plain
Luncurkan contoh pengujian unit menggunakan delegasi (asalkan file CTestTestfile.cmake
serta run-tests.cmake
ada di target di direktori saat ini):
cmake -E env TESTS_ARGUMENTS=--use_nnapi=true\;--nnapi_accelerator_name=vsi-npu ctest -L delegate
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 dari cara memberikan argumen peluncuran terkait delegasi tambahan ini untuk pengujian unit adalah bahwa cara ini secara efektif hanya mendukung argumen dengan nilai pengembalian yang diharapkan dari 0 . Nilai pengembalian yang berbeda akan dilaporkan sebagai kegagalan pengujian.
Delegasi GPU OpenCL
Jika mesin target Anda 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. Bangun TensorFlow Lite
Di direktori tflite_build
,
cmake --build . -j
Langkah 6. Buat Alat Tolok Ukur TensorFlow Lite dan Contoh Gambar Label (Opsional)
Di direktori tflite_build
,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
Opsi yang Tersedia untuk membangun TensorFlow Lite
Berikut adalah daftar opsi yang tersedia. Anda dapat menimpanya 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 pustaka perkalian matriks RUY | PADA | MATI | MATI | MATI |
TFLITE_ENABLE_NNAPI | Aktifkan delegasi NNAPI | PADA | MATI | T/A | T/A |
TFLITE_ENABLE_GPU | Aktifkan delegasi GPU | MATI | MATI | T/A | T/A |
TFLITE_ENABLE_XNNPACK | Aktifkan delegasi XNNPACK | PADA | PADA | PADA | PADA |
TFLITE_ENABLE_MMAP | Aktifkan MMAP | PADA | PADA | PADA | T/A |
Buat proyek 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)
Bangun pustaka TensorFlow Lite C
Jika Anda ingin membuat pustaka 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 |
Halaman ini menjelaskan cara mem-build dan menggunakan library TensorFlow Lite dengan alat CMake .
Instruksi berikut telah diuji pada Ubuntu 16.04.3 64-bit PC (AMD64) , macOS Catalina (x86_64), Windows 10 dan TensorFlow devel Docker image tensorflow/tensorflow:devel .
Langkah 1. Instal alat CMake
Ini membutuhkan CMake 3.16 atau lebih tinggi. Di Ubuntu, Anda cukup menjalankan perintah berikut.
sudo apt-get install cmake
Atau Anda dapat mengikuti panduan instalasi cmake resmi
Langkah 2. Kloning repositori TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Langkah 3. Buat direktori build CMake
mkdir tflite_build
cd tflite_build
Langkah 4. Jalankan alat CMake dengan konfigurasi
Rilis bangunan
Ini menghasilkan biner rilis yang dioptimalkan secara default. Jika Anda ingin membangun untuk workstation Anda, cukup jalankan perintah berikut.
cmake ../tensorflow_src/tensorflow/lite
Bangun debug
Jika Anda perlu membuat build debug yang memiliki informasi simbol, Anda perlu memberikan opsi -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Bangun dengan pengujian unit kernel
Agar dapat menjalankan pengujian kernel, Anda perlu memberikan flag -DTFLITE_KERNEL_TEST=on
. Spesifik kompilasi silang pengujian unit dapat ditemukan di sub-bagian berikutnya.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Bangun paket yang dapat diinstal
Untuk membuat paket yang dapat diinstal yang dapat digunakan sebagai ketergantungan oleh proyek CMake lain dengan find_package(tensorflow-lite CONFIG)
, gunakan opsi -DTFLITE_ENABLE_INSTALL=ON
.
Idealnya Anda juga harus menyediakan versi dependensi library Anda sendiri. Ini juga perlu digunakan oleh proyek yang bergantung pada TF Lite. Anda dapat menggunakan -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
dan mengatur variabel <PackageName>_DIR
untuk menunjuk ke instalasi perpustakaan 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 membuat binari untuk arsitektur target ARM64 atau Android.
Untuk mengkompilasi silang TF Lite, Anda perlu menyediakan jalur ke SDK (mis. ARM64 SDK atau NDK dalam kasus Android) dengan flag -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Spesifik kompilasi silang Android
Untuk kompilasi silang Android, Anda perlu menginstal Android NDK dan menyediakan jalur NDK dengan flag -DCMAKE_TOOLCHAIN_FILE
yang disebutkan di atas. Anda juga perlu menyetel ABI target dengan bendera -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Spesifikasi kernel (unit) menguji kompilasi silang
Kompilasi silang dari pengujian unit memerlukan kompiler flatc untuk arsitektur host. Untuk tujuan ini, ada CMakeLists yang terletak di tensorflow/lite/tools/cmake/native_tools/flatbuffers
untuk mem-build compiler flatc dengan CMake terlebih dahulu di direktori build terpisah menggunakan host toolchain.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Dimungkinkan juga untuk menginstal flatc ke lokasi instalasi khusus (mis. ke direktori yang berisi alat 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 menunjuk ke direktori yang berisi biner flatc asli perlu 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/
Peluncuran pengujian kernel (unit) yang dikompilasi silang sesuai target
Tes unit dapat dijalankan sebagai executable terpisah atau menggunakan utilitas CTest. Sejauh menyangkut CTest, jika setidaknya salah satu parameter TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
atau TFLITE_EXTERNAL_DELEGATE
diaktifkan untuk build TF Lite, pengujian yang dihasilkan dihasilkan dengan dua label berbeda (memanfaatkan pengujian yang dapat dijalankan yang sama): - biasa - menunjukkan pengujian yang berjalan di backend CPU - delegasi - menunjukkan pengujian yang mengharapkan argumen peluncuran tambahan yang digunakan untuk spesifikasi delegasi yang digunakan
Baik CTestTestfile.cmake
dan run-tests.cmake
(sebagaimana dirujuk di bawah) tersedia di <build_dir>/kernels
.
Peluncuran pengujian unit dengan backend CPU (asalkan CTestTestfile.cmake
hadir sesuai target di direktori saat ini):
ctest -L plain
Luncurkan contoh pengujian unit menggunakan delegasi (asalkan file CTestTestfile.cmake
serta run-tests.cmake
ada di target di direktori saat ini):
cmake -E env TESTS_ARGUMENTS=--use_nnapi=true\;--nnapi_accelerator_name=vsi-npu ctest -L delegate
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 dari cara memberikan argumen peluncuran terkait delegasi tambahan ini untuk pengujian unit adalah bahwa cara ini secara efektif hanya mendukung argumen dengan nilai pengembalian yang diharapkan dari 0 . Nilai pengembalian yang berbeda akan dilaporkan sebagai kegagalan pengujian.
Delegasi GPU OpenCL
Jika mesin target Anda 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. Bangun TensorFlow Lite
Di direktori tflite_build
,
cmake --build . -j
Langkah 6. Buat Alat Tolok Ukur TensorFlow Lite dan Contoh Gambar Label (Opsional)
Di direktori tflite_build
,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
Opsi yang Tersedia untuk membangun TensorFlow Lite
Berikut adalah daftar opsi yang tersedia. Anda dapat menimpanya 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 pustaka perkalian matriks RUY | PADA | MATI | MATI | MATI |
TFLITE_ENABLE_NNAPI | Aktifkan delegasi NNAPI | PADA | MATI | T/A | T/A |
TFLITE_ENABLE_GPU | Aktifkan delegasi GPU | MATI | MATI | T/A | T/A |
TFLITE_ENABLE_XNNPACK | Aktifkan delegasi XNNPACK | PADA | PADA | PADA | PADA |
TFLITE_ENABLE_MMAP | Aktifkan MMAP | PADA | PADA | PADA | T/A |
Buat proyek 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)
Bangun pustaka TensorFlow Lite C
Jika Anda ingin membuat pustaka 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 |