LiteRT para Android

O LiteRT permite executar modelos do TensorFlow, PyTorch e JAX nos seus apps Android. O sistema LiteRT oferece ambientes de execução predefinidos e personalizáveis para executar modelos no Android de forma rápida e eficiente, incluindo opções de aceleração de hardware.

Por exemplo, aplicativos Android que usam o LiteRT, consulte o repositório exemplos do LiteRT.

Modelos de machine learning

O LiteRT usa modelos do TensorFlow, PyTorch e JAX que são convertidos em um formato de modelo de machine learning menor, portátil e mais eficiente. É possível usar modelos pré-criados com o LiteRT no Android ou criar seus próprios modelos e convertê-los para o formato LiteRT.

Esta página discute o uso de modelos de machine learning já criados e não aborda a criação, o treinamento, o teste ou a conversão de modelos. Saiba mais sobre como escolher, modificar, criar e converter modelos de machine learning para o LiteRT na página Modelos.

Executar modelos no Android

Um modelo do LiteRT em execução em um app Android recebe dados, os processa e gera uma previsão com base na lógica do modelo. Um modelo LiteRT requer um ambiente de execução especial para ser executado, e os dados transmitidos para o modelo precisam estar em um formato específico, chamado de tensor. Quando um modelo processa os dados, conhecido como execução de uma inferência, ele gera resultados de previsão como novos tensores e os transmite ao app Android para que ele possa realizar ações, como mostrar o resultado a um usuário ou executar outra lógica de negócios.

Fluxo de execução funcional para modelos do LiteRT em apps
Android

Figura 1. Fluxo de execução funcional para modelos do LiteRT em apps Android.

No nível do design funcional, o app Android precisa dos seguintes elementos para executar um modelo LiteRT:

  • Ambiente de execução do LiteRT para executar o modelo
  • Gerenciador de entrada de modelo para transformar dados em tensores
  • Gestor de saída do modelo para receber tensores de resultado de saída e interpretá-los como resultados de previsão

As seções a seguir descrevem como as bibliotecas e ferramentas do LiteRT fornecem esses elementos funcionais.

Criar apps com o LiteRT

Esta seção descreve o caminho mais comum e recomendado para implementar o LiteRT no seu app Android. Preste atenção às seções ambiente de tempo de execução e bibliotecas de desenvolvimento. Se você desenvolveu um modelo personalizado, consulte a seção Caminhos de desenvolvimento avançados.

Opções de ambiente de execução

Há várias maneiras de ativar um ambiente de execução para executar modelos no app Android. Estas são as opções preferidas:

Em geral, use o ambiente de execução fornecido pelos serviços do Google Play porque ele é mais eficiente em termos de espaço do que o ambiente padrão, já que carrega dinamicamente, mantendo o tamanho do app menor. O Google Play Services também usa automaticamente a versão mais recente e estável do ambiente de execução do LiteRT, oferecendo mais recursos e melhor desempenho ao longo do tempo. Se você oferecer o app em dispositivos que não incluem os Serviços do Google Play ou precisar gerenciar de perto o ambiente de execução de ML, use o ambiente de execução LiteRT padrão. Essa opção agrupa outros códigos no app, permitindo que você tenha mais controle sobre o ambiente de execução de ML no app, aumentando o tamanho do download do app.

Para acessar esses ambientes de execução no seu app Android, adicione bibliotecas de desenvolvimento do LiteRT ao ambiente de desenvolvimento do app. Para saber como usar os ambientes de execução padrão no seu app, consulte a próxima seção.

Bibliotecas

É possível acessar a API Interpreter usando os serviços do Google Play. É possível usar as bibliotecas core e support do LiteRT no app Android. Para detalhes de programação sobre o uso de bibliotecas do LiteRT e ambientes de execução, consulte Ferramentas de desenvolvimento para Android.

Receber modelos

A execução de um modelo em um app Android requer um modelo no formato LiteRT. Você pode usar modelos pré-criados ou criar um e convertê-lo para o formato Lite. Para mais informações sobre como conseguir modelos para seu app Android, consulte a página Models do LiteRT.

Processar dados de entrada

