LiteRT-LM kullanarak LLM'leri çalıştırma

LiteRT-LM, dil modeli işlem hatlarını cep telefonlarından yerleşik sistemlere kadar çok çeşitli cihazda 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 entegrasyonuyla.

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ı olmaları, LLM çıkarımı çalıştırmak için idealdir.

NPU Tedarikçileri

LiteRT-LM, aşağıdaki satıcılarla NPU hızlandırması kullanarak 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 ortamı ve depoyu ayarlamak üzere Ön koşullar bölümündeki talimatları uygulayı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.

Google Tensor

Google Tensor'da LLM'leri çalıştırmak için aşağıdaki adımları uygulayın:

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) Kuantizasyon Bağlam boyutu Model Boyutu (Mb) İndirme bağlantısı
Gemma3-1B Tensor_G5 Kanal başına 8 bit 1.280 1704 download

Aşağıda, telefonunuzun çip üzerinde sistemine uygun modeli indirmenize yardımcı olabilecek bir komut örneği 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_Google_${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 program oluşturabilmek üzere En Son Kararlı Sürüm'den NDK r28b veya daha yeni bir sürümün yüklenmesi gerekir.

Şu adımları uygulayın:

  • En Son Kararlı Sürüm sayfasından en son kararlı NDK paketini (zip dosyası) indirin.
  • zip dosyasını tercih ettiğiniz konuma (örneğin, /path/to/AndroidNDK/) çıkarın.
  • ANDROID_NDK_HOME, NDK dizinini gösterecek şekilde ayarlayın. Şuna benzer bir şey olmalıdır:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/

Bu kurulumla, aşağıdaki komutu kullanarak litert_lm_main ikilisini oluşturun:

bazel build --config=android_arm64 //runtime/engine:litert_lm_main

Ayrıca, LiteRT-LM çalışma zamanının NPU ile etkileşim kurmasını sağlamak için dağıtım API kitaplığını oluşturun:

bazel build --config=android_arm64 \
    @litert//litert/vendors/google_tensor/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 programı Android cihazınızda çalıştırmak için birkaç öğe/ikili program 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.

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/google_tensor/*/*.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

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) Kuantizasyon 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 ö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: QAIRT kitaplıklarını indirip ayıklayın Modeli Qualcomm NPU kullanarak ç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 şekilde QAIRT_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 program 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 zip dosyasını indirin.
  • zip dosyası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.

Kurulumla birlikte 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şimde bulunabilmesi 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 program 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 .dmg dosyasını indirin.
  • .dmg dosyasını açın ve AndroidNDK* 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.

Kurulumla birlikte 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şimde bulunabilmesi 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 programı Android cihazınızda çalıştırmak için birkaç öğe/ikili program 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. Bu dosyaları, 2. adımda $QAIRT_ROOT/lib/aarch64-android/ bulunan, sıkıştırılmamış klasörde bulabilirsiniz. QAIRT_ROOT öğesinin sürüm numarasını (ör. 2.42.0.251225) içermesi gerektiğini unutmayın.

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) Kuantizasyon 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 program 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 zip dosyasını indirin.
  • zip dosyası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.

Kurulumla birlikte 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şimde bulunabilmesi 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 program 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 .dmg dosyasını indirin.
  • .dmg dosyasını açın ve AndroidNDK* 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.

Kurulumla birlikte 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şimde bulunabilmesi 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 programı Android cihazınızda çalıştırmak için birkaç öğe/ikili program 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

Intel OpenVino

C++ yürütülebilir dosyasını kullanarak çalıştırma

LLM'leri Intel NPU'da ç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) Bağlam boyutu Model Boyutu (Mb) İndirme bağlantısı
Gemma4-2B PantherLake 4096 2,95 GB download
Gemma4-2B LunarLake 4096 2,96 GB download

2. adım: LiteRT-LM çalışma zamanını ve LiteRT Intel Dispatch kitaplığını oluşturun

Windows'da geliştirme

Kurulumla birlikte litert_lm_main ikili dosyasını oluşturmayı deneyin:

bazel --output_base=C:\bzl_lrtlm build --define=DISABLE_HUGGINGFACE_TOKENIZER=1 --config=windows //runtime/engine:litert_lm_main

Ayrıca, LiteRT-LM çalışma zamanının NPU ile etkileşimde bulunabilmesi için dispatch API kitaplığını oluşturmamız gerekir:

bazel --output_base=C:\bzl_lrtlm build --config=windows  @litert//litert/vendors/intel_openvino/dispatch:LiteRtDispatch

3. adım: Modeli cihazda çalıştırma İkili dosya başarıyla oluşturulduktan sonra modeli cihazda çalıştırmayı deneyebiliriz. Tüm ikili dosyaları, DLL'leri ve modeli "execution_dir" adlı bir pakete yerleştiririz:

cp bazel-bin/external/litert/vendors/intel_openvino/dispatch/LiteRtDispatch.dll execution_dir
cp bazel-bin/runtime/engine/litert_lm_main.exe execution_dir
cp prebuilt\windows_x86_64\libGemmaModelConstraintProvider.dll execution_dir

# Run OpenVino's setup script to ensure the OpenVino DLLs can be found.
& C:\bzl_lrtlm\external\intel_openvino\openvino\setupvars.ps1

# Test run
cd execution_dir
.\litert_lm_main.exe --backend=npu --model_path="execution_dir\model.litertlm"  --input_prompt="What is the capital of France?"

Ayrıca, LiteRT-LM'nin Python API'siyle ilgili bilgi edinmek için https://ai.google.dev/edge/litert-lm/python adresini ziyaret edin .NPU arka ucuyla litertlm dosyası.

import litert_lm

with litert_lm.Engine("C:\path\to\npu-model.litertlm", backend=litert_lm.Backend.NPU()) as engine:
  with engine.create_conversation() as conversation:
    print(conversation.send_message("What is the capital of France?"))