Cómo compilar LiteRT para placas ARM

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

LiteRT admite dos sistemas de compilación y funciones compatibles de cada uno sistema de compilación no son idénticos. Consulta la siguiente tabla para elegir una compilación adecuada en un sistema de archivos.

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 TF ops 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++ compatible con proyectos de Bazel compatible con proyectos de CMake

Compilación cruzada para ARM con CMake

Si tienes un proyecto de CMake o si quieres usar una cadena de herramientas personalizada, usar CMake para la compilación cruzada. Hay una sección Compilación cruzada LiteRT con CMake disponible para ello.

Compilación cruzada para ARM con Bazel

Si tienes un proyecto de Bazel o si quieres usar operaciones de TF, es mejor que utilices Bazel. de compilación. Usarás la función Cadenas de herramientas de ARM GCC 8.3 con Bazel para compilar una biblioteca compartida ARM32/64.

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

Las siguientes instrucciones se probaron en Ubuntu 16.04.3 64 bits PC (AMD64) y TensorFlow. tensorflow/tensorflow:devel.

Para compilar LiteRT con Bazel, sigue estos pasos:

Paso 1: Instala Bazel

Bazel es el sistema de compilación principal de TensorFlow. Instala la última versión de el 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 ARM

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

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

Cheque API de LiteRT C para obtener más detalles.

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

Puedes encontrar una biblioteca compartida en las siguientes ubicaciones: bazel-bin/tensorflow/lite/libtensorflowlite.so

Actualmente, no hay una forma directa de extraer todos los archivos de encabezado necesarios. por lo que debes incluir todos los archivos de encabezado en tensorflow/lite/ de TensorFlow en un repositorio de confianza. Además, necesitarás archivos de encabezados de FlatBuffers y Arábseil.

Etcétera

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

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