이 페이지에서는 다음 명령어로 LiteRT 라이브러리를 빌드하고 사용하는 방법을 설명합니다. CMake 도구
다음 지침은 Ubuntu 16.04.3 64비트 PC (AMD64)에서 테스트되었습니다. , macOS Catalina (x86_64), Windows 10, TensorFlow 개발 Docker 이미지 tensorflow/tensorflow:devel.
1단계: CMake 도구 설치
CMake 3.16 이상이 필요합니다. 우분투에서는 간단히 명령어와 함께 사용하면 됩니다
sudo apt-get install cmake
2단계: TensorFlow 저장소 클론
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
3단계: CMake 빌드 디렉터리 만들기
mkdir tflite_build
cd tflite_build
4단계: 구성으로 CMake 도구 실행
출시 빌드
기본적으로 최적화된 출시 바이너리를 생성합니다. Google Cloud의 다음 명령어를 실행하기만 하면 됩니다.
cmake ../tensorflow_src/tensorflow/lite
디버그 빌드
기호 정보가 있는 디버그 빌드를 생성해야 하는 경우
-DCMAKE_BUILD_TYPE=Debug
옵션을 제공합니다.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
커널 단위 테스트로 빌드
커널 테스트를 실행하려면
-DTFLITE_KERNEL_TEST=on
플래그. 단위 테스트 크로스 컴파일 세부사항은
다음 하위 섹션에 나와 있습니다.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
설치 가능한 패키지 빌드
다른 종속 항목이 종속 항목으로 사용할 수 있는 설치 가능한 패키지 빌드
CMake 프로젝트를 find_package(tensorflow-lite CONFIG)
로 빌드하려면 다음을 사용합니다.
-DTFLITE_ENABLE_INSTALL=ON
옵션.
또한 자체 라이브러리 종속 항목 버전을 제공하는 것이 좋습니다.
LiteRT에 종속된 프로젝트에서도 이 API를 사용해야 합니다. 다음을 수행할 수 있습니다.
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
를 사용하고 <PackageName>_DIR
를 설정합니다.
변수를 사용하여 라이브러리 설치를 가리킵니다.
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
크로스 컴파일
CMake를 사용하여 ARM64 또는 Android 대상 아키텍처용 바이너리를 빌드할 수 있습니다.
LiteRT를 크로스 컴파일하려면
-DCMAKE_TOOLCHAIN_FILE
를 포함하는 SDK (예: Android의 경우 ARM64 SDK 또는 NDK)
플래그.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android 크로스 컴파일의 세부사항
Android 크로스 컴파일의 경우 다음을 설치해야 합니다.
Android NDK와 함께 NDK 경로를 제공합니다.
위에 언급된 -DCMAKE_TOOLCHAIN_FILE
플래그. 또한 타겟 ABI도
-DANDROID_ABI
플래그를 사용합니다.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
커널 (단위) 테스트 크로스 컴파일의 세부사항
단위 테스트의 크로스 컴파일에는 호스트용 Flatc 컴파일러가 필요함
살펴봤습니다 이를 위해
tensorflow/lite/tools/cmake/native_tools/flatbuffers
: 평면 빌드
별도의 빌드 디렉터리에 CMake로 미리 컴파일
있습니다.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
커스텀 설치 위치에 Flatc를 설치할 수도 있습니다. (예: CMake 코드 대신 기본적으로 빌드된 다른 도구가 포함된 디렉터리로 이동) 빌드 디렉터리):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
LiteRT 크로스 컴파일 자체의 경우 추가 매개변수
-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
이 다음 항목이 포함된 디렉터리를 가리킵니다.
네이티브 flatc 바이너리가
위에 언급된 -DTFLITE_KERNEL_TEST=on
플래그입니다.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
타겟에서 크로스 컴파일된 커널 (단위) 테스트 실행
단위 테스트는 별도의 실행 파일로 실행하거나 CTest 유틸리티를 사용하여 실행할 수 있습니다. 지금까지
CTest의 경우, 매개변수 중 하나 이상이
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE` 가 LiteRT에 사용 설정됨
빌드 시 결과 테스트가 서로 다른 두 개의 라벨로 생성됩니다.
(동일한 테스트 실행 파일 활용): - plain - 실행되는 테스트 표시
CPU 백엔드 - 위임 - 추가 실행을 예상하는 테스트를 나타냅니다.
사용된 대리자 사양에 사용되는 인수
CTestTestfile.cmake
및 run-tests.cmake
(아래 참조) 모두
<build_dir>/kernels
에서 사용할 수 있습니다.
CPU 백엔드를 사용한 단위 테스트 실행 (CTestTestfile.cmake
이 다음과 같은 경우)
있습니다.
ctest -L plain
대리자를 사용하여 단위 테스트의 예를 실행합니다(
CTestTestfile.cmake
및 run-tests.cmake
파일이 타겟에 있습니다.
.
cmake -E env TESTS_ARGUMENTS=--use_xnnpack=true ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--external_delegate_path=<PATH> ctest -L delegate
위임 관련 추가 기능을 제공하는 이러한 방법의 알려진 제한사항 출시 인수는 단위 테스트에 예상 반환 값 0. 다른 반환 값은 테스트할 수 없습니다.
OpenCL GPU 위임
대상 머신에서 OpenCL을 지원하는 경우 GPU 위임: GPU 성능을 활용할 수 있습니다
OpenCL GPU 대리자 지원을 구성하려면 다음 단계를 따르세요.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
5단계: LiteRT 빌드
tflite_build
디렉터리에서
cmake --build . -j
6단계: LiteRT 벤치마크 도구 빌드 및 라벨 이미지 예시 (선택사항)
tflite_build
디렉터리에서
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
LiteRT 빌드에 사용할 수 있는 옵션
사용 가능한 옵션 목록은 다음과 같습니다. 다음을 사용하여 재정의할 수 있습니다.
-D<option_name>=[ON|OFF]
예를 들어 -DTFLITE_ENABLE_XNNPACK=OFF
에서 다음을 실행합니다.
XNNPACK을 사용 중지합니다(기본적으로 사용).
옵션 이름 | 기능 | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
RUY 사용 설정 행렬 곱하기 라이브러리 | 사용 | 사용 중지 | 사용 중지 | 사용 중지 |
TFLITE_ENABLE_GPU
|
GPU 사용 설정 위임하다 | 사용 중지 | 사용 중지 | 해당 사항 없음 | 해당 사항 없음 |
TFLITE_ENABLE_XNNPACK
|
XNNPACK 사용 설정 위임하다 | 사용 | 사용 | 사용 | 사용 |
TFLITE_ENABLE_MMAP |
MMAP 사용 설정 | 사용 | 사용 | 사용 | 해당 사항 없음 |
LiteRT를 사용하는 CMake 프로젝트 만들기
CMakeLists.txt는 다음과 같습니다. TFLite 최소 예.
LiteRT 디렉터리 및 링크에 add_subdirectory()가 있어야 합니다.
target_link_library()와 함께 tensorflow-lite
를 사용해야 합니다.
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)
LiteRT C 라이브러리 빌드
대규모 언어 모델을 위한 LiteRT 공유 라이브러리를 빌드하려는 경우 C API 1단계에 따라 3단계로 이동하시기 바랍니다. 그런 다음 실행할 수 있습니다
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
이 명령어는 현재 디렉터리에 다음과 같은 공유 라이브러리를 생성합니다.
플랫폼 | 도서관 이름 |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |