Visão geral da conversão de modelos do TensorFlow

Os modelos de machine learning (ML) usados com o LiteRT são originalmente criados e treinados usando bibliotecas e ferramentas principais do TensorFlow. Depois de criar um modelo com o núcleo do TensorFlow, você pode convertê-lo em um formato de modelo de ML menor e mais eficiente chamado modelo LiteRT. Esta seção fornece orientações para converter seus modelos do TensorFlow para o formato de modelo LiteRT.

Fluxo de trabalho de conversão

A conversão de modelos do TensorFlow para o formato LiteRT pode seguir alguns caminhos, dependendo do conteúdo do modelo de ML. Como primeira etapa desse processo, avalie seu modelo para determinar se ele pode ser convertido diretamente. Essa avaliação determina se o conteúdo do modelo é compatível com os ambientes de execução padrão do LiteRT com base nas operações do TensorFlow que ele usa. Se o modelo usar operações fora do conjunto compatível, você poderá refatorar o modelo ou usar técnicas avançadas de conversão.

O diagrama abaixo mostra as etapas gerais para converter um modelo.

Fluxo de trabalho de conversão do TFLite

Figura 1. Fluxo de trabalho de conversão do LiteRT.

As seções a seguir descrevem o processo de avaliação e conversão de modelos para uso com o LiteRT.

Formatos de modelos de entrada

É possível usar o conversor com os seguintes formatos de modelo de entrada:

É possível salvar os modelos de função concreta e do Keras como um SavedModel e converter usando o caminho recomendado.

Se você tiver um modelo do Jax, use a API TFLiteConverter.experimental_from_jax para convertê-lo ao formato LiteRT. Essa API está sujeita a mudanças enquanto estiver no modo experimental.

Avaliação de conversão

Avaliar o modelo é uma etapa importante antes de tentar convertê-lo. Ao avaliar, você precisa determinar se o conteúdo do modelo é compatível com o formato LiteRT. Também é preciso determinar se o modelo é adequado para uso em dispositivos móveis e de borda em termos de tamanho dos dados usados, requisitos de processamento de hardware e tamanho e complexidade gerais do modelo.

Para muitos modelos, o conversor funciona sem precisar de ajustes. No entanto, a biblioteca de operadores integrados do LiteRT é compatível com um subconjunto de operadores principais do TensorFlow. Isso significa que alguns modelos podem precisar de etapas adicionais antes da conversão para o LiteRT. Além disso, algumas operações compatíveis com a LiteRT têm requisitos de uso restrito por motivos de performance. Consulte o guia de compatibilidade de operadores para determinar se o modelo precisa ser refatorado para conversão.

Conversão de modelos

O conversor do LiteRT usa um modelo do TensorFlow e gera um modelo do LiteRT (um formato FlatBuffer otimizado identificado pela extensão de arquivo .tflite). Você pode carregar um SavedModel ou converter diretamente um modelo criado em código.

O conversor usa três flags (ou opções) principais que personalizam a conversão para seu modelo:

  1. Com as flags de compatibilidade, é possível especificar se a conversão deve permitir operadores personalizados.
  2. Com as flags de otimização, é possível especificar o tipo de otimização a ser aplicada durante a conversão. A técnica de otimização mais usada é a quantização pós-treinamento.
  3. Com as flags de metadados, é possível adicionar metadados ao modelo convertido, o que facilita a criação de um código de wrapper específico da plataforma ao implantar modelos em dispositivos.

É possível converter o modelo usando a API Python ou a ferramenta de linha de comando. Consulte o guia Converter modelo do TF para instruções detalhadas sobre como executar o conversor no seu modelo.

Normalmente, você converteria seu modelo para o ambiente de execução padrão do LiteRT ou o ambiente de execução dos Serviços do Google Play para o LiteRT (Beta). Alguns casos de uso avançados exigem a personalização do ambiente de execução do modelo, o que requer etapas adicionais no processo de conversão. Consulte a seção ambiente de execução avançado da visão geral do Android para mais orientações.

Conversão avançada

Se você encontrar erros ao executar o conversor no seu modelo, é provável que haja um problema de compatibilidade do operador. Nem todas as operações do TensorFlow são compatíveis com o TensorFlow Lite. Para contornar esses problemas, refatore o modelo ou use opções avançadas de conversão que permitem criar um modelo de formato LiteRT modificado e um ambiente de execução personalizado para ele.

Próximas etapas