Créer LiteRT pour les cartes ARM

Cette page explique comment compiler les bibliothèques LiteRT pour les ordinateurs basés sur ARM.

LiteRT est compatible avec deux systèmes de compilation, et les fonctionnalités compatibles de chaque système de compilation ne sont pas identiques. Consultez le tableau suivant pour choisir un système de compilation approprié.

Fonctionnalité Bazel CMake
Chaînes d'outils prédéfinies armhf, aarch64 armel, armhf, aarch64
Chaînes d'outils personnalisées plus difficile à utiliser ; Simple d'utilisation
Sélectionner les opérations TF pris en charge non pris en charge
Délégué GPU uniquement disponible sur Android ; toute plate-forme compatible avec OpenCL.
XNNPack pris en charge pris en charge
Python Wheel pris en charge pris en charge
API C pris en charge compatible
API C++ compatible avec les projets Bazel Prise en charge pour les projets CMake

Compilation croisée pour ARM avec CMake

Si vous avez un projet CMake ou si vous souhaitez utiliser une chaîne d'outils personnalisée, il est préférable d'utiliser CMake pour la compilation croisée. Pour cela, consultez la page Compilation croisée de LiteRT avec CMake.

Compilation croisée pour ARM avec Bazel

Si vous disposez d'un projet Bazel ou si vous souhaitez utiliser des opérations TF, il est préférable d'utiliser le système de compilation Bazel. Vous utiliserez les chaînes d'outils ARM GCC 8.3 intégrées avec Bazel pour créer une bibliothèque partagée ARM32/64.

Architecture cible Configuration de Bazel Appareils compatibles
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 avec Raspberry Pi OS 32 bits
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 avec Ubuntu 64 bits

Les instructions suivantes ont été testées sur un PC Ubuntu 16.04.3 64 bits (AMD64) et sur l'image Docker de développement TensorFlow tensorflow/tensorflow:devel.

Pour compiler LiteRT de manière croisée avec Bazel, procédez comme suit :

Étape 1 : Installer Bazel

Bazel est le principal système de compilation pour TensorFlow. Installez la dernière version du système de compilation Bazel.

Étape 2 : Cloner le dépôt TensorFlow

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

Étape 3 : Compiler le binaire ARM

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

Vous pouvez trouver une bibliothèque partagée dans : bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Pour en savoir plus, consultez la page API LiteRT C++.

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

Vous pouvez trouver une bibliothèque partagée dans : bazel-bin/tensorflow/lite/libtensorflowlite.so.

Pour le moment, il n'existe pas de moyen simple d'extraire tous les fichiers d'en-tête nécessaires. Vous devez donc inclure tous les fichiers d'en-tête dans tensorflow/lite/ à partir du dépôt TensorFlow. Vous aurez également besoin des fichiers d'en-tête de FlatBuffers et d'Abseil.

Etc

Vous pouvez également créer d'autres cibles Bazel avec la toolchain. Voici quelques cibles utiles.

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