LiteRT-LM to wieloplatformowa biblioteka zaprojektowana do wydajnego uruchamiania potoków modeli językowych na wielu różnych urządzeniach, od telefonów komórkowych po systemy wbudowane. Zapewnia deweloperom narzędzia do tworzenia i wdrażania zaawansowanych przepływów pracy z modelami językowymi, teraz z bezproblemową integracją z NPU.
Uruchamianie LLM na procesorze i GPU
Szczegółowe instrukcje dotyczące tworzenia aplikacji na różne platformy i akceleracji sprzętowej na procesorach CPU/GPU znajdziesz w repozytorium GitHub LiteRT-LM.
Uruchamianie modeli LLM na NPU
Jednostki Neural Processing Unit (NPU) to specjalistyczne bloki sprzętowe zoptymalizowane pod kątem zadań związanych z uczeniem głębokim. Są one coraz częściej dostępne w nowoczesnych systemach na chipie (SoC), zwłaszcza na urządzeniach mobilnych. Dzięki wysokiej wydajności doskonale nadają się do przeprowadzania wnioskowania LLM.
Dostawcy NPU
LiteRT-LM obsługuje uruchamianie LLM z użyciem akceleracji NPU w przypadku tych dostawców: Wybierz instrukcje w zależności od tego, którego dostawcę chcesz wypróbować:
Szybki start
Na początek wykonaj instrukcje w sekcji Wymagania wstępne, aby skonfigurować środowisko i repozytorium.
Aby móc korzystać z urządzenia z Androidem, musisz też prawidłowo zainstalować Android Debug Bridge i mieć podłączone urządzenie, do którego można uzyskać dostęp za pomocą adb.
Szczegółowe instrukcje znajdziesz w sekcji Szybki start w repozytorium LiteRT-LM. Więcej informacji o litert_lm_main
demonstracji wiersza poleceń znajdziesz w tym repozytorium.
Qualcomm AI Engine Direct
Aby uruchomić duże modele językowe na procesorze NPU firmy Qualcomm, wykonaj te czynności:
Krok 1.
.litertlmmodel.
Środowisko wykonawcze LiteRT-LM jest przeznaczone do pracy z modelami w .litertlmformacie.
W tabeli poniżej znajdziesz i pobierzesz zgodne modele.
| Model | SOC | Kwantyzacja | Rozmiar kontekstu | Rozmiar modelu (MB) | Link do pobrania |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4-bitowy na kanał | 1280 | 658 | download |
| Gemma3-1B | SM8650 | 4-bitowy na kanał | 1280 | 658 | download |
| Gemma3-1B | SM8550 | 4-bitowy na kanał | 1280 | 657 | download |
Musisz pobrać model odpowiedni dla Twojego układu SoC.
Poniżej znajdziesz przykładowe polecenie, które pomoże Ci uzyskać link do Hugging Face, z którego możesz pobrać odpowiedni model dla układu SoC w Twoim telefonie (pamiętaj, że aby mieć uprawnienia do pobrania pliku, musisz się zalogować i potwierdzić formularz). Upewnij się, że jest połączone urządzenie, do którego można uzyskać dostęp za pomocą 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"
Sprawdź, czy $SOC_MODEL znajduje się w tabeli obsługiwanych urządzeń. Wygenerowany link nie będzie działać w przypadku nieobsługiwanych modeli. Regularnie dodajemy obsługę nowych NPU, więc sprawdź ponownie później, czy Twoje urządzenie jest obsługiwane.
Krok 2. Pobierz i wyodrębnij biblioteki QAIRT
Aby uruchomić model za pomocą procesora NPU firmy Qualcomm, na urządzeniu muszą być dostępne powiązane biblioteki środowiska wykonawczego. Pakiet SDK QAIRT można pobrać z tego linku i wyodrębnić plik. Ustaw zmiennąQAIRT_ROOT (użyjemy jej w późniejszych krokach), aby wskazywała rozpakowany folder zawierający numer wersji, np.:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Krok 3. Skompiluj środowisko wykonawcze / biblioteki LiteRT-LM
Programowanie w systemie Linux
Aby móc skompilować plik binarny na Androida, musisz zainstalować NDK w wersji r28b lub nowszej ze strony https://developer.android.com/ndk/downloads#stable-downloads. Aby to zrobić:
- Pobierz plik
zipze strony https://developer.android.com/ndk/downloads#stable-downloads. - Wyodrębnij plik
zipdo wybranej lokalizacji (np./path/to/AndroidNDK/). - Ustaw
ANDROID_NDK_HOMEtak, aby wskazywał katalog NDK. Powinien on wyglądać mniej więcej tak:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Wskazówki: upewnij się, że ANDROID_NDK_HOME wskazuje katalog, w którym znajduje się
README.md.
Po skonfigurowaniu spróbuj skompilować plik binarny litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Dodatkowo powinniśmy utworzyć bibliotekę interfejsu API wysyłania, aby środowisko wykonawcze LiteRT-LM mogło wchodzić w interakcje z NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Tworzenie aplikacji w systemie macOS
Narzędzia wiersza poleceń Xcode zawierają kompilator clang. Uruchom xcode-select --install, jeśli nie jest jeszcze zainstalowany.
Aby móc skompilować plik binarny na Androida, musisz zainstalować NDK w wersji r28b lub nowszej ze strony https://developer.android.com/ndk/downloads#stable-downloads. Aby to zrobić:
- Pobierz plik
.dmgze strony https://developer.android.com/ndk/downloads#stable-downloads. - Otwórz plik
.dmgi przenieś plikAndroidNDK*do wybranej lokalizacji (np./path/to/AndroidNDK/). - Ustaw
ANDROID_NDK_HOMEtak, aby wskazywał katalog NDK. Powinien on wyglądać mniej więcej tak:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Wskazówki: upewnij się, że ANDROID_NDK_HOME wskazuje katalog, w którym znajduje się
README.md.
Po skonfigurowaniu spróbuj skompilować plik binarny litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Dodatkowo powinniśmy utworzyć bibliotekę interfejsu API wysyłania, aby środowisko wykonawcze LiteRT-LM mogło wchodzić w interakcje z NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Krok 4. Uruchom model na urządzeniu
Po pomyślnym skompilowaniu pliku binarnego możemy spróbować uruchomić model na urządzeniu. Sprawdź, czy masz uprawnienia do zapisu w kataloguDEVICE_FOLDER:
Aby uruchomić plik binarny na urządzeniu z Androidem, musimy przesłać kilka zasobów lub plików binarnych. Najpierw ustaw DEVICE_FOLDER i upewnij się, że masz do niego uprawnienia do zapisu (zwykle możesz umieszczać elementy w /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Prześlij plik .litertlm. Wskazówka: wystarczy przesłać te komponenty tylko raz.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Prześlij biblioteki QAIRT. Znajdziesz je w rozpakowanym folderze w kroku 2 $QAIRT_ROOT/lib/aarch64-android/. Pamiętaj, że QAIRT_ROOT powinno zawierać numer wersji, np. 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
Prześlij interfejs API wysyłania i główny plik binarny skompilowany w kroku 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
Teraz możesz uruchomić plik binarny.
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
Aby uruchomić duże modele językowe na procesorze NPU firmy MediaTek:
Krok 1.
.litertlmmodel. Środowisko wykonawcze LiteRT-LM jest przeznaczone do pracy z modelami w .litertlmformacie.
W tabeli poniżej znajdziesz i pobierzesz zgodne modele.
| Model | SOC | Kwantyzacja | Rozmiar kontekstu | Rozmiar modelu (MB) | Link do pobrania |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4-bitowy na kanał | 1280 | 985 | download |
| Gemma3-1B | MT6991 | 4-bitowy na kanał | 1280 | 986 | download |
Musisz pobrać model odpowiedni dla Twojego układu SoC.
Poniżej znajdziesz przykładowe polecenie, które pomoże Ci uzyskać link do Hugging Face, z którego możesz pobrać odpowiedni model dla układu SoC w Twoim telefonie (pamiętaj, że aby mieć uprawnienia do pobrania pliku, musisz się zalogować i potwierdzić formularz). Upewnij się, że jest połączone urządzenie, do którego można uzyskać dostęp za pomocą 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"
Sprawdź, czy $SOC_MODEL znajduje się w tabeli obsługiwanych urządzeń. Wygenerowany link nie będzie działać w przypadku nieobsługiwanych modeli. Regularnie dodajemy obsługę nowych NPU, więc sprawdź ponownie później, czy Twoje urządzenie jest obsługiwane.
Krok 2.
Programowanie w systemie Linux
Aby móc skompilować plik binarny na Androida, musisz zainstalować NDK w wersji r28b lub nowszej ze strony https://developer.android.com/ndk/downloads#stable-downloads. Aby to zrobić:
- Pobierz plik
zipze strony https://developer.android.com/ndk/downloads#stable-downloads. - Wyodrębnij plik
zipdo wybranej lokalizacji (np./path/to/AndroidNDK/). - Ustaw
ANDROID_NDK_HOMEtak, aby wskazywał katalog NDK. Powinien on wyglądać mniej więcej tak:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Wskazówki: upewnij się, że ANDROID_NDK_HOME wskazuje katalog, w którym znajduje się
README.md.
Po skonfigurowaniu spróbuj skompilować plik binarny litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Dodatkowo powinniśmy utworzyć bibliotekę interfejsu API wysyłania, aby środowisko wykonawcze LiteRT-LM mogło wchodzić w interakcje z NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Tworzenie aplikacji w systemie macOS
Narzędzia wiersza poleceń Xcode zawierają kompilator clang. Uruchom xcode-select --install, jeśli nie jest jeszcze zainstalowany.
Aby móc skompilować plik binarny na Androida, musisz zainstalować NDK w wersji r28b lub nowszej ze strony https://developer.android.com/ndk/downloads#stable-downloads. Aby to zrobić:
- Pobierz plik
.dmgze strony https://developer.android.com/ndk/downloads#stable-downloads. - Otwórz plik
.dmgi przenieś plikAndroidNDK*do wybranej lokalizacji (np./path/to/AndroidNDK/). - Ustaw
ANDROID_NDK_HOMEtak, aby wskazywał katalog NDK. Powinien on wyglądać mniej więcej tak:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Wskazówki: upewnij się, że ANDROID_NDK_HOME wskazuje katalog, w którym znajduje się
README.md.
Po skonfigurowaniu spróbuj skompilować plik binarny litert_lm_main:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Dodatkowo powinniśmy utworzyć bibliotekę interfejsu API wysyłania, aby środowisko wykonawcze LiteRT-LM mogło wchodzić w interakcje z NPU:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Krok 3. Uruchom model na urządzeniu
Po pomyślnym skompilowaniu pliku binarnego możemy spróbować uruchomić model na urządzeniu. Sprawdź, czy masz uprawnienia do zapisu w kataloguDEVICE_FOLDER:
Aby uruchomić plik binarny na urządzeniu z Androidem, musimy przesłać kilka zasobów lub plików binarnych. Najpierw ustaw DEVICE_FOLDER i upewnij się, że masz do niego uprawnienia do zapisu (zwykle możesz umieszczać elementy w /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Prześlij plik .litertlm. Wskazówka: wystarczy przesłać te komponenty tylko raz.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Prześlij interfejs API wysyłania i główny plik binarny skompilowany w kroku 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
Teraz możesz uruchomić plik binarny.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm