LiteRT-LM, dil modeli işlem hatlarını mobil telefonlardan yerleşik sistemlere kadar çeşitli cihazlarda verimli bir şekilde çalıştırmak için tasarlanmış platformlar arası bir kitaplıktır. Geliştiricilere, gelişmiş dil modeli iş akışları oluşturup dağıtmak için araçlar sunar. Artık sorunsuz NPU entegrasyonu da mevcuttur.
CPU ve GPU'da LLM'leri çalıştırma
Platformlar arası geliştirme ve CPU/GPU donanım hızlandırmasıyla ilgili ayrıntılı talimatlar için LiteRT-LM GitHub deposuna bakın.
LLM'leri NPU'da çalıştırma
Sinirsel İşleme Birimleri (NPU'lar), derin öğrenme iş yükleri için optimize edilmiş özel donanım blokları sunar. Bu türler, özellikle mobil cihazlarda olmak üzere, modern çip üzerinde sistemlerde (SoC'ler) giderek daha fazla kullanılmaktadır. Yüksek performanslı yapıları nedeniyle LLM çıkarımı çalıştırmak için idealdirler.
NPU Tedarikçileri
LiteRT-LM, aşağıdaki satıcıların NPU hızlandırmasıyla LLM'lerin çalıştırılmasını destekler. Denemek istediğiniz tedarikçiye bağlı olarak aşağıdaki talimatları uygulayın:
Hızlı Başlangıç
Başlamak için önce Ön koşullar bölümündeki talimatları uygulayarak ortamı ve depoyu ayarlayın.
Ayrıca Android cihazınızla etkileşimde bulunabilmek için Android Debug Bridge'i doğru şekilde yüklediğinizden ve adb kullanılarak erişilebilen bağlı bir cihazınız olduğundan emin olun.
Daha ayrıntılı talimatlar için LiteRT-LM deposundaki Hızlı Başlangıç bölümüne göz atın ve litert_lm_main
komut satırı demosu hakkında daha fazla bilgi edinin.
Qualcomm AI Engine Direct
Qualcomm NPU'da LLM'leri çalıştırma adımları şunlardır:
1. adım: .litertlm modelini indirin
LiteRT-LM çalışma zamanı, .litertlm biçimindeki modellerle çalışmak üzere tasarlanmıştır.
Uyumlu modelleri aşağıdaki tabloda bulup indirebilirsiniz.
| Model | Çip üzerinde sistem (SoC) | Kuantalama | Bağlam boyutu | Model Boyutu (Mb) | İndirme bağlantısı |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | Kanal başına 4 bit | 1.280 | 658 | download |
| Gemma3-1B | SM8650 | Kanal başına 4 bit | 1.280 | 658 | download |
| Gemma3-1B | SM8550 | Kanal başına 4 bit | 1.280 | 657 | download |
Çip üzerinde sisteminize karşılık gelen modeli indirmeniz gerekir.
Aşağıda, telefonunuzun çip üzerinde sistemi için doğru modeli indirmenize yardımcı olabilecek Hugging Face bağlantısını almanıza yardımcı olabilecek bir örnek komut verilmiştir (Dosyayı indirme iznine sahip olmak için giriş yapmanız ve formu onaylamanız gerektiğini unutmayın). adb kullanılarak erişilebilen bağlı bir cihaz olduğundan emin olmanız gerekir.
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"
$SOC_MODEL'in destek tablosunda listelendiğini doğrulayın. Oluşturulan bağlantı, desteklenmeyen modellerde çalışmaz. NPÜ'ler için düzenli olarak yeni destekler eklenmektedir. Cihazınızın desteklenip desteklenmediğini öğrenmek için daha sonra tekrar kontrol edin.
2. adım: QAIRT kitaplıklarını indirip ayıklayın
Qualcomm NPU'yu kullanarak modeli çalıştırmak için cihazda ilişkili çalışma zamanı kitaplıklarının olması gerekir. QAIRT SDK'sını bağlantıdan indirip dosyayı çıkarabilirsiniz. Sürüm numarasını içeren, açılmış klasöre işaret edecek şekildeQAIRT_ROOT değişkenini ayarlayın (sonraki adımlarda kullanılacaktır). Örneğin:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
3. adım: LiteRT-LM çalışma zamanını / kitaplıklarını oluşturun
Linux'ta geliştirme
Android için ikili dosya oluşturabilmek üzere https://developer.android.com/ndk/downloads#stable-downloads adresinden NDK r28b veya daha yeni bir sürümün yüklenmesi gerekir. Belirli adımlar şunlardır:
- https://developer.android.com/ndk/downloads#stable-downloads adresinden
zipdosyasını indirin. zipdosyasını tercih ettiğiniz konuma (örneğin,/path/to/AndroidNDK/) çıkarın.ANDROID_NDK_HOMEöğesini NDK dizinine yönlendirin. Şuna benzer bir şey olmalıdır:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
İpuçları: ANDROID_NDK_HOME işaretinin, README.md içeren dizini gösterdiğinden emin olun.
Kurulum tamamlandıktan sonra litert_lm_main ikili dosyasını oluşturmayı deneyin:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Ayrıca, LiteRT-LM çalışma zamanının NPU ile etkileşim kurabilmesi için dispatch API kitaplığını oluşturmamız gerekir:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
macOS'te geliştirme
Xcode komut satırı araçları clang'i içerir. Daha önce yüklenmediyse xcode-select --install'ı çalıştırın.
Android için ikili dosya oluşturabilmek üzere https://developer.android.com/ndk/downloads#stable-downloads adresinden NDK r28b veya daha yeni bir sürümün yüklenmesi gerekir. Belirli adımlar şunlardır:
- https://developer.android.com/ndk/downloads#stable-downloads adresinden
.dmgdosyasını indirin. .dmgdosyasını açın veAndroidNDK*dosyasını tercih ettiğiniz konuma (örneğin/path/to/AndroidNDK/) taşıyın.ANDROID_NDK_HOMEöğesini NDK dizinine yönlendirin. Şuna benzer bir şey olmalıdır:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
İpuçları: ANDROID_NDK_HOME işaretinin, README.md içeren dizini gösterdiğinden emin olun.
Kurulum tamamlandıktan sonra litert_lm_main ikili dosyasını oluşturmayı deneyin:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Ayrıca, LiteRT-LM çalışma zamanının NPU ile etkileşim kurabilmesi için dispatch API kitaplığını oluşturmamız gerekir:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
4. adım: Modeli cihazda çalıştırma
İkili dosya başarıyla oluşturulduktan sonra modeli cihazda çalıştırmayı deneyebiliriz.DEVICE_FOLDER için yazma erişiminiz olduğundan emin olun:
İkili dosyayı Android cihazınızda çalıştırmak için birkaç öğe/ikili dosya göndermemiz gerekiyor. Öncelikle DEVICE_FOLDER cihazınızı ayarlayın ve cihaza yazma erişiminiz olduğundan emin olun (genellikle /data/local/tmp/ altına öğe yerleştirebilirsiniz):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
.litertlm dosyasını gönderin. İpucu: Bu öğeleri yalnızca bir kez göndermeniz gerekir.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
QAIRT kitaplıklarını gönderin. Bunları, 2. adım $QAIRT_ROOT/lib/aarch64-android/ bölümündeki açılmış klasörde bulabilirsiniz. QAIRT_ROOT öğesinin sürüm numarasını içermesi gerektiğini unutmayın (ör. 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
3. adımda derlenen dağıtım API'sini ve ana ikili dosyayı gönderin.
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
Artık ikili dosyayı çalıştırabilirsiniz.
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
MediaTek NPU'da LLM'leri çalıştırma adımları şunlardır:
1. adım: .litertlm modelini indirin
LiteRT-LM çalışma zamanı, .litertlm biçimindeki modellerle çalışmak üzere tasarlanmıştır.
Uyumlu modelleri aşağıdaki tabloda bulup indirebilirsiniz.
| Model | Çip üzerinde sistem (SoC) | Kuantalama | Bağlam boyutu | Model Boyutu (Mb) | İndirme bağlantısı |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | Kanal başına 4 bit | 1.280 | 985 | download |
| Gemma3-1B | MT6991 | Kanal başına 4 bit | 1.280 | 986 | download |
Çip üzerinde sisteminize karşılık gelen modeli indirmeniz gerekir.
Aşağıda, telefonunuzun çip üzerinde sistemi için doğru modeli indirmenize yardımcı olabilecek Hugging Face bağlantısını almanıza yardımcı olabilecek örnek bir komut verilmiştir (Dosyayı indirme iznine sahip olmak için giriş yapmanız ve formu onaylamanız gerektiğini unutmayın). adb kullanılarak erişilebilen bağlı bir cihaz olduğundan emin olmanız gerekir.
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"
$SOC_MODEL'in destek tablosunda listelendiğini doğrulayın. Oluşturulan bağlantı, desteklenmeyen modellerde çalışmaz. NPÜ'ler için düzenli olarak yeni destekler eklenmektedir. Cihazınızın desteklenip desteklenmediğini öğrenmek için daha sonra tekrar kontrol edin.
2. adım: LiteRT-LM çalışma zamanını / kitaplıklarını oluşturun
Linux'ta geliştirme
Android için ikili dosya oluşturabilmek üzere https://developer.android.com/ndk/downloads#stable-downloads adresinden NDK r28b veya daha yeni bir sürümün yüklenmesi gerekir. Belirli adımlar şunlardır:
- https://developer.android.com/ndk/downloads#stable-downloads adresinden
zipdosyasını indirin. zipdosyasını tercih ettiğiniz konuma (örneğin,/path/to/AndroidNDK/) çıkarın.ANDROID_NDK_HOMEöğesini NDK dizinine yönlendirin. Şuna benzer bir şey olmalıdır:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
İpuçları: ANDROID_NDK_HOME işaretinin, README.md içeren dizini gösterdiğinden emin olun.
Kurulum tamamlandıktan sonra litert_lm_main ikili dosyasını oluşturmayı deneyin:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Ayrıca, LiteRT-LM çalışma zamanının NPU ile etkileşim kurabilmesi için dispatch API kitaplığını oluşturmamız gerekir:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
macOS'te geliştirme
Xcode komut satırı araçları clang'i içerir. Daha önce yüklenmediyse xcode-select --install'ı çalıştırın.
Android için ikili dosya oluşturabilmek üzere https://developer.android.com/ndk/downloads#stable-downloads adresinden NDK r28b veya daha yeni bir sürümün yüklenmesi gerekir. Belirli adımlar şunlardır:
- https://developer.android.com/ndk/downloads#stable-downloads adresinden
.dmgdosyasını indirin. .dmgdosyasını açın veAndroidNDK*dosyasını tercih ettiğiniz konuma (örneğin/path/to/AndroidNDK/) taşıyın.ANDROID_NDK_HOMEöğesini NDK dizinine yönlendirin. Şuna benzer bir şey olmalıdır:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
İpuçları: ANDROID_NDK_HOME işaretinin, README.md içeren dizini gösterdiğinden emin olun.
Kurulum tamamlandıktan sonra litert_lm_main ikili dosyasını oluşturmayı deneyin:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
Ayrıca, LiteRT-LM çalışma zamanının NPU ile etkileşim kurabilmesi için dispatch API kitaplığını oluşturmamız gerekir:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
3. adım: Modeli cihazda çalıştırma
İkili dosya başarıyla oluşturulduktan sonra modeli cihazda çalıştırmayı deneyebiliriz.DEVICE_FOLDER için yazma erişiminiz olduğundan emin olun:
İkili dosyayı Android cihazınızda çalıştırmak için birkaç öğe/ikili dosya göndermemiz gerekiyor. Öncelikle DEVICE_FOLDER cihazınızı ayarlayın ve cihaza yazma erişiminiz olduğundan emin olun (genellikle /data/local/tmp/ altına öğe yerleştirebilirsiniz):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
.litertlm dosyasını gönderin. İpucu: Bu öğeleri yalnızca bir kez göndermeniz gerekir.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
2. adımda derlenen gönderme API'sini ve ana ikili dosyayı gönderin.
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
Artık ikili dosyayı çalıştırabilirsiniz.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm