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: Загрузите модель
Среда выполнения LiteRT-LM предназначена для работы с моделями в формате .litertlm.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
Для сборки бинарного файла для 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: Загрузите модель
Среда выполнения LiteRT-LM предназначена для работы с моделями в формате .litertlm.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
Для сборки бинарного файла для 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