Convertire i modelli di AI generativa PyTorch per l'inferenza on-device

L'API LiteRT Torch Generative è una libreria ad alte prestazioni progettata per creare e convertire modelli PyTorch basati su Transformer nel formato LiteRT/LiteRT-LM. In questo modo, gli sviluppatori possono eseguire facilmente il deployment di modelli di AI generativa, in particolare modelli linguistici di grandi dimensioni (LLM), per la generazione di testo e immagini sui dispositivi.

L'API Torch Generative supporta la conversione dei modelli per CPU, GPU e NPU. Combinando l'API Torch Generative con LiteRT-LM, puoi creare applicazioni reattive e incentrate sulla privacy che eseguono modelli generativi interamente sul dispositivo.

Convertire dalla libreria Transformer di Hugging Face

L'estensione di esportazione di Hugging Face di LiteRT Torch fornisce un percorso semplificato per convertire i modelli di AI generativa direttamente dalla libreria Transformer di Hugging Face nel formato LiteRT-LM. Rispetto alle API LiteRT Torch Generative che forniscono blocchi di creazione pytorch per creare e ottimizzare modelli personalizzati, questo strumento gestisce le complessità del download dei pesi, della traduzione delle architetture dei modelli PyTorch e dell'applicazione di tecniche di ottimizzazione come le ottimizzazioni dei grafici e la quantizzazione in un unico flusso di lavoro. Genera un file .litertlm, ottimizzato per l'inferenza sui dispositivi su CPU, GPU e NPU utilizzando il runtime LiteRT-LM.

Prerequisiti

Prima di utilizzare l'estensione di esportazione, assicurati di aver configurato quanto segue:

  • Installa il pacchetto Python LiteRT Torch. L'estensione di esportazione di Hugging Face è integrata direttamente nel pacchetto litert-torch.
  • (Facoltativo) Per la compilazione NPU, installa le estensioni dell'SDK NPU LiteRT utilizzando pip install ai-edge-litert[npu-sdk]. Per maggiori dettagli, puoi seguire il Colab di compilazione AOT NPU LiteRT.
  • L'ambiente Hugging Face è configurato se intendi caricare direttamente dall'hub Hugging Face. Lo strumento export_hf utilizza i meccanismi di autenticazione Transformer standard come HF_TOKEN o CLI. Vedi l'esempio:

Per scaricare i modelli con accesso limitato (come Gemma o Llama), devi autenticarti con Hugging Face utilizzando la CLI o una variabile di ambiente:

# Set your Hugging Face token as an environment variable
export HF_TOKEN="your_hugging_face_token"

# Or use the Hugging Face CLI login
hf auth login

Utilizzo di base

Puoi utilizzare export_hf tramite la riga di comando o l'API Python. Lo strumento scaricherà automaticamente il modello da Hugging Face o lo caricherà dal percorso locale fornito, lo traccerà, applicherà le ottimizzazioni predefinite e lo convertirà in un file .litertlm compatibile per l'inferenza su CPU e GPU.

Interfaccia a riga di comando (CLI)

Utilizza il comando litert-torch export_hf. Devi fornire l'ID modello Hugging Face e la directory di output scelta.

litert-torch export_hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-it-litertlm

Per esportare un modello locale o personalizzato, puoi anche passare il percorso al checkpoint safetensor:

litert-torch export_hf \
  --model=/path/to/safetensor/dir \
  --output_dir=/my_custom_litertlm

API Python

Per l'integrazione in script o notebook Python, importa il export modulo da litert_torch.generative.export_hf.

from litert_torch.generative.export_hf import export

export.export(
    model='google/gemma-3-270m-it',
    output_dir='/tmp/gemma3-270m-it-litertlm',
)

Deployment sui dispositivi con LiteRT-LM

Dopo aver esportato correttamente il modello in un file .litertlm, puoi eseguirne il deployment direttamente sul dispositivo utilizzando LiteRT-LM per un'esecuzione ad alte prestazioni sia su CPU che su GPU. Consulta i dettagli su come utilizzare l'API LiteRT-LM. Per l'accelerazione NPU, consulta la guida alla compilazione AOT NPU.

Architetture supportate

Lo strumento export_hf verifica le seguenti architetture dei modelli Transformer. Puoi verificarlo controllando il campo model_type in config.json.

  • Gemma 3 (Gemma3ForCausalLM)
  • Gemma 3n (Gemma3nForCausalLM)
  • Gemma 4 (Gemma4ForCausalLM)
  • Llama (LlamaForCausalLM)
  • Mistral (MistralForCausalLM)
  • Qwen 2/2.5 (Qwen2ForCausalLM)
  • Qwen 3 (Qwen3ForCausalLM)
  • SmolLM 3 (SmolLM3ForCausalLM)

Impostazioni avanzate

Sebbene tu possa esplorare le opzioni avanzate disponibili nei flag dell'estensione, di seguito sono riportati alcuni parametri comuni che puoi provare.

Modelli linguistici visivi

Per i modelli supportati, puoi impostare --task=image_text_to_text e --export_vision_encoder per caricare ed esportare il modello di codifica visiva.

Architetture supportate:

  • Gemma 3 (Gemma3ForConditionalGeneration)
  • Gemma 4 (Gemma4ForConditionalGeneration)

Configurazione della quantizzazione

I modelli di AI generativa sono spesso troppo grandi per essere eseguiti in modo efficiente sui dispositivi edge senza ottimizzazione. Per impostazione predefinita, export_hf applica la ricetta di quantizzazione dynamic_wi8_afp32 utilizzando AI Edge Quantizer, che quantizza i pesi in INT8 per canale mantenendo le attivazioni in FP32.

Puoi ignorare questo comportamento predefinito utilizzando il flag --quantization_recipe (o il parametro quantization_recipe in Python). Puoi fornire il nome di una ricetta integrata da AI Edge Quantizer o specificare il percorso di una ricetta JSON personalizzata.

Esempio:

litert-torch export_hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-it-litertlm \
  --quantization_recipe=/path/to/my/quantization_recipe.json

Override del modello Jinja

Se il modello Jinja fornito con il modello Transformer potrebbe non essere compatibile con LiteRT-LM (ad es. i modelli Gemma4), puoi impostare il flag use_jinja_template su False o utilizzare l'opzione jinja_chat_template_override per sostituire il modello.

Esempio:

 litert-torch export_hf \
   --model=google/gemma-4-E2B-it \
  --output_dir=/tmp/gemma4_2b_litertlm \
  --externalize_embedder \
  --jinja_chat_template_override=litert-community/gemma-4-E2B-it-litert-lm

Compilazione AOT NPU

Oltre a CPU e GPU, puoi anche scegliere come target gli acceleratori NPU supportati durante l'esportazione dei modelli fornendo le opzioni specifiche per NPU.

Google Tensor

Prerequisiti: segui la pagina SDK Google Tensor per la configurazione dell'ambiente di sviluppo.

Per esportare gli LLM destinati alle TPU Google Tensor, segui l'esempio per i flag aggiuntivi richiesti per la compilazione TPU.

Esempio:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --prefill_lengths=128, \
  --cache_length=1280 \
  --quantization_recipe="weight_only_wi8_afp32"
  --aot_backend=GOOGLE \
  --aot_soc_model=Tensor_G5 \
  --aot_compilation_config_dict='{"google_tensor_enable_large_model_support": True}'

Per ulteriori informazioni, vedi Compilare i modelli con l'SDK Google Tensor.

Runtime AI Qualcomm:

Prerequisiti: segui l'integrazione di LiteRT Qualcomm per le istruzioni di configurazione dell'SDK e i dispositivi supportati.

Esempio:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --quantization_recipe='' \
  --aot_backend=qualcomm \
  --aot_soc_model=SM8750

MediaTek NeuroPilot:

Prerequisiti: segui l'integrazione di LiteRT MediaTek per le istruzioni di configurazione dell'SDK e i dispositivi supportati.

Esempio:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --aot_backend=mediatek \
  --aot_soc_model=MT8189

Intel OpenVINO

Prerequisiti: segui l'integrazione di LiteRT Intel OpenVINO per le istruzioni di configurazione dell'SDK e i dispositivi supportati.

Esempio:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --aot_backend=intel_openvino \
  --aot_soc_model=PTL

Ricreare e convertire utilizzando l'API LiteRT Torch Generative

L'API LiteRT Torch Generative fornisce anche blocchi di creazione per creare e ottimizzare modelli PyTorch personalizzati, inclusi, a titolo esemplificativo, livelli di normalizzazione, attenzione e altri moduli di base. Se il tuo modello non è coperto da l'estensione di esportazione di Hugging Face di LiteRT Torch , puoi creare i tuoi modelli in modo che siano compatibili con LiteRT e LiteRT-LM.

Sono disponibili esempi di modelli, tra cui LLM, modelli di diffusione e modelli ASR. Non esitare a consultarli ed eseguire il deployment del tuo modello.

Per ulteriori informazioni, consulta il repository GitHub dell'API Generative Torch.