На этой странице описано, как создать библиотеки LiteRT для компьютеров на базе ARM.
LiteRT поддерживает две системы сборки, и поддерживаемые функции каждой системы сборки не идентичны. Проверьте следующую таблицу, чтобы выбрать подходящую систему сборки.
Особенность | Базель | CMake |
---|---|---|
Предопределенные наборы инструментов | армф, aarch64 | армель, армф, aarch64 |
Пользовательские наборы инструментов | труднее использовать | простой в использовании |
Выберите операторов TF | поддерживается | не поддерживается |
Делегат графического процессора | доступно только для Android | любая платформа, поддерживающая OpenCL |
XNNPack | поддерживается | поддерживается |
Колесо Питона | поддерживается | поддерживается |
C API | поддерживается | поддерживается |
С++ API | поддерживается для проектов Bazel | поддерживается для проектов CMake |
Кросс-компиляция для ARM с помощью CMake
Если у вас есть проект CMake или вы хотите использовать собственную цепочку инструментов, вам лучше использовать CMake для кросс-компиляции. Для этого доступна отдельная страница кросс-компиляции LiteRT с CMake .
Кросс-компиляция для ARM с помощью Bazel
Если у вас есть проект Bazel или вы хотите использовать TF ops, вам лучше использовать систему сборки Bazel. Вы будете использовать интегрированные цепочки инструментов ARM GCC 8.3 с Bazel для создания общей библиотеки ARM32/64.
Целевая архитектура | Базельская конфигурация | Совместимые устройства |
---|---|---|
армвф (ARM32) | --config=elinux_armhf | RPI3, RPI4 с 32-битной ОС Raspberry Pi |
ААрч64 (ARM64) | --config=elinux_aarch64 | Коралл, RPI4 с 64-разрядной версией Ubuntu |
Следующие инструкции были протестированы на 64-разрядном ПК Ubuntu 16.04.3 (AMD64) и образе докера TensorFlow devel tensorflow/tensorflow:devel .
Чтобы выполнить кросс-компиляцию LiteRT с Bazel, выполните следующие действия:
Шаг 1. Установите Базель
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 .
библиотека С++
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