На этой странице описывается, как собрать библиотеки 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