ARM 보드용 TensorFlow Lite 빌드

이 페이지에서는 ARM 기반 컴퓨터용 TensorFlow Lite 라이브러리를 빌드하는 방법을 설명합니다.

TensorFlow Lite는 두 개의 빌드 시스템을 지원하며 각 빌드 시스템에서 지원되는 기능은 동일하지 않습니다. 다음 표를 확인하여 적절한 빌드 시스템을 선택하세요.

특성 Bazel CMake
사전 정의된 도구 모음 armhf, aarch64 armel, armhf, aarch64
커스텀 도구 모음 사용하기 어려움 사용 편의성
TF 작업 선택 지원됨 지원되지 않음
GPU 위임 Android에서만 지원 OpenCL을 지원하는 모든 플랫폼
XNNPack 지원됨 지원됨
Python 휠 지원됨 지원됨
C API 지원됨 지원됨
C++ API Bazel 프로젝트에 지원됨 CMake 프로젝트에 지원됨

CMake로 ARM의 크로스 컴파일

CMake 프로젝트가 있거나 커스텀 도구 모음을 사용하려는 경우 크로스 컴파일에 CMake를 사용하는 것이 좋습니다. 이와 관련된 별도의 CMake를 사용한 크로스 컴파일 TensorFlow Lite 페이지가 있습니다.

Bazel을 사용한 ARM용 크로스 컴파일

Bazel 프로젝트가 있거나 TF 작업을 사용하려는 경우 Bazel 빌드 시스템을 사용하는 것이 좋습니다. Bazel과 함께 통합된 ARM GCC 8.3 도구 모음을 사용하여 ARM32/64 공유 라이브러리를 빌드합니다.

대상 아키텍처 Bazel 구성 호환 기기
armhf (ARM32) --config=elinux_armhf RPI3, RPI4(32비트 Raspberry Pi OS)
AArch64 (ARM64) --config=elinux_aarch64 Coral, Ubuntu 64비트 RPI4

다음 안내는 Ubuntu 16.04.3 64비트 PC (AMD64) 및 TensorFlow 개발 Docker 이미지 tensorflow/tensorflow:devel에서 테스트되었습니다.

Bazel을 사용하여 TensorFlow Lite를 크로스 컴파일하려면 다음 단계를 따르세요.

1단계: Bazel 설치

Bazel은 TensorFlow의 기본 빌드 시스템입니다. 최신 버전의 Bazel 빌드 시스템을 설치합니다.

2단계: TensorFlow 저장소 클론

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

3단계: ARM 바이너리 빌드

C 라이브러리
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

공유 라이브러리는 bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so에서 찾을 수 있습니다.

자세한 내용은 TensorFlow Lite C API 페이지를 참조하세요.

C++ 라이브러리
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

공유 라이브러리는 bazel-bin/tensorflow/lite/libtensorflowlite.so에서 찾을 수 있습니다.

현재로서는 필요한 모든 헤더 파일을 추출할 수 있는 간단한 방법이 없으므로 TensorFlow 저장소의 모든 헤더 파일을 tensorflow/lite/ 에 포함해야 합니다. 또한 FlatBuffers와 Abseil의 헤더 파일이 필요합니다.

기타

도구 모음을 사용하여 다른 Bazel 대상을 빌드할 수도 있습니다. 다음은 몇 가지 유용한 목표입니다.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image