LiteRT-LM ist eine plattformübergreifende Bibliothek, die entwickelt wurde, um Pipelines für Sprachmodelle effizient auf einer Vielzahl von Geräten auszuführen, von Smartphones bis hin zu eingebetteten Systemen. Es bietet Entwicklern die Tools zum Erstellen und Bereitstellen komplexer Sprachmodell-Workflows, jetzt mit nahtloser NPU-Integration.
LLMs auf CPU und GPU ausführen
Eine detaillierte Anleitung zur plattformübergreifenden Entwicklung und zur Hardwarebeschleunigung von CPUs/GPUs finden Sie im GitHub-Repository für LiteRT-LM.
LLMs auf der NPU ausführen
Neural Processing Units (NPUs) bieten spezielle Hardwareblöcke, die für Deep-Learning-Arbeitslasten optimiert sind. Sie sind zunehmend in modernen System-on-a-Chip (SoCs) verfügbar, insbesondere auf Mobilgeräten. Aufgrund ihrer hohen Leistung eignen sie sich hervorragend für die Ausführung von LLM-Inferenz.
NPU-Anbieter
LiteRT-LM unterstützt die Ausführung von LLMs mit NPU-Beschleunigung mit den folgenden Anbietern. Wählen Sie die Anleitung entsprechend dem Anbieter aus, den Sie ausprobieren möchten:
Schnellstart
Folgen Sie zuerst der Anleitung unter Voraussetzungen, um die Umgebung und das Repository einzurichten.
Damit Sie mit Ihrem Android-Gerät interagieren können, müssen Sie außerdem die Android Debug Bridge richtig installiert haben und ein verbundenes Gerät haben, auf das über adb zugegriffen werden kann.
Eine detailliertere Anleitung finden Sie im Abschnitt Kurzanleitung im LiteRT-LM-Repository. Weitere Informationen zur litert_lm_main-Befehlszeilendemo finden Sie dort.
Qualcomm AI Engine Direct
So führen Sie die LLMs auf der Qualcomm-NPU aus:
Schritt 1:.litertlm-Modell herunterladen
Die LiteRT-LM-Laufzeit ist für die Verwendung mit Modellen im .litertlm-Format konzipiert.
In der folgenden Tabelle finden Sie kompatible Modelle, die Sie herunterladen können.
| Modell | SoC | Quantisierung | Kontextgröße | Modellgröße (MB) | Downloadlink |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4 Bit pro Kanal | 1280 | 658 | herunterladen |
| Gemma3-1B | SM8650 | 4 Bit pro Kanal | 1280 | 658 | herunterladen |
| Gemma3-1B | SM8550 | 4 Bit pro Kanal | 1280 | 657 | herunterladen |
Sie müssen das Modell herunterladen, das Ihrem SoC entspricht. Unten sehen Sie ein Beispiel für einen Befehl, mit dem Sie den Hugging Face-Link abrufen können, über den das richtige Modell für den SoC Ihres Smartphones heruntergeladen werden kann. Sie müssen sich anmelden und das Formular bestätigen, um die Berechtigung zum Herunterladen der Datei zu erhalten. Achten Sie darauf, dass ein verbundenes Gerät vorhanden ist, auf das mit adb zugegriffen werden kann.
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"
Prüfen Sie, ob $SOC_MODEL in der Supporttabelle aufgeführt ist. Der generierte Link funktioniert nicht für nicht unterstützte Modelle. Es wird regelmäßig neue Unterstützung für NPUs hinzugefügt. Schau also später noch einmal nach, ob dein Gerät unterstützt wird.
Schritt 2:QAIRT-Bibliotheken herunterladen und extrahieren
Damit das Modell mit der Qualcomm-NPU ausgeführt werden kann, sind zugehörige Laufzeitbibliotheken auf dem Gerät erforderlich. Das QAIRT SDK kann über diesen Link heruntergeladen und die Datei extrahiert werden. Legen Sie die VariableQAIRT_ROOT (wird in späteren Schritten verwendet) so fest, dass sie auf den entzippten Ordner mit der Versionsnummer verweist, z. B.:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Schritt 3:LiteRT-LM-Laufzeit / Bibliotheken erstellen
Unter Linux entwickeln
Um das Binärprogramm für Android erstellen zu können, muss NDK r28b oder höher von https://developer.android.com/ndk/downloads#stable-downloads installiert werden. So gehen Sie vor:
- Laden Sie die Datei
zipvon https://developer.android.com/ndk/downloads#stable-downloads herunter. - Extrahieren Sie die Datei
zipan den gewünschten Speicherort (z. B./path/to/AndroidNDK/). - Lassen Sie
ANDROID_NDK_HOMEauf das NDK-Verzeichnis verweisen. Das sollte in etwa so aussehen:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Tipps: Achten Sie darauf, dass ANDROID_NDK_HOME auf das Verzeichnis verweist, das README.md enthält.
Versuchen Sie, die Binärdatei litert_lm_main zu erstellen:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Außerdem müssen wir die Dispatch-API-Bibliothek erstellen, damit die LiteRT-LM-Laufzeit mit der NPU interagieren kann:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Entwicklung unter macOS
Die Xcode-Befehlszeilentools enthalten clang. Führen Sie xcode-select --install aus, falls es noch nicht installiert ist.
Um das Binärprogramm für Android erstellen zu können, muss NDK r28b oder höher von https://developer.android.com/ndk/downloads#stable-downloads installiert werden. So gehen Sie vor:
- Laden Sie die Datei
.dmgvon https://developer.android.com/ndk/downloads#stable-downloads herunter. - Öffnen Sie die Datei
.dmgund verschieben Sie die DateiAndroidNDK*an den gewünschten Speicherort (z. B./path/to/AndroidNDK/). - Lassen Sie
ANDROID_NDK_HOMEauf das NDK-Verzeichnis verweisen. Das sollte in etwa so aussehen:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Tipps: Achten Sie darauf, dass ANDROID_NDK_HOME auf das Verzeichnis verweist, das README.md enthält.
Versuchen Sie, die Binärdatei litert_lm_main zu erstellen:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Außerdem müssen wir die Dispatch-API-Bibliothek erstellen, damit die LiteRT-LM-Laufzeit mit der NPU interagieren kann:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Schritt 4:Modell auf dem Gerät ausführen
Nachdem die Binärdatei erfolgreich erstellt wurde, können wir versuchen, das Modell auf dem Gerät auszuführen. Prüfen Sie, ob Sie Schreibzugriff aufDEVICE_FOLDER haben:
Damit wir das Binärprogramm auf Ihrem Android-Gerät ausführen können, müssen wir einige Assets/Binärdateien übertragen. Legen Sie zuerst Ihr DEVICE_FOLDER fest und achten Sie darauf, dass Sie Schreibzugriff darauf haben (normalerweise können Sie Elemente unter /data/local/tmp/ ablegen):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Übertragen Sie die Datei „.litertlm“ per Push. Tipp: Sie müssen diese Assets nur einmal übertragen.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Stelle die QAIRT-Bibliotheken bereit. Sie finden sie im entzippten Ordner in Schritt 2 $QAIRT_ROOT/lib/aarch64-android/. Die QAIRT_ROOT sollte die Versionsnummer enthalten, z.B. 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
Übertragen Sie die in Schritt 3 kompilierte Dispatch API und die Hauptbinärdatei per Push.
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
Jetzt können Sie die Binärdatei ausführen.
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
So führen Sie die LLMs auf der MediaTek-NPU aus:
Schritt 1:.litertlm-Modell herunterladen
Die LiteRT-LM-Laufzeit ist für die Verwendung mit Modellen im .litertlm-Format konzipiert.
In der folgenden Tabelle finden Sie kompatible Modelle, die Sie herunterladen können.
| Modell | SoC | Quantisierung | Kontextgröße | Modellgröße (MB) | Downloadlink |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 Bit pro Kanal | 1280 | 985 | herunterladen |
| Gemma3-1B | MT6991 | 4 Bit pro Kanal | 1280 | 986 | herunterladen |
Sie müssen das Modell herunterladen, das Ihrem SoC entspricht. Unten sehen Sie ein Beispiel für einen Befehl, mit dem Sie den Hugging Face-Link abrufen können, über den das richtige Modell für den SoC Ihres Smartphones heruntergeladen werden kann. Sie müssen sich anmelden und das Formular bestätigen, um die Berechtigung zum Herunterladen der Datei zu erhalten. Achten Sie darauf, dass ein verbundenes Gerät vorhanden ist, auf das mit adb zugegriffen werden kann.
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"
Prüfen Sie, ob $SOC_MODEL in der Supporttabelle aufgeführt ist. Der generierte Link funktioniert nicht für nicht unterstützte Modelle. Es wird regelmäßig neue Unterstützung für NPUs hinzugefügt. Schau also später noch einmal nach, ob dein Gerät unterstützt wird.
Schritt 2:LiteRT-LM-Laufzeit / Bibliotheken erstellen
Unter Linux entwickeln
Um das Binärprogramm für Android erstellen zu können, muss NDK r28b oder höher von https://developer.android.com/ndk/downloads#stable-downloads installiert werden. So gehen Sie vor:
- Laden Sie die Datei
zipvon https://developer.android.com/ndk/downloads#stable-downloads herunter. - Extrahieren Sie die Datei
zipan den gewünschten Speicherort (z. B./path/to/AndroidNDK/). - Lassen Sie
ANDROID_NDK_HOMEauf das NDK-Verzeichnis verweisen. Das sollte in etwa so aussehen:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Tipps: Achten Sie darauf, dass ANDROID_NDK_HOME auf das Verzeichnis verweist, das README.md enthält.
Versuchen Sie, die Binärdatei litert_lm_main zu erstellen:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Außerdem müssen wir die Dispatch-API-Bibliothek erstellen, damit die LiteRT-LM-Laufzeit mit der NPU interagieren kann:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Entwicklung unter macOS
Die Xcode-Befehlszeilentools enthalten clang. Führen Sie xcode-select --install aus, falls es noch nicht installiert ist.
Um das Binärprogramm für Android erstellen zu können, muss NDK r28b oder höher von https://developer.android.com/ndk/downloads#stable-downloads installiert werden. So gehen Sie vor:
- Laden Sie die Datei
.dmgvon https://developer.android.com/ndk/downloads#stable-downloads herunter. - Öffnen Sie die Datei
.dmgund verschieben Sie die DateiAndroidNDK*an den gewünschten Speicherort (z. B./path/to/AndroidNDK/). - Lassen Sie
ANDROID_NDK_HOMEauf das NDK-Verzeichnis verweisen. Das sollte in etwa so aussehen:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Tipps: Achten Sie darauf, dass ANDROID_NDK_HOME auf das Verzeichnis verweist, das README.md enthält.
Versuchen Sie, die Binärdatei litert_lm_main zu erstellen:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Außerdem müssen wir die Dispatch-API-Bibliothek erstellen, damit die LiteRT-LM-Laufzeit mit der NPU interagieren kann:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Schritt 3:Modell auf dem Gerät ausführen
Nachdem die Binärdatei erfolgreich erstellt wurde, können wir versuchen, das Modell auf dem Gerät auszuführen. Prüfen Sie, ob Sie Schreibzugriff aufDEVICE_FOLDER haben:
Damit wir das Binärprogramm auf Ihrem Android-Gerät ausführen können, müssen wir einige Assets/Binärdateien übertragen. Legen Sie zuerst Ihr DEVICE_FOLDER fest und achten Sie darauf, dass Sie Schreibzugriff darauf haben (normalerweise können Sie Elemente unter /data/local/tmp/ ablegen):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Übertragen Sie die Datei „.litertlm“ per Push. Tipp: Sie müssen diese Assets nur einmal übertragen.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Übertragen Sie die in Schritt 2 kompilierte Dispatch API und die Hauptbinärdatei per Push.
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
Jetzt können Sie die Binärdatei ausführen.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm