Eseguire LLM su NPU utilizzando LiteRT-LM

Le NPU (Neural Processing Unit) offrono blocchi hardware specializzati ottimizzati per i carichi di lavoro di deep learning. Sono sempre più disponibili nei moderni system on a chip (SoC), soprattutto sui dispositivi mobili. Le loro prestazioni elevate le rendono ideali per l'esecuzione dell'inferenza LLM.

LiteRT-LM è una libreria C++ progettata per eseguire in modo efficiente pipeline di modelli linguistici su un'ampia gamma di dispositivi, dai cellulari ai sistemi incorporati. Fornisce agli sviluppatori gli strumenti per creare e implementare flussi di lavoro sofisticati per modelli linguistici, ora con un'integrazione perfetta della NPU.

Fornitori di NPU

LiteRT-LM supporta l'esecuzione di LLM utilizzando l'accelerazione NPU con i seguenti fornitori. Scegli le istruzioni a seconda del fornitore che vuoi provare:

Avvio rapido

  1. Segui i prerequisiti per configurare l'ambiente e il repository.
  2. Assicurati che adb sia installato e che un dispositivo sia connesso.
  3. Consulta la guida rapida e la litert_lm_main demo della riga di comando.

Qualcomm AI Engine Direct

Passaggio 1: scarica il .litertlmmodello

Scarica un .litertlm corrispondente al tuo SoC (esempi di seguito). Puoi eseguire una query sul SoC del dispositivo:

SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
Modello SoC Quantizzazione Dimensioni del contesto Dimensioni del modello (MB) Scarica
Gemma3-1B SM8750 4 bit per canale 1280 658 scaricare
Gemma3-1B SM8650 4 bit per canale 1280 658 scaricare
Gemma3-1B SM8550 4 bit per canale 1280 657 scaricare

Passaggio 2: scarica ed estrai le librerie QAIRT

Scarica l'SDK QAIRT, estrailo e imposta QAIRT_ROOT:

unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.34.0.250424

Passaggio 3: crea il runtime / le librerie LiteRT-LM

Installa Android NDK r28b+ e crea:

bazel build --config=android_arm64 //runtime/engine:litert_lm_main
bazel build --config=android_arm64 \
    @litert//litert/vendors/qualcomm/dispatch:dispatch_api_so

Passaggio 4: esegui il modello sul dispositivo

Imposta il percorso del dispositivo e invia gli asset:

export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path-to-model.litertlm>
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
adb push $QAIRT_ROOT/lib/aarch64-android/* $DEVICE_FOLDER/
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER/
adb shell chmod +x $DEVICE_FOLDER/litert_lm_main

Esegui:

adb shell "cd $DEVICE_FOLDER && \
  QAIRT_ROOT=$DEVICE_FOLDER \
  ./litert_lm_main --model=model.litertlm \
  --prompt='Explain the history of LiteRT in 3 bullet points' \
  --device=qualcomm_npu --rounds=1"

MediaTek NeuroPilot

Panoramica dei passaggi

Il flusso di MediaTek è simile a quello di Qualcomm: utilizza un .litertlm creato per il tuo SoC, includi le librerie di runtime NeuroPilot, crea litert_lm_main, invia gli asset ed esegui con --device=mediatek_npu.