Criar LiteRT para placas ARM

Esta página descreve como criar bibliotecas LiteRT para APIs computadores.

A LiteRT oferece suporte a dois sistemas de build e recursos compatíveis de cada sistema de build não são idênticos. Verifique a tabela a seguir para escolher um build adequado sistema.

Recurso Bazel CMake
Conjuntos de ferramentas predefinidos armhf e 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 da GPU disponível apenas para Android em qualquer plataforma que ofereça suporte a OpenCL,
XNNPack suportado suportado
Python Wheel (em inglês) suportado suportado
API C suportado compatível
API C++ compatível com projetos do Bazel com suporte a projetos do CMake

Compilação cruzada para ARM com CMake

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

Compilação cruzada para ARM com o Bazel

Se você tem um projeto do Bazel ou quer usar o TFOps, é melhor usar o Bazel sistema de build. Você vai usar o modelo Conjuntos de ferramentas ARM GCC 8.3 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 32 bits SO Raspberry Pi
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 com Ubuntu 64 pouco

As instruções a seguir foram testadas em um PC Ubuntu 16.04.3 de 64 bits (AMD64) e a imagem Docker do TensorFlow Dev 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 sistema de build principal do TensorFlow. Instale a versão mais recente do o sistema de build do Bazel.

Etapa 2. clone 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 nestes locais: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so:

Conferir API LiteRT C para mais detalhes.

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

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

Atualmente, não há uma maneira direta de extrair todos os arquivos de cabeçalho necessários, Por isso, você precisa incluir todos os arquivos de cabeçalho no tensorflow/lite/ do código do repositório de dados. Além disso, você precisará de arquivos de cabeçalho dos FlatBuffers e Abseil.

Etc.

Você também pode criar outros destinos do Bazel com o conjunto de ferramentas. Confira algumas dicas úteis de destino.

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