Запускайте LLM с помощью LiteRT-LM.

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

Запуск LLM на ЦП и ГП

Подробные инструкции по кроссплатформенной разработке и аппаратному ускорению на CPU/GPU см. в репозитории LiteRT-LM на GitHub.

Запуск LLM на NPU

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

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

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

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

Для начала выполните действия, описанные в разделе «Предварительные требования» , чтобы настроить среду и репозиторий.

Кроме того, для взаимодействия с вашим устройством Android убедитесь, что вы правильно установили Android Debug Bridge и подключили устройство, к которому можно получить доступ с помощью adb .

Для получения более подробных инструкций ознакомьтесь с разделом «Быстрый старт» в репозитории LiteRT-LM и найдите дополнительную информацию о демонстрационном примере командной строки litert_lm_main .

Qualcomm AI Engine Direct

Последовательность действий для запуска LLM на Qualcomm NPU следующая:

Шаг 1: Загрузите модель .litertlm Среда выполнения LiteRT-LM предназначена для работы с моделями в формате .litertlm . Совместимые модели можно найти и загрузить в следующей таблице.

Модель SoC Квантование Размер контекста Размер модели (Мб) Ссылка для скачивания
Gemma3-1B SM8750 4 бита на канал 1280 658 скачать
Gemma3-1B SM8650 4 бита на канал 1280 658 скачать
Gemma3-1B SM8550 4 бита на канал 1280 657 скачать

Вам потребуется загрузить модель, соответствующую вашему SoC. Ниже приведен пример команды, которая поможет вам получить ссылку на Hugging Face для загрузки нужной модели SoC для вашего телефона (обратите внимание, что для получения разрешения на загрузку файла вам потребуется войти в систему и подтвердить форму). Убедитесь, что подключено устройство, доступное через adb .

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_MODEL указана в таблице поддержки. Сгенерированная ссылка не будет работать для неподдерживаемых моделей. Поддержка новых NPU регулярно добавляется, поэтому проверьте позже, поддерживается ли ваше устройство.

Шаг 2: Загрузите и распакуйте библиотеки QAIRT. Для запуска модели с использованием NPU Qualcomm требуются соответствующие библиотеки времени выполнения на устройстве. SDK QAIRT можно скачать по ссылке и распаковать файл. Установите переменную QAIRT_ROOT (она будет использоваться на последующих шагах), указав путь к распакованной папке, содержащей номер версии, например:

unzip <your_file.zip> -d ~/

QAIRT_ROOT=~/qairt/2.42.0.251225

Шаг 3: Сборка среды выполнения / библиотек LiteRT-LM

Разработка в Linux

Для сборки бинарного файла для Android необходимо установить NDK r28b или более позднюю версию с сайта https://developer.android.com/ndk/downloads#stable-downloads. Конкретные шаги следующие:

  • Загрузите zip файл по ссылке https://developer.android.com/ndk/downloads#stable-downloads.
  • Распакуйте zip файл в нужное вам место (например /path/to/AndroidNDK/ ).
  • Установите ANDROID_NDK_HOME так, чтобы она указывала на каталог NDK. Это должно выглядеть примерно так:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/

Совет: убедитесь, что переменная ANDROID_NDK_HOME указывает на каталог, в котором находится README.md .

После завершения настройки попробуйте собрать исполняемый файл litert_lm_main :

bazel build --config=android_arm64 //runtime/engine:litert_lm_main

Кроме того, нам следует собрать библиотеку API диспетчеризации, чтобы среда выполнения LiteRT-LM могла взаимодействовать с NPU:

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

Разработка в macOS

В состав инструментов командной строки Xcode входит clang. Если он не был установлен ранее, выполните команду xcode-select --install .

Для сборки бинарного файла для Android необходимо установить NDK r28b или более позднюю версию с сайта https://developer.android.com/ndk/downloads#stable-downloads. Конкретные шаги следующие:

  • Загрузите файл .dmg по ссылке https://developer.android.com/ndk/downloads#stable-downloads.
  • Откройте файл .dmg и переместите файл AndroidNDK* в нужное вам место (например /path/to/AndroidNDK/ ).
  • Установите ANDROID_NDK_HOME так, чтобы она указывала на каталог NDK. Это должно выглядеть примерно так:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/

Совет: убедитесь, что переменная ANDROID_NDK_HOME указывает на каталог, в котором находится README.md .

После завершения настройки попробуйте собрать исполняемый файл litert_lm_main :

bazel build --config=android_arm64 //runtime/engine:litert_lm_main

Кроме того, нам следует собрать библиотеку API диспетчеризации, чтобы среда выполнения LiteRT-LM могла взаимодействовать с NPU:

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

Шаг 4: Запустите модель на устройстве. После успешной сборки бинарного файла мы можем попробовать запустить модель на устройстве. Убедитесь, что у вас есть права на запись в папку DEVICE_FOLDER :

Для запуска исполняемого файла на вашем Android-устройстве нам необходимо загрузить несколько файлов/ресурсов. Сначала укажите папку DEVICE_FOLDER , убедитесь, что у вас есть права на запись в неё (обычно файлы можно размещать в /data/local/tmp/ ):

export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER

export MODEL_PATH=<path to your downloaded .litertlm >

Загрузите файл .litertlm. Совет: загружать эти ресурсы нужно только один раз.

adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm

Загрузите библиотеки QAIRT. Вы найдете их в распакованной папке на шаге 2 : $QAIRT_ROOT/lib/aarch64-android/ . Обратите внимание, что в переменной QAIRT_ROOT должен содержаться номер версии, например, 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

Загрузите API диспетчеризации и основной исполняемый файл, скомпилированный на шаге 3.

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

Теперь вы можете запустить исполняемый файл.

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

Для запуска LLM на NPU MediaTek необходимо выполнить следующие действия:

Шаг 1: Загрузите модель .litertlm Среда выполнения LiteRT-LM предназначена для работы с моделями в формате .litertlm . Совместимые модели можно найти и загрузить в следующей таблице.

Модель SoC Квантование Размер контекста Размер модели (Мб) Ссылка для скачивания
Gemma3-1B MT6989 4 бита на канал 1280 985 скачать
Gemma3-1B MT6991 4 бита на канал 1280 986 скачать

Вам потребуется загрузить модель, соответствующую вашему SoC. Ниже приведен пример команды, которая поможет вам получить ссылку на Hugging Face для загрузки нужной модели SoC для вашего телефона (обратите внимание, что для получения разрешения на загрузку файла вам потребуется войти в систему и подтвердить форму). Убедитесь, что подключено устройство, доступное через adb .

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_MODEL указана в таблице поддержки. Сгенерированная ссылка не будет работать для неподдерживаемых моделей. Поддержка новых NPU регулярно добавляется, поэтому проверьте позже, поддерживается ли ваше устройство.

Шаг 2: Сборка среды выполнения / библиотек LiteRT-LM

Разработка в Linux

Для сборки бинарного файла для Android необходимо установить NDK r28b или более позднюю версию с сайта https://developer.android.com/ndk/downloads#stable-downloads. Конкретные шаги следующие:

  • Загрузите zip файл по ссылке https://developer.android.com/ndk/downloads#stable-downloads.
  • Распакуйте zip файл в нужное вам место (например /path/to/AndroidNDK/ ).
  • Установите ANDROID_NDK_HOME так, чтобы она указывала на каталог NDK. Это должно выглядеть примерно так:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/

Совет: убедитесь, что переменная ANDROID_NDK_HOME указывает на каталог, в котором находится README.md .

После завершения настройки попробуйте собрать исполняемый файл litert_lm_main :

bazel build --config=android_arm64 //runtime/engine:litert_lm_main

Кроме того, нам следует собрать библиотеку API диспетчеризации, чтобы среда выполнения LiteRT-LM могла взаимодействовать с NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/mediatek/dispatch:dispatch_api_so

Разработка в macOS

В состав инструментов командной строки Xcode входит clang. Если он не был установлен ранее, выполните команду xcode-select --install .

Для сборки бинарного файла для Android необходимо установить NDK r28b или более позднюю версию с сайта https://developer.android.com/ndk/downloads#stable-downloads. Конкретные шаги следующие:

  • Загрузите файл .dmg по ссылке https://developer.android.com/ndk/downloads#stable-downloads.
  • Откройте файл .dmg и переместите файл AndroidNDK* в нужное вам место (например /path/to/AndroidNDK/ ).
  • Установите ANDROID_NDK_HOME так, чтобы она указывала на каталог NDK. Это должно выглядеть примерно так:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/

Совет: убедитесь, что переменная ANDROID_NDK_HOME указывает на каталог, в котором находится README.md .

После завершения настройки попробуйте собрать исполняемый файл litert_lm_main :

bazel build --config=android_arm64 //runtime/engine:litert_lm_main

Кроме того, нам следует собрать библиотеку API диспетчеризации, чтобы среда выполнения LiteRT-LM могла взаимодействовать с NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/mediatek/dispatch:dispatch_api_so

Шаг 3: Запустите модель на устройстве. После успешной сборки бинарного файла мы можем попробовать запустить модель на устройстве. Убедитесь, что у вас есть права на запись в папку DEVICE_FOLDER :

Для запуска исполняемого файла на вашем Android-устройстве нам необходимо загрузить несколько файлов/ресурсов. Сначала укажите папку DEVICE_FOLDER , убедитесь, что у вас есть права на запись в неё (обычно файлы можно размещать в /data/local/tmp/ ):

export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER

export MODEL_PATH=<path to your downloaded .litertlm >

Загрузите файл .litertlm. Совет: загружать эти ресурсы нужно только один раз.

adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm

Загрузите API диспетчеризации и основной исполняемый файл, скомпилированный на шаге 2.

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

Теперь вы можете запустить исполняемый файл.

adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
    $DEVICE_FOLDER/litert_lm_main \
    --backend=npu \
    --model_path=$DEVICE_FOLDER/model.litertlm