Trang này mô tả cách xây dựng và sử dụng thư viện TensorFlow Lite với công cụ CMake .
Các hướng dẫn sau đây đã được thử nghiệm trên Ubuntu 16.04.3 64-bit PC (AMD64), macOS Catalina (x86_64), Windows 10 và TensorFlow devel Docker image tensorflow / tensorflow: devel .
Bước 1. Cài đặt công cụ CMake
Nó yêu cầu CMake 3.16 hoặc cao hơn. Trên Ubuntu, bạn có thể chỉ cần chạy lệnh sau.
sudo apt-get install cmake
Hoặc bạn có thể làm theo hướng dẫn cài đặt cmake chính thức
Bước 2. Kho lưu trữ Clone TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Bước 3. Tạo thư mục xây dựng CMake
mkdir tflite_build
cd tflite_build
Bước 4. Chạy công cụ CMake với các cấu hình
Phát hành bản dựng
Nó tạo ra một bản nhị phân phát hành được tối ưu hóa theo mặc định. Nếu bạn muốn xây dựng cho máy trạm của mình, chỉ cần chạy lệnh sau.
cmake ../tensorflow_src/tensorflow/lite
Bản dựng gỡ lỗi
Nếu bạn cần tạo một bản dựng gỡ lỗi có thông tin ký hiệu, bạn cần cung cấp tùy chọn -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Xây dựng với các bài kiểm tra đơn vị hạt nhân
Để có thể chạy kiểm tra hạt nhân, bạn cần cung cấp cờ '-DTFLITE_KERNEL_TEST = on'. Các chi tiết cụ thể về biên dịch chéo của bài kiểm tra đơn vị có thể được tìm thấy trong phần phụ tiếp theo.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Xây dựng gói có thể cài đặt
Để xây dựng một gói có thể cài đặt có thể được sử dụng như một gói phụ thuộc của một dự án CMake khác với find_package(tensorflow-lite CONFIG)
, hãy sử dụng tùy chọn -DTFLITE_ENABLE_INSTALL=ON
.
Lý tưởng nhất là bạn cũng nên cung cấp các phiên bản phụ thuộc thư viện của riêng mình. Những thứ này cũng sẽ cần được sử dụng bởi dự án phụ thuộc vào TF Lite. Bạn có thể sử dụng -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
và đặt biến <PackageName>_DIR
trỏ đến cài đặt thư viện của bạn.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_INSTALL=ON \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
-Dabsl_DIR=<install path>/lib/cmake/absl \
-DEigen3_DIR=<install path>/share/eigen3/cmake \
-DFlatbuffers_DIR=<install path>/lib/cmake/flatbuffers \
-DNEON_2_SSE_DIR=<install path>/lib/cmake/NEON_2_SSE \
-Dcpuinfo_DIR=<install path>/share/cpuinfo \
-Druy_DIR=<install path>/lib/cmake/ruy
Tổng hợp chéo
Bạn có thể sử dụng CMake để tạo tệp nhị phân cho kiến trúc đích ARM64 hoặc Android.
Để biên dịch chéo TF Lite, bạn cần cung cấp đường dẫn đến SDK (ví dụ: ARM64 SDK hoặc NDK trong trường hợp của Android) với cờ -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Các chi tiết cụ thể của tổng hợp chéo Android
Đối với biên dịch chéo Android, bạn cần cài đặt Android NDK và cung cấp đường dẫn NDK với cờ -DCMAKE_TOOLCHAIN_FILE
được đề cập ở trên. Bạn cũng cần đặt ABI mục tiêu với cờ -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Các chi tiết cụ thể của nhân (đơn vị) kiểm tra biên dịch chéo
Việc biên dịch chéo các bài kiểm tra đơn vị yêu cầu trình biên dịch flatc cho kiến trúc máy chủ. Với mục đích này, có một CMakeLists nằm trong tensorflow/lite/tools/cmake/native_tools/flatbuffers
để xây dựng trước trình biên dịch flatc với CMake trong một thư mục xây dựng riêng biệt bằng cách sử dụng chuỗi công cụ máy chủ.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Cũng có thể cài đặt flatc đến một vị trí cài đặt tùy chỉnh (ví dụ: đến một thư mục chứa các công cụ được xây dựng tự nhiên khác thay vì thư mục xây dựng CMake):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Đối với chính quá trình biên dịch chéo TF Lite, tham số bổ sung -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
trỏ đến thư mục chứa nhị phân flatc gốc cần được cung cấp cùng với -DTFLITE_KERNEL_TEST=on
cờ được đề cập ở trên.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
Kiểm tra nhân (đơn vị) được biên dịch chéo khởi chạy trên mục tiêu
Các bài kiểm tra đơn vị có thể được chạy dưới dạng tệp thực thi riêng biệt hoặc sử dụng tiện ích CTest. Theo như CTest có liên quan, nếu ít nhất một trong các tham số TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
hoặc TFLITE_EXTERNAL_DELEGATE
được bật cho bản dựng TF Lite, các thử nghiệm kết quả được tạo với hai nhãn khác nhau (sử dụng cùng một tệp thực thi thử nghiệm): - đơn giản - biểu thị các thử nghiệm những cái chạy trên chương trình phụ trợ CPU - ủy quyền - biểu thị các bài kiểm tra mong đợi các đối số khởi chạy bổ sung được sử dụng cho đặc tả ủy quyền đã sử dụng
Cả CTestTestfile.cmake
và run-tests.cmake
(như được đề cập bên dưới) đều có sẵn trong <build_dir>/kernels
.
Khởi chạy các bài kiểm tra đơn vị với phần mềm phụ trợ CPU (miễn là CTestTestfile.cmake
có mặt trên đích trong thư mục hiện tại):
ctest -L plain
Khởi chạy các ví dụ về các bài kiểm tra đơn vị bằng cách sử dụng đại biểu (với điều kiện CTestTestfile.cmake
cũng như tệp run-tests.cmake
có trên đích trong thư mục hiện tại):
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
Một hạn chế đã biết của cách này trong việc cung cấp các đối số khởi chạy bổ sung liên quan đến ủy quyền cho các bài kiểm tra đơn vị là nó chỉ hỗ trợ hiệu quả những đối tượng có giá trị trả về dự kiến là 0 . Các giá trị trả về khác nhau sẽ được báo cáo là lỗi thử nghiệm.
Đại biểu GPU OpenCL
Nếu máy mục tiêu của bạn có hỗ trợ OpenCL, bạn có thể sử dụng ủy quyền GPU có thể tận dụng sức mạnh GPU của bạn.
Để định cấu hình hỗ trợ đại biểu GPU OpenCL:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
Bước 5. Xây dựng TensorFlow Lite
Trong thư mục tflite_build,
cmake --build . -j
Bước 6. Xây dựng Công cụ điểm chuẩn TensorFlow Lite và Ví dụ về hình ảnh nhãn (Tùy chọn)
Trong thư mục tflite_build,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
Các tùy chọn có sẵn để xây dựng TensorFlow Lite
Đây là danh sách các tùy chọn có sẵn. Bạn có thể ghi đè nó bằng -D<option_name>=[ON|OFF]
. Ví dụ, -DTFLITE_ENABLE_XNNPACK=OFF
để tắt XNNPACK được bật theo mặc định.
Tên tùy chọn | Tính năng | Android | Linux | hệ điều hành Mac | các cửa sổ |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY | Bật thư viện nhân ma trận RUY | TRÊN | TẮT | TẮT | TẮT |
TFLITE_ENABLE_NNAPI | Bật ủy quyền NNAPI | TRÊN | TẮT | N / A | N / A |
TFLITE_ENABLE_GPU | Bật ủy quyền GPU | TẮT | TẮT | N / A | N / A |
TFLITE_ENABLE_XNNPACK | Bật ủy quyền XNNPACK | TRÊN | TRÊN | TRÊN | TRÊN |
TFLITE_ENABLE_MMAP | Bật MMAP | TRÊN | TRÊN | TRÊN | N / A |
Tạo một dự án CMake sử dụng TensorFlow Lite
Đây là CMakeLists.txt của ví dụ tối thiểu TFLite .
Bạn cần có add_subdirectory () cho thư mục TensorFlow Lite và liên kết tensorflow-lite
với 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)
Xây dựng thư viện TensorFlow Lite C
Nếu bạn muốn xây dựng thư viện chia sẻ TensorFlow Lite cho API C , trước tiên hãy làm theo bước 1 đến bước 3 . Sau đó, chạy các lệnh sau.
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
Lệnh này tạo thư viện được chia sẻ sau trong thư mục hiện tại.
Nền tảng | Tên thư viện |
---|---|
Linux | libtensorflowlite_c.so |
hệ điều hành Mac | libtensorflowlite_c.dylib |
các cửa sổ | tensorflowlite_c.dll |