En esta página, se describe cómo compilar la biblioteca tflite_runtime
de Python de TensorFlow Lite para x86_64 y varios dispositivos ARM.
Las siguientes instrucciones se probaron en PC de 64 bits (AMD64) con Ubuntu 16.04.3, macOS Catalina (x86_64) y la imagen de Docker de TensorFlow devel tensorflow/tensorflow:devel.
Requisitos previos
Debes tener instalado CMake y una copia del código fuente de TensorFlow. Consulta la página Build TensorFlow Lite with CMake para obtener más información.
A fin de compilar el paquete de PIP para tu estación de trabajo, puedes ejecutar los siguientes comandos.
PYTHON=python3 tensorflow/lite/tools/pip_package/build_pip_package_with_cmake.sh native
Compilación cruzada de ARM
Para la compilación cruzada de ARM, se recomienda usar Docker, ya que facilita
la configuración del entorno de compilación cruzada. También necesitas una opción target
para determinar la arquitectura de destino.
Hay una herramienta auxiliar en el archivo Make tensorflow/lite/tools/pip_package/Makefile
disponible para invocar un comando de compilación con un contenedor de Docker predefinido. En una máquina anfitrión de Docker, puedes ejecutar un comando de compilación como se muestra a continuación.
make -C tensorflow/lite/tools/pip_package docker-build \
TENSORFLOW_TARGET=<target> PYTHON_VERSION=<python3 version>
Nombres de destinos disponibles
La secuencia de comandos tensorflow/lite/tools/pip_package/build_pip_package_with_cmake.sh
necesita un nombre de destino para determinar la arquitectura de destino. A continuación, se muestra la lista de destinos compatibles.
Diana | Arquitectura de destino | Comentarios |
---|---|---|
Armhf | VFP de ARMv7 con Neon | Compatible con Raspberry Pi 3 y 4 |
rpi0 | ARMv6 | Compatible con Raspberry Pi Zero |
aarch64 | aarch64 (ARM 64 bits) | Coral Mendel Linux 4.0 Raspberry Pi con Ubuntu Server 20.04.01 LTS 64 bits |
nativo | Tu estación de trabajo | Compila con una optimización “nativa” |
predeterminado | Tu estación de trabajo | Objetivo predeterminado |
Ejemplos de compilación
Estos son algunos ejemplos de comandos que puedes usar.
Destino de armhf para Python 3.7
make -C tensorflow/lite/tools/pip_package docker-build \
TENSORFLOW_TARGET=armhf PYTHON_VERSION=3.7
Destino de aarch64 para Python 3.8
make -C tensorflow/lite/tools/pip_package docker-build \
TENSORFLOW_TARGET=aarch64 PYTHON_VERSION=3.8
¿Cómo se usa una cadena de herramientas personalizada?
Si los objetos binarios generados no son compatibles con tu destino, debes usar
tu propia cadena de herramientas o proporcionar marcas de compilación personalizadas. (Verifica esto para comprender tu entorno de destino). En ese caso, debes modificar tensorflow/lite/tools/cmake/download_toolchains.sh
para usar tu propia cadena de herramientas.
La secuencia de comandos de la cadena de herramientas define las siguientes dos variables para la secuencia de comandos build_pip_package_with_cmake.sh
.
Variable | Objetivo | Ejemplo |
---|---|---|
ARMCC_PREFIX |
define el prefijo de la cadena de herramientas | arm-linux-gnueabihf- |
ARMCC_FLAGS |
marcas de compilación | -march=armv7-a -mfpu=neon-vfpv4 |