使用 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 运行。