Cómo compilar LiteRT para placas ARM

En esta página, se describe cómo compilar las bibliotecas de LiteRT para computadoras basadas en ARM.

LiteRT admite dos sistemas de compilación, y las funciones admitidas de cada sistema de compilación no son idénticas. Consulta la siguiente tabla para elegir un sistema de compilación adecuado.

Función Bazel CMake
Cadenas de herramientas predefinidas armhf, aarch64 armel, armhf, aarch64
Cadenas de herramientas personalizadas Más difícil de usar fácil de usar
Selecciona operaciones de TF compatible not supported
Delegado de GPU Solo disponible para Android Cualquier plataforma que admita OpenCL
XNNPack compatible compatible
Python Wheel compatible compatible
API de C compatible admitido
API de C++ Se admite en proyectos de Bazel Se admite para proyectos de CMake

Compilación cruzada para ARM con CMake

Si tienes un proyecto de CMake o quieres usar una cadena de herramientas personalizada, es mejor que uses CMake para la compilación cruzada. Para ello, hay disponible una página independiente sobre la compilación cruzada de LiteRT con CMake.

Compilación cruzada para ARM con Bazel

Si tienes un proyecto de Bazel o quieres usar operaciones de TF, es mejor que uses el sistema de compilación de Bazel. Usarás las cadenas de herramientas ARM GCC 8.3 integradas con Bazel para compilar una biblioteca compartida ARM32/64.

Arquitectura de destino Configuración de Bazel Dispositivos compatibles
armhf (ARM32) --config=elinux_armhf RPI3 y RPI4 con Raspberry Pi OS de 32 bits
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 con Ubuntu de 64 bits

Las siguientes instrucciones se probaron en una PC de 64 bits con Ubuntu 16.04.3 (AMD64) y en la imagen de Docker de desarrollo de TensorFlow tensorflow/tensorflow:devel.

Para realizar una compilación cruzada de LiteRT con Bazel, sigue estos pasos:

Paso 1: Instala Bazel

Bazel es el sistema de compilación principal de TensorFlow. Instala la versión más reciente del sistema de compilación de Bazel.

Paso 2: Clona el repositorio de TensorFlow

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

Paso 3: Compila el objeto binario de ARM

Biblioteca C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Puedes encontrar una biblioteca compartida en bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Consulta la página de la API de LiteRT para obtener más detalles.

Biblioteca C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Puedes encontrar una biblioteca compartida en bazel-bin/tensorflow/lite/libtensorflowlite.so.

Actualmente, no hay una forma sencilla de extraer todos los archivos de encabezado necesarios, por lo que debes incluir todos los archivos de encabezado en tensorflow/lite/ del repositorio de TensorFlow. Además, necesitarás archivos de encabezado de FlatBuffers y Abseil.

Etc.

También puedes compilar otros destinos de Bazel con la cadena de herramientas. Estos son algunos destinos útiles.

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