En esta página, se describe cómo compilar las bibliotecas de TensorFlow Lite para computadoras basadas en ARM.
TensorFlow Lite admite dos sistemas de compilación, y las funciones compatibles de cada uno de ellos 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íciles 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++ | 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, te recomendamos que lo hagas para la compilación cruzada. Hay una página separada sobre compilación cruzada de TensorFlow Lite con CMake disponible para esto.
Compilación cruzada para ARM con Bazel
Si tienes un proyecto de Bazel o si deseas usar operaciones de TF, es mejor que utilices el sistema de compilación de Bazel. Usarás las cadenas de herramientas integradas de ARM GCC 8.3 con Bazel para compilar una biblioteca compartida de ARM32/64.
Arquitectura de destino | Configuración de Bazel | Dispositivos compatibles |
---|---|---|
armhf (ARM32) | --config=elinux_armhf | RPI3, RPI4 con 32 bits Raspberry Pi OS |
AArch64 (ARM64) | --config=elinux_aarch64 | Coral, RPI4 con Ubuntu de 64 bits |
Las siguientes instrucciones se probaron en una PC de 64 bits de Ubuntu 16.04.3 (AMD64) y en la imagen de Docker de desarrollo de TensorFlow tensorflow/tensorflow:devel.
Sigue estos pasos para realizar una compilación cruzada de TensorFlow Lite con Bazel:
Paso 1: Instala Bazel
Bazel es el sistema de compilación principal para 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 objetos binarios de ARM
Biblioteca C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so
Las bibliotecas compartidas se encuentran en bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so
.
Consulta la página API de TensorFlow Lite para C para obtener más detalles.
Biblioteca C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so
Las bibliotecas compartidas se encuentran en bazel-bin/tensorflow/lite/libtensorflowlite.so
.
En la actualidad, no hay una manera directa de extraer todos los archivos de encabezados necesarios, por lo que debes incluir todos los archivos de encabezado en tensorflow/lite/ desde el repositorio de TensorFlow. Además, necesitarás archivos de encabezado de FlatBuffers y Abseil.
Etcétera
También puedes compilar otros destinos de Bazel con la cadena de herramientas. Estos son algunos objetivos útiles.
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image