Todos os dados transmitidos para um modelo de ML precisam ser um tensor com uma estrutura de dados específica, geralmente chamada de forma do tensor. Para processar dados com um modelo, o código do app precisa transformar os dados do formato nativo, como imagem, texto ou dados de áudio, em um tensor na forma necessária para o modelo.

Executar inferências

O processamento de dados por um modelo para gerar um resultado de previsão é conhecido como execução de uma inferência. A execução de uma inferência em um app Android requer um ambiente de execução do LiteRT, um modelo e dados de entrada.

A velocidade com que um modelo pode gerar uma inferência em um dispositivo específico depende do tamanho dos dados processados, da complexidade do modelo e dos recursos de computação disponíveis, como memória e CPU, ou processadores especializados chamados aceleradores. Os modelos de aprendizado de máquina podem ser executados mais rapidamente nesses processadores especializados, como unidades de processamento gráfico (GPUs) e unidades de processamento de tensor (TPUs), usando drivers de hardware do LiteRT chamados delegates. Para mais informações sobre delegados e aceleração de hardware do processamento de modelos, consulte a Visão geral da aceleração de hardware.

Processar resultados de saída

Os modelos geram resultados de previsão como tensores, que precisam ser processados pelo app Android para realizar uma ação ou mostrar um resultado ao usuário. Os resultados da saída do modelo podem ser tão simples quanto um número correspondente a um único resultado (0 = cachorro, 1 = gato, 2 = pássaro) para uma classificação de imagem, até resultados muito mais complexos, como várias caixas delimitadoras para vários objetos classificados em uma imagem, com classificações de confiança de previsão entre 0 e 1.

Caminhos de desenvolvimento avançados

Ao usar modelos mais sofisticados e personalizados do LiteRT, talvez seja necessário usar abordagens de desenvolvimento mais avançadas do que as descritas acima. As seções a seguir descrevem técnicas avançadas para executar modelos e desenvolvê-los para o LiteRT em apps Android.

Ambientes de execução avançados

Além dos ambientes de execução padrão e de execução dos Serviços do Google Play para o LiteRT, há outros ambientes de execução que podem ser usados com o app Android. O uso mais provável desses ambientes é se você tiver um modelo de machine learning que usa operações de ML que não têm suporte do ambiente de execução padrão para o LiteRT.

O ambiente de execução Flex do LiteRT permite incluir operadores específicos necessários para o modelo. Como uma opção avançada para executar o modelo, é possível criar o LiteRT para Android para incluir operadores e outras funcionalidades necessárias para executar o modelo de aprendizado de máquina do TensorFlow. Para mais informações, consulte Criar o LiteRT para Android.

APIs C e C++

O LiteRT também fornece uma API para executar modelos usando C e C++. Se o app usar o Android NDK, use essa API. Você também pode usar essa API se quiser compartilhar o código entre várias plataformas. Para mais informações sobre essa opção de desenvolvimento, consulte a página Ferramentas de desenvolvimento.

Execução de modelo baseada em servidor

Em geral, é recomendável executar modelos no app em um dispositivo Android para aproveitar a latência mais baixa e a privacidade de dados aprimorada para os usuários. No entanto, há casos em que executar um modelo em um servidor em nuvem, fora do dispositivo, é uma solução melhor. Por exemplo, se você tiver um modelo grande que não é facilmente compactado para um tamanho que caiba nos dispositivos Android dos usuários ou que possa ser executado com desempenho razoável nesses dispositivos. Essa abordagem também pode ser a solução preferida se a prioridade máxima for o desempenho consistente do modelo em uma ampla gama de dispositivos.

O Google Cloud oferece um pacote completo de serviços para executar modelos de IA. Para mais informações, consulte a página Produtos de IA e machine learning do Google Cloud.

Desenvolvimento e otimização de modelos personalizados

Os caminhos de desenvolvimento mais avançados provavelmente incluem o desenvolvimento de modelos de machine learning personalizados e a otimização deles para uso em dispositivos Android. Se você planeja criar modelos personalizados, considere aplicar técnicas de quantização a eles para reduzir os custos de memória e processamento. Para mais informações sobre como criar modelos de alto desempenho para uso com o LiteRT, consulte as Práticas recomendadas de desempenho na seção "Modelos".