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