Ejecuta LLMs en la NPU con LiteRT-LM

Las unidades de procesamiento neuronal (NPU) ofrecen bloques de hardware especializados y optimizados para cargas de trabajo de aprendizaje profundo. Cada vez están más disponibles en los sistemas en chip (SoC) modernos, especialmente en los dispositivos móviles. Su alto rendimiento los hace ideales para ejecutar la inferencia de LLM.

LiteRT-LM es una biblioteca de C++ diseñada para ejecutar de manera eficiente canalizaciones de modelos de lenguaje en una amplia variedad de dispositivos, desde teléfonos celulares hasta sistemas integrados. Proporciona a los desarrolladores las herramientas para crear e implementar flujos de trabajo sofisticados de modelos de lenguaje, ahora con una integración perfecta de la NPU.

Proveedores de NPU

LiteRT-LM admite la ejecución de LLM con aceleración de NPU con los siguientes proveedores. Elige las instrucciones según el proveedor que quieras probar:

Inicio rápido

  1. Sigue los requisitos previos para configurar el entorno y el repositorio.
  2. Asegúrate de que adb esté instalado y de que haya un dispositivo conectado.
  3. Consulta la Guía de inicio rápido y la demostración de la línea de comandos de litert_lm_main.

Qualcomm AI Engine Direct

Paso 1: Descarga el modelo .litertlm

Descarga un archivo .litertlm que coincida con tu SoC (ejemplos a continuación). Puedes consultar el SoC de tu dispositivo:

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"
Modelo SoC Cuantización Tamaño del contexto Tamaño del modelo (MB) Descargar
Gemma3-1B SM8750 4 bits por canal 1280 658 descargar
Gemma3-1B SM8650 4 bits por canal 1280 658 descargar
Gemma3-1B SM8550 4 bits por canal 1280 657 descargar

Paso 2: Descarga y extrae las bibliotecas de QAIRT

Descarga el SDK de QAIRT, extráelo y configura QAIRT_ROOT:

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

Paso 3: Compila el entorno de ejecución o las bibliotecas de LiteRT-LM

Instala Android NDK r28b o una versión posterior y compila de la siguiente manera:

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

Paso 4: Ejecuta el modelo en el dispositivo

Configura la ruta de acceso del dispositivo y envía los recursos:

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

Ejecuta lo siguiente:

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

Descripción general de los pasos

El flujo de MediaTek refleja el de Qualcomm: usa un .litertlm compilado para tu SoC, incluye las bibliotecas de tiempo de ejecución de NeuroPilot, compila litert_lm_main, envía recursos y ejecuta con --device=mediatek_npu.