Path: blob/master/site/en-snapshot/lite/guide/build_arm.md
25118 views
Build TensorFlow Lite for ARM boards
This page describes how to build the TensorFlow Lite libraries for ARM-based computers.
TensorFlow Lite supports two build systems and supported features from each build system are not identical. Check the following table to pick a proper build system.
Feature | Bazel | CMake |
---|---|---|
Predefined toolchains | armhf, aarch64 | armel, armhf, aarch64 |
Custom toolchains | harder to use | easy to use |
Select TF ops | supported | not supported |
GPU delegate | only available for Android | any platform that supports OpenCL |
XNNPack | supported | supported |
Python Wheel | supported | supported |
C API | supported | supported |
C++ API | supported for Bazel projects | supported for CMake projects |
Cross-compilation for ARM with CMake
If you have a CMake project or if you want to use a custom toolchain, you'd better use CMake for cross compilation. There is a separate Cross compilation TensorFlow Lite with CMake page available for this.
Cross-compilation for ARM with Bazel
If you have a Bazel project or if you want to use TF ops, you'd better use Bazel build system. You'll use the integrated ARM GCC 8.3 toolchains with Bazel to build an ARM32/64 shared library.
Target Architecture | Bazel Configuration | Compatible Devices |
---|---|---|
armhf (ARM32) | --config=elinux_armhf | RPI3, RPI4 with 32 bit |
: : : Raspberry Pi OS : | ||
AArch64 (ARM64) | --config=elinux_aarch64 | Coral, RPI4 with Ubuntu 64 |
: : : bit : |
Note: The generated shared library requires glibc 2.28 or higher to run.
The following instructions have been tested on Ubuntu 16.04.3 64-bit PC (AMD64) and TensorFlow devel docker image tensorflow/tensorflow:devel.
To cross compile TensorFlow Lite with Bazel, follow the steps:
Step 1. Install Bazel
Bazel is the primary build system for TensorFlow. Install the latest version of the Bazel build system.
Note: If you're using the TensorFlow Docker image, Bazel is already available.
Step 2. Clone TensorFlow repository
Note: If you're using the TensorFlow Docker image, the repo is already provided in /tensorflow_src/
.
Step 3. Build ARM binary
C library
You can find a shared library in: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so
.
Note: Use elinux_armhf
for 32bit ARM hard float build.
Check TensorFlow Lite C API page for the detail.
C++ library
You can find a shared library in: bazel-bin/tensorflow/lite/libtensorflowlite.so
.
Currently, there is no straightforward way to extract all header files needed, so you must include all header files in tensorflow/lite/ from the TensorFlow repository. Additionally, you will need header files from FlatBuffers and Abseil.
Etc
You can also build other Bazel targets with the toolchain. Here are some useful targets.
//tensorflow/lite/tools/benchmark:benchmark_model
//tensorflow/lite/examples/label_image:label_image