Menjalankan LLM menggunakan LiteRT-LM

LiteRT-LM adalah library lintas platform yang dirancang untuk menjalankan pipeline model bahasa secara efisien di berbagai perangkat, mulai dari ponsel hingga sistem sematan. Dengan integrasi NPU yang lancar, developer kini memiliki alat untuk membuat dan men-deploy alur kerja model bahasa yang canggih.

Menjalankan LLM di CPU dan GPU

Lihat repo GitHub LiteRT-LM untuk mengetahui petunjuk mendetail tentang pengembangan lintas platform dan akselerasi hardware CPU/GPU.

Menjalankan LLM di NPU

Neural Processing Unit (NPU) menawarkan blok hardware khusus yang dioptimalkan untuk workload deep learning. Fitur ini semakin banyak tersedia di sistem modern pada system on a chip (SoC), terutama di perangkat seluler. Sifatnya yang berperforma tinggi membuatnya sangat cocok untuk menjalankan inferensi LLM.

Vendor NPU

LiteRT-LM mendukung menjalankan LLM menggunakan akselerasi NPU dengan vendor berikut. Pilih petunjuk berdasarkan vendor yang ingin Anda coba:

Mulai Cepat

Untuk memulai, ikuti terlebih dahulu petunjuk Prasyarat untuk menyiapkan lingkungan dan repositori.

Selain itu, agar dapat berinteraksi dengan perangkat Android, pastikan Anda telah menginstal Android Debug Bridge dengan benar dan memiliki perangkat yang terhubung yang dapat diakses menggunakan adb.

Untuk mengetahui petunjuk yang lebih mendetail, lihat bagian Mulai Cepat di repositori LiteRT-LM dan temukan informasi selengkapnya tentang litert_lm_main demo command line.

Google Tensor

Ikuti langkah-langkah berikut untuk menjalankan LLM di Google Tensor:

Langkah 1: Download model .litertlm Runtime LiteRT-LM dirancang untuk bekerja dengan model dalam format .litertlm.

Anda dapat menemukan dan mendownload model yang kompatibel dalam tabel berikut:

Model SoC Kuantisasi Ukuran konteks Ukuran Model (Mb) Link download
Gemma3-1B Tensor_G5 8-bit per saluran 1280 1704 download

Berikut adalah contoh perintah yang dapat membantu Anda mendapatkan link Hugging Face yang dapat mendownload model yang tepat untuk SoC ponsel Anda (perhatikan bahwa Anda harus login dan menyetujui formulir agar memiliki izin untuk mendownload file). Anda harus memastikan ada perangkat terhubung yang dapat diakses menggunakan 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_Google_${SOC_MODEL}.litertlm"

Pastikan $SOC_MODEL tercantum dalam tabel dukungan. Link yang dibuat tidak akan berfungsi untuk model yang tidak didukung. Dukungan baru untuk NPU ditambahkan secara rutin, jadi periksa kembali nanti untuk melihat apakah perangkat Anda didukung.

Langkah 2: Bangun runtime / library LiteRT-LM

Mengembangkan di Linux

Untuk dapat membuat biner untuk Android, Anda perlu menginstal NDK r28b atau yang lebih baru dari Versi Stabil Terbaru.

Ikuti langkah-langkah berikut:

  • Download paket NDK stabil terbaru (file zip) dari Versi Stabil Terbaru.
  • Ekstrak file zip ke lokasi pilihan Anda (misalnya /path/to/AndroidNDK/)
  • Buat ANDROID_NDK_HOME mengarah ke direktori NDK. Outputnya akan terlihat seperti berikut:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/

Dengan penyiapan ini, bangun biner litert_lm_main menggunakan perintah berikut:

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

Selain itu, bangun library API pengiriman agar runtime LiteRT-LM dapat berinteraksi dengan NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/google_tensor/dispatch:dispatch_api_so

Langkah 3: Jalankan model di perangkat Setelah biner berhasil dibuat, kita sekarang dapat mencoba menjalankan model di perangkat. Pastikan Anda memiliki akses tulis ke DEVICE_FOLDER:

Untuk menjalankan biner di perangkat Android, kita harus mengirim beberapa aset/biner. Tetapkan DEVICE_FOLDER terlebih dahulu, pastikan Anda memiliki akses tulis ke direktori tersebut (biasanya Anda dapat menempatkan item di bawah /data/local/tmp/):

export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER

export MODEL_PATH=<path to your downloaded .litertlm >

Kirim file .litertlm.

adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm

Kirimkan API pengiriman dan biner utama yang dikompilasi di Langkah 2.

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

Sekarang, Anda dapat menjalankan biner.

adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
    $DEVICE_FOLDER/litert_lm_main \
    --backend=npu \
    --model_path=$DEVICE_FOLDER/model.litertlm

Qualcomm AI Engine Direct

Langkah-langkah untuk menjalankan LLM di NPU Qualcomm adalah sebagai berikut:

Langkah 1: Download model .litertlm Runtime LiteRT-LM dirancang untuk bekerja dengan model dalam format .litertlm. Anda dapat menemukan dan mendownload model yang kompatibel dalam tabel berikut.

Model SoC Kuantisasi Ukuran konteks Ukuran Model (Mb) Link download
Gemma3-1B SM8750 4 bit per saluran 1280 658 download
Gemma3-1B SM8650 4 bit per saluran 1280 658 download
Gemma3-1B SM8550 4 bit per saluran 1280 657 download

Anda harus mendownload model yang sesuai dengan SoC Anda. Berikut adalah contoh perintah yang dapat membantu Anda mendapatkan link Hugging Face yang dapat mendownload model yang benar untuk SoC ponsel Anda (perhatikan bahwa Anda harus login dan menyetujui formulir agar memiliki izin untuk mendownload file). Anda harus memastikan ada perangkat terhubung yang dapat diakses menggunakan 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"

Pastikan $SOC_MODEL tercantum dalam tabel dukungan. Link yang dibuat tidak akan berfungsi untuk model yang tidak didukung. Dukungan baru untuk NPU ditambahkan secara rutin, jadi periksa kembali nanti untuk melihat apakah perangkat Anda didukung.

Langkah 2: Download dan ekstrak library QAIRT Untuk menjalankan model menggunakan NPU Qualcomm, diperlukan library runtime terkait di perangkat. Anda dapat mendownload QAIRT SDK dari link ini dan mengekstrak file. Tetapkan variabel QAIRT_ROOT (akan digunakan pada langkah-langkah selanjutnya) untuk diarahkan ke folder yang belum di-unzip yang berisi nomor versi, misalnya:

unzip <your_file.zip> -d ~/

QAIRT_ROOT=~/qairt/2.42.0.251225

Langkah 3: Bangun runtime / library LiteRT-LM

Mengembangkan di Linux

Untuk dapat mem-build biner untuk Android, Anda harus menginstal NDK r28b atau yang lebih baru dari https://developer.android.com/ndk/downloads#stable-downloads. Langkah-langkah spesifiknya adalah:

  • Download file zip dari https://developer.android.com/ndk/downloads#stable-downloads.
  • Ekstrak file zip ke lokasi pilihan Anda (misalnya /path/to/AndroidNDK/)
  • Buat ANDROID_NDK_HOME untuk mengarah ke direktori NDK. Hasilnya akan terlihat seperti:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/

Tips: pastikan ANDROID_NDK_HOME Anda mengarah ke direktori yang berisi README.md.

Setelah penyiapan, coba bangun biner litert_lm_main:

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

Selain itu, kita harus membuat library API pengiriman agar runtime LiteRT-LM dapat berinteraksi dengan NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/qualcomm/dispatch:dispatch_api_so

Mengembangkan di macOS

Alat command line Xcode mencakup clang. Jalankan xcode-select --install jika belum diinstal sebelumnya.

Untuk dapat mem-build biner untuk Android, Anda harus menginstal NDK r28b atau yang lebih baru dari https://developer.android.com/ndk/downloads#stable-downloads. Langkah-langkah spesifiknya adalah:

  • Download file .dmg dari https://developer.android.com/ndk/downloads#stable-downloads.
  • Buka file .dmg dan pindahkan file AndroidNDK* ke lokasi pilihan Anda (misalnya /path/to/AndroidNDK/)
  • Buat ANDROID_NDK_HOME untuk mengarah ke direktori NDK. Hasilnya akan terlihat seperti:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/

Tips: pastikan ANDROID_NDK_HOME Anda mengarah ke direktori yang berisi README.md.

Setelah penyiapan, coba bangun biner litert_lm_main:

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

Selain itu, kita harus membuat library API pengiriman agar runtime LiteRT-LM dapat berinteraksi dengan NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/qualcomm/dispatch:dispatch_api_so

Langkah 4: Jalankan model di perangkat Setelah biner berhasil di-build, kita sekarang dapat mencoba menjalankan model di perangkat. Pastikan Anda memiliki akses tulis ke DEVICE_FOLDER:

Untuk menjalankan biner di perangkat Android, kita harus mengirim beberapa aset/biner. Tetapkan DEVICE_FOLDER terlebih dahulu, pastikan Anda memiliki akses tulis ke direktori tersebut (biasanya Anda dapat menempatkan item di bawah /data/local/tmp/):

export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER

export MODEL_PATH=<path to your downloaded .litertlm >

Kirim file .litertlm. Tips: Anda hanya perlu mengirimkan aset tersebut satu kali.

adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm

Dorong library QAIRT. Anda dapat menemukannya di folder yang tidak di-unzip di Langkah 2 $QAIRT_ROOT/lib/aarch64-android/. Perhatikan bahwa QAIRT_ROOT harus berisi nomor versi, misalnya 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

Kirimkan API pengiriman dan biner utama yang dikompilasi di Langkah 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

Sekarang, Anda dapat menjalankan biner.

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

Langkah-langkah untuk menjalankan LLM di NPU MediaTek adalah sebagai berikut:

Langkah 1: Download model .litertlm Runtime LiteRT-LM dirancang untuk bekerja dengan model dalam format .litertlm. Anda dapat menemukan dan mendownload model yang kompatibel dalam tabel berikut.

Model SoC Kuantisasi Ukuran konteks Ukuran Model (Mb) Link download
Gemma3-1B MT6989 4 bit per saluran 1280 985 download
Gemma3-1B MT6991 4 bit per saluran 1280 986 download

Anda harus mendownload model yang sesuai dengan SoC Anda. Berikut adalah contoh perintah yang dapat membantu Anda mendapatkan link Hugging Face yang dapat mendownload model yang benar untuk SoC ponsel Anda (perhatikan bahwa Anda harus login dan menyetujui formulir agar memiliki izin untuk mendownload file). Anda harus memastikan ada perangkat terhubung yang dapat diakses menggunakan 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"

Pastikan $SOC_MODEL tercantum dalam tabel dukungan. Link yang dibuat tidak akan berfungsi untuk model yang tidak didukung. Dukungan baru untuk NPU ditambahkan secara rutin, jadi periksa kembali nanti untuk melihat apakah perangkat Anda didukung.

Langkah 2: Bangun runtime / library LiteRT-LM

Mengembangkan di Linux

Untuk dapat mem-build biner untuk Android, Anda harus menginstal NDK r28b atau yang lebih baru dari https://developer.android.com/ndk/downloads#stable-downloads. Langkah-langkah spesifiknya adalah:

  • Download file zip dari https://developer.android.com/ndk/downloads#stable-downloads.
  • Ekstrak file zip ke lokasi pilihan Anda (misalnya /path/to/AndroidNDK/)
  • Buat ANDROID_NDK_HOME untuk mengarah ke direktori NDK. Hasilnya akan terlihat seperti:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/

