LiteRT-LM është një bibliotekë ndërplatformëshe e projektuar për të drejtuar në mënyrë efikase tubacionet e modeleve gjuhësore në një gamë të gjerë pajisjesh, nga telefonat celularë te sistemet e integruara. Ajo u ofron zhvilluesve mjetet për të krijuar dhe vendosur rrjedha pune të sofistikuara të modeleve gjuhësore, tani me integrim të përsosur të NPU-së.
Ekzekutoni LLM në CPU dhe GPU
Shihni repozitorin LiteRT-LM GitHub për udhëzime të hollësishme mbi zhvillimin ndërplatformor dhe përshpejtimin e harduerit CPU/GPU.
Ekzekutoni LLM në NPU
Njësitë e Përpunimit Neural (NPU) ofrojnë blloqe harduerike të specializuara të optimizuara për ngarkesa pune të të mësuarit të thellë. Ato janë gjithnjë e më të disponueshme në sistemet moderne në një çip (SoC), veçanërisht në pajisjet mobile. Natyra e tyre me performancë të lartë i bën ato shumë të përshtatshme për ekzekutimin e inferencës LLM.
Shitësit e NPU-së
LiteRT-LM mbështet ekzekutimin e LLM-ve duke përdorur përshpejtimin e NPU-së me shitësit e mëposhtëm. Zgjidhni udhëzimet në varësi të shitësit që dëshironi të provoni:
Fillimi i shpejtë
Për të filluar, së pari ndiqni udhëzimet e Parakushteve për të konfiguruar mjedisin dhe depon.
Gjithashtu, për të qenë në gjendje të bashkëveproni me pajisjen tuaj Android, sigurohuni që e keni instaluar siç duhet Android Debug Bridge dhe keni një pajisje të lidhur që mund të aksesohet duke përdorur adb .
Për më shumë udhëzime të hollësishme, shikoni seksionin " Fillimi i Shpejtë" në repozitorin LiteRT-LM dhe gjeni më shumë informacion rreth demos së linjës së komandës litert_lm_main .
Qualcomm AI Engine Direct
Hapat për të ekzekutuar LLM-të në Qualcomm NPU janë si më poshtë:
Hapi 1: Shkarkoni modelin
Koha e ekzekutimit LiteRT-LM është projektuar për të punuar me modele në formatin .litertlm.litertlm . Mund të gjeni dhe shkarkoni modele të përputhshme në tabelën e mëposhtme.
| Model | SoC | Kuantizimi | Madhësia e kontekstit | Madhësia e modelit (Mb) | Lidhja e shkarkimit |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4-bit për kanal | 1280 | 658 | shkarko |
| Gemma3-1B | SM8650 | 4-bit për kanal | 1280 | 658 | shkarko |
| Gemma3-1B | SM8550 | 4-bit për kanal | 1280 | 657 | shkarko |
Do të duhet të shkarkoni modelin që korrespondon me SoC-në tuaj. Më poshtë është një shembull komande që mund t'ju ndihmojë të merrni lidhjen Hugging Face që mund të shkarkojë modelin e saktë për SoC-në e telefonit tuaj (vini re se do t'ju duhet të identifikoheni dhe të pranoni formularin për të pasur lejen për të shkarkuar skedarin). Duhet të siguroheni që ka një pajisje të lidhur që mund të aksesohet duke përdorur 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"
Verifikoni që $SOC_MODEL është listuar në tabelën e mbështetjes. Lidhja e gjeneruar nuk do të funksionojë për modelet e pambështetura. Mbështetje e re për NPU-të po shtohet rregullisht, prandaj kontrolloni përsëri më vonë për të parë nëse pajisja juaj mbështetet.
Hapi 2: Shkarkoni dhe nxirrni libraritë QAIRT
Për të ekzekutuar modelin duke përdorur NPU-në Qualcomm, kërkohen biblioteka të lidhura me kohën e ekzekutimit në pajisje. Mund të shkarkoni SDK-në QAIRT nga lidhja dhe të nxirrni skedarin. Vendosni variablin QAIRT_ROOT (do ta përdor në hapat e mëvonshëm) që të tregojë dosjen e çzipuar që përmban numrin e versionit, për shembull:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
Hapi 3: Ndërtoni kohën e ekzekutimit / libraritë e LiteRT-LM
Për të qenë në gjendje të ndërtoni skedarin binar për Android, duhet të instaloni NDK r28b ose më të ri nga https://developer.android.com/ndk/downloads#stable-downloads. Hapat specifikë janë:
- Shkarko skedarin
zipnga https://developer.android.com/ndk/downloads#stable-downloads. - Ekstraktoni skedarin
zipnë vendndodhjen tuaj të preferuar (p.sh./path/to/AndroidNDK/) - Bëjeni
ANDROID_NDK_HOMEtë tregojë direktorinë NDK. Duhet të jetë diçka si kjo:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Këshilla: sigurohuni që ANDROID_NDK_HOME juaj të tregojë drejtorinë që përmban README.md .
Me konfigurimin e bërë, përpiquni të ndërtoni binarin litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Për më tepër, ne duhet të ndërtojmë bibliotekën e API-t të dispatch-it në mënyrë që runtime-i i LiteRT-LM të bashkëveprojë me NPU-në:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Zhvillo në macOS
Mjetet e linjës së komandës Xcode përfshijnë klang. Ekzekutoni xcode-select --install nëse nuk është instaluar më parë.
Për të qenë në gjendje të ndërtoni skedarin binar për Android, duhet të instaloni NDK r28b ose më të ri nga https://developer.android.com/ndk/downloads#stable-downloads. Hapat specifikë janë:
- Shkarko skedarin
.dmgnga https://developer.android.com/ndk/downloads#stable-downloads. - Hapni skedarin
.dmgdhe zhvendoseni skedarinAndroidNDK*në vendndodhjen tuaj të preferuar (p.sh./path/to/AndroidNDK/) - Bëjeni
ANDROID_NDK_HOMEtë tregojë direktorinë NDK. Duhet të jetë diçka si kjo:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Këshilla: sigurohuni që ANDROID_NDK_HOME juaj të tregojë drejtorinë që përmban README.md .
Me konfigurimin e bërë, përpiquni të ndërtoni binarin litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Për më tepër, ne duhet të ndërtojmë bibliotekën e API-t të dispatch-it në mënyrë që runtime-i i LiteRT-LM të bashkëveprojë me NPU-në:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
Hapi 4: Ekzekutoni modelin në pajisje
Pasi skedari binar të jetë ndërtuar me sukses, tani mund të përpiqemi ta ekzekutojmë modelin në pajisje. Sigurohuni që keni të drejtë shkrimi në DEVICE_FOLDER :
Për të ekzekutuar skedarin binar në pajisjen tuaj Android, duhet të transferojmë disa asete/skeda binare. Së pari, vendosni DEVICE_FOLDER in tuaj, sigurohuni që të keni të drejtë shkrimi në të (zakonisht mund t'i vendosni gjërat nën /data/local/tmp/ ):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Shtypni skedarin .litertlm. Këshillë: duhet t'i shtypni këto asete vetëm një herë.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Hapni libraritë QAIRT. Mund t'i gjeni në dosjen e çzipuar në Hapi 2 $QAIRT_ROOT/lib/aarch64-android/ . Vini re se QAIRT_ROOT duhet të përmbajë numrin e versionit, p.sh. 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
Shtypni API-në e dërgimit dhe skedarin binar kryesor të kompiluar në Hapi 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
Tani, mund ta ekzekutoni skedarin binar.
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
Hapat për të ekzekutuar LLM-të në MediaTek NPU janë si më poshtë:
Hapi 1: Shkarkoni modelin
Koha e ekzekutimit LiteRT-LM është projektuar për të punuar me modele në formatin .litertlm.litertlm . Mund të gjeni dhe shkarkoni modele të përputhshme në tabelën e mëposhtme.
| Model | SoC | Kuantizimi | Madhësia e kontekstit | Madhësia e modelit (Mb) | Lidhja e shkarkimit |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4-bit për kanal | 1280 | 985 | shkarko |
| Gemma3-1B | MT6991 | 4-bit për kanal | 1280 | 986 | shkarko |
Do të duhet të shkarkoni modelin që korrespondon me SoC-në tuaj. Më poshtë është një shembull komande që mund t'ju ndihmojë të merrni lidhjen Hugging Face që mund të shkarkojë modelin e saktë për SoC-në e telefonit tuaj (vini re se do t'ju duhet të identifikoheni dhe të pranoni formularin për të pasur lejen për të shkarkuar skedarin). Duhet të siguroheni që ka një pajisje të lidhur që mund të aksesohet duke përdorur 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"
Verifikoni që $SOC_MODEL është listuar në tabelën e mbështetjes. Lidhja e gjeneruar nuk do të funksionojë për modelet e pambështetura. Mbështetje e re për NPU-të po shtohet rregullisht, prandaj kontrolloni përsëri më vonë për të parë nëse pajisja juaj mbështetet.
Hapi 2: Ndërtoni kohën e ekzekutimit / libraritë e LiteRT-LM
Për të qenë në gjendje të ndërtoni skedarin binar për Android, duhet të instaloni NDK r28b ose më të ri nga https://developer.android.com/ndk/downloads#stable-downloads. Hapat specifikë janë:
- Shkarko skedarin
zipnga https://developer.android.com/ndk/downloads#stable-downloads. - Ekstraktoni skedarin
zipnë vendndodhjen tuaj të preferuar (p.sh./path/to/AndroidNDK/) - Bëjeni
ANDROID_NDK_HOMEtë tregojë direktorinë NDK. Duhet të jetë diçka si kjo:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
Këshilla: sigurohuni që ANDROID_NDK_HOME juaj të tregojë drejtorinë që përmban README.md .
Me konfigurimin e bërë, përpiquni të ndërtoni binarin litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Për më tepër, ne duhet të ndërtojmë bibliotekën e API-t të dispatch-it në mënyrë që runtime-i i LiteRT-LM të bashkëveprojë me NPU-në:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Zhvillo në macOS
Mjetet e linjës së komandës Xcode përfshijnë klang. Ekzekutoni xcode-select --install nëse nuk është instaluar më parë.
Për të qenë në gjendje të ndërtoni skedarin binar për Android, duhet të instaloni NDK r28b ose më të ri nga https://developer.android.com/ndk/downloads#stable-downloads. Hapat specifikë janë:
- Shkarko skedarin
.dmgnga https://developer.android.com/ndk/downloads#stable-downloads. - Hapni skedarin
.dmgdhe zhvendoseni skedarinAndroidNDK*në vendndodhjen tuaj të preferuar (p.sh./path/to/AndroidNDK/) - Bëjeni
ANDROID_NDK_HOMEtë tregojë direktorinë NDK. Duhet të jetë diçka si kjo:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
Këshilla: sigurohuni që ANDROID_NDK_HOME juaj të tregojë drejtorinë që përmban README.md .
Me konfigurimin e bërë, përpiquni të ndërtoni binarin litert_lm_main :
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Për më tepër, ne duhet të ndërtojmë bibliotekën e API-t të dispatch-it në mënyrë që runtime-i i LiteRT-LM të bashkëveprojë me NPU-në:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
Hapi 3: Ekzekutoni modelin në pajisje
Pasi skedari binar të jetë ndërtuar me sukses, tani mund të përpiqemi ta ekzekutojmë modelin në pajisje. Sigurohuni që keni të drejtë shkrimi në DEVICE_FOLDER :
Për të ekzekutuar skedarin binar në pajisjen tuaj Android, duhet të transferojmë disa asete/skeda binare. Së pari, vendosni DEVICE_FOLDER in tuaj, sigurohuni që të keni të drejtë shkrimi në të (zakonisht mund t'i vendosni gjërat nën /data/local/tmp/ ):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
Shtypni skedarin .litertlm. Këshillë: duhet t'i shtypni këto asete vetëm një herë.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
Shtypni API-në e dërgimit dhe skedarin binar kryesor të kompiluar në Hapi 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
Tani, mund ta ekzekutoni skedarin binar.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm