Выполнение LLM на NPU с использованием LiteRT-LM

Нейронные процессоры (NPU) представляют собой специализированные аппаратные блоки, оптимизированные для задач глубокого обучения. Они всё чаще используются в современных системах на кристалле (SoC), особенно на мобильных устройствах. Благодаря своей высокой производительности они отлично подходят для выполнения LLM-инференса.

LiteRT-LM — это библиотека C++, разработанная для эффективного запуска конвейеров языковых моделей на широком спектре устройств, от мобильных телефонов до встраиваемых систем. Она предоставляет разработчикам инструменты для создания и развертывания сложных рабочих процессов языковых моделей, теперь с бесшовной интеграцией с нейронными процессорами (NPU).

Поставщики НПУ

LiteRT-LM поддерживает запуск LLM с использованием NPU-ускорения от следующих поставщиков. Выберите инструкции в зависимости от того, какого поставщика вы хотите попробовать:

Быстрый старт

  1. Следуйте предварительным требованиям для настройки среды и репозитория.
  2. Убедитесь, что adb установлен и устройство подключено.
  3. См. Быстрый старт и демонстрацию командной строки litert_lm_main .

Qualcomm AI Engine Direct

Шаг 1: Загрузите модель .litertlm

Загрузите .litertlm -файл, соответствующий вашей SoC (примеры ниже). Вы можете запросить информацию о 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 Квантование Размер контекста Размер модели (МБ) Скачать
Джемма3-1Б SM8750 4 бита на канал 1280 658 скачать
Джемма3-1Б SM8650 4 бита на канал 1280 658 скачать
Джемма3-1Б 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 Flow зеркалирует Qualcomm: используйте .litertlm созданный для вашей SoC, включите библиотеки времени выполнения NeuroPilot, соберите litert_lm_main , отправьте ресурсы и запустите с --device=mediatek_npu .