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