使用 LiteRT-LM 在 NPU 上執行 LLM

神經處理單元 (NPU) 提供專為深度學習工作負載最佳化的專用硬體區塊。這類功能越來越常出現在現代系統單晶片 (SoC) 中,尤其是在行動裝置上。由於效能優異,因此非常適合執行 LLM 推論。

LiteRT-LM 是 C++ 程式庫,旨在於各種裝置 (從手機到嵌入式系統) 上有效執行語言模型管道。這項服務提供開發人員工具,可建立及部署複雜的語言模型工作流程,現在還能完美整合 NPU。

NPU 供應商

LiteRT-LM 支援使用 NPU 加速功能,透過下列供應商執行 LLM。請根據要試用的廠商選擇操作說明:

快速入門

  1. 請按照必要條件設定環境和存放區。
  2. 確認已安裝 adb 並連上裝置。
  3. 請參閱快速入門litert_lm_main 指令列示範

Qualcomm AI Engine Direct

步驟 1:下載 .litertlm 模型

下載與 SoC 相符的 .litertlm (範例如下)。你可以查詢裝置 SoC:

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"
型號 SoC 量化 脈絡長度 模型大小 (MB) 下載
Gemma3-1B SM8750 每個通道 4 位元 1280 658 下載
Gemma3-1B SM8650 每個通道 4 位元 1280 658 下載
Gemma3-1B SM8550 每個通道 4 位元 1280 657 下載

步驟 2:下載並解壓縮 QAIRT 程式庫

下載 QAIRT SDK、解壓縮,然後設定 QAIRT_ROOT

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

步驟 3:建構 LiteRT-LM 執行階段 / 程式庫

安裝 Android NDK r28b 以上版本並建構:

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

步驟 4:在裝置上執行模型

設定裝置路徑並推送資產:

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

執行作業:

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

步驟總覽

MediaTek 的流程與 Qualcomm 類似:使用為 SoC 建構的 .litertlm、加入 NeuroPilot 執行階段程式庫、建構 litert_lm_main、推送資產,然後使用 --device=mediatek_npu 執行。