LLMs auf NPU mit LiteRT-LM 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.

LiteRT-LM ist eine C++-Bibliothek, die entwickelt wurde, um Sprachmodell-Pipelines 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.

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

  1. Folgen Sie der Anleitung unter Voraussetzungen, um die Umgebung und das Repository einzurichten.
  2. Prüfen Sie, ob adb installiert und ein Gerät verbunden ist.
  3. Weitere Informationen finden Sie unter Schnelleinstieg und in der litert_lm_main-Befehlszeilendemo.

Qualcomm AI Engine Direct

Schritt 1:.litertlm-Modell herunterladen

Laden Sie ein .litertlm herunter, das zu Ihrem SoC passt (siehe Beispiele unten). Sie können den SoC Ihres Geräts so abfragen:

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"
Modell SoC Quantisierung Kontextgröße Modellgröße (MB) Herunterladen
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

Schritt 2:QAIRT-Bibliotheken herunterladen und extrahieren

Laden Sie das QAIRT SDK herunter, entpacken Sie es und legen Sie QAIRT_ROOT fest:

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

Schritt 3:LiteRT-LM-Laufzeit / Bibliotheken erstellen

Installieren Sie Android NDK r28b+ und führen Sie den Build aus:

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

Schritt 4:Modell auf dem Gerät ausführen

Gerätepfad festlegen und Assets übertragen:

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

Ausführen:

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

Schritte – Übersicht

Der MediaTek-Ablauf ähnelt dem von Qualcomm: Verwenden Sie ein .litertlm, das für Ihren SoC entwickelt wurde, fügen Sie NeuroPilot-Laufzeitbibliotheken ein, erstellen Sie litert_lm_main, übertragen Sie Assets und führen Sie --device=mediatek_npu aus.