LiteRT-LM est une bibliothèque multiplate-forme conçue pour exécuter efficacement des pipelines de modèles de langage sur une large gamme d'appareils, des téléphones mobiles aux systèmes embarqués. Il fournit aux développeurs les outils nécessaires pour créer et déployer des workflows de modèles de langage sophistiqués, désormais avec une intégration NPU fluide.
Exécuter des LLM sur CPU et GPU
Consultez le dépôt GitHub LiteRT-LM pour obtenir des instructions détaillées sur le développement multiplate-forme et l'accélération matérielle CPU/GPU.
Exécuter des LLM sur le NPU
Les NPU (Neural Processing Units) sont des blocs matériels spécialisés optimisés pour les charges de travail de deep learning. Elles sont de plus en plus disponibles dans les systèmes sur puce (SoC) modernes, en particulier sur les appareils mobiles. Leur nature très performante les rend particulièrement adaptés à l'exécution de l'inférence LLM.
Fournisseurs de NPU
LiteRT-LM permet d'exécuter des LLM à l'aide de l'accélération NPU avec les fournisseurs suivants. Choisissez les instructions en fonction du fournisseur que vous souhaitez essayer :
Démarrage rapide
Pour commencer, suivez les instructions de la section Conditions préalables pour configurer l'environnement et le dépôt.
De plus, pour pouvoir interagir avec votre appareil Android, assurez-vous d'avoir correctement installé Android Debug Bridge et d'avoir un appareil connecté accessible à l'aide de adb.
Pour obtenir des instructions plus détaillées, consultez la section Quick Start (Démarrage rapide) du dépôt LiteRT-LM et découvrez-en plus sur la démonstration de la ligne de commande litert_lm_main.
Qualcomm AI Engine Direct
Pour exécuter les LLM sur le NPU Qualcomm, procédez comme suit :
Étape 1 : Téléchargez le modèle .litertlm.
Le runtime LiteRT-LM est conçu pour fonctionner avec les modèles au format .litertlm.
Vous trouverez et pourrez télécharger les modèles compatibles dans le tableau ci-dessous.
| Modèle | SoC (System on Chip) | Quantification | Taille du contexte | Taille du modèle (Mo) | Télécharger le lien |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4 bits par canal | 1 280 | 658 | télécharger |
| Gemma3-1B | SM8650 | 4 bits par canal | 1 280 | 658 | télécharger |
| Gemma3-1B | SM8550 | 4 bits par canal | 1 280 | 657 | télécharger |
Vous devrez télécharger le modèle qui correspond à votre SoC. Vous trouverez ci-dessous un exemple de commande qui peut vous aider à obtenir le lien Hugging Face permettant de télécharger le modèle adapté au SoC de votre téléphone (notez que vous devrez vous connecter et confirmer le formulaire pour obtenir l'autorisation de télécharger le fichier). Assurez-vous qu'un appareil connecté est accessible à l'aide de 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"
Vérifiez que $SOC_MODEL figure dans le tableau de compatibilité. Le lien généré ne fonctionnera pas pour les modèles non compatibles. Nous ajoutons régulièrement la prise en charge de NPU. Revenez donc plus tard pour voir si votre appareil est compatible.
Étape 2 : Téléchargez et extrayez les bibliothèques QAIRT
Pour exécuter le modèle à l'aide de la NPU Qualcomm, des bibliothèques d'exécution associées sont requises sur l'appareil. Vous pouvez télécharger le SDK QAIRT à partir de ce lien et extraire le fichier. Définissez la variableQAIRT_ROOT (que vous utiliserez lors des étapes ultérieures) pour qu'elle pointe vers le dossier décompressé contenant le numéro de version. Par exemple :
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Étape 3 : Créez le runtime / les bibliothèques LiteRT-LM
Développer sous Linux
Pour pouvoir compiler le binaire pour Android, vous devez installer NDK r28b ou une version ultérieure à partir de https://developer.android.com/ndk/downloads#stable-downloads. Voici les étapes à suivre :
- Téléchargez le fichier
zipdepuis https://developer.android.com/ndk/downloads#stable-downloads. - Extrayez le fichier
zipà l'emplacement de votre choix (par exemple,/path/to/AndroidNDK/). - Faites en sorte que
ANDROID_NDK_HOMEpointe vers le répertoire NDK. Le résultat devrait ressembler à ceci :
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Conseil : Assurez-vous que votre ANDROID_NDK_HOME pointe vers le répertoire contenant README.md.
Une fois la configuration effectuée, essayez de créer le binaire litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
De plus, nous devons créer la bibliothèque d'API d'envoi pour que l'environnement d'exécution LiteRT-LM puisse interagir avec l'unité de traitement neuronal (NPU) :
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Développer sous macOS
Les outils de ligne de commande Xcode incluent clang. Exécutez xcode-select --install si ce n'est pas déjà fait.
Pour pouvoir compiler le binaire pour Android, vous devez installer NDK r28b ou une version ultérieure à partir de https://developer.android.com/ndk/downloads#stable-downloads. Voici les étapes à suivre :
- Téléchargez le fichier
.dmgdepuis https://developer.android.com/ndk/downloads#stable-downloads. - Ouvrez le fichier
.dmget déplacez le fichierAndroidNDK*vers l'emplacement de votre choix (par exemple,/path/to/AndroidNDK/). - Faites en sorte que
ANDROID_NDK_HOMEpointe vers le répertoire NDK. Le résultat devrait ressembler à ceci :
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Conseil : Assurez-vous que votre ANDROID_NDK_HOME pointe vers le répertoire contenant README.md.
Une fois la configuration effectuée, essayez de créer le binaire litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
De plus, nous devons créer la bibliothèque d'API d'envoi pour que l'environnement d'exécution LiteRT-LM puisse interagir avec l'unité de traitement neuronal (NPU) :
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Étape 4 : Exécuter le modèle sur l'appareil
Une fois le binaire créé, nous pouvons essayer d'exécuter le modèle sur l'appareil. Assurez-vous d'avoir accès en écriture àDEVICE_FOLDER :
Pour exécuter le fichier binaire sur votre appareil Android, nous devons transférer quelques composants/binaires. Commencez par définir votre DEVICE_FOLDER et assurez-vous d'y avoir accès en écriture (vous pouvez généralement placer des éléments sous /data/local/tmp/) :
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Déployez le fichier .litertlm. Conseil : Vous n'avez besoin d'envoyer ces composants qu'une seule fois.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Transférez les bibliothèques QAIRT. Vous les trouverez dans le dossier décompressé à l'étape 2 $QAIRT_ROOT/lib/aarch64-android/. Notez que QAIRT_ROOT doit contenir le numéro de version, par exemple 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
Transférez l'API Dispatch et le fichier binaire principal compilés à l'étape 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
Vous pouvez maintenant exécuter le binaire.
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
Voici les étapes à suivre pour exécuter les LLM sur le NPU MediaTek :
Étape 1 : Téléchargez le modèle .litertlm.
Le runtime LiteRT-LM est conçu pour fonctionner avec les modèles au format .litertlm.
Vous trouverez et pourrez télécharger les modèles compatibles dans le tableau ci-dessous.
| Modèle | SoC (System on Chip) | Quantification | Taille du contexte | Taille du modèle (Mo) | Télécharger le lien |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 bits par canal | 1 280 | 985 | télécharger |
| Gemma3-1B | MT6991 | 4 bits par canal | 1 280 | 986 | télécharger |
Vous devrez télécharger le modèle qui correspond à votre SoC. Vous trouverez ci-dessous un exemple de commande qui peut vous aider à obtenir le lien Hugging Face permettant de télécharger le modèle adapté au SoC de votre téléphone (notez que vous devrez vous connecter et confirmer le formulaire pour obtenir l'autorisation de télécharger le fichier). Assurez-vous qu'un appareil connecté est accessible à l'aide de 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"
Vérifiez que $SOC_MODEL figure dans le tableau de compatibilité. Le lien généré ne fonctionnera pas pour les modèles non compatibles. Nous ajoutons régulièrement la prise en charge de NPU. Revenez donc plus tard pour voir si votre appareil est compatible.
Étape 2 : Créez le runtime / les bibliothèques LiteRT-LM
Développer sous Linux
Pour pouvoir compiler le binaire pour Android, vous devez installer NDK r28b ou une version ultérieure à partir de https://developer.android.com/ndk/downloads#stable-downloads. Voici les étapes à suivre :
- Téléchargez le fichier
zipdepuis https://developer.android.com/ndk/downloads#stable-downloads. - Extrayez le fichier
zipà l'emplacement de votre choix (par exemple,/path/to/AndroidNDK/). - Faites en sorte que
ANDROID_NDK_HOMEpointe vers le répertoire NDK. Le résultat devrait ressembler à ceci :
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Conseil : Assurez-vous que votre ANDROID_NDK_HOME pointe vers le répertoire contenant README.md.
Une fois la configuration effectuée, essayez de créer le binaire litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
De plus, nous devons créer la bibliothèque d'API d'envoi pour que l'environnement d'exécution LiteRT-LM puisse interagir avec l'unité de traitement neuronal (NPU) :
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Développer sous macOS
Les outils de ligne de commande Xcode incluent clang. Exécutez xcode-select --install si ce n'est pas déjà fait.
Pour pouvoir compiler le binaire pour Android, vous devez installer NDK r28b ou une version ultérieure à partir de https://developer.android.com/ndk/downloads#stable-downloads. Voici les étapes à suivre :
- Téléchargez le fichier
.dmgdepuis https://developer.android.com/ndk/downloads#stable-downloads. - Ouvrez le fichier
.dmget déplacez le fichierAndroidNDK*vers l'emplacement de votre choix (par exemple,/path/to/AndroidNDK/). - Faites en sorte que
ANDROID_NDK_HOMEpointe vers le répertoire NDK. Le résultat devrait ressembler à ceci :
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Conseil : Assurez-vous que votre ANDROID_NDK_HOME pointe vers le répertoire contenant README.md.
Une fois la configuration effectuée, essayez de créer le binaire litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
De plus, nous devons créer la bibliothèque d'API d'envoi pour que l'environnement d'exécution LiteRT-LM puisse interagir avec l'unité de traitement neuronal (NPU) :
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Étape 3 : Exécuter le modèle sur l'appareil
Une fois le binaire créé, nous pouvons essayer d'exécuter le modèle sur l'appareil. Assurez-vous d'avoir accès en écriture àDEVICE_FOLDER :
Pour exécuter le fichier binaire sur votre appareil Android, nous devons transférer quelques composants/binaires. Commencez par définir votre DEVICE_FOLDER et assurez-vous d'y avoir accès en écriture (vous pouvez généralement placer des éléments sous /data/local/tmp/) :
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Déployez le fichier .litertlm. Conseil : Vous n'avez besoin d'envoyer ces composants qu'une seule fois.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Transférez l'API Dispatch et le fichier binaire principal compilés à l'étape 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
Vous pouvez maintenant exécuter le binaire.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm