Créer LiteRT pour les cartes ARM

Cette page explique comment créer des bibliothèques LiteRT pour les modèles ARM ordinateurs.

LiteRT prend en charge deux systèmes de compilation et des fonctionnalités prises en charge par chacun ne sont pas identiques. Consultez le tableau suivant pour choisir un build approprié du système d'exploitation.

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 TensorFlow pris en charge non pris en charge
Délégué de GPU disponible uniquement pour 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 compatible avec les projets CMake

Compilation croisée pour ARM avec CMake

Si vous disposez d'un projet CMake ou si vous souhaitez utiliser une chaîne d'outils personnalisée, mieux utiliser CMake pour la compilation croisée. Il existe un Compilation croisée LiteRT avec CMake disponible pour cela.

Compilation croisée pour ARM avec Bazel

Si vous avez un projet Bazel ou si vous souhaitez utiliser TF Ops, il est préférable d'utiliser Bazel. du système de compilation. Vous utiliserez la Chaînes d'outils ARM GCC 8.3 avec Bazel pour créer une bibliothèque partagée ARM32/64.

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

Les instructions suivantes ont été testées sur les PC 64 bits Ubuntu 16.04.3 (AMD64) Image Docker de développement TensorFlow tensorflow/tensorflow:devel.

Pour effectuer une compilation croisée de LiteRT avec Bazel, procédez comme suit:

Étape 1 : Installer Bazel

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

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

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

Étape 3 : Créer un binaire ARM

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

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

Chèque API C LiteRT pour en savoir plus.

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

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

Il n'existe actuellement aucun 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 fichier un dépôt de clés. De plus, vous aurez besoin de fichiers d'en-tête de FlatBuffers et Abseil.

Etc.

Vous pouvez également compiler d'autres cibles Bazel avec la chaîne d'outils. Voici quelques conseils utiles cibles.

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