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. Layanan ini menyediakan alat bagi developer untuk membuat dan men-deploy alur kerja model bahasa yang canggih, kini dengan integrasi NPU yang lancar.

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 beban kerja deep learning. Fitur ini semakin banyak tersedia di sistem modern pada system on a chip (SoC), terutama di perangkat seluler. Performa tinggi yang dimilikinya membuat GPU ini 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.

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 dalamnya (biasanya Anda dapat menempatkan sesuatu 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 dalamnya (biasanya Anda dapat menempatkan sesuatu 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