Implantar um modelo Gemma 270m ajustado com a pilha do Google AI Edge

Este tutorial orienta você no processo completo de implantação de um modelo Gemma personalizado em um app de exemplo do Android.

Neste tutorial, vamos:

  1. Começar com um modelo ajustado
  2. Converter o modelo ajustado com a biblioteca AI Edge Torch
    1. Isso vai converter o checkpoint do HuggingFace em um arquivo .litertlm
  3. Avaliar a qualidade do modelo ajustado
  4. Executar os comandos adb para enviar o modelo personalizado a um dispositivo de teste
    1. Isso vai enviar o modelo no formato .litertlm para um dispositivo Android para testes locais
  5. Executar o app de exemplo Pirate Gemma
    1. Isso vai usar a biblioteca LiteRT-LM Kotlin para executar a inferência no modelo ajustado em um app Android de exemplo

Etapa 1: começar com um modelo ajustado

Para este tutorial, vamos começar com um modelo ajustado. Para mostrar uma diferença clara entre um modelo de base e um ajustado, pegamos um modelo Gemma270m de base e o ajustamos para falar como um pirata.

Você pode encontrar o modelo Pirate Gemma pré-ajustado em https://huggingface.co/erintwalsh/pirate-gemma

Para mais informações sobre como ajustar um modelo, consulte os guias do Gemma Cookbook e Unsloth.

Etapa 2: converter e executar o modelo personalizado na linha de comando

Agora que você tem um modelo personalizado publicado no HuggingFace, é possível usar a biblioteca AI Edge Torch para fazer o download e converter esse modelo em um formato .litertlm.

Pré-requisitos

Instale a ferramenta uv e o Python 3.11 ou mais recente no seu dispositivo.

Converter modelo

uv tool install litert-torch-nightly

litert-torch export_hf \
  --model=[YOUR-HF-USERNAME]/pirate-gemma \
  --output_dir=/tmp/pirate-gemma \
  --externalize_embedder

Executar o modelo localmente

uv tool install litert-lm

litert-lm run  \
  /tmp/pirate-gemma/model.litertlm \
  --prompt="Where is the nearest buried treasure?"

Etapa 3: avaliar a qualidade do modelo

Avaliar a qualidade do ajuste

Depois que o modelo estiver em execução local, use a ferramenta de CLI de avaliação do AI Edge para analisar a qualidade do ajuste do modelo LiteRT-LM. Essa ferramenta oferece validação de paridade de qualidade pós-conversão integrada entre o modelo HF original e o modelo LiteRT-LM convertido com conjuntos de dados públicos. Além dos conjuntos de dados públicos, é possível criar tarefas de avaliação personalizadas usando seus próprios dados e métricas específicas. Confira um exemplo de tarefa personalizada para avaliar esse modelo ajustado usando o LLM-as-a-Judge.

uv tool install ai-edge-eval

GEMINI_API_KEY="your_actual_api_key_here"
ai_edge_eval \
  --framework custom \
  --runner litert-lm \
  --model-path /path/to/your/model.litertlm \
  --custom-tasks-file pirate_gemma_custom_task.py \
  --tasks pirate_gemma_eval \
  --output-dir /tmp/results

Etapa 4: enviar o modelo local para o dispositivo de teste

Use estas instruções adb para enviar o modelo que você acabou de executar para o dispositivo Android físico.

adb shell rm -r /data/local/tmp/llm/ # Remove any previously loaded models

adb shell mkdir -p /data/local/tmp/llm/

adb push /tmp/pirate-gemma/model.litertlm  /data/local/tmp/llm/pirate-gemma.litertlm

Etapa 5: executar a inferência no modelo personalizado com o app de exemplo Captain Gemma

O Captain Gemma é um app que demonstra a interface com o modelo no dispositivo. Encontre-o no GitHub e clone o repositório para executá-lo no Android Studio.

Abra o app de exemplo Captain Gemma e execute-o no seu dispositivo. Esse é um app que usa elementos do Android Compose para demonstrar a execução de inferência em um modelo ajustado no seu dispositivo Android. O app recebe a entrada de texto de um usuário e retorna a sabedoria pirata do modelo Gemma ajustado.

Execute o app no dispositivo de teste, para o qual você acabou de enviar o arquivo .litertlm. Insira uma consulta e confira a saída do modelo na caixa de fala branca.

Tela principal do app de exemplo

Exemplo de código

Confira exemplos de como configurar o modelo e executar a inferência com as APIs LiteRT-LM no exemplo de código do Captain Gemma.

Etapa 6: implantação do modelo

Depois de concluir os testes locais do modelo personalizado e estiver tudo pronto para a implantação, há opções de hospedagem do modelo, como:

  • Você pode enviar o arquivo .litertlm para o repositório de modelos do HuggingFace que você criou anteriormente e fazer o download dele no app usando as APIs do HuggingFace
  • Você pode usar um serviço de hospedagem, como o Firebase, que fornece APIs para o app buscar o URL do modelo e fazer o download para Android ou iOS.