Tips: pastikan ANDROID_NDK_HOME Anda mengarah ke direktori yang berisi README.md.

Setelah penyiapan, coba bangun biner litert_lm_main:

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

Selain itu, kita harus membuat library API pengiriman agar runtime LiteRT-LM dapat berinteraksi dengan NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/mediatek/dispatch:dispatch_api_so

Mengembangkan di macOS

Alat command line Xcode mencakup clang. Jalankan xcode-select --install jika belum diinstal sebelumnya.

Untuk dapat mem-build biner untuk Android, Anda harus menginstal NDK r28b atau yang lebih baru dari https://developer.android.com/ndk/downloads#stable-downloads. Langkah-langkah spesifiknya adalah:

  • Download file .dmg dari https://developer.android.com/ndk/downloads#stable-downloads.
  • Buka file .dmg dan pindahkan file AndroidNDK* ke lokasi pilihan Anda (misalnya /path/to/AndroidNDK/)
  • Buat ANDROID_NDK_HOME untuk mengarah ke direktori NDK. Hasilnya akan terlihat seperti:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/

Tips: pastikan ANDROID_NDK_HOME Anda mengarah ke direktori yang berisi README.md.

Setelah penyiapan, coba bangun biner litert_lm_main:

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

Selain itu, kita harus membuat library API pengiriman agar runtime LiteRT-LM dapat berinteraksi dengan NPU:

bazel build --config=android_arm64 \
    @litert//litert/vendors/mediatek/dispatch:dispatch_api_so

Langkah 3: Jalankan model di perangkat Setelah biner berhasil dibuat, kita sekarang dapat mencoba menjalankan model di perangkat. Pastikan Anda memiliki akses tulis ke DEVICE_FOLDER:

Untuk menjalankan biner di perangkat Android, kita harus mengirim beberapa aset/biner. Tetapkan DEVICE_FOLDER terlebih dahulu, pastikan Anda memiliki akses tulis ke direktori tersebut (biasanya Anda dapat menempatkan item di bawah /data/local/tmp/):

export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER

export MODEL_PATH=<path to your downloaded .litertlm >

Kirim file .litertlm. Tips: Anda hanya perlu mengirimkan aset tersebut satu kali.

adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm

Kirimkan API pengiriman dan biner utama yang dikompilasi di Langkah 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

Sekarang, Anda dapat menjalankan biner.

adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
    $DEVICE_FOLDER/litert_lm_main \
    --backend=npu \
    --model_path=$DEVICE_FOLDER/model.litertlm

Intel OpenVino

Menjalankan menggunakan file yang dapat dieksekusi C++

Langkah-langkah untuk menjalankan LLM di NPU Intel adalah sebagai berikut:

Langkah 1: Download model .litertlm Runtime LiteRT-LM dirancang untuk bekerja dengan model dalam format .litertlm. Anda dapat menemukan dan mendownload model yang kompatibel dalam tabel berikut.

Model SoC Ukuran konteks Ukuran Model (Mb) Link download
Gemma4-2B PantherLake 4096 2,95 GB download
Gemma4-2B LunarLake 4096 2,96 GB download

Langkah 2: Buat runtime LiteRT-LM dan library Dispatch Intel LiteRT

Mengembangkan di Windows

Setelah penyiapan, coba bangun biner litert_lm_main:

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

Selain itu, kita harus membuat library API pengiriman agar runtime LiteRT-LM dapat berinteraksi dengan NPU:

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

Langkah 3: Jalankan model di perangkat Setelah biner berhasil dibuat, kita sekarang dapat mencoba menjalankan model di perangkat. Kita mengemas semua biner, DLL, dan model ke dalam 'execution_dir':

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?"

Lihat juga https://ai.google.dev/edge/litert-lm/python untuk Python API LiteRT-LM guna menjalankan .File litertlm dengan backend NPU.

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?"))