O LiteRT-LM é uma biblioteca multiplataforma projetada para executar com eficiência pipelines de modelos de linguagem em uma ampla variedade de dispositivos, desde smartphones até sistemas incorporados. Ele oferece aos desenvolvedores as ferramentas para criar e implantar fluxos de trabalho sofisticados de modelos de linguagem, agora com integração perfeita da NPU.
Executar LLMs em CPUs e GPUs
Consulte o repositório do GitHub LiteRT-LM para instruções detalhadas sobre desenvolvimento multiplataforma e aceleração de hardware de CPU/GPU.
Executar LLMs na NPU
As Unidades de Processamento Neural (NPUs) oferecem blocos de hardware especializados otimizados para cargas de trabalho de aprendizado profundo. Eles estão cada vez mais disponíveis em sistemas modernos em um chip (SoCs), especialmente em dispositivos móveis. O alto desempenho delas as torna ideais para executar inferência de LLM.
Fornecedores de NPU
O LiteRT-LM é compatível com a execução de LLMs usando aceleração de NPU com os seguintes fornecedores. Escolha as instruções de acordo com o fornecedor que você quer testar:
- Qualcomm AI Engine Direct (em inglês)
- MediaTek NeuroPilot
Início rápido
Para começar, siga as instruções de Pré-requisitos para configurar o ambiente e o repositório.
Além disso, para interagir com seu dispositivo Android, confira se você instalou corretamente o Android Debug Bridge e se tem um dispositivo conectado que pode ser acessado usando adb.
Para mais detalhes, consulte a seção
Início rápido
no repositório LiteRT-LM
e encontre mais informações sobre a litert_lm_main
demonstração da linha de comando.
Qualcomm AI Engine Direct
As etapas para executar os LLMs na NPU da Qualcomm são as seguintes:
Etapa 1:faça o download do modelo .litertlm
O ambiente de execução LiteRT-LM foi projetado para funcionar com modelos no formato .litertlm.
Encontre e faça o download de modelos compatíveis na tabela a seguir.
| Modelo | SoC | Quantização | Tamanho do contexto | Tamanho do modelo (MB) | Link de download |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4 bits por canal | 1280 | 658 | download |
| Gemma3-1B | SM8650 | 4 bits por canal | 1280 | 658 | download |
| Gemma3-1B | SM8550 | 4 bits por canal | 1280 | 657 | download |
Você precisa baixar o modelo que corresponde ao seu SoC.
Confira um exemplo de comando que pode ajudar você a acessar o link do Hugging Face que
pode baixar o modelo correto para o SoC do seu smartphone. Faça login e aceite o formulário para ter permissão de baixar
o arquivo. Verifique se há um dispositivo conectado que pode
ser acessado usando o 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"
Verifique se o $SOC_MODEL está listado na tabela de suporte. O link gerado não vai funcionar para modelos sem suporte. O suporte para novas NPUs é adicionado regularmente. Confira mais tarde para saber se seu dispositivo é compatível.
Etapa 2:faça o download e extraia as bibliotecas do QAIRT
Para executar o modelo usando a NPU da Qualcomm, são necessárias bibliotecas de tempo de execução associadas no dispositivo. É possível fazer o download do SDK do QAIRT neste link e extrair o arquivo. Defina a variávelQAIRT_ROOT (será usada em etapas posteriores) para apontar para a pasta descompactada que contém o número da versão. Por exemplo:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Etapa 3:crie o ambiente de execução / bibliotecas do LiteRT-LM
Desenvolver no Linux
Para criar o binário para Android, é necessário instalar o NDK r28b ou mais recente em https://developer.android.com/ndk/downloads#stable-downloads. As etapas específicas são:
- Faça o download do arquivo
zipem https://developer.android.com/ndk/downloads#stable-downloads. - Extraia o arquivo
zippara o local de sua preferência (por exemplo,/path/to/AndroidNDK/). - Faça com que
ANDROID_NDK_HOMEaponte para o diretório do NDK. Ele vai ser algo assim:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Dicas: verifique se o ANDROID_NDK_HOME aponta para o diretório que tem
README.md.
Com a configuração feita, tente criar o binário litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Além disso, precisamos criar a biblioteca de API de envio para que o tempo de execução do LiteRT-LM interaja com a NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Desenvolver no macOS
As ferramentas de linha de comando do Xcode incluem o clang. Execute xcode-select --install se ele não tiver sido instalado antes.
Para criar o binário para Android, é necessário instalar o NDK r28b ou mais recente em https://developer.android.com/ndk/downloads#stable-downloads. As etapas específicas são:
- Faça o download do arquivo
.dmgem https://developer.android.com/ndk/downloads#stable-downloads. - Abra o arquivo
.dmge mova o arquivoAndroidNDK*para o local preferido (por exemplo,/path/to/AndroidNDK/). - Faça com que
ANDROID_NDK_HOMEaponte para o diretório do NDK. Ele vai ser algo assim:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Dicas: verifique se o ANDROID_NDK_HOME aponta para o diretório que tem
README.md.
Com a configuração feita, tente criar o binário litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Além disso, precisamos criar a biblioteca de API de envio para que o tempo de execução do LiteRT-LM interaja com a NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Etapa 4:execute o modelo no dispositivo
Depois que o binário for criado, tente executar o modelo no dispositivo. Verifique se você tem acesso de gravação aoDEVICE_FOLDER:
Para executar o binário no seu dispositivo Android, precisamos enviar alguns recursos
/ binários. Primeiro, defina seu DEVICE_FOLDER e verifique se você tem acesso de gravação a ele. Normalmente, é possível colocar itens em /data/local/tmp/:
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Envie o arquivo .litertlm. Dica: você só precisa enviar esses recursos uma vez.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Envie as bibliotecas do QAIRT. Eles estão localizados na pasta descompactada em
Etapa 2 $QAIRT_ROOT/lib/aarch64-android/. O QAIRT_ROOT precisa
conter o número da versão, por exemplo, 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
Envie a API de envio e o binário principal compilado na etapa 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
Agora, você pode executar o binário.
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
As etapas para executar os LLMs na NPU da MediaTek são as seguintes:
Etapa 1:faça o download do modelo .litertlm
O ambiente de execução LiteRT-LM foi projetado para funcionar com modelos no formato .litertlm.
Encontre e faça o download de modelos compatíveis na tabela a seguir.
| Modelo | SoC | Quantização | Tamanho do contexto | Tamanho do modelo (MB) | Link de download |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 bits por canal | 1280 | 985 | download |
| Gemma3-1B | MT6991 | 4 bits por canal | 1280 | 986 | download |
Você precisa baixar o modelo que corresponde ao seu SoC.
Confira um exemplo de comando que pode ajudar você a acessar o link do Hugging Face que
pode baixar o modelo correto para o SoC do seu smartphone. Faça login e aceite o formulário para ter permissão de baixar
o arquivo. Verifique se há um dispositivo conectado que pode
ser acessado usando o 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"
Verifique se o $SOC_MODEL está listado na tabela de suporte. O link gerado não vai funcionar para modelos sem suporte. O suporte para novas NPUs é adicionado regularmente. Confira mais tarde para saber se seu dispositivo é compatível.
Etapa 2:crie o ambiente de execução / bibliotecas do LiteRT-LM
Desenvolver no Linux
Para criar o binário para Android, é necessário instalar o NDK r28b ou mais recente em https://developer.android.com/ndk/downloads#stable-downloads. As etapas específicas são:
- Faça o download do arquivo
zipem https://developer.android.com/ndk/downloads#stable-downloads. - Extraia o arquivo
zippara o local de sua preferência (por exemplo,/path/to/AndroidNDK/). - Faça com que
ANDROID_NDK_HOMEaponte para o diretório do NDK. Ele vai ser algo assim:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Dicas: verifique se o ANDROID_NDK_HOME aponta para o diretório que tem
README.md.
Com a configuração feita, tente criar o binário litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Além disso, precisamos criar a biblioteca de API de envio para que o tempo de execução do LiteRT-LM interaja com a NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Desenvolver no macOS
As ferramentas de linha de comando do Xcode incluem o clang. Execute xcode-select --install se ele não tiver sido instalado antes.
Para criar o binário para Android, é necessário instalar o NDK r28b ou mais recente em https://developer.android.com/ndk/downloads#stable-downloads. As etapas específicas são:
- Faça o download do arquivo
.dmgem https://developer.android.com/ndk/downloads#stable-downloads. - Abra o arquivo
.dmge mova o arquivoAndroidNDK*para o local preferido (por exemplo,/path/to/AndroidNDK/). - Faça com que
ANDROID_NDK_HOMEaponte para o diretório do NDK. Ele vai ser algo assim:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Dicas: verifique se o ANDROID_NDK_HOME aponta para o diretório que tem
README.md.
Com a configuração feita, tente criar o binário litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Além disso, precisamos criar a biblioteca de API de envio para que o tempo de execução do LiteRT-LM interaja com a NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Etapa 3:execute o modelo no dispositivo
Depois que o binário for criado, tente executar o modelo no dispositivo. Verifique se você tem acesso de gravação aoDEVICE_FOLDER:
Para executar o binário no seu dispositivo Android, precisamos enviar alguns recursos
/ binários. Primeiro, defina seu DEVICE_FOLDER e verifique se você tem acesso de gravação a ele. Normalmente, é possível colocar itens em /data/local/tmp/:
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Envie o arquivo .litertlm. Dica: você só precisa enviar esses recursos uma vez.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Envie a API de envio e o binário principal compilado na etapa 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
Agora, você pode executar o binário.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm