LiteRT-LM es una biblioteca multiplataforma 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.
Ejecuta LLMs en CPU y GPU
Consulta el repositorio de GitHub de LiteRT-LM para obtener instrucciones detalladas sobre el desarrollo multiplataforma y la aceleración por hardware de CPU/GPU.
Ejecuta LLMs en la NPU
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 modernos en un chip (SoC), especialmente en dispositivos móviles. Su alto rendimiento los hace ideales para ejecutar la inferencia de LLM.
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
Para comenzar, primero sigue las instrucciones de los requisitos previos para configurar el entorno y el repositorio.
Además, para poder interactuar con tu dispositivo Android, asegúrate de haber instalado correctamente Android Debug Bridge y de tener un dispositivo conectado al que se pueda acceder con adb.
Para obtener instrucciones más detalladas, consulta la sección de inicio rápido en el repositorio de LiteRT-LM y obtén más información sobre la litert_lm_main
demostración de la línea de comandos.
Qualcomm AI Engine Direct
Los pasos para ejecutar los LLM en la NPU de Qualcomm son los siguientes:
Paso 1: Descarga el modelo .litertlm
El tiempo de ejecución de LiteRT-LM está diseñado para funcionar con modelos en formato .litertlm.
En la siguiente tabla, puedes encontrar y descargar modelos compatibles.
| Modelo | SoC | Cuantización | Tamaño del contexto | Tamaño del modelo (MB) | Vínculo de descarga |
|---|---|---|---|---|---|
| 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 |
Deberás descargar el modelo que corresponda a tu SoC. A continuación, se muestra un ejemplo de comando que puede ayudarte a obtener el vínculo de Hugging Face con el que puedes descargar el modelo correcto para el SoC de tu teléfono (ten en cuenta que deberás acceder y confirmar el formulario para tener permiso para descargar el archivo). Debes asegurarte de que haya un dispositivo conectado al que se pueda acceder con 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"
Verifica que $SOC_MODEL aparezca en la tabla de compatibilidad. El vínculo generado no funcionará para los modelos no compatibles. Se agrega compatibilidad con NPUs nuevas con regularidad, así que vuelve a consultar más adelante para ver si tu dispositivo es compatible.
Paso 2: Descarga y extrae las bibliotecas de QAIRT
Para ejecutar el modelo con la NPU de Qualcomm, se requieren bibliotecas de tiempo de ejecución asociadas en el dispositivo. Se puede descargar el SDK de QAIRT desde este vínculo y extraer el archivo. Configura la variableQAIRT_ROOT (la usarás en pasos posteriores) para que apunte a la carpeta descomprimida que contiene el número de versión, por ejemplo:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Paso 3: Compila el entorno de ejecución o las bibliotecas de LiteRT-LM
Desarrolla en Linux
Para poder compilar el archivo binario para Android, se debe instalar el NDK r28b o una versión posterior desde https://developer.android.com/ndk/downloads#stable-downloads. Estos son los pasos específicos:
- Descarga el archivo
zipdesde https://developer.android.com/ndk/downloads#stable-downloads. - Extrae el archivo
zipa la ubicación que prefieras (por ejemplo,/path/to/AndroidNDK/). - Haz que
ANDROID_NDK_HOMEapunte al directorio del NDK. Debería verse de la siguiente manera:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Sugerencias: Asegúrate de que tu ANDROID_NDK_HOME apunte al directorio que contiene README.md.
Con la configuración, intenta compilar el objeto binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Además, debemos compilar la biblioteca de la API de envío para que el tiempo de ejecución de LiteRT-LM interactúe con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Desarrolla en macOS
Las herramientas de línea de comandos de Xcode incluyen clang. Ejecuta xcode-select --install si no lo instalaste antes.
Para poder compilar el archivo binario para Android, se debe instalar el NDK r28b o una versión posterior desde https://developer.android.com/ndk/downloads#stable-downloads. Estos son los pasos específicos:
- Descarga el archivo
.dmgdesde https://developer.android.com/ndk/downloads#stable-downloads. - Abre el archivo
.dmgy mueve el archivoAndroidNDK*a la ubicación que prefieras (por ejemplo,/path/to/AndroidNDK/). - Haz que
ANDROID_NDK_HOMEapunte al directorio del NDK. Debería verse de la siguiente manera:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Sugerencias: Asegúrate de que tu ANDROID_NDK_HOME apunte al directorio que contiene README.md.
Con la configuración, intenta compilar el objeto binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Además, debemos compilar la biblioteca de la API de envío para que el tiempo de ejecución de LiteRT-LM interactúe con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Paso 4: Ejecuta el modelo en el dispositivo
Después de que se compile correctamente el objeto binario, podemos intentar ejecutar el modelo en el dispositivo. Asegúrate de tener acceso de escritura aDEVICE_FOLDER:
Para ejecutar el archivo binario en tu dispositivo Android, debemos transferir algunos recursos o archivos binarios. Primero, configura tu DEVICE_FOLDER y asegúrate de tener acceso de escritura a él (por lo general, puedes colocar elementos en /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Envía el archivo .litertlm. Sugerencia: Solo debes enviar esos recursos una vez.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Envía las bibliotecas de QAIRT. Puedes encontrarlos en la carpeta descomprimida en el paso 2 $QAIRT_ROOT/lib/aarch64-android/. Ten en cuenta que QAIRT_ROOT debe contener el número de versión, p.ej., 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
Envía la API de envío y el archivo binario principal compilados en el paso 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
Ahora puedes ejecutar el objeto binario.
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
Los pasos para ejecutar los LLM en la NPU de MediaTek son los siguientes:
Paso 1: Descarga el modelo .litertlm
El tiempo de ejecución de LiteRT-LM está diseñado para funcionar con modelos en formato .litertlm.
En la siguiente tabla, puedes encontrar y descargar modelos compatibles.
| Modelo | SoC | Cuantización | Tamaño del contexto | Tamaño del modelo (MB) | Vínculo de descarga |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 bits por canal | 1280 | 985 | descargar |
| Gemma3-1B | MT6991 | 4 bits por canal | 1280 | 986 | descargar |
Deberás descargar el modelo que corresponda a tu SoC. A continuación, se muestra un ejemplo de comando que puede ayudarte a obtener el vínculo de Hugging Face con el que puedes descargar el modelo correcto para el SoC de tu teléfono (ten en cuenta que deberás acceder y confirmar el formulario para tener permiso para descargar el archivo). Debes asegurarte de que haya un dispositivo conectado al que se pueda acceder con 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"
Verifica que $SOC_MODEL aparezca en la tabla de compatibilidad. El vínculo generado no funcionará para los modelos no compatibles. Se agrega compatibilidad con NPUs nuevas con regularidad, así que vuelve a consultar más adelante para ver si tu dispositivo es compatible.
Paso 2:Compila el entorno de ejecución o las bibliotecas de LiteRT-LM
Desarrolla en Linux
Para poder compilar el archivo binario para Android, se debe instalar el NDK r28b o una versión posterior desde https://developer.android.com/ndk/downloads#stable-downloads. Estos son los pasos específicos:
- Descarga el archivo
zipdesde https://developer.android.com/ndk/downloads#stable-downloads. - Extrae el archivo
zipa la ubicación que prefieras (por ejemplo,/path/to/AndroidNDK/). - Haz que
ANDROID_NDK_HOMEapunte al directorio del NDK. Debería verse de la siguiente manera:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Sugerencias: Asegúrate de que tu ANDROID_NDK_HOME apunte al directorio que contiene README.md.
Con la configuración, intenta compilar el objeto binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Además, debemos compilar la biblioteca de la API de envío para que el tiempo de ejecución de LiteRT-LM interactúe con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Desarrolla en macOS
Las herramientas de línea de comandos de Xcode incluyen clang. Ejecuta xcode-select --install si no lo instalaste antes.
Para poder compilar el archivo binario para Android, se debe instalar el NDK r28b o una versión posterior desde https://developer.android.com/ndk/downloads#stable-downloads. Estos son los pasos específicos:
- Descarga el archivo
.dmgdesde https://developer.android.com/ndk/downloads#stable-downloads. - Abre el archivo
.dmgy mueve el archivoAndroidNDK*a la ubicación que prefieras (por ejemplo,/path/to/AndroidNDK/). - Haz que
ANDROID_NDK_HOMEapunte al directorio del NDK. Debería verse de la siguiente manera:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Sugerencias: Asegúrate de que tu ANDROID_NDK_HOME apunte al directorio que contiene README.md.
Con la configuración, intenta compilar el objeto binario litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Además, debemos compilar la biblioteca de la API de envío para que el tiempo de ejecución de LiteRT-LM interactúe con la NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Paso 3: Ejecuta el modelo en el dispositivo
Después de que se compile correctamente el objeto binario, podemos intentar ejecutar el modelo en el dispositivo. Asegúrate de tener acceso de escritura aDEVICE_FOLDER:
Para ejecutar el archivo binario en tu dispositivo Android, debemos transferir algunos recursos o archivos binarios. Primero, configura tu DEVICE_FOLDER y asegúrate de tener acceso de escritura a él (por lo general, puedes colocar elementos en /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Envía el archivo .litertlm. Sugerencia: Solo debes enviar esos recursos una vez.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Envía la API de envío y el archivo binario principal compilado en el paso 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
Ahora puedes ejecutar el objeto binario.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm