LiteRT-LM 是一種跨平台程式庫,可在各種裝置 (從手機到嵌入式系統) 上有效執行語言模型管道。這項工具可協助開發人員建立及部署複雜的語言模型工作流程,現在還能與 NPU 完美整合。
在 CPU 和 GPU 上執行 LLM
如需跨平台開發和 CPU/GPU 硬體加速的詳細操作說明,請參閱 LiteRT-LM GitHub 存放區。
在 NPU 上執行 LLM
神經處理單元 (NPU) 提供專為深度學習工作負載最佳化的專用硬體區塊。這類功能越來越常出現在現代單晶片系統 (SoC) 中,尤其是在行動裝置上。由於效能優異,因此非常適合執行 LLM 推論。
NPU 供應商
LiteRT-LM 支援使用 NPU 加速功能,透過下列供應商執行 LLM。請根據要試用的廠商選擇操作說明:
快速入門
如要開始使用,請先按照必要條件的操作說明設定環境和存放區。
此外,如要與 Android 裝置互動,請確認已正確安裝 Android Debug Bridge,並連結可使用 adb 存取的裝置。
如需更多詳細說明,請查看 LiteRT-LM 存放區的「快速入門」部分,並進一步瞭解 litert_lm_main
指令列範例。
Qualcomm AI Engine Direct
如要在 Qualcomm NPU 上執行 LLM,請按照下列步驟操作:
步驟 1:下載 .litertlm 模型
LiteRT-LM 執行階段專為處理 .litertlm 格式的模型而設計。
如要尋找及下載相容的型號,請參閱下表。
| 型號 | SoC | 量化 | 脈絡長度 | 模型大小 (Mb) | 下載連結 |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 每個通道 4 位元 | 1280 | 658 | download |
| Gemma3-1B | SM8650 | 每個通道 4 位元 | 1280 | 658 | download |
| Gemma3-1B | SM8550 | 每個通道 4 位元 | 1280 | 657 | download |
您必須下載與 SoC 相對應的模型。
以下是範例指令,可協助您取得 Hugging Face 連結,下載適用於手機 SoC 的正確模型 (請注意,您必須登入並確認表單,才能取得下載檔案的權限)。請確認已連線的裝置可透過 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"
確認支援表格中列有 $SOC_MODEL。如果使用不支援的機型,系統產生的連結將無法運作。我們正在定期新增 NPU 支援,請稍後再回來查看裝置是否支援。
步驟 2:下載並解壓縮 QAIRT 程式庫
如要使用 Qualcomm NPU 執行模型,裝置上必須有相關聯的執行階段程式庫。您可以從這個連結下載 QAIRT SDK,然後解壓縮檔案。將變數QAIRT_ROOT (會在後續步驟中使用) 設定為指向包含版本號碼的解壓縮資料夾,例如:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
步驟 3:建構 LiteRT-LM 執行階段 / 程式庫
在 Linux 中開發
如要建構 Android 的二進位檔,請從 https://developer.android.com/ndk/downloads#stable-downloads 安裝 NDK r28b 以上版本。具體步驟如下:
- 前往 https://developer.android.com/ndk/downloads#stable-downloads 下載
zip檔案。 - 將
zip檔案解壓縮到偏好的位置 (例如/path/to/AndroidNDK/) - 將
ANDROID_NDK_HOME指向 NDK 目錄。如下所示:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
提示:請確認 ANDROID_NDK_HOME 指向的目錄包含 README.md。
設定完成後,請嘗試建構 litert_lm_main 二進位檔:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
此外,我們應建構調度 API 程式庫,讓 LiteRT-LM 執行階段與 NPU 互動:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
在 macOS 中開發
Xcode 指令列工具包含 clang。如果先前未安裝,請執行 xcode-select --install。
如要建構 Android 的二進位檔,請從 https://developer.android.com/ndk/downloads#stable-downloads 安裝 NDK r28b 以上版本。具體步驟如下:
- 前往 https://developer.android.com/ndk/downloads#stable-downloads 下載
.dmg檔案。 - 開啟
.dmg檔案,然後將AndroidNDK*檔案移至偏好的位置 (例如/path/to/AndroidNDK/)。 - 將
ANDROID_NDK_HOME指向 NDK 目錄。如下所示:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
提示:請確認 ANDROID_NDK_HOME 指向的目錄包含 README.md。
設定完成後,請嘗試建構 litert_lm_main 二進位檔:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
此外,我們應建構調度 API 程式庫,讓 LiteRT-LM 執行階段與 NPU 互動:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
步驟 4:在裝置上執行模型
成功建構二進位檔後,我們現在可以嘗試在裝置上執行模型。確認您擁有DEVICE_FOLDER 的寫入存取權:
如要在 Android 裝置上執行二進位檔,我們必須推送幾個資產/二進位檔。首先設定 DEVICE_FOLDER,並確認您擁有寫入權限 (通常您可以將項目放在 /data/local/tmp/ 下方):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
推送 .litertlm 檔案。提示:您只需要推送這些資產一次。
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
推送 QAIRT 程式庫。您可以在步驟 2 $QAIRT_ROOT/lib/aarch64-android/ 中解壓縮的資料夾中找到這些檔案。請注意,QAIRT_ROOT 應包含版本號碼,例如 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 中編譯的調度 API 和主要二進位檔。
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
現在,您可以執行二進位檔。
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 上執行 LLM,請按照下列步驟操作:
步驟 1:下載 .litertlm 模型
LiteRT-LM 執行階段專為處理 .litertlm 格式的模型而設計。
如要尋找及下載相容的型號,請參閱下表。
| 型號 | SoC | 量化 | 脈絡長度 | 模型大小 (Mb) | 下載連結 |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 每個通道 4 位元 | 1280 | 985 | download |
| Gemma3-1B | MT6991 | 每個通道 4 位元 | 1280 | 986 | download |
您必須下載與 SoC 相對應的模型。
以下是範例指令,可協助您取得 Hugging Face 連結,下載適用於手機 SoC 的正確模型 (請注意,您必須登入並確認表單,才能取得下載檔案的權限)。請確認已連線的裝置可透過 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"
確認支援表格中列有 $SOC_MODEL。如果使用不支援的機型,系統產生的連結將無法運作。我們正在定期新增 NPU 支援,請稍後再回來查看裝置是否支援。
步驟 2:建構 LiteRT-LM 執行階段 / 程式庫
在 Linux 中開發
如要建構 Android 的二進位檔,請從 https://developer.android.com/ndk/downloads#stable-downloads 安裝 NDK r28b 以上版本。具體步驟如下:
- 前往 https://developer.android.com/ndk/downloads#stable-downloads 下載
zip檔案。 - 將
zip檔案解壓縮到偏好的位置 (例如/path/to/AndroidNDK/) - 將
ANDROID_NDK_HOME指向 NDK 目錄。如下所示:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
提示:請確認 ANDROID_NDK_HOME 指向的目錄包含 README.md。
設定完成後,請嘗試建構 litert_lm_main 二進位檔:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
此外,我們應建構調度 API 程式庫,讓 LiteRT-LM 執行階段與 NPU 互動:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
在 macOS 中開發
Xcode 指令列工具包含 clang。如果先前未安裝,請執行 xcode-select --install。
如要建構 Android 的二進位檔,請從 https://developer.android.com/ndk/downloads#stable-downloads 安裝 NDK r28b 以上版本。具體步驟如下:
- 前往 https://developer.android.com/ndk/downloads#stable-downloads 下載
.dmg檔案。 - 開啟
.dmg檔案,然後將AndroidNDK*檔案移至偏好的位置 (例如/path/to/AndroidNDK/)。 - 將
ANDROID_NDK_HOME指向 NDK 目錄。如下所示:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
提示:請確認 ANDROID_NDK_HOME 指向的目錄包含 README.md。
設定完成後,請嘗試建構 litert_lm_main 二進位檔:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
此外,我們應建構調度 API 程式庫,讓 LiteRT-LM 執行階段與 NPU 互動:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
步驟 3:在裝置上執行模型
二進位檔建構完成後,我們現在可以嘗試在裝置上執行模型。確認您擁有DEVICE_FOLDER 的寫入存取權:
如要在 Android 裝置上執行二進位檔,我們必須推送幾個資產/二進位檔。首先設定 DEVICE_FOLDER,並確認您擁有寫入權限 (通常您可以將項目放在 /data/local/tmp/ 下方):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
推送 .litertlm 檔案。提示:您只需要推送這些資產一次。
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
推送在步驟 2 中編譯的調度 API 和主要二進位檔。
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
現在,您可以執行二進位檔。
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm