Сборка LiteRT для плат ARM

На этой странице описывается, как собрать библиотеки LiteRT для компьютеров на базе ARM.

LiteRT поддерживает две системы сборки, и поддерживаемые функции каждой из них различаются. Чтобы выбрать подходящую систему сборки, сверьтесь с таблицей ниже.

Особенность Базель CMake
Предопределенные цепочки инструментов armhf, aarch64 armel, armhf, aarch64
Пользовательские цепочки инструментов сложнее использовать прост в использовании
Выберите операции TF поддерживается не поддерживается
Делегат ГПУ доступно только для Android любая платформа, поддерживающая OpenCL
XNNPack поддерживается поддерживается
Колесо Питона поддерживается поддерживается
API-интерфейс C поддерживается поддерживается
API C++ поддержаны проекты Базеля поддерживается для проектов CMake

Кросс-компиляция для ARM с CMake

Если у вас есть проект CMake или вы хотите использовать собственный набор инструментов, для кросс-компиляции лучше использовать CMake. Для этого есть отдельная страница LiteRT с кросс-компиляцией CMake .

Кросс-компиляция для ARM с Bazel

Если у вас есть проект Bazel или вы хотите использовать TF-операции, вам лучше использовать систему сборки Bazel. Для сборки общей библиотеки ARM32/64 вы будете использовать интегрированные в Bazel инструменты ARM GCC 8.3 .

Целевая архитектура Конфигурация Базеля Совместимые устройства
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 с 32-битной ОС Raspberry Pi
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 с Ubuntu 64 бит

Следующие инструкции были протестированы на компьютере с Ubuntu 16.04.3 64-bit (AMD64) и образе Docker TensorFlow devel tensorflow/tensorflow:devel .

Для кросс-компиляции LiteRT с Bazel выполните следующие действия:

Шаг 1. Установка Bazel

Bazel — основная система сборки TensorFlow. Установите последнюю версию системы сборки Bazel .

Шаг 2. Клонировать репозиторий TensorFlow

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

Шаг 3. Сборка двоичного файла ARM

библиотека C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Разделяемую библиотеку можно найти в: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so .

Подробности смотрите на странице LiteRT C API .

библиотека C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Разделяемую библиотеку можно найти в: bazel-bin/tensorflow/lite/libtensorflowlite.so .

В настоящее время нет простого способа извлечь все необходимые заголовочные файлы, поэтому необходимо включить все заголовочные файлы в каталоге tensorflow/lite/ из репозитория TensorFlow. Кроме того, вам понадобятся заголовочные файлы из FlatBuffers и Abseil.

И т. д

Вы также можете создавать другие цели Bazel с помощью набора инструментов. Вот несколько полезных целей.

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