Esegui il deployment di un modello Gemma 270M ottimizzato con lo stack Google AI Edge

Questo tutorial illustra l'intero processo di deployment di un modello Gemma personalizzato in un'app di esempio Android.

In questo tutorial:

  1. Inizieremo con un modello ottimizzato
  2. Convertiremo il modello ottimizzato con la libreria AI Edge Torch
    1. In questo modo, il checkpoint di HuggingFace verrà convertito in un file .litertlm
  3. Valuteremo la qualità del modello ottimizzato
  4. Eseguiremo i comandi adb per eseguire il push del modello personalizzato su un dispositivo di test
    1. In questo modo, il modello in formato .litertlm verrà inviato a un dispositivo Android per i test locali
  5. Eseguiremo l'app di esempio Pirate Gemma
    1. In questo modo, la libreria Kotlin LiteRT-LM verrà utilizzata per eseguire l'inferenza sul modello ottimizzato in un'app per Android di esempio

Passaggio 1: inizia con un modello ottimizzato

Per questo tutorial, inizieremo con un modello ottimizzato. Per mostrare una chiara differenza tra un modello di base e uno ottimizzato, abbiamo preso un modello di base Gemma270m modello e lo abbiamo ottimizzato per parlare come un pirata.

Puoi trovare il modello Pirate Gemma pre-ottimizzato all'indirizzo https://huggingface.co/erintwalsh/pirate-gemma

Per ulteriori informazioni sull'ottimizzazione di un modello, consulta le guide Gemma Cookbook e Unsloth.

Passaggio 2: converti ed esegui il modello personalizzato nella riga di comando

Ora che hai pubblicato un modello personalizzato su HuggingFace, puoi utilizzare la libreria AI Edge Torch per scaricare e convertire quel modello in formato .litertlm.

Prerequisiti

Assicurati di aver installato lo strumento uv e Python 3.11 o versioni successive sul tuo dispositivo.

Converti il modello

uv tool install litert-torch-nightly

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

Esegui il modello in locale

uv tool install litert-lm

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

Passaggio 3: valuta la qualità del modello

Valuta la qualità dell'ottimizzazione

Una volta che il modello è in esecuzione in locale, puoi utilizzare lo strumento CLI di valutazione AI Edge per analizzare la qualità del modello LiteRT-LM dell'ottimizzazione. Questo strumento offre la convalida della parità di qualità post-conversione integrata tra il modello HF originale e il modello LiteRT-LM convertito con set di dati pubblici. Oltre ai set di dati pubblici, puoi creare attività di valutazione personalizzate utilizzando i tuoi dati e metriche specifiche. Consulta un esempio di attività personalizzata per valutare questo modello ottimizzato utilizzando 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

Passaggio 4: esegui il push del modello locale sul dispositivo di test

Utilizza queste istruzioni adb per eseguire il push del modello appena eseguito sul tuo dispositivo Android fisico.

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

Passaggio 5: esegui l'inferenza sul modello personalizzato con l'app di esempio Captain Gemma

Captain Gemma è un'app che mostra l'interfaccia con il modello sul dispositivo. Trovala su GitHub e clona il repository per eseguirla in Android Studio.

Apri l'app di esempio Captain Gemma ed eseguila sul tuo dispositivo. Si tratta di un'app che utilizza gli elementi di Android Compose per dimostrare l'esecuzione dell'inferenza su un modello ottimizzato sul tuo dispositivo Android. L'app accetta l'input di testo da un utente e restituisce la saggezza pirata del modello Gemma ottimizzato.

Esegui l'app sul dispositivo di test, su cui hai appena eseguito il push del file .litertlm. Inserisci una query e visualizza l'output del modello nella casella di testo bianca.

Schermata principale dell'app di esempio

Codice campione

Consulta gli esempi di configurazione del modello ed esecuzione dell'inferenza con le API LiteRT-LM nel codice campione di Captain Gemma.

Passaggio 6: deployment del modello

Una volta terminato il test locale del modello personalizzato e pronto per il deployment, sono disponibili opzioni per l'hosting del modello, ad esempio:

  • Puoi eseguire il push del file .litertlm nel repository del modello HuggingFace che hai creato in precedenza e scaricarlo nella tua app utilizzando le API HuggingFace
  • Puoi utilizzare un servizio di hosting come Firebase, che fornisce API per la tua app per recuperare l'URL del modello e scaricarlo per Android o iOS.