Criar LiteRT para placas ARM

Esta página descreve como criar as bibliotecas LiteRT para computadores baseados em ARM.

O LiteRT é compatível com dois sistemas de build, e os recursos disponíveis em cada um deles não são idênticos. Confira a tabela a seguir para escolher um sistema de build adequado.

Recurso Bazel CMake
Conjuntos de ferramentas predefinidos armhf, aarch64 armel, armhf, aarch64
Conjuntos de ferramentas personalizados mais difícil de usar fácil de usar
Selecionar operações do TF suportado not supported
Delegado de GPU disponível apenas para Android qualquer plataforma compatível com OpenCL
XNNPack suportado suportado
Python Wheel suportado suportado
API C suportado compatível
API C++ compatível com projetos do Bazel compatível com projetos do CMake

Compilação cruzada para ARM com CMake

Se você tiver um projeto CMake ou quiser usar um conjunto de ferramentas personalizado, é melhor usar o CMake para a compilação cruzada. Há uma página separada Compilação cruzada LiteRT com CMake disponível para isso.

Compilação cruzada para ARM com o Bazel

Se você tiver um projeto do Bazel ou quiser usar operações do TF, é melhor usar o sistema de build do Bazel. Você vai usar os conjuntos de ferramentas ARM GCC 8.3 integrados com o Bazel para criar uma biblioteca compartilhada ARM32/64.

Arquitetura de destino Configuração do Bazel Dispositivos compatíveis
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 com Raspberry Pi OS de 32 bits
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 com Ubuntu 64 bits

As instruções a seguir foram testadas em um PC Ubuntu 16.04.3 de 64 bits (AMD64) e na imagem do Docker de desenvolvimento do TensorFlow tensorflow/tensorflow:devel.

Para fazer a compilação cruzada do LiteRT com o Bazel, siga estas etapas:

Etapa 1. Instalar o Bazel

O Bazel é o principal sistema de build do TensorFlow. Instale a versão mais recente do sistema de build do Bazel.

Etapa 2. Clonar o repositório do TensorFlow

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

Etapa 3. Criar binário ARM

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

Você pode encontrar uma biblioteca compartilhada em: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Confira os detalhes na página da API C do LiteRT.

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

Você pode encontrar uma biblioteca compartilhada em: bazel-bin/tensorflow/lite/libtensorflowlite.so.

No momento, não há uma maneira simples de extrair todos os arquivos de cabeçalho necessários. Por isso, inclua todos os arquivos de cabeçalho em tensorflow/lite/ do repositório do TensorFlow. Além disso, você vai precisar de arquivos de cabeçalho do FlatBuffers e do Abseil.

Etc

Também é possível criar outros destinos do Bazel com a cadeia de ferramentas. Confira alguns destinos úteis.

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