Trang này mô tả cách tạo và sử dụng thư viện LiteRT với Công cụ CMake.
Các hướng dẫn sau đã được thử nghiệm trên Ubuntu 16.04.3 64-bit PC (AMD64) , hình ảnh macOS Catalina (x86_64), Windows 10 và TensorFlow devel Docker tensorflow/tensorflow:devel.
Bước 1. Cài đặt công cụ CMake
Phần mềm này yêu cầu CMake 3.16 trở lên. Trên Ubuntu, bạn chỉ cần chạy lệnh sau .
sudo apt-get install cmake
Hoặc bạn có thể theo dõi hướng dẫn chính thức về cách cài đặt cmake
Bước 2. Nhân bản kho lưu trữ TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Bước 3. Tạo thư mục bản dựng CMake
mkdir tflite_build
cd tflite_build
Bước 4. Chạy công cụ CMake với cấu hình
Bản phát hành
Theo mặc định, công cụ này tạo một tệp nhị phân phát hành được tối ưu hoá. Nếu bạn muốn tạo bản 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 gỡ lỗi
Nếu cần tạo một bản gỡ lỗi có thông tin về biểu tượng, bạn cần
hãy cung cấp tuỳ chọn -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Tạo bản dựng bằng cách kiểm thử đơn vị nhân hệ điều hành
Để có thể chạy kiểm thử nhân, bạn cần cung cấp
Cờ -DTFLITE_KERNEL_TEST=on
. Thông số cụ thể của việc biên dịch chéo kiểm thử đơn vị có thể là
được tìm thấy trong tiểu mục tiếp theo.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Tạo gói có thể cài đặt
Để tạo một gói có thể cài đặt được dùng làm phần phụ thuộc cho một gói khác
Dự án CMake với find_package(tensorflow-lite CONFIG)
, hãy sử dụng
Tuỳ chọn -DTFLITE_ENABLE_INSTALL=ON
.
Tốt nhất là bạn cũng nên cung cấp các phiên bản phần phụ thuộc thư viện riêng.
Dự án phụ thuộc vào LiteRT cũng cần sử dụng các thuộc tính này. Bạn có thể
sử dụng -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
và thiết lập <PackageName>_DIR
để trỏ đến các bả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 \
-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
Biên dịch 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 LiteRT, cụ thể bạn cần cung cấp đường dẫn đến
SDK (ví dụ: SDK ARM64 hoặc NDK trong trường hợp của Android) có -DCMAKE_TOOLCHAIN_FILE
cờ.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Thông tin cụ thể về tính năng biên dịch chéo trên Android
Để biên dịch chéo trên Android, bạn cần cài đặt
Android NDK và cung cấp đường dẫn NDK với
Cờ -DCMAKE_TOOLCHAIN_FILE
nói trên. Bạn cũng cần đặt ABI mục tiêu
có cờ -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Thông tin cụ thể của quá trình biên dịch chéo (đơn vị) kiểm thử hạt nhân
Biên dịch chéo các bài kiểm thử đơn vị yêu cầu trình biên dịch phẳng cho máy chủ
cấu trúc. Để phục vụ mục đích này, có một CMakeLists trong
tensorflow/lite/tools/cmake/native_tools/flatbuffers
để xây dựng xe du lịch phẳng
trình biên dịch với CMake trước trong một thư mục bản dựng riêng biệt sử dụng máy chủ lưu trữ
chuỗi công cụ.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Bạn cũng có thể cài đặt phình phẳng vào một vị trí cài đặt tuỳ chỉnh (ví dụ: đến một thư mục chứa các công cụ được tạo sẵn khác thay vì CMake thư mục bản dựng):
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 LiteRT, tham số bổ sung
-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
trỏ đến thư mục chứa
bạn cần cung cấp tệp nhị phân flatc gốc cùng với
Cờ -DTFLITE_KERNEL_TEST=on
nói 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 thử hạt nhân biên dịch chéo (đơn vị) khởi chạy trên mục tiêu
Bạn có thể chạy bài kiểm thử đơn vị dưới dạng các tệp thực thi riêng biệt hoặc sử dụng tiện ích CTest. Cho đến nay
có liên quan đến CTest, nếu có ít nhất một trong các tham số
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE` được bật cho LiteRT
thì các bài kiểm thử thu được sẽ được tạo bằng hai nhãn khác nhau
(sử dụng cùng một tệp thực thi kiểm thử): – đơn giản – biểu thị các chương trình kiểm thử chạy trên
Phần phụ trợ của CPU – uỷ quyền – biểu thị các lượt kiểm thử cần khởi chạy thêm
đối số dùng cho quy cách uỷ quyền đã sử dụng
Cả CTestTestfile.cmake
và run-tests.cmake
(như đề cập bên dưới) đều là
có sẵn tại <build_dir>/kernels
.
Khởi chạy bài kiểm thử đơn vị bằng phần phụ trợ CPU (miễn là CTestTestfile.cmake
được
có trên đích trong thư mục hiện tại):
ctest -L plain
Ra mắt các ví dụ về kiểm thử đơn vị bằng cách sử dụng thực thể đại diện (miễn là
CTestTestfile.cmake
cũng như run-tests.cmake
tệp đều có trên mục tiêu trong
thư mục hiện tại):
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 điểm hạn chế đã biết về cách này trong việc cung cấp thêm nội dung liên quan đến người được uỷ quyền khởi chạy đối số cho kiểm thử đơn vị là nó chỉ hỗ trợ hiệu quả những đối số có giá trị trả về dự kiến bằng 0. Các giá trị trả về khác nhau sẽ được báo cáo dưới dạng kiểm thử không thành công.
Uỷ quyền GPU OpenCL
Nếu máy đích của bạn có hỗ trợ OpenCL, bạn có thể sử dụng Người được uỷ quyền của GPU có thể tận dụng sức mạnh của GPU.
Cách định cấu hình tính năng hỗ trợ uỷ quyền GPU OpenCL:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
Bước 5. Xây dựng LiteRT
Trong thư mục tflite_build
,
cmake --build . -j
Bước 6. Xây dựng công cụ đo điểm chuẩn LiteRT và ví dụ về hình ảnh nhãn (Không bắt buộc)
Trong thư mục tflite_build
,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
Các lựa chọn hiện có để xây dựng LiteRT
Dưới đây là danh sách các lựa chọn hiện có. Bạn có thể ghi đè bằng
-D<option_name>=[ON|OFF]
. Ví dụ: -DTFLITE_ENABLE_XNNPACK=OFF
thành
vô hiệu hoá XNNPACK (được bật theo mặc định).
Tên lựa chọn | Tính năng | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
Bật RUY ma trận phép nhân thư viện | BẬT | ĐÃ TẮT | ĐÃ TẮT | ĐÃ TẮT |
TFLITE_ENABLE_GPU
|
Bật GPU người được uỷ quyền | ĐÃ TẮT | ĐÃ TẮT | Không áp dụng | Không áp dụng |
TFLITE_ENABLE_XNNPACK
|
Bật XNNPACK người được uỷ quyền | BẬT | BẬT | BẬT | BẬT |
TFLITE_ENABLE_MMAP |
Bật MMAP | BẬT | BẬT | BẬT | Không áp dụng |
Tạo dự án CMake sử dụng LiteRT
Đây là CMakeLists.txt của Ví dụ tối giản về TFLite.
Bạn cần có add_subdirectory() cho thư mục và đường liên kết LiteRT
tensorflow-lite
với target_link_library().
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 LiteRT C
Nếu bạn muốn xây dựng thư viện chia sẻ LiteRT cho API C, làm theo bước 1 để bước 3 trước tiên. Sau đó, hãy 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 dùng chung sau đây trong thư mục hiện tại.
Nền tảng | Tên thư viện |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |