LiteRT-LM è una libreria multipiattaforma progettata per eseguire in modo efficiente pipeline di modelli linguistici su un'ampia gamma di dispositivi, dagli smartphone ai sistemi embedded. Fornisce agli sviluppatori gli strumenti per creare ed eseguire il deployment di sofisticati flussi di lavoro di modelli linguistici, ora con un'integrazione NPU senza interruzioni.
Esegui LLM su CPU e GPU
Per istruzioni dettagliate sullo sviluppo multipiattaforma e sull'accelerazione hardware CPU/GPU, consulta il repository GitHub di LiteRT-LM.
Esegui LLM su 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 sistemi su chip (SoC), in particolare sui dispositivi mobili. La loro natura ad alte prestazioni li rende 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 relative ai prerequisiti per configurare l'ambiente e il repository.
Inoltre, per poter interagire con il tuo dispositivo Android, assicurati di aver correttamente
installato Android Debug Bridge e di
avere un dispositivo connesso a cui è possibile accedere utilizzando adb.
Per istruzioni più dettagliate, consulta la
sezione Avvio rapido
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 gli LLM su NPU Qualcomm sono i seguenti:
Passaggio 1: scarica il modello .litertlm
Il runtime di 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 | download |
| Gemma3-1B | SM8650 | 4 bit per canale | 1280 | 658 | download |
| Gemma3-1B | SM8550 | 4 bit per canale | 1280 | 657 | download |
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 per scaricare il modello corretto per il SoC del tuo smartphone (tieni presente che dovrai accedere e accettare il modulo per avere l'autorizzazione a scaricare il file). Assicurati che sia presente un dispositivo connesso a cui è 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 in un secondo momento per verificare 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 utilizzeremo 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 di LiteRT-LM
Sviluppa in Linux
Per poter creare il file 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 simile a:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md al suo interno.
Una volta configurato, prova a creare il file binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria dell'API di distribuzione affinché il runtime di LiteRT-LM possa interagire con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Sviluppa in macOS
Gli strumenti a riga di comando di Xcode includono clang. Esegui xcode-select --install se non è stato installato in precedenza.
Per poter creare il file 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 simile a:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md al suo interno.
Una volta configurato, prova a creare il file binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria dell'API di distribuzione affinché il runtime di LiteRT-LM possa interagire con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Passaggio 4: esegui il modello sul dispositivo.
Dopo aver creato correttamente il file binario, possiamo provare a eseguire il modello sul dispositivo. Assicurati di avere l'accesso in scrittura aDEVICE_FOLDER:
Per eseguire il file binario sul tuo dispositivo Android, dobbiamo eseguire il push di alcuni asset/file binari. Per prima cosa, imposta DEVICE_FOLDER, assicurati di avere l'accesso in scrittura (in genere puoi inserire gli 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 >
Esegui il push del 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 trovarle 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 di distribuzione e del file 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 file 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 gli LLM su NPU MediaTek sono i seguenti:
Passaggio 1: scarica il modello .litertlm
Il runtime di 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 | download |
| Gemma3-1B | MT6991 | 4 bit per canale | 1280 | 986 | download |
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 per scaricare il modello corretto per il SoC del tuo smartphone (tieni presente che dovrai accedere e accettare il modulo per avere l'autorizzazione a scaricare il file). Assicurati che sia presente un dispositivo connesso a cui è 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 in un secondo momento per verificare se il tuo dispositivo è supportato.
Passaggio 2:crea il runtime / le librerie di LiteRT-LM
Sviluppa in Linux
Per poter creare il file 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 simile a:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md al suo interno.
Una volta configurato, prova a creare il file binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria dell'API di distribuzione affinché il runtime di LiteRT-LM possa interagire con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Sviluppa in macOS
Gli strumenti a riga di comando di Xcode includono clang. Esegui xcode-select --install se non è stato installato in precedenza.
Per poter creare il file 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 simile a:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Suggerimenti: assicurati che ANDROID_NDK_HOME punti alla directory che contiene
README.md al suo interno.
Una volta configurato, prova a creare il file binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria dell'API di distribuzione affinché il runtime di LiteRT-LM possa interagire con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Passaggio 3: esegui il modello sul dispositivo.
Dopo aver creato correttamente il file binario, possiamo provare a eseguire il modello sul dispositivo. Assicurati di avere l'accesso in scrittura aDEVICE_FOLDER:
Per eseguire il file binario sul tuo dispositivo Android, dobbiamo eseguire il push di alcuni asset/file binari. Per prima cosa, imposta DEVICE_FOLDER, assicurati di avere l'accesso in scrittura (in genere puoi inserire gli 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 >
Esegui il push del 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 di distribuzione e del file 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 file binario.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm
Intel OpenVino
I passaggi per eseguire gli LLM su NPU Intel sono i seguenti:
Passaggio 1: scarica il modello .litertlm
Il runtime di 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-2B | PantherLake | ... | 4096 | ... | Link di download DA FARE |
Passaggio 2: crea il runtime di LiteRT-LM e la libreria di distribuzione di LiteRT Intel
Sviluppa in Windows
Una volta configurato, prova a creare il file binario litert_lm_main:
bazel --output_base=C:\bzl_lrtlm build --define=DISABLE_HUGGINGFACE_TOKENIZER=1 --config=windows //runtime/engine:litert_lm_main
Inoltre, dobbiamo creare la libreria dell'API di distribuzione affinché il runtime di LiteRT-LM possa interagire con la NPU:
bazel --output_base=C:\bzl_lrtlm build --config=windows @litert//litert/vendors/intel_openvino/dispatch:LiteRtDispatch
Passaggio 3: esegui il modello sul dispositivo.
Dopo aver creato correttamente il file binario, possiamo provare a eseguire il modello sul dispositivo. Inseriamo tutti i file binari, le DLL e il modello in una "execution_dir":cp bazel-bin/external/litert/vendors/intel_openvino/dispatch/LiteRtDispatch.dll execution_dir
cp bazel-bin/runtime/engine/litert_lm_main.exe execution_dir
cp prebuilt\windows_x86_64\libGemmaModelConstraintProvider.dll execution_dir
# Run OpenVino's setup script to ensure the OpenVino DLLs can be found.
& C:\bzl_lrtlm\external\intel_openvino\openvino\setupvars.ps1
# Test run
cd execution_dir
.\litert_lm_main.exe --backend=npu --model_path="execution_dir\model.litertlm" --input_prompt="What is the capital of France?" --litert_dispatch_lib_dir=$PWD --use_hw_masking_for_npu=false