Esta página foi traduzida pela API Cloud Translation.
Switch to English

Reduza o tamanho do binário TensorFlow Lite

Visão geral

Ao implantar modelos para aplicativos de aprendizado de máquina no dispositivo (ODML), é importante estar ciente da memória limitada que está disponível em dispositivos móveis. Os tamanhos binários do modelo estão intimamente relacionados ao número de ops usados ​​no modelo. O TensorFlow Lite permite reduzir os tamanhos binários do modelo usando compilações seletivas. As compilações seletivas ignoram as operações não utilizadas em seu conjunto de modelos e produzem uma biblioteca compacta apenas com o tempo de execução e os kernels operacionais necessários para que o modelo seja executado em seu dispositivo móvel.

A construção seletiva se aplica às três bibliotecas de operações a seguir.

  1. Biblioteca de operações integrada do TensorFlow Lite
  2. Operações personalizadas do TensorFlow Lite
  3. Selecione a biblioteca de operações do TensorFlow

A tabela abaixo demonstra o impacto de compilações seletivas para alguns casos de uso comuns:

Nome do modelo Domínio Arquitetura alvo Tamanho (s) do arquivo AAR
Mobilenet_1.0_224 (float) Classificação de imagem armeabi-v7a tensorflow-lite.aar (296.635 bytes)
arm64-v8a tensorflow-lite.aar (382.892 bytes)
ESPECIARIA Extração de tom de som armeabi-v7a tensorflow-lite.aar (375.813 bytes)
tensorflow-lite-select-tf-ops.aar (1.676.380 bytes)
arm64-v8a tensorflow-lite.aar (421.826 bytes)
tensorflow-lite-select-tf-ops.aar (2.298.630 bytes)
i3d-cinética-400 Classificação de vídeo armeabi-v7a tensorflow-lite.aar (240.085 bytes)
tensorflow-lite-select-tf-ops.aar (1.708.597 bytes)
arm64-v8a tensorflow-lite.aar (273.713 bytes)
tensorflow-lite-select-tf-ops.aar (2.339.697 bytes)

Problemas / limitações conhecidos

  1. Compilação seletiva para API C e versão iOS não são suportadas atualmente.

Crie seletivamente o TensorFlow Lite com o Bazel

Esta seção pressupõe que você fez o download dos códigos-fonte do TensorFlow e configurou o ambiente de desenvolvimento local para o Bazel.

Crie arquivos AAR para o projeto Android

Você pode criar os AARs do TensorFlow Lite personalizados fornecendo os caminhos do arquivo de modelo da seguinte maneira.

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

O comando acima irá gerar o arquivo AAR bazel-bin/tmp/tensorflow-lite.aar para operações integradas e personalizadas do TensorFlow Lite; e, opcionalmente, gera o arquivo aar bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar se seus modelos contiverem operações Selecionar TensorFlow. Observe que isso cria um AAR "gordo" com várias arquiteturas diferentes; se você não precisar de todos eles, use o subconjunto apropriado para seu ambiente de implementação.

Uso avançado: construir com operações personalizadas

Se você desenvolveu modelos do Tensorflow Lite com operações personalizadas, pode criá-los adicionando as seguintes sinalizações ao comando de compilação:

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --tflite_custom_ops_srcs=/e/f/file1.cc,/g/h/file2.h \
  --tflite_custom_ops_deps=dep1,dep2

O sinalizador tflite_custom_ops_srcs contém arquivos de origem de suas operações personalizadas e o sinalizador tflite_custom_ops_deps contém dependências para construir esses arquivos de origem. Observe que essas dependências devem existir no repositório TensorFlow.

Crie seletivamente o TensorFlow Lite com Docker

Esta seção pressupõe que você instalou o Docker na máquina local e criou o arquivo do TensorFlow Lite .

Crie arquivos AAR para o projeto Android

Baixe o script para construir com o Docker executando:

curl -o build_aar_with_docker.sh \
  https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/lite/tools/build_aar_with_docker.sh &&
chmod +x build_aar_with_docker.sh

Em seguida, você pode construir o TensorFlow Lite AAR personalizado, fornecendo seus caminhos de arquivo de modelo da seguinte maneira.

sh build_aar_with_docker.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --checkpoint=master

A sinalização do checkpoint é uma confirmação, um branch ou uma tag do repositório TensorFlow que você deseja verificar antes de criar as bibliotecas. O comando acima gerará o arquivo AAR tensorflow-lite.aar para operações integradas e personalizadas do TensorFlow Lite e, opcionalmente, o arquivo AAR tensorflow-lite-select-tf-ops.aar para operações selecionadas do TensorFlow no diretório atual.

Adicionar arquivos AAR ao projeto

Adicione arquivos AAR importando diretamente o AAR para o seu projeto ou publicando o AAR personalizado em seu repositório Maven local . Observe que você também deve adicionar os arquivos AAR para tensorflow-lite-select-tf-ops.aar se gerá-los.