LiteRT-LM è una libreria multipiattaforma 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.
Esegui LLM su CPU e GPU
Consulta il repository GitHub LiteRT-LM per istruzioni dettagliate sullo sviluppo multipiattaforma e sull'accelerazione hardware di CPU/GPU.
Eseguire LLM sulla NPU
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.
Fornitori di NPU
LiteRT-LM supporta l'esecuzione di LLM utilizzando l'accelerazione NPU con i seguenti fornitori. Scegli le istruzioni in base al fornitore che vuoi provare:
Avvio rapido
Per iniziare, segui le istruzioni Prerequisiti per configurare l'ambiente e il repository.
Inoltre, per poter interagire con il tuo dispositivo Android, assicurati di aver installato correttamente Android Debug Bridge e di avere un dispositivo connesso a cui è possibile accedere utilizzando adb.
Per istruzioni più dettagliate, consulta la sezione
Guida rapida
nel repository LiteRT-LM e scopri di più sulla litert_lm_main
demo della riga di comando.
Qualcomm AI Engine Direct
I passaggi per eseguire i LLM sulla NPU Qualcomm sono i seguenti:
Passaggio 1: scarica il .litertlmmodello
Il runtime LiteRT-LM è progettato per funzionare con i modelli in formato .litertlm.
Puoi trovare e scaricare i modelli compatibili nella tabella seguente.
| Modello | SoC | Quantizzazione | Dimensioni del contesto | Dimensione modello (MB) | Link di download |
|---|---|---|---|---|---|
| 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 |
Dovrai scaricare il modello corrispondente al tuo SoC.
Di seguito è riportato un comando di esempio che può aiutarti a ottenere il link di Hugging Face che
può scaricare il modello corretto per il SoC del tuo smartphone (tieni presente che dovrai
accedere e confermare il modulo per avere l'autorizzazione a scaricare
il file). Assicurati che sia presente un dispositivo connesso a cui sia possibile
accedere utilizzando adb.
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"
Verifica che $SOC_MODEL sia elencato nella tabella di supporto. Il link generato non funzionerà per i modelli non supportati. Il supporto per le NPU viene aggiunto regolarmente, quindi controlla di nuovo più avanti per vedere se il tuo dispositivo è supportato.
Passaggio 2: scarica ed estrai le librerie QAIRT
Per eseguire il modello utilizzando la NPU Qualcomm, sono necessarie librerie di runtime associate sul dispositivo. È possibile scaricare l'SDK QAIRT da questo link ed estrarre il file. Imposta la variabileQAIRT_ROOT (la utilizzerai nei passaggi successivi) in modo che punti alla cartella decompressa che contiene il numero di versione, ad esempio:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Passaggio 3: crea il runtime / le librerie LiteRT-LM
Sviluppare in Linux
Per poter creare il binario per Android, è necessario installare NDK r28b o versioni successive da https://developer.android.com/ndk/downloads#stable-downloads. I passaggi specifici sono:
- Scarica il file
zipda https://developer.android.com/ndk/downloads#stable-downloads. - Estrai il file
zipnella posizione che preferisci (ad esempio/path/to/AndroidNDK/) - Imposta
ANDROID_NDK_HOMEin modo che punti alla directory NDK. Dovrebbe essere qualcosa del genere:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md.
Con la configurazione, prova a creare il binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria API dispatch affinché il runtime LiteRT-LM interagisca con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Sviluppare in macOS
Gli strumenti a riga di comando Xcode includono clang. Esegui xcode-select --install se non è
mai stato installato.
Per poter creare il binario per Android, è necessario installare NDK r28b o versioni successive da https://developer.android.com/ndk/downloads#stable-downloads. I passaggi specifici sono:
- Scarica il file
.dmgda https://developer.android.com/ndk/downloads#stable-downloads. - Apri il file
.dmge sposta il fileAndroidNDK*nella posizione che preferisci (ad esempio/path/to/AndroidNDK/). - Imposta
ANDROID_NDK_HOMEin modo che punti alla directory NDK. Dovrebbe essere qualcosa del genere:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md.
Con la configurazione, prova a creare il binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria API dispatch affinché il runtime LiteRT-LM interagisca con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Passaggio 4: esegui il modello sul dispositivo
Una volta creato correttamente il file binario, possiamo provare a eseguire il modello sul dispositivo. Assicurati di disporre dell'accesso in scrittura aDEVICE_FOLDER:
Per eseguire il binario sul tuo dispositivo Android, dobbiamo inviare alcuni asset/binari. Per prima cosa, imposta il tuo DEVICE_FOLDER, assicurati di avere accesso in scrittura
a questo percorso (in genere puoi inserire elementi in /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Inserisci il file .litertlm. Suggerimento: devi eseguire il push di questi asset una sola volta.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Esegui il push delle librerie QAIRT. Puoi trovarli nella cartella decompressa nel
Passaggio 2 $QAIRT_ROOT/lib/aarch64-android/. Tieni presente che QAIRT_ROOT deve
contenere il numero di versione, ad es. 2.42.0.251225.
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp*Stub.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnSystem.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtpPrepare.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/hexagon-*/unsigned/libQnnHtp*Skel.so $DEVICE_FOLDER
Esegui il push dell'API Dispatch e del binario principale compilato nel passaggio 3.
adb push bazel-bin/external/litert/litert/vendors/qualcomm/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
Ora puoi eseguire il binario.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER ADSP_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm
MediaTek NeuroPilot
I passaggi per eseguire i LLM sulla NPU MediaTek sono i seguenti:
Passaggio 1: scarica il .litertlmmodello
Il runtime LiteRT-LM è progettato per funzionare con i modelli in formato .litertlm.
Puoi trovare e scaricare i modelli compatibili nella tabella seguente.
| Modello | SoC | Quantizzazione | Dimensioni del contesto | Dimensione modello (MB) | Link di download |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 bit per canale | 1280 | 985 | scaricare |
| Gemma3-1B | MT6991 | 4 bit per canale | 1280 | 986 | scaricare |
Dovrai scaricare il modello corrispondente al tuo SoC.
Di seguito è riportato un comando di esempio che può aiutarti a ottenere il link di Hugging Face che
può scaricare il modello corretto per il SoC del tuo smartphone (tieni presente che dovrai
accedere e confermare il modulo per avere l'autorizzazione a scaricare
il file). Assicurati che sia presente un dispositivo connesso a cui sia possibile
accedere utilizzando adb.
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"
Verifica che $SOC_MODEL sia elencato nella tabella di supporto. Il link generato non funzionerà per i modelli non supportati. Il supporto per le NPU viene aggiunto regolarmente, quindi controlla di nuovo più avanti per vedere se il tuo dispositivo è supportato.
Passaggio 2: crea il runtime / le librerie LiteRT-LM
Sviluppare in Linux
Per poter creare il binario per Android, è necessario installare NDK r28b o versioni successive da https://developer.android.com/ndk/downloads#stable-downloads. I passaggi specifici sono:
- Scarica il file
zipda https://developer.android.com/ndk/downloads#stable-downloads. - Estrai il file
zipnella posizione che preferisci (ad esempio/path/to/AndroidNDK/) - Imposta
ANDROID_NDK_HOMEin modo che punti alla directory NDK. Dovrebbe essere qualcosa del genere:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md.
Con la configurazione, prova a creare il binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria API dispatch affinché il runtime LiteRT-LM interagisca con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Sviluppare in macOS
Gli strumenti a riga di comando Xcode includono clang. Esegui xcode-select --install se non è
mai stato installato.
Per poter creare il binario per Android, è necessario installare NDK r28b o versioni successive da https://developer.android.com/ndk/downloads#stable-downloads. I passaggi specifici sono:
- Scarica il file
.dmgda https://developer.android.com/ndk/downloads#stable-downloads. - Apri il file
.dmge sposta il fileAndroidNDK*nella posizione che preferisci (ad esempio/path/to/AndroidNDK/). - Imposta
ANDROID_NDK_HOMEin modo che punti alla directory NDK. Dovrebbe essere qualcosa del genere:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md.
Con la configurazione, prova a creare il binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria API dispatch affinché il runtime LiteRT-LM interagisca con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Passaggio 3: esegui il modello sul dispositivo
Una volta creato correttamente il binario, possiamo provare a eseguire il modello sul dispositivo. Assicurati di disporre dell'accesso in scrittura aDEVICE_FOLDER:
Per eseguire il binario sul tuo dispositivo Android, dobbiamo inviare alcuni asset/binari. Per prima cosa, imposta il tuo DEVICE_FOLDER, assicurati di avere accesso in scrittura
a questo percorso (in genere puoi inserire elementi in /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Inserisci il file .litertlm. Suggerimento: devi eseguire il push di questi asset una sola volta.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Esegui il push dell'API Dispatch e del binario principale compilato nel passaggio 2.
adb push bazel-bin/external/litert/litert/vendors/mediatek/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
Ora puoi eseguire il binario.